Skip to content

Commit b1ee963

Browse files
feat: add collapse/expand all folders action (#199)
1 parent 861f889 commit b1ee963

File tree

6 files changed

+52
-2
lines changed

6 files changed

+52
-2
lines changed

src/main/services/i18n/locales/en/common.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,7 @@
5656
"restartApp": "Restart massCode",
5757
"updateAvailable": "Update Available",
5858
"hide": "Hide",
59-
"show": "Show"
59+
"show": "Show",
60+
"collapse-all": "Collapse All",
61+
"expand-all": "Expand All"
6062
}

src/main/services/i18n/locales/ru/common.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,7 @@
5555
"restartApp": "Перезагрузить massCode",
5656
"updateAvailable": "Доступно обновление",
5757
"hide": "Hide",
58-
"show": "Show"
58+
"show": "Show",
59+
"collapse-all": "Закрыть все",
60+
"expand-all": "Открыть все"
5961
}

src/main/services/ipc/context-menu.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,27 @@ export const subscribeToContextMenu = () => {
266266
}
267267
},
268268
{ type: 'separator' },
269+
{
270+
label: i18n.t('collapse-all'),
271+
click: () => {
272+
resolve({
273+
action: 'collapse-all',
274+
type,
275+
data: undefined
276+
})
277+
}
278+
},
279+
{
280+
label: i18n.t('expand-all'),
281+
click: () => {
282+
resolve({
283+
action: 'expand-all',
284+
type,
285+
data: undefined
286+
})
287+
}
288+
},
289+
{ type: 'separator' },
269290
{
270291
label: i18n.t('defaultLanguage'),
271292
submenu: createLanguageMenu()

src/renderer/components/sidebar/SidebarListItem.vue

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ const onClickContextMenu = async () => {
9797
await folderStore.patchFoldersById(props.id!, { defaultLanguage: data })
9898
track('folders/set-language', data)
9999
}
100+
101+
if (action === 'collapse-all') {
102+
folderStore.openFolders('close')
103+
}
104+
105+
if (action === 'expand-all') {
106+
folderStore.openFolders('open')
107+
}
100108
}
101109
102110
if (props.alias) {

src/renderer/store/folders.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,21 @@ export const useFolderStore = defineStore('folders', {
149149
await this.getFolders()
150150
await snippetStore.getSnippets()
151151
snippetStore.setSnippetsByAlias('trash')
152+
},
153+
openFolders (action: 'open' | 'close') {
154+
if (action === 'open') {
155+
this.folders.forEach(async i => {
156+
this.patchFoldersById(i.id, {
157+
isOpen: true
158+
})
159+
})
160+
} else {
161+
this.folders.forEach(i => {
162+
this.patchFoldersById(i.id, {
163+
isOpen: false
164+
})
165+
})
166+
}
152167
}
153168
}
154169
})

src/shared/types/main/index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ type ContextMenuAction =
1919
| 'favorites'
2020
| 'new'
2121
| 'update:language'
22+
| 'collapse-all'
23+
| 'expand-all'
2224
| 'none'
2325

2426
export type ContextMenuType =

0 commit comments

Comments
 (0)