From 502e755f846f12cf39689f84d0222a8345075992 Mon Sep 17 00:00:00 2001 From: Katrin Yordanova Date: Tue, 19 Sep 2023 11:26:03 +0300 Subject: [PATCH] Add CButtonSubmit and apply it to webapps --- .../src/components/Apigw/CFiltersStepper.vue | 16 ++- .../src/components/Apigw/CRouteEditorInfo.vue | 12 +- .../src/components/Apigw/CSettingsEditor.vue | 10 +- .../Application/CApplicationEditorInfo.vue | 11 +- .../Application/CApplicationEditorUnify.vue | 13 +- .../Authclient/CAuthclientEditorInfo.vue | 10 +- .../Federation/CFederationEditorInfo.vue | 10 +- .../Permissions/CPermissionList.vue | 14 +- .../components/Queues/CQueueEditorInfo.vue | 13 +- .../src/components/Role/CRoleEditorInfo.vue | 13 +- .../components/Role/CRoleEditorMembers.vue | 10 +- .../CSensitivityLevelEditorInfo.vue | 13 +- .../Settings/Compose/CComposeEditorBasic.vue | 10 +- .../Settings/Compose/CComposeEditorUI.vue | 10 +- .../Settings/Email/CSystemEmailServer.vue | 29 ++-- .../Settings/System/CSystemEditorAuth.vue | 10 +- .../System/CSystemEditorAuthBgScreen.vue | 14 +- .../Settings/System/CSystemEditorExternal.vue | 10 +- .../components/Settings/UI/CUICustomCSS.vue | 8 +- .../Settings/UI/CUITopbarSettings.vue | 10 +- .../Template/CTemplateEditorContent/Index.vue | 16 ++- .../Template/CTemplateEditorInfo.vue | 13 +- .../src/components/User/CUserEditorAvatar.vue | 10 +- .../src/components/User/CUserEditorInfo.vue | 14 +- .../components/User/CUserEditorPassword.vue | 12 +- .../src/components/User/CUserEditorRoles.vue | 10 +- .../Workflow/CWorkflowEditorInfo.vue | 13 +- .../src/views/Federation/Nodes/Editor.vue | 17 +-- .../admin/src/views/Federation/Nodes/List.vue | 25 ++-- .../admin/src/views/System/Apigw/Editor.vue | 2 + .../admin/src/views/System/Apigw/Index.vue | 2 + .../src/views/System/Application/Editor.vue | 3 + .../src/views/System/AuthClient/Editor.vue | 2 + .../src/views/System/Connection/Editor.vue | 35 +++-- .../admin/src/views/System/Email/Index.vue | 6 +- .../admin/src/views/System/Queue/Editor.vue | 1 + .../admin/src/views/System/Role/Editor.vue | 1 + .../views/System/SensitivityLevel/Editor.vue | 1 + .../admin/src/views/System/Settings/Index.vue | 2 + .../src/views/System/Template/Editor.vue | 1 + .../admin/src/views/System/User/Editor.vue | 4 + .../src/components/Admin/EditorToolbar.vue | 72 +++++++--- .../src/components/Common/RecordToolbar.vue | 34 ++--- .../components/Namespaces/Reminders/Edit.vue | 26 +++- .../components/Namespaces/Reminders/index.vue | 28 +++- client/web/compose/src/components/index.js | 1 + client/web/compose/src/mixins/pages.js | 8 ++ .../src/themes/corteza-base/custom.scss | 2 +- .../compose/src/views/Admin/Charts/Edit.vue | 42 +++++- .../compose/src/views/Admin/Modules/Edit.vue | 24 ++++ .../compose/src/views/Admin/Pages/Builder.vue | 25 +++- .../compose/src/views/Admin/Pages/Edit.vue | 21 +++ .../web/compose/src/views/Namespace/Edit.vue | 30 +++++ .../src/components/Common/EditorToolbar.vue | 18 ++- .../reporter/src/components/EditorToolbar.vue | 31 ++++- client/web/reporter/src/mixins/report.js | 4 + client/web/reporter/src/views/Layout.vue | 2 +- .../web/reporter/src/views/Report/Builder.vue | 25 +++- client/web/reporter/src/views/Report/Edit.vue | 1 + .../src/components/WorkflowEditor.vue | 41 +++--- .../src/components/button/CButtonSubmit.vue | 125 ++++++++++++++++++ lib/vue/src/components/button/index.ts | 1 + lib/vue/src/components/index.ts | 4 + .../permissions/CPermissionsModal.vue | 44 +++++- locale/en/corteza-webapp-workflow/editor.yaml | 1 + 65 files changed, 755 insertions(+), 291 deletions(-) create mode 100644 lib/vue/src/components/button/CButtonSubmit.vue create mode 100644 lib/vue/src/components/button/index.ts diff --git a/client/web/admin/src/components/Apigw/CFiltersStepper.vue b/client/web/admin/src/components/Apigw/CFiltersStepper.vue index 4e84419c14..15e0fa5496 100644 --- a/client/web/admin/src/components/Apigw/CFiltersStepper.vue +++ b/client/web/admin/src/components/Apigw/CFiltersStepper.vue @@ -53,10 +53,11 @@ :filters="getSelectedFiltersByStep" @addFilter="onAddFilter" /> - @@ -65,9 +66,10 @@ diff --git a/client/web/reporter/src/mixins/report.js b/client/web/reporter/src/mixins/report.js index ed1349e326..18eb281807 100644 --- a/client/web/reporter/src/mixins/report.js +++ b/client/web/reporter/src/mixins/report.js @@ -4,6 +4,7 @@ export default { data () { return { processing: false, + processingSave: false, report: undefined, } }, @@ -25,6 +26,7 @@ export default { async handleSave () { this.processing = true + this.processingSave = true const { blocks } = this.report @@ -53,6 +55,7 @@ export default { .catch(this.toastErrorHandler(this.$t('notification:report.createFailed'))) .finally(() => { this.processing = false + this.processingSave = false }) } else { return this.$SystemAPI.reportUpdate(report) @@ -65,6 +68,7 @@ export default { .catch(this.toastErrorHandler(this.$t('notification:report.updateFailed'))) .finally(() => { this.processing = false + this.processingSave = false }) } }, diff --git a/client/web/reporter/src/views/Layout.vue b/client/web/reporter/src/views/Layout.vue index 09cddec616..2f6077ba87 100644 --- a/client/web/reporter/src/views/Layout.vue +++ b/client/web/reporter/src/views/Layout.vue @@ -131,7 +131,7 @@ export default { disabledRoutes: [ 'report.list', 'report.create', - 'report.edit' + 'report.edit', ], } }, diff --git a/client/web/reporter/src/views/Report/Builder.vue b/client/web/reporter/src/views/Report/Builder.vue index 4cf5d8658e..f86234cad7 100644 --- a/client/web/reporter/src/views/Report/Builder.vue +++ b/client/web/reporter/src/views/Report/Builder.vue @@ -247,16 +247,13 @@ + + @@ -398,6 +406,8 @@ import ScenarioConfigurator from 'corteza-webapp-reporter/src/components/Report/ import * as displayElementThumbnails from 'corteza-webapp-reporter/src/assets/DisplayElements' import VueSelect from 'vue-select' import Prefilter from 'corteza-webapp-reporter/src/components/Common/Prefilter' +import { components } from '@cortezaproject/corteza-vue' +const { CButtonSubmit } = components export default { name: 'ReportBuilder', @@ -412,6 +422,7 @@ export default { EditorToolbar, VueSelect, Prefilter, + CButtonSubmit, }, mixins: [ @@ -421,6 +432,8 @@ export default { data () { return { processing: false, + processingSave: false, + showReport: true, report: undefined, @@ -807,9 +820,8 @@ export default { this.datasources.showConfigurator = true }, - saveDatasources (hideEvent) { + saveDatasources () { // Prevent closing of modal and manually close it when request is complete - hideEvent.preventDefault() this.datasources.processing = true const sources = this.datasources.tempItems @@ -827,6 +839,7 @@ export default { }).catch(this.toastErrorHandler(this.$t('notification:report.datasources.updateFailed'))) .finally(() => { this.datasources.processing = false + this.hideDatasourceConfigurator() }) }, diff --git a/client/web/reporter/src/views/Report/Edit.vue b/client/web/reporter/src/views/Report/Edit.vue index f7a3303c88..a3e8065a31 100644 --- a/client/web/reporter/src/views/Report/Edit.vue +++ b/client/web/reporter/src/views/Report/Edit.vue @@ -168,6 +168,7 @@ :delete-disabled="!canDelete" :save-disabled="!canSave" :processing="processing" + :processing-save="processingSave" @delete="handleDelete" @save="handleSave" /> diff --git a/client/web/workflow/src/components/WorkflowEditor.vue b/client/web/workflow/src/components/WorkflowEditor.vue index e97e670553..c2bfa8e824 100644 --- a/client/web/workflow/src/components/WorkflowEditor.vue +++ b/client/web/workflow/src/components/WorkflowEditor.vue @@ -196,26 +196,18 @@ class="d-flex flex-column flex-shrink position-absolute fixed-bottom m-2" style="z-index: 1; width: 20vw;" > - - - Saving - - - {{ $t('editor:detected-changes') + `${canUpdateWorkflow ? this.$t('editor:click-to-save') : ''}` }} - - + @submit="saveWorkflow()" + />
- - {{ $t('editor:save') }} - + :processing="processingSave" + :text="$t('editor:save')" + class="ml-auto" + @submit="saveWorkflow()" + />
@@ -496,7 +487,8 @@ import VueJsonEditor from 'v-jsoneditor' import Import from '../components/Import' import Export from '../components/Export' import { NoID } from '@cortezaproject/corteza-js' -import { handle } from '@cortezaproject/corteza-vue' +import { handle, components } from '@cortezaproject/corteza-vue' +const { CButtonSubmit } = components const { mxClient, @@ -544,6 +536,7 @@ export default { VueJsonEditor, Import, Export, + CButtonSubmit, }, props: { diff --git a/lib/vue/src/components/button/CButtonSubmit.vue b/lib/vue/src/components/button/CButtonSubmit.vue new file mode 100644 index 0000000000..96d416f605 --- /dev/null +++ b/lib/vue/src/components/button/CButtonSubmit.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/lib/vue/src/components/button/index.ts b/lib/vue/src/components/button/index.ts new file mode 100644 index 0000000000..a42181ebeb --- /dev/null +++ b/lib/vue/src/components/button/index.ts @@ -0,0 +1 @@ +export { default as CButtonSubmit } from './CButtonSubmit.vue' \ No newline at end of file diff --git a/lib/vue/src/components/index.ts b/lib/vue/src/components/index.ts index 55f757687d..ffcbaf9c2e 100644 --- a/lib/vue/src/components/index.ts +++ b/lib/vue/src/components/index.ts @@ -84,4 +84,8 @@ export { CProgress, } from './progress' +export { + CButtonSubmit, +} from './button' + export { default as C3 } from './c3' diff --git a/lib/vue/src/components/permissions/CPermissionsModal.vue b/lib/vue/src/components/permissions/CPermissionsModal.vue index 319f74ef27..b15e5139d1 100644 --- a/lib/vue/src/components/permissions/CPermissionsModal.vue +++ b/lib/vue/src/components/permissions/CPermissionsModal.vue @@ -7,15 +7,10 @@ :title="translatedTitle" lazy scrollable - :ok-disabled="submitDisabled" - :ok-title="labels.save" - :cancel-title="labels.cancel" - cancel-variant="light" no-fade body-class="d-flex flex-column p-0" class="h-100 overflow-hidden" @hide="onHide" - @ok="onSubmit" > + + + @@ -226,6 +257,7 @@ import { modalOpenEventName, split } from './def.ts' import { VueSelect } from 'vue-select' import Rules from './form/Rules.vue' +import CButtonSubmit from '../button/CButtonSubmit.vue' import calculateDropdownPosition from '../../mixins/vue-select-position' export default { @@ -236,6 +268,7 @@ export default { components: { Rules, VueSelect, + CButtonSubmit, }, mixins: [ @@ -399,6 +432,7 @@ export default { this.fetchRules(roleID) }).finally(() => { this.processing = false + this.onHide() }) }, diff --git a/locale/en/corteza-webapp-workflow/editor.yaml b/locale/en/corteza-webapp-workflow/editor.yaml index 47c4fa6384..1d9b8c20a9 100644 --- a/locale/en/corteza-webapp-workflow/editor.yaml +++ b/locale/en/corteza-webapp-workflow/editor.yaml @@ -24,6 +24,7 @@ reset: Reset 'required-namespace': Namespace required 'required-namespace-and-module': Namespace and Module required save: Save +saving: Saving spinning: Spinning 'test-in-progress': "Testing in progress. If your workflow includes Prompt or Delay steps, it may be waiting for them to complete" 'unsupported-browser': Browser is not supported!