Push add/remove events to JS

Refs #2710 /cc @LukeTowers
This commit is contained in:
Samuel Georges 2017-03-01 12:40:15 +11:00
parent 03959fa087
commit 023f2ac0f5
3 changed files with 14 additions and 1 deletions

View File

@ -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')

View File

@ -15,6 +15,7 @@
<div class="field-repeater-add-item loading-indicator-container indicator-center">
<a
href="javascript:;"
data-repeater-add
data-request="<?= $this->getEventHandler('onAddItem') ?>"
data-load-indicator>
<?= e(trans($prompt)) ?>

View File

@ -9,9 +9,9 @@
type="button"
class="close"
aria-label="Remove"
data-repeater-remove
data-request="<?= $this->getEventHandler('onRemoveItem') ?>"
data-request-data="'index': '<?= $indexValue ?>'"
data-request-success="$(this).closest('.field-repeater-item').remove()"
data-request-confirm="<?= e(trans('backend::lang.form.action_confirm')) ?>">
<span aria-hidden="true">&times;</span>
</button>