fix(web): escape key to clear selection and go to previous page (#15142) (#15219)

This commit is contained in:
Jin Xuan 2025-01-10 23:27:35 +08:00 committed by GitHub
parent f9db60f25b
commit 3030e74fc3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 48 additions and 5 deletions

View File

@ -215,7 +215,10 @@
viewMode = AlbumPageViewMode.VIEW; viewMode = AlbumPageViewMode.VIEW;
return; return;
} }
if (viewMode === AlbumPageViewMode.SELECT_THUMBNAIL) {
viewMode = AlbumPageViewMode.VIEW;
return;
}
if (viewMode === AlbumPageViewMode.SELECT_ASSETS) { if (viewMode === AlbumPageViewMode.SELECT_ASSETS) {
await handleCloseSelectAssets(); await handleCloseSelectAssets();
return; return;

View File

@ -28,6 +28,13 @@
const assetStore = new AssetStore({ isArchived: true }); const assetStore = new AssetStore({ isArchived: true });
const assetInteraction = new AssetInteraction(); const assetInteraction = new AssetInteraction();
const handleEscape = () => {
if (assetInteraction.selectionActive) {
assetInteraction.clearMultiselect();
return;
}
};
onDestroy(() => { onDestroy(() => {
assetStore.destroy(); assetStore.destroy();
}); });
@ -54,7 +61,13 @@
{/if} {/if}
<UserPageLayout hideNavbar={assetInteraction.selectionActive} title={data.meta.title} scrollbar={false}> <UserPageLayout hideNavbar={assetInteraction.selectionActive} title={data.meta.title} scrollbar={false}>
<AssetGrid enableRouting={true} {assetStore} {assetInteraction} removeAction={AssetAction.UNARCHIVE}> <AssetGrid
enableRouting={true}
{assetStore}
{assetInteraction}
removeAction={AssetAction.UNARCHIVE}
onEscape={handleEscape}
>
{#snippet empty()} {#snippet empty()}
<EmptyPlaceholder text={$t('no_archived_assets_message')} /> <EmptyPlaceholder text={$t('no_archived_assets_message')} />
{/snippet} {/snippet}

View File

@ -32,6 +32,13 @@
const assetStore = new AssetStore({ isFavorite: true }); const assetStore = new AssetStore({ isFavorite: true });
const assetInteraction = new AssetInteraction(); const assetInteraction = new AssetInteraction();
const handleEscape = () => {
if (assetInteraction.selectionActive) {
assetInteraction.clearMultiselect();
return;
}
};
onDestroy(() => { onDestroy(() => {
assetStore.destroy(); assetStore.destroy();
}); });
@ -68,7 +75,13 @@
{/if} {/if}
<UserPageLayout hideNavbar={assetInteraction.selectionActive} title={data.meta.title} scrollbar={false}> <UserPageLayout hideNavbar={assetInteraction.selectionActive} title={data.meta.title} scrollbar={false}>
<AssetGrid enableRouting={true} {assetStore} {assetInteraction} removeAction={AssetAction.UNFAVORITE}> <AssetGrid
enableRouting={true}
{assetStore}
{assetInteraction}
removeAction={AssetAction.UNFAVORITE}
onEscape={handleEscape}
>
{#snippet empty()} {#snippet empty()}
<EmptyPlaceholder text={$t('no_favorites_message')} /> <EmptyPlaceholder text={$t('no_favorites_message')} />
{/snippet} {/snippet}

View File

@ -24,6 +24,13 @@
const assetStore = new AssetStore({ userId: data.partner.id, isArchived: false, withStacked: true }); const assetStore = new AssetStore({ userId: data.partner.id, isArchived: false, withStacked: true });
const assetInteraction = new AssetInteraction(); const assetInteraction = new AssetInteraction();
const handleEscape = () => {
if (assetInteraction.selectionActive) {
assetInteraction.clearMultiselect();
return;
}
};
onDestroy(() => { onDestroy(() => {
assetStore.destroy(); assetStore.destroy();
}); });
@ -51,5 +58,5 @@
{/snippet} {/snippet}
</ControlAppBar> </ControlAppBar>
{/if} {/if}
<AssetGrid enableRouting={true} {assetStore} {assetInteraction} /> <AssetGrid enableRouting={true} {assetStore} {assetInteraction} onEscape={handleEscape} />
</main> </main>

View File

@ -87,6 +87,13 @@
} }
}; };
const handleEscape = () => {
if (assetInteraction.selectionActive) {
assetInteraction.clearMultiselect();
return;
}
};
onDestroy(() => { onDestroy(() => {
assetStore.destroy(); assetStore.destroy();
}); });
@ -122,7 +129,7 @@
</div> </div>
{/snippet} {/snippet}
<AssetGrid enableRouting={true} {assetStore} {assetInteraction}> <AssetGrid enableRouting={true} {assetStore} {assetInteraction} onEscape={handleEscape}>
<p class="font-medium text-gray-500/60 dark:text-gray-300/60 p-4"> <p class="font-medium text-gray-500/60 dark:text-gray-300/60 p-4">
{$t('trashed_items_will_be_permanently_deleted_after', { values: { days: $serverConfig.trashDays } })} {$t('trashed_items_will_be_permanently_deleted_after', { values: { days: $serverConfig.trashDays } })}
</p> </p>