diff --git a/modules/backend/behaviors/relationcontroller/assets/js/october.relation.js b/modules/backend/behaviors/relationcontroller/assets/js/october.relation.js
index 5ab7e07ee..80bf1bea4 100644
--- a/modules/backend/behaviors/relationcontroller/assets/js/october.relation.js
+++ b/modules/backend/behaviors/relationcontroller/assets/js/october.relation.js
@@ -59,6 +59,15 @@
})
}
+ /*
+ * This function is called every time a record is created, added, removed
+ * or deleted using the relation widget. It triggers the change.oc.formwidget
+ * event to notify other elements on the page about the changed form state.
+ */
+ this.changed = function(relationId, event) {
+ $('[data-field-name="' + relationId + '"]').trigger('change.oc.formwidget', {event: event});
+ }
+
/*
* This function transfers the supplied variables as hidden form inputs,
* to any popup that is spawned within the supplied container. The spawned
diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm b/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm
index fc7420b7c..5e1e76268 100644
--- a/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm
+++ b/modules/backend/behaviors/relationcontroller/partials/_button_delete.htm
@@ -3,6 +3,7 @@
class="btn btn-sm btn-secondary oc-icon-trash-o"
data-request="onRelationButtonDelete"
data-request-confirm="= e(trans('backend::lang.relation.delete_confirm')) ?>"
+ data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'deleted')"
data-stripe-load-indicator>
= e(trans('backend::lang.relation.delete')) ?>
@@ -15,6 +16,7 @@
disabled="disabled"
data-request="onRelationButtonDelete"
data-request-confirm="= e(trans('backend::lang.relation.delete_confirm')) ?>"
+ data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'deleted')"
data-trigger-action="enable"
data-trigger="#= $this->relationGetId('view') ?> .control-list input[type=checkbox]"
data-trigger-condition="checked"
diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm b/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm
index 4c1e37771..b4f647641 100644
--- a/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm
+++ b/modules/backend/behaviors/relationcontroller/partials/_button_remove.htm
@@ -2,6 +2,7 @@
@@ -13,6 +14,7 @@
})"
disabled="disabled"
data-request="onRelationButtonRemove"
+ data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'removed')"
data-trigger-action="enable"
data-trigger="#= $this->relationGetId('view') ?> .control-list input[type=checkbox]"
data-trigger-condition="checked"
diff --git a/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm b/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm
index ca81b0f71..cfbec72fb 100644
--- a/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm
+++ b/modules/backend/behaviors/relationcontroller/partials/_button_unlink.htm
@@ -2,6 +2,7 @@
href="javascript:;"
class="btn btn-sm btn-secondary oc-icon-unlink"
data-request="onRelationButtonUnlink"
+ data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'removed')"
data-request-confirm="= e(trans('backend::lang.relation.unlink_confirm')) ?>"
data-stripe-load-indicator>
= e(trans('backend::lang.relation.unlink')) ?>
diff --git a/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm b/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm
index da2e6959a..7ad9806c8 100644
--- a/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm
+++ b/modules/backend/behaviors/relationcontroller/partials/_manage_form.htm
@@ -47,7 +47,11 @@
- = Form::ajax('onRelationManageCreate', ['data-popup-load-indicator' => true, 'sessionKey' => $newSessionKey]) ?>
+ = Form::ajax('onRelationManageCreate', [
+ 'data-popup-load-indicator' => true,
+ 'data-request-success' => "$.oc.relationBehavior.changed('" . e($this->vars['relationField']) . "', 'created')",
+ 'sessionKey' => $newSessionKey
+ ]) ?>
diff --git a/modules/backend/behaviors/relationcontroller/partials/_manage_list.htm b/modules/backend/behaviors/relationcontroller/partials/_manage_list.htm
index 865c82dee..49e71ddbb 100644
--- a/modules/backend/behaviors/relationcontroller/partials/_manage_list.htm
+++ b/modules/backend/behaviors/relationcontroller/partials/_manage_list.htm
@@ -21,6 +21,7 @@
class="btn btn-primary"
data-request="onRelationManageAdd"
data-dismiss="popup"
+ data-request-success="$.oc.relationBehavior.changed('= e($this->vars['relationField']) ?>', 'added')"
data-stripe-load-indicator>
= e(trans('backend::lang.relation.add_selected')) ?>