Skip to content

Commit 84b39d1

Browse files
feat(snippets): add compact mode (#372)
1 parent e2c8d4f commit 84b39d1

10 files changed

Lines changed: 61 additions & 13 deletions

File tree

src/main/menu/main.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,16 @@ const viewMenu: MenuItemConstructorOptions[] = [
343343
'main-menu:hide-subfolder-snippets'
344344
)
345345
}
346+
},
347+
{
348+
label: i18n.t('menu:view.compactMode'),
349+
type: 'checkbox',
350+
checked: store.app.get('compactMode'),
351+
click: () => {
352+
BrowserWindow.getFocusedWindow()?.webContents.send(
353+
'main-menu:compact-mode-snippets'
354+
)
355+
}
346356
}
347357
]
348358

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@
5050
"dateCreated": "Date Created",
5151
"name": "Name"
5252
},
53-
"hideSubfolderSnippets": "Hide Subfolder Snippets"
53+
"hideSubfolderSnippets": "Hide Subfolder Snippets",
54+
"compactMode": "Compact Mode"
5455
},
5556
"edit": {
5657
"label": "Edit",

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@
5050
"dateCreated": "Дате создания",
5151
"name": "Имени"
5252
},
53-
"hideSubfolderSnippets": "Скрыть сниппеты в подпапках"
53+
"hideSubfolderSnippets": "Скрыть сниппеты в подпапках",
54+
"compactMode": "Компактный режим"
5455
},
5556
"edit": {
5657
"label": "Изменить",

src/main/store/module/app.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export default new Store<AppStore>({
1010
sidebarWidth: 180,
1111
snippetListWidth: 250,
1212
sort: 'updatedAt',
13-
hideSubfolderSnippets: false
13+
hideSubfolderSnippets: false,
14+
compactMode: false
1415
}
1516
})

src/renderer/App.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ const init = async () => {
8686
8787
snippetStore.sort = store.app.get('sort')
8888
snippetStore.hideSubfolderSnippets = store.app.get('hideSubfolderSnippets')
89+
snippetStore.compactMode = store.app.get('compactMode')
8990
9091
if (theme) {
9192
appStore.setTheme(theme)
@@ -234,6 +235,11 @@ ipc.on('main-menu:hide-subfolder-snippets', () => {
234235
store.app.set('hideSubfolderSnippets', snippetStore.hideSubfolderSnippets)
235236
})
236237
238+
ipc.on('main-menu:compact-mode-snippets', () => {
239+
snippetStore.compactMode = !snippetStore.compactMode
240+
store.app.set('compactMode', snippetStore.compactMode)
241+
})
242+
237243
ipc.on('main-menu:add-description', async () => {
238244
await onAddDescription()
239245
})

src/renderer/components/snippets/SnippetListItem.vue

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
:class="{
66
'is-selected': !isFocused && isSelected,
77
'is-focused': isFocused,
8-
'is-highlighted': isHighlighted || isHighlightedMultiple
8+
'is-highlighted': isHighlighted || isHighlightedMultiple,
9+
'is-compact': snippetStore.compactMode
910
}"
1011
:draggable="true"
1112
@click="onClickSnippet"
@@ -15,12 +16,23 @@
1516
>
1617
<div class="header">
1718
<div class="name">
18-
<span>
19-
{{ name || 'Untitled snippet' }}
20-
</span>
19+
<div class="name__inner">
20+
<span>
21+
{{ name || 'Untitled snippet' }}
22+
</span>
23+
<span
24+
v-if="snippetStore.compactMode"
25+
class="date"
26+
>
27+
{{ dateFormat }}
28+
</span>
29+
</div>
2130
</div>
2231
</div>
23-
<div class="footer">
32+
<div
33+
v-if="!snippetStore.compactMode"
34+
class="footer"
35+
>
2436
<div class="folder">
2537
{{ folder || 'Inbox' }}
2638
</div>
@@ -322,7 +334,7 @@ onUnmounted(() => {
322334
top: 0px;
323335
left: 8px;
324336
right: 8px;
325-
bottom: 0px;
337+
bottom: 3px;
326338
border-radius: 5px;
327339
z-index: 1;
328340
}
@@ -352,6 +364,14 @@ onUnmounted(() => {
352364
outline-offset: -2px;
353365
}
354366
}
367+
&.is-compact {
368+
.date {
369+
color: var(--color-text-3);
370+
font-size: 11px;
371+
position: relative;
372+
top: 1px;
373+
}
374+
}
355375
}
356376
.name {
357377
display: table;
@@ -361,10 +381,15 @@ onUnmounted(() => {
361381
position: relative;
362382
z-index: 1;
363383
line-height: 24px;
364-
span {
365-
display: -webkit-box;
366-
-webkit-line-clamp: 1;
367-
-webkit-box-orient: vertical;
384+
&__inner {
385+
display: flex;
386+
justify-content: space-between;
387+
gap: 4px;
388+
span {
389+
display: -webkit-box;
390+
-webkit-line-clamp: 1;
391+
-webkit-box-orient: vertical;
392+
}
368393
}
369394
}
370395
.footer {

src/renderer/store/snippets.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export const useSnippetStore = defineStore('snippets', {
2828
searchQuery: undefined,
2929
sort: 'updatedAt',
3030
hideSubfolderSnippets: false,
31+
compactMode: false,
3132
isContextState: false,
3233
isMarkdownPreview: false,
3334
isScreenshotPreview: false,

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ type MainMenuAction =
4646
| 'search'
4747
| 'sort-snippets'
4848
| 'hide-subfolder-snippets'
49+
| 'compact-mode-snippets'
4950
| 'font-size-increase'
5051
| 'font-size-decrease'
5152
| 'font-size-reset'

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export interface AppStore {
1414
snippetListWidth: number
1515
sort: SnippetsSort
1616
hideSubfolderSnippets?: boolean
17+
compactMode?: boolean
1718
version?: string
1819
}
1920

src/shared/types/renderer/store/snippets.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export interface State {
1313
searchQuery?: string
1414
sort: SnippetsSort
1515
hideSubfolderSnippets: boolean
16+
compactMode: boolean
1617
isContextState: boolean
1718
isMarkdownPreview: boolean
1819
isScreenshotPreview: boolean

0 commit comments

Comments
 (0)