Trigger form change events when items are added / removed in a repeater.
Fixes #3595. Replaces #4736. Credit to @SebastiaanKloos for the initial solution. Also fixes a longstanding issue where dynamically added fields were not considered when refreshing dependant fields.
This commit is contained in:
parent
0522f50bf4
commit
52cdfda935
|
|
@ -118,8 +118,10 @@
|
|||
}
|
||||
|
||||
Repeater.prototype.onRemoveItemSuccess = function(ev) {
|
||||
var $target = $(ev.target)
|
||||
|
||||
// Allow any widgets inside a deleted item to be disposed
|
||||
$(ev.target).closest('.field-repeater-item').find('[data-disposable]').each(function () {
|
||||
$target.closest('.field-repeater-item').find('[data-disposable]').each(function () {
|
||||
var $elem = $(this),
|
||||
control = $elem.data('control'),
|
||||
widget = $elem.data('oc.' + control)
|
||||
|
|
@ -129,12 +131,14 @@
|
|||
}
|
||||
})
|
||||
|
||||
$(ev.target).closest('.field-repeater-item').remove()
|
||||
$target.closest('[data-field-name]').trigger('change.oc.formwidget')
|
||||
$target.closest('.field-repeater-item').remove()
|
||||
this.togglePrompt()
|
||||
}
|
||||
|
||||
Repeater.prototype.onAddItemSuccess = function(ev) {
|
||||
this.togglePrompt()
|
||||
$(ev.target).closest('[data-field-name]').trigger('change.oc.formwidget')
|
||||
}
|
||||
|
||||
Repeater.prototype.togglePrompt = function () {
|
||||
|
|
|
|||
|
|
@ -122,9 +122,11 @@
|
|||
/*
|
||||
* When a master is updated, refresh its slaves
|
||||
*/
|
||||
$.each(fieldMap, function(fieldName, toRefresh){
|
||||
fieldElements.filter('[data-field-name="'+fieldName+'"]')
|
||||
.on('change.oc.formwidget', $.proxy(self.onRefreshDependants, self, fieldName, toRefresh))
|
||||
$.each(fieldMap, function(fieldName, toRefresh) {
|
||||
$(document).on('change.oc.formwidget',
|
||||
'[data-field-name="' + fieldName + '"]',
|
||||
$.proxy(self.onRefreshDependants, self, fieldName, toRefresh)
|
||||
);
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue