From fba8f631c7c2a7145421b0bbc9eb60db26a72fdb Mon Sep 17 00:00:00 2001 From: braks <78412429+bcakmakoglu@users.noreply.github.com> Date: Fri, 29 Jul 2022 17:04:59 +0200 Subject: [PATCH] feat(gui-v2): use modal for deletion confirm --- .../nc-gui-v2/components/dlg/ViewDelete.vue | 62 +++++++++++++++++++ .../components/smartsheet/sidebar/MenuTop.vue | 34 +++++----- .../smartsheet/sidebar/RenameableMenuItem.vue | 13 +--- 3 files changed, 79 insertions(+), 30 deletions(-) create mode 100644 packages/nc-gui-v2/components/dlg/ViewDelete.vue diff --git a/packages/nc-gui-v2/components/dlg/ViewDelete.vue b/packages/nc-gui-v2/components/dlg/ViewDelete.vue new file mode 100644 index 0000000000..7a0cb8a8a4 --- /dev/null +++ b/packages/nc-gui-v2/components/dlg/ViewDelete.vue @@ -0,0 +1,62 @@ + + + diff --git a/packages/nc-gui-v2/components/smartsheet/sidebar/MenuTop.vue b/packages/nc-gui-v2/components/smartsheet/sidebar/MenuTop.vue index d5d093b249..0efe9ed656 100644 --- a/packages/nc-gui-v2/components/smartsheet/sidebar/MenuTop.vue +++ b/packages/nc-gui-v2/components/smartsheet/sidebar/MenuTop.vue @@ -4,7 +4,7 @@ import Sortable from 'sortablejs' import type { Menu as AntMenu } from 'ant-design-vue' import { notification } from 'ant-design-vue' import RenameableMenuItem from './RenameableMenuItem.vue' -import { computed, inject, onBeforeUnmount, onMounted, ref, unref, useApi, useNuxtApp, useTabs, watch } from '#imports' +import { computed, inject, onBeforeUnmount, onMounted, ref, unref, useApi, useTabs, watch } from '#imports' import { extractSdkResponseErrorMsg } from '~/utils' import type { TabItem } from '~/composables/useTabs' import { TabType } from '~/composables/useTabs' @@ -22,8 +22,6 @@ const activeView = inject(ActiveViewInj, ref()) const views = inject(ViewListInj, ref([])) -const { $e } = useNuxtApp() - const { addTab } = useTabs() const { api } = useApi() @@ -36,6 +34,10 @@ const selected = ref([]) const menuRef = ref() +let deleteModalVisible = $ref(false) + +let toDelete = $ref | undefined>() + /** Watch currently active view, so we can mark it in the menu */ watch(activeView, (nextActiveView) => { const _nextActiveView = nextActiveView as GridType | FormType | KanbanType @@ -146,24 +148,14 @@ async function onRename(view: Record) { /** Delete a view */ async function onDelete(view: Record) { - try { - await api.dbView.delete(view.id) - - notification.success({ - message: 'View deleted successfully', - duration: 3, - }) - - emits('deleted') - } catch (e: any) { - notification.error({ - message: await extractSdkResponseErrorMsg(e), - duration: 3, - }) - } + toDelete = view + deleteModalVisible = true +} - // telemetry event - $e('a:view:delete', { view: view.type }) +function onDeleted() { + emits('deleted') + toDelete = undefined + deleteModalVisible = false } const sortedViews = computed(() => (views.value as any[]).sort((a, b) => a.order - b.order)) @@ -183,4 +175,6 @@ const sortedViews = computed(() => (views.value as any[]).sort((a, b) => a.order @rename="onRename" /> + + diff --git a/packages/nc-gui-v2/components/smartsheet/sidebar/RenameableMenuItem.vue b/packages/nc-gui-v2/components/smartsheet/sidebar/RenameableMenuItem.vue index 80955d33cc..3f76ae166e 100644 --- a/packages/nc-gui-v2/components/smartsheet/sidebar/RenameableMenuItem.vue +++ b/packages/nc-gui-v2/components/smartsheet/sidebar/RenameableMenuItem.vue @@ -159,22 +159,15 @@ function onStopEdit() {