Make Library Reveal all / Hide all cover the whole grid.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+9
-15
@@ -91,11 +91,11 @@
|
||||
{{ selectedKeys.length && selectedKeys.length === entries.length ? 'Clear selection' : 'Select all' }}
|
||||
</button>
|
||||
<button
|
||||
v-if="hasHiddenThumbs"
|
||||
v-if="showPrivacyToggles && entries.length"
|
||||
type="button"
|
||||
class="rounded-full border px-2.5 py-1 text-[11px]"
|
||||
:class="revealAll ? 'border-amber-300 bg-amber-400/10 text-amber-100' : 'border-white/10 text-zinc-400 hover:text-white'"
|
||||
:title="revealAll ? 'Hide flagged thumbnails' : 'Reveal all hidden thumbnails'"
|
||||
:title="revealAll ? 'Hide all thumbnails' : 'Reveal all thumbnails'"
|
||||
@click="toggleRevealAll"
|
||||
>
|
||||
<span class="inline-flex items-center gap-1.5">
|
||||
@@ -324,7 +324,7 @@
|
||||
@click="focusPart(node.clip.id)"
|
||||
>
|
||||
<span class="relative h-12 w-12 shrink-0 overflow-hidden rounded bg-zinc-900">
|
||||
<span v-if="node.clip.hideThumbnail" class="sensitive-glow block h-full w-full" />
|
||||
<span v-if="showPrivacyToggles && !revealAll" class="sensitive-glow block h-full w-full" />
|
||||
<img
|
||||
v-else
|
||||
:src="partThumb(node.clip)"
|
||||
@@ -354,7 +354,7 @@
|
||||
:class="part.id === focusedPartId ? 'ring-2 ring-amber-300' : ''"
|
||||
@click="focusPart(part.id)"
|
||||
>
|
||||
<span v-if="('hideThumbnail' in part && part.hideThumbnail) || ('hideInput' in part && part.hideInput)" class="sensitive-glow block aspect-square w-full" />
|
||||
<span v-if="showPrivacyToggles && !revealAll" class="sensitive-glow block aspect-square w-full" />
|
||||
<img
|
||||
v-else
|
||||
:src="partThumb(part)"
|
||||
@@ -828,24 +828,18 @@ function cardClass(entry: LibraryEntry) {
|
||||
return selectMode.value ? 'border-amber-300/25' : 'border-white/10'
|
||||
}
|
||||
|
||||
function itemHidden(entry: LibraryEntry) {
|
||||
if (entry.kind === 'clip') return Boolean(entry.group?.head.hideThumbnail)
|
||||
if (entry.kind === 'track') return false
|
||||
return Boolean(entry.stillGroup?.parts[cardImageIndex(entry)]?.hideInput)
|
||||
}
|
||||
|
||||
function thumbHidden(entry: LibraryEntry) {
|
||||
if (!showPrivacyToggles.value || entry.kind === 'track') return false
|
||||
const id = entry.kind === 'clip' ? entry.group?.head.id : entry.stillGroup?.parts[cardImageIndex(entry)]?.id
|
||||
if (id && forceHiddenIds.value.includes(id)) return true
|
||||
return itemHidden(entry) && !revealAll.value
|
||||
// Session cover for the whole grid — not limited to individually flagged items.
|
||||
return !revealAll.value
|
||||
}
|
||||
|
||||
const hasHiddenThumbs = computed(() => entries.value.some(entry => itemHidden(entry)))
|
||||
|
||||
function toggleRevealAll() {
|
||||
revealAll.value = !revealAll.value
|
||||
forceHiddenIds.value = []
|
||||
if (focused.value && itemHidden(focused.value)) {
|
||||
if (focused.value && focused.value.kind !== 'track') {
|
||||
detailsHidden.value = !revealAll.value
|
||||
}
|
||||
}
|
||||
@@ -996,7 +990,7 @@ function onCardClick(entry: LibraryEntry, event: MouseEvent) {
|
||||
: entry.kind === 'track'
|
||||
? (entry.track?.id || '')
|
||||
: (entry.stillGroup?.parts[cardImageIndex(entry)]?.id || '')
|
||||
if (!sameCard) detailsHidden.value = itemHidden(entry) && !revealAll.value
|
||||
if (!sameCard) detailsHidden.value = thumbHidden(entry)
|
||||
cancelRename()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user