From dcb550d6a8713aea6e83bcd2e349602d51024174 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Thu, 10 Nov 2022 13:52:36 +0200 Subject: [PATCH] layout shortcuts --- client/src/views/admin/layouts/base.js | 14 +++++++------- client/src/views/admin/layouts/index.js | 14 ++++++++++++++ .../views/admin/layouts/modals/edit-attributes.js | 9 +++++++++ .../views/admin/layouts/modals/panel-attributes.js | 9 +++++++++ 4 files changed, 39 insertions(+), 7 deletions(-) diff --git a/client/src/views/admin/layouts/base.js b/client/src/views/admin/layouts/base.js index a937e47643..f3c4332498 100644 --- a/client/src/views/admin/layouts/base.js +++ b/client/src/views/admin/layouts/base.js @@ -36,9 +36,7 @@ define('views/admin/layouts/base', ['view'], function (Dep) { events: { 'click button[data-action="save"]': function () { - this.disableButtons(); - this.notify('Saving...'); - this.save(this.enableButtons.bind(this)); + this.actionSave(); }, 'click button[data-action="cancel"]': function () { this.cancel(); @@ -72,6 +70,12 @@ define('views/admin/layouts/base', ['view'], function (Dep) { dataAttributesDynamicLogicDefs: null, + actionSave: function () { + this.disableButtons(); + this.notify('Saving...'); + this.save(this.enableButtons.bind(this)); + }, + disableButtons: function () { this.$el.find('.button-container button').attr('disabled', true); }, @@ -144,10 +148,6 @@ define('views/admin/layouts/base', ['view'], function (Dep) { this.dataAttributeList; this.dataAttributeList = Espo.Utils.clone(this.dataAttributeList); - - this.once('remove', () => { - this.setIsNotChanged(); - }); }, unescape: function (string) { diff --git a/client/src/views/admin/layouts/index.js b/client/src/views/admin/layouts/index.js index 144691c17d..f0314cbcea 100644 --- a/client/src/views/admin/layouts/index.js +++ b/client/src/views/admin/layouts/index.js @@ -98,6 +98,20 @@ define('views/admin/layouts/index', ['view'], function (Dep) { $collapse.collapse('show'); } }, + 'keydown.shortcuts': function (e) { + let key = Espo.Utils.getKeyFromKeyEvent(e); + + if (!this.hasView('content')) { + return; + } + + if (key === 'Control+Enter' || key === 'Control+KeyS') { + e.stopPropagation(); + e.preventDefault(); + + this.getView('content').actionSave(); + } + }, }, getLayoutScopeDataList: function () { diff --git a/client/src/views/admin/layouts/modals/edit-attributes.js b/client/src/views/admin/layouts/modals/edit-attributes.js index df8e20d00a..741fced7ad 100644 --- a/client/src/views/admin/layouts/modals/edit-attributes.js +++ b/client/src/views/admin/layouts/modals/edit-attributes.js @@ -40,6 +40,15 @@ define('views/admin/layouts/modals/edit-attributes', ['views/modal', 'model'], f className: 'dialog dialog-record', + shortcutKeys: { + 'Control+Enter': function (e) { + this.actionSave(); + + e.preventDefault(); + e.stopPropagation(); + }, + }, + setup: function () { this.buttonList = [ { diff --git a/client/src/views/admin/layouts/modals/panel-attributes.js b/client/src/views/admin/layouts/modals/panel-attributes.js index 0b81a2f178..2dd3d9990a 100644 --- a/client/src/views/admin/layouts/modals/panel-attributes.js +++ b/client/src/views/admin/layouts/modals/panel-attributes.js @@ -40,6 +40,15 @@ define('views/admin/layouts/modals/panel-attributes', ['views/modal', 'model'], className: 'dialog dialog-record', + shortcutKeys: { + 'Control+Enter': function (e) { + this.actionSave(); + + e.preventDefault(); + e.stopPropagation(); + }, + }, + setup: function () { this.buttonList = [ {