web: rename sidebar collapse to fold
This commit is contained in:
parent
f848a96343
commit
6e53df0303
|
|
@ -261,7 +261,7 @@
|
||||||
padding: var(--space-4) var(--space-3);
|
padding: var(--space-4) var(--space-3);
|
||||||
border-right: 1px solid var(--line);
|
border-right: 1px solid var(--line);
|
||||||
}
|
}
|
||||||
.workspace-sidebar.collapsed {
|
.workspace-sidebar.folded {
|
||||||
width: max-content;
|
width: max-content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -311,7 +311,7 @@
|
||||||
gap: var(--space-1);
|
gap: var(--space-1);
|
||||||
}
|
}
|
||||||
.sidebar-icon-button,
|
.sidebar-icon-button,
|
||||||
.sidebar-collapse-button {
|
.sidebar-fold-button {
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
display: grid;
|
display: grid;
|
||||||
place-items: center;
|
place-items: center;
|
||||||
|
|
@ -321,7 +321,7 @@
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
.sidebar-collapse-button {
|
.sidebar-fold-button {
|
||||||
border: 0;
|
border: 0;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
@ -337,27 +337,27 @@
|
||||||
}
|
}
|
||||||
.sidebar-icon-button:hover,
|
.sidebar-icon-button:hover,
|
||||||
.sidebar-icon-button:focus-visible,
|
.sidebar-icon-button:focus-visible,
|
||||||
.sidebar-collapse-button:hover,
|
.sidebar-fold-button:hover,
|
||||||
.sidebar-collapse-button:focus-visible {
|
.sidebar-fold-button:focus-visible {
|
||||||
background: var(--interactive-hover);
|
background: var(--interactive-hover);
|
||||||
color: var(--text-muted);
|
color: var(--text-muted);
|
||||||
}
|
}
|
||||||
.workspace-sidebar.collapsed {
|
.workspace-sidebar.folded {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding-inline: var(--space-2);
|
padding-inline: var(--space-2);
|
||||||
}
|
}
|
||||||
.workspace-sidebar.collapsed .sidebar-header {
|
.workspace-sidebar.folded .sidebar-header {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
.workspace-sidebar.collapsed .sidebar-title-row,
|
.workspace-sidebar.folded .sidebar-title-row,
|
||||||
.workspace-sidebar.collapsed .sidebar-actions-row {
|
.workspace-sidebar.folded .sidebar-actions-row {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
.workspace-sidebar.collapsed .sidebar-actions-row {
|
.workspace-sidebar.folded .sidebar-actions-row {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
.workspace-sidebar.collapsed .workspace-label {
|
.workspace-sidebar.folded .workspace-label {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
.sidebar-sections {
|
.sidebar-sections {
|
||||||
|
|
|
||||||
|
|
@ -458,6 +458,16 @@ Deno.test("Account UI owns browser passkey session state without workspace autho
|
||||||
workspaceLayoutLoad.includes("workspaceApiPath(workspaceId"),
|
workspaceLayoutLoad.includes("workspaceApiPath(workspaceId"),
|
||||||
"Workspace layout should load workspace data and register a WorkspaceSidebar snippet",
|
"Workspace layout should load workspace data and register a WorkspaceSidebar snippet",
|
||||||
);
|
);
|
||||||
|
assert(
|
||||||
|
workspaceLayout.includes("sidebarFolded") &&
|
||||||
|
workspaceLayout.includes("onToggleFold={toggleSidebarFold}") &&
|
||||||
|
sidebar.includes("folded?: boolean") &&
|
||||||
|
sidebar.includes("onToggleFold?: () => void") &&
|
||||||
|
sidebar.includes("sidebar-fold-button") &&
|
||||||
|
sidebar.includes("Fold sidebar") &&
|
||||||
|
sidebar.includes("Unfold sidebar"),
|
||||||
|
"Workspace sidebar should keep a visible fold button with fold/folded naming",
|
||||||
|
);
|
||||||
assert(
|
assert(
|
||||||
sidebarOverride.includes("controller.setSidebar(sidebar)") &&
|
sidebarOverride.includes("controller.setSidebar(sidebar)") &&
|
||||||
sidebarOverride.includes("controller.clearSidebar(sidebar)"),
|
sidebarOverride.includes("controller.clearSidebar(sidebar)"),
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@
|
||||||
repositories?: RepositoryListResponse | null;
|
repositories?: RepositoryListResponse | null;
|
||||||
repositoriesError?: string | null;
|
repositoriesError?: string | null;
|
||||||
currentPath?: string;
|
currentPath?: string;
|
||||||
collapsed?: boolean;
|
folded?: boolean;
|
||||||
onToggleCollapsed?: () => void;
|
onToggleFold?: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
let {
|
let {
|
||||||
|
|
@ -22,8 +22,8 @@
|
||||||
repositories = null,
|
repositories = null,
|
||||||
repositoriesError = null,
|
repositoriesError = null,
|
||||||
currentPath = '/',
|
currentPath = '/',
|
||||||
collapsed = false,
|
folded = false,
|
||||||
onToggleCollapsed
|
onToggleFold
|
||||||
}: Props = $props();
|
}: Props = $props();
|
||||||
|
|
||||||
let workspaceId = $derived(workspace?.workspace_id ?? '');
|
let workspaceId = $derived(workspace?.workspace_id ?? '');
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<aside
|
<aside
|
||||||
class:collapsed
|
class:folded
|
||||||
class="workspace-sidebar"
|
class="workspace-sidebar"
|
||||||
aria-label="Workspace navigation"
|
aria-label="Workspace navigation"
|
||||||
>
|
>
|
||||||
|
|
@ -52,14 +52,14 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
class="sidebar-collapse-button"
|
class="sidebar-fold-button"
|
||||||
type="button"
|
type="button"
|
||||||
aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}
|
aria-label={folded ? 'Unfold sidebar' : 'Fold sidebar'}
|
||||||
aria-expanded={!collapsed}
|
aria-expanded={!folded}
|
||||||
title={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}
|
title={folded ? 'Unfold sidebar' : 'Fold sidebar'}
|
||||||
onclick={onToggleCollapsed}
|
onclick={onToggleFold}
|
||||||
>
|
>
|
||||||
{#if collapsed}
|
{#if folded}
|
||||||
<svg class="sidebar-icon" aria-hidden="true" viewBox="0 0 24 24">
|
<svg class="sidebar-icon" aria-hidden="true" viewBox="0 0 24 24">
|
||||||
<path d="m6 17 5-5-5-5" />
|
<path d="m6 17 5-5-5-5" />
|
||||||
<path d="m13 17 5-5-5-5" />
|
<path d="m13 17 5-5-5-5" />
|
||||||
|
|
@ -103,7 +103,7 @@
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
{#if !collapsed}
|
{#if !folded}
|
||||||
<nav class="sidebar-sections" aria-label="Workspace sections">
|
<nav class="sidebar-sections" aria-label="Workspace sections">
|
||||||
<RepositoriesNavSection {repositories} {repositoriesError} {currentPath} {workspaceId} />
|
<RepositoriesNavSection {repositories} {repositoriesError} {currentPath} {workspaceId} />
|
||||||
<ObjectivesNavSection {currentPath} {workspaceId} />
|
<ObjectivesNavSection {currentPath} {workspaceId} />
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@
|
||||||
import type { LayoutProps } from './$types';
|
import type { LayoutProps } from './$types';
|
||||||
|
|
||||||
let { data, children }: LayoutProps = $props();
|
let { data, children }: LayoutProps = $props();
|
||||||
let sidebarCollapsed = $state(false);
|
let sidebarFolded = $state(false);
|
||||||
|
|
||||||
function toggleSidebar() {
|
function toggleSidebarFold() {
|
||||||
sidebarCollapsed = !sidebarCollapsed;
|
sidebarFolded = !sidebarFolded;
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
@ -19,8 +19,8 @@
|
||||||
repositories={data.repositories ?? null}
|
repositories={data.repositories ?? null}
|
||||||
repositoriesError={data.repositoriesError ?? null}
|
repositoriesError={data.repositoriesError ?? null}
|
||||||
currentPath={page.url.pathname}
|
currentPath={page.url.pathname}
|
||||||
collapsed={sidebarCollapsed}
|
folded={sidebarFolded}
|
||||||
onToggleCollapsed={toggleSidebar}
|
onToggleFold={toggleSidebarFold}
|
||||||
/>
|
/>
|
||||||
{/snippet}
|
{/snippet}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user