Skip to content

Commit 3abaf81

Browse files
gary149Mishig
andauthored
Navigation collapse (#893)
* add collapse behaviour * add collapsedNavigation setting * Revert "add collapsedNavigation setting" This reverts commit 6c9baf4. * last tweaks * rm unused * Update src/lib/components/ExpandNavigation.svelte Co-authored-by: Mishig <mishig.davaadorj@coloradocollege.edu> --------- Co-authored-by: Mishig <mishig.davaadorj@coloradocollege.edu>
1 parent e283983 commit 3abaf81

File tree

4 files changed

+45
-13
lines changed

4 files changed

+45
-13
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<script lang="ts">
2+
export let isCollapsed: boolean;
3+
export let classNames: string;
4+
</script>
5+
6+
<button
7+
on:click
8+
class="{classNames} group flex h-16 w-6 flex-col items-center justify-center -space-y-1 outline-none *:h-3 *:w-1 *:rounded-full *:hover:bg-gray-300 max-md:hidden dark:*:hover:bg-gray-600 {!isCollapsed
9+
? '*:bg-gray-200/70 dark:*:bg-gray-800'
10+
: '*:bg-gray-200 dark:*:bg-gray-700'}"
11+
>
12+
<div class={!isCollapsed ? "group-hover:rotate-[20deg]" : "group-hover:-rotate-[20deg]"} />
13+
<div class={!isCollapsed ? "group-hover:-rotate-[20deg]" : "group-hover:rotate-[20deg]"} />
14+
</button>

src/lib/components/chat/ChatMessage.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
if (contentEl) {
112112
loadingEl = new IconLoading({
113113
target: deepestChild(contentEl),
114-
props: { classNames: "loading inline ml-2" },
114+
props: { classNames: "loading inline ml-2 first:ml-0" },
115115
});
116116
}
117117
}, 600);

src/routes/+layout.svelte

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,37 @@
11
<script lang="ts">
2+
import "../styles/main.css";
3+
24
import { onDestroy } from "svelte";
35
import { goto, invalidate } from "$app/navigation";
4-
import { page } from "$app/stores";
5-
import "../styles/main.css";
66
import { base } from "$app/paths";
7+
import { page } from "$app/stores";
8+
import { browser } from "$app/environment";
9+
710
import {
811
PUBLIC_APP_DESCRIPTION,
912
PUBLIC_ORIGIN,
1013
PUBLIC_PLAUSIBLE_SCRIPT_URL,
1114
} from "$env/static/public";
15+
import { PUBLIC_APP_ASSETS, PUBLIC_APP_NAME } from "$env/static/public";
16+
17+
import { error } from "$lib/stores/errors";
18+
import { createSettingsStore } from "$lib/stores/settings";
1219
1320
import { shareConversation } from "$lib/shareConversation";
1421
import { UrlDependency } from "$lib/types/UrlDependency";
15-
import { error } from "$lib/stores/errors";
1622
17-
import MobileNav from "$lib/components/MobileNav.svelte";
18-
import NavMenu from "$lib/components/NavMenu.svelte";
1923
import Toast from "$lib/components/Toast.svelte";
20-
import { PUBLIC_APP_ASSETS, PUBLIC_APP_NAME } from "$env/static/public";
24+
import NavMenu from "$lib/components/NavMenu.svelte";
25+
import MobileNav from "$lib/components/MobileNav.svelte";
2126
import titleUpdate from "$lib/stores/titleUpdate";
22-
import { createSettingsStore } from "$lib/stores/settings";
23-
import { browser } from "$app/environment";
2427
import DisclaimerModal from "$lib/components/DisclaimerModal.svelte";
28+
import ExpandNavigation from "$lib/components/ExpandNavigation.svelte";
2529
2630
export let data;
2731
2832
let isNavOpen = false;
33+
let isNavCollapsed = false;
34+
2935
let errorToastTimeout: ReturnType<typeof setTimeout>;
3036
let currentError: string | null;
3137
@@ -176,8 +182,18 @@
176182
<DisclaimerModal />
177183
{/if}
178184

185+
<ExpandNavigation
186+
isCollapsed={isNavCollapsed}
187+
on:click={() => (isNavCollapsed = !isNavCollapsed)}
188+
classNames="absolute inset-y-0 z-10 my-auto {!isNavCollapsed
189+
? 'left-[280px]'
190+
: 'left-0'} *:transition-transform"
191+
/>
192+
179193
<div
180-
class="grid h-full w-screen grid-cols-1 grid-rows-[auto,1fr] overflow-hidden text-smd md:grid-cols-[280px,1fr] md:grid-rows-[1fr] dark:text-gray-300"
194+
class="grid h-full w-screen grid-cols-1 grid-rows-[auto,1fr] overflow-hidden text-smd {!isNavCollapsed
195+
? 'md:grid-cols-[280px,1fr]'
196+
: 'md:grid-cols-[0px,1fr]'} transition-[300ms] [transition-property:grid-template-columns] md:grid-rows-[1fr] dark:text-gray-300"
181197
>
182198
<MobileNav isOpen={isNavOpen} on:toggle={(ev) => (isNavOpen = ev.detail)} title={mobileNavTitle}>
183199
<NavMenu
@@ -189,7 +205,9 @@
189205
on:editConversationTitle={(ev) => editConversationTitle(ev.detail.id, ev.detail.title)}
190206
/>
191207
</MobileNav>
192-
<nav class="grid max-h-screen grid-cols-1 grid-rows-[auto,1fr,auto] max-md:hidden">
208+
<nav
209+
class=" grid max-h-screen grid-cols-1 grid-rows-[auto,1fr,auto] overflow-hidden *:w-[280px] max-md:hidden"
210+
>
193211
<NavMenu
194212
conversations={data.conversations}
195213
user={data.user}

src/routes/settings/+layout.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
</script>
3434

3535
<div
36-
class="fixed inset-0 flex items-center justify-center bg-black/80 backdrop-blur-sm dark:bg-black/50"
36+
class="fixed inset-0 z-20 flex items-center justify-center bg-black/80 backdrop-blur-sm dark:bg-black/50"
3737
in:fade
3838
>
3939
<dialog
@@ -42,7 +42,7 @@
4242
use:clickOutside={() => {
4343
goto(previousPage);
4444
}}
45-
class="xl: z-10 grid h-[95dvh] w-[90dvw] grid-cols-1 content-start gap-x-8 overflow-hidden rounded-2xl bg-white p-4 shadow-2xl outline-none sm:h-[80dvh] md:grid-cols-3 md:grid-rows-[auto,1fr] md:p-8 xl:w-[1200px] 2xl:h-[70dvh]"
45+
class="grid h-[95dvh] w-[90dvw] grid-cols-1 content-start gap-x-8 overflow-hidden rounded-2xl bg-white p-4 shadow-2xl outline-none sm:h-[80dvh] md:grid-cols-3 md:grid-rows-[auto,1fr] md:p-8 xl:w-[1200px] 2xl:h-[70dvh]"
4646
>
4747
<div class="col-span-1 mb-4 flex items-center justify-between md:col-span-3">
4848
<h2 class="text-xl font-bold">Settings</h2>

0 commit comments

Comments
 (0)