From 023f2ac0f577802e9a58850841ed8d6e48ec7911 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Wed, 1 Mar 2017 12:40:15 +1100 Subject: [PATCH] Push add/remove events to JS Refs #2710 /cc @LukeTowers --- .../formwidgets/repeater/assets/js/repeater.js | 12 ++++++++++++ .../formwidgets/repeater/partials/_repeater.htm | 1 + .../formwidgets/repeater/partials/_repeater_item.htm | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/backend/formwidgets/repeater/assets/js/repeater.js b/modules/backend/formwidgets/repeater/assets/js/repeater.js index a8963218b..68fa766fe 100644 --- a/modules/backend/formwidgets/repeater/assets/js/repeater.js +++ b/modules/backend/formwidgets/repeater/assets/js/repeater.js @@ -39,6 +39,8 @@ Repeater.prototype.init = function() { this.bindSorting() + this.$el.on('ajaxDone', '[data-repeater-remove]', this.proxy(this.onRemoveItemSuccess)) + this.$el.on('ajaxDone', '[data-repeater-add]', this.proxy(this.onAddItemSuccess)) this.$el.on('click', '> ul > li > .repeater-item-collapse .repeater-item-collapse-one', this.proxy(this.toggleCollapse)) this.$el.one('dispose-control', this.proxy(this.dispose)) @@ -47,6 +49,8 @@ Repeater.prototype.dispose = function() { this.$sortable.sortable('destroy') + this.$el.off('ajaxDone', '[data-repeater-remove]', this.proxy(this.onRemoveItemSuccess)) + this.$el.off('ajaxDone', '[data-repeater-add]', this.proxy(this.onAddItemSuccess)) this.$el.off('click', '> ul > li > .repeater-item-collapse .repeater-item-collapse-one', this.proxy(this.toggleCollapse)) this.$el.off('dispose-control', this.proxy(this.dispose)) @@ -73,6 +77,14 @@ this.$sortable.sortable(sortableOptions) } + Repeater.prototype.onRemoveItemSuccess = function(ev) { + $(ev.target).closest('.field-repeater-item').remove() + } + + // This fires twice, not sure why + Repeater.prototype.onAddItemSuccess = function(ev) { + } + Repeater.prototype.toggleCollapse = function(ev) { var $item = $(ev.target).closest('.field-repeater-item'), isCollapsed = $item.hasClass('collapsed') diff --git a/modules/backend/formwidgets/repeater/partials/_repeater.htm b/modules/backend/formwidgets/repeater/partials/_repeater.htm index 59cba2994..c713ac298 100644 --- a/modules/backend/formwidgets/repeater/partials/_repeater.htm +++ b/modules/backend/formwidgets/repeater/partials/_repeater.htm @@ -15,6 +15,7 @@
diff --git a/modules/backend/formwidgets/repeater/partials/_repeater_item.htm b/modules/backend/formwidgets/repeater/partials/_repeater_item.htm index c28726ac4..5e195c338 100644 --- a/modules/backend/formwidgets/repeater/partials/_repeater_item.htm +++ b/modules/backend/formwidgets/repeater/partials/_repeater_item.htm @@ -9,9 +9,9 @@ type="button" class="close" aria-label="Remove" + data-repeater-remove data-request="getEventHandler('onRemoveItem') ?>" data-request-data="'index': ''" - data-request-success="$(this).closest('.field-repeater-item').remove()" data-request-confirm="">