feat(web): скрытие боковых панелей в альбоме и хоткеи размера миниатюр
В режиме просмотра альбома добавлена кнопка скрытия левой и правой боковых панелей (рядом с регулятором размера миниатюр) и хоткей Tab. В скрытом режиме панели не занимают место в раскладке, а появляются по наведению на левую или правую кромку окна и прячутся после ухода указателя. Клавиши + и - меняют размер миниатюр на шаг, как кнопки регулятора; хоткей работает на всех экранах приложения и не срабатывает при вводе текста, в открытых диалогах и меню. Спека ui-workspace дополнена требованиями о скрытии панелей и клавишах изменения размера миниатюр.
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
let { children } = $props();
|
||||
|
||||
const showPanel = $derived($page.url.pathname !== '/');
|
||||
const albumView = $derived($page.url.pathname.startsWith('/albums/'));
|
||||
|
||||
// Personal stream: one subscription for the whole session, kept alive across
|
||||
// navigation inside the (app) group. The stream updates the album list
|
||||
@@ -23,7 +24,7 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<AppShell panelVisible={showPanel}>
|
||||
<AppShell panelVisible={showPanel} panelsToggle={albumView}>
|
||||
{#snippet rail()}
|
||||
<AlbumRail />
|
||||
{/snippet}
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
import { viewerReturn } from '$lib/stores/viewer-return';
|
||||
import { transfer } from '$lib/stores/transfer.svelte';
|
||||
import { contextMenu, type ContextMenuItem } from '$lib/stores/context-menu.svelte';
|
||||
import { panels } from '$lib/stores/panels.svelte';
|
||||
import { SSEClient, type SSEEvent } from '$lib/sse';
|
||||
import type { Album, Photo } from '$lib/types';
|
||||
|
||||
@@ -496,6 +497,18 @@
|
||||
</div>
|
||||
<div class="flex items-center gap-3">
|
||||
<DensityControl />
|
||||
<span class="bg-border hidden h-5 w-px shrink-0 lg:block" aria-hidden="true"></span>
|
||||
<button
|
||||
type="button"
|
||||
class="text-text-muted hover:bg-bg-muted hover:text-text hidden items-center justify-center rounded-md p-1.5 lg:inline-flex"
|
||||
aria-label={panels.hidden ? 'Показать боковые панели (Tab)' : 'Скрыть боковые панели (Tab)'}
|
||||
title={panels.hidden ? 'Показать боковые панели (Tab)' : 'Скрыть боковые панели (Tab)'}
|
||||
aria-keyshortcuts="Tab"
|
||||
aria-pressed={panels.hidden}
|
||||
onclick={() => panels.toggle()}
|
||||
>
|
||||
<Icon name={panels.hidden ? 'left_panel_open' : 'left_panel_close'} />
|
||||
</button>
|
||||
{#if canUpload}
|
||||
<span class="bg-border h-5 w-px shrink-0" aria-hidden="true"></span>
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user