From 87d94879a147a467c8e2b4af8fecd2fef59e4539 Mon Sep 17 00:00:00 2001 From: Anton Reshetov Date: Sun, 7 Aug 2022 09:22:07 +0300 Subject: [PATCH] feat: add collapse/expand all folders action --- src/main/services/i18n/locales/en/common.json | 4 +++- src/main/services/i18n/locales/ru/common.json | 4 +++- src/main/services/ipc/context-menu.ts | 21 +++++++++++++++++++ .../components/sidebar/SidebarListItem.vue | 8 +++++++ src/renderer/store/folders.ts | 15 +++++++++++++ src/shared/types/main/index.d.ts | 2 ++ 6 files changed, 52 insertions(+), 2 deletions(-) diff --git a/src/main/services/i18n/locales/en/common.json b/src/main/services/i18n/locales/en/common.json index 8f3540c0..a3481ad7 100644 --- a/src/main/services/i18n/locales/en/common.json +++ b/src/main/services/i18n/locales/en/common.json @@ -56,5 +56,7 @@ "restartApp": "Restart massCode", "updateAvailable": "Update Available", "hide": "Hide", - "show": "Show" + "show": "Show", + "collapse-all": "Collapse All", + "expand-all": "Expand All" } diff --git a/src/main/services/i18n/locales/ru/common.json b/src/main/services/i18n/locales/ru/common.json index 2686ea94..cc7eb5ed 100644 --- a/src/main/services/i18n/locales/ru/common.json +++ b/src/main/services/i18n/locales/ru/common.json @@ -55,5 +55,7 @@ "restartApp": "Перезагрузить massCode", "updateAvailable": "Доступно обновление", "hide": "Hide", - "show": "Show" + "show": "Show", + "collapse-all": "Закрыть все", + "expand-all": "Открыть все" } diff --git a/src/main/services/ipc/context-menu.ts b/src/main/services/ipc/context-menu.ts index 205d0726..1a4be84f 100644 --- a/src/main/services/ipc/context-menu.ts +++ b/src/main/services/ipc/context-menu.ts @@ -266,6 +266,27 @@ export const subscribeToContextMenu = () => { } }, { type: 'separator' }, + { + label: i18n.t('collapse-all'), + click: () => { + resolve({ + action: 'collapse-all', + type, + data: undefined + }) + } + }, + { + label: i18n.t('expand-all'), + click: () => { + resolve({ + action: 'expand-all', + type, + data: undefined + }) + } + }, + { type: 'separator' }, { label: i18n.t('defaultLanguage'), submenu: createLanguageMenu() diff --git a/src/renderer/components/sidebar/SidebarListItem.vue b/src/renderer/components/sidebar/SidebarListItem.vue index db9a512e..4133287f 100644 --- a/src/renderer/components/sidebar/SidebarListItem.vue +++ b/src/renderer/components/sidebar/SidebarListItem.vue @@ -97,6 +97,14 @@ const onClickContextMenu = async () => { await folderStore.patchFoldersById(props.id!, { defaultLanguage: data }) track('folders/set-language', data) } + + if (action === 'collapse-all') { + folderStore.openFolders('close') + } + + if (action === 'expand-all') { + folderStore.openFolders('open') + } } if (props.alias) { diff --git a/src/renderer/store/folders.ts b/src/renderer/store/folders.ts index 8f23314b..0605dbee 100644 --- a/src/renderer/store/folders.ts +++ b/src/renderer/store/folders.ts @@ -149,6 +149,21 @@ export const useFolderStore = defineStore('folders', { await this.getFolders() await snippetStore.getSnippets() snippetStore.setSnippetsByAlias('trash') + }, + openFolders (action: 'open' | 'close') { + if (action === 'open') { + this.folders.forEach(async i => { + this.patchFoldersById(i.id, { + isOpen: true + }) + }) + } else { + this.folders.forEach(i => { + this.patchFoldersById(i.id, { + isOpen: false + }) + }) + } } } }) diff --git a/src/shared/types/main/index.d.ts b/src/shared/types/main/index.d.ts index f1a426b1..159725b1 100644 --- a/src/shared/types/main/index.d.ts +++ b/src/shared/types/main/index.d.ts @@ -19,6 +19,8 @@ type ContextMenuAction = | 'favorites' | 'new' | 'update:language' + | 'collapse-all' + | 'expand-all' | 'none' export type ContextMenuType =