From 4d7a56ec27cc268e8e7889e24cef534907562587 Mon Sep 17 00:00:00 2001 From: joshuaboud Date: Mon, 13 Jun 2022 14:58:54 -0300 Subject: [PATCH] dynamic entry size for grid view --- navigator/src/components/DirectoryEntry.vue | 17 +++++--- .../src/components/DirectoryEntryList.vue | 20 +++++++-- navigator/src/components/DirectoryView.vue | 41 +++++++++++++++++-- navigator/src/components/SettingsMenu.vue | 1 + 4 files changed, 66 insertions(+), 13 deletions(-) diff --git a/navigator/src/components/DirectoryEntry.vue b/navigator/src/components/DirectoryEntry.vue index dec5b9d..1d731a3 100644 --- a/navigator/src/components/DirectoryEntry.vue +++ b/navigator/src/components/DirectoryEntry.vue @@ -65,9 +65,10 @@
-
- + class="hover:!bg-red-600/10 select-none dir-entry flex flex-col items-center overflow-hidden entry-width p-2" + :class="{ 'dir-entry-selected': entry.selected, '!border-t-0': suppressBorders.top, '!border-b-0': suppressBorders.bottom, '!border-l-0': suppressBorders.left, '!border-r-0': suppressBorders.right }"> +
+
td { tr.dir-entry-selected>td { @apply border-y first:border-l-red-600/50 last:border-red-600/50 bg-red-600/10; } -/* + div.dir-entry { @apply border-solid border border-transparent; -} */ +} div.dir-entry-selected { - @apply bg-red-600/10; + @apply border-red-600/50 bg-red-600/10; +} + +div.entry-width { + width: v-bind('`${settings.directoryView?.gridEntrySize ?? 80}px`'); } diff --git a/navigator/src/components/DirectoryEntryList.vue b/navigator/src/components/DirectoryEntryList.vue index 786f0d8..d54f800 100644 --- a/navigator/src/components/DirectoryEntryList.vue +++ b/navigator/src/components/DirectoryEntryList.vue @@ -2,13 +2,12 @@ 0), }, level: Number, + cols: { + type: Number, + required: false, + default: 1, + }, }, setup(props, { emit }) { const settings = inject(settingsInjectionKey); @@ -167,6 +171,15 @@ export default { ); } + const getBorderSuppression = (entry, index) => { + return { + top: visibleEntries.value[index - props.cols]?.selected && !(visibleEntries.value[index - props.cols]?.dirOpen), + bottom: visibleEntries.value[index + props.cols]?.selected && !(entry.dirOpen), + left: settings.directoryView.view !== 'list' && (visibleEntries.value[index - 1]?.selected && (index) % props.cols !== 0), + right: settings.directoryView.view !== 'list' && (visibleEntries.value[index + 1]?.selected && (index + 1) % props.cols !== 0), + } + }; + const fileSystemWatcher = FileSystemWatcher(props.path, { superuser: 'try', host: props.host, ignoreSelf: true }); fileSystemWatcher.onCreated = async (eventObj) => { @@ -248,6 +261,7 @@ export default { sortEntries, entryFilterCallback, gatherEntries, + getBorderSuppression, } }, components: { diff --git a/navigator/src/components/DirectoryView.vue b/navigator/src/components/DirectoryView.vue index 51298e5..cdd5bf4 100644 --- a/navigator/src/components/DirectoryView.vue +++ b/navigator/src/components/DirectoryView.vue @@ -67,22 +67,22 @@ :searchFilterRegExp="searchFilterRegExp" @cd="(...args) => $emit('cd', ...args)" @edit="(...args) => $emit('edit', ...args)" @toggleSelected="toggleSelected" @updateStats="(...args) => $emit('updateStats', ...args)" @startProcessing="processing++" - @stopProcessing="processing--" ref="directoryEntryListRef" :level="0" /> + @stopProcessing="processing--" ref="directoryEntryListRef" :level="0" :cols="1" /> -
+
+ @stopProcessing="processing--" ref="directoryEntryListRef" :level="0" :cols="cols" />