summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/core/dialog.js8
-rw-r--r--addons/web/static/src/js/views/form/form_controller.js9
2 files changed, 16 insertions, 1 deletions
diff --git a/addons/web/static/src/js/core/dialog.js b/addons/web/static/src/js/core/dialog.js
index 047df634ba2..cd76ec770bb 100644
--- a/addons/web/static/src/js/core/dialog.js
+++ b/addons/web/static/src/js/core/dialog.js
@@ -21,6 +21,7 @@ var Dialog = Widget.extend({
xmlDependencies: ['/web/static/src/xml/dialog.xml'],
custom_events: _.extend({}, Widget.prototype.custom_events, {
focus_control_button: '_onFocusControlButton',
+ close_dialog: '_onCloseDialog',
}),
events: _.extend({}, Widget.prototype.events, {
'keydown .modal-footer button': '_onFooterButtonKeyDown',
@@ -317,6 +318,13 @@ var Dialog = Widget.extend({
// Handlers
//--------------------------------------------------------------------------
/**
+ * @private
+ */
+ _onCloseDialog: function (ev) {
+ ev.stopPropagation();
+ this.close();
+ },
+ /**
* Moves the focus to the first button primary in the footer of the dialog
*
* @private
diff --git a/addons/web/static/src/js/views/form/form_controller.js b/addons/web/static/src/js/views/form/form_controller.js
index e6c50848c4a..3ecd38cfe45 100644
--- a/addons/web/static/src/js/views/form/form_controller.js
+++ b/addons/web/static/src/js/views/form/form_controller.js
@@ -577,7 +577,14 @@ var FormController = BasicController.extend({
return;
}
- def.then(this._enableButtons.bind(this)).guardedCatch(this._enableButtons.bind(this));
+ // Kind of hack for FormViewDialog: button on footer should trigger the dialog closing
+ // if the `close` attribute is set
+ def.then(function () {
+ self._enableButtons();
+ if (attrs.close) {
+ self.trigger_up('close_dialog');
+ }
+ }).guardedCatch(this._enableButtons.bind(this));
},
/**
* Called when the user wants to create a new record -> @see createRecord