diff options
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/core/dialog.js | 8 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/form/form_controller.js | 9 |
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 |
