diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index f444e4f..aacf252 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -2,7 +2,7 @@ name: Linting & formatting on: push: - branches: ["master", "actions"] + branches: ['master', 'actions'] workflow_dispatch: jobs: @@ -19,7 +19,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18.x - cache: "pnpm" + cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d98fbb4..9252e75 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,7 @@ name: Test using vitest on: push: - branches: "master" + branches: 'master' workflow_dispatch: jobs: @@ -18,7 +18,7 @@ jobs: - uses: actions/setup-node@v3 with: node-version: 18.x - cache: "pnpm" + cache: 'pnpm' - name: Install dependencies run: pnpm install --frozen-lockfile diff --git a/src/lib/components/assignment/AssignmentGrid/ReadAssignmentBox.svelte b/src/lib/components/assignment/AssignmentGrid/ReadAssignmentBox.svelte index 27cbf51..8a602b5 100644 --- a/src/lib/components/assignment/AssignmentGrid/ReadAssignmentBox.svelte +++ b/src/lib/components/assignment/AssignmentGrid/ReadAssignmentBox.svelte @@ -8,7 +8,7 @@ export let assignment: Assignment; - $: icon = getSubjectIcon(assignment.subject) + $: icon = getSubjectIcon(assignment.subject);
diff --git a/src/lib/components/assignment/SideMenu/Filter/Filter.svelte b/src/lib/components/assignment/SideMenu/Filter/Filter.svelte index d75110a..090491a 100644 --- a/src/lib/components/assignment/SideMenu/Filter/Filter.svelte +++ b/src/lib/components/assignment/SideMenu/Filter/Filter.svelte @@ -8,6 +8,7 @@ import type { CustomDate } from '$lib/utils/dates/custom'; import School from '$lib/components/input/School.svelte'; import Classes from '$lib/components/input/Classes.svelte'; + import SchoolAndClass from '$lib/components/filter/SchoolAndClass.svelte'; type Query = { school: S; @@ -34,13 +35,20 @@ const dispatch = createEventDispatcher<{ filterApply: Query }>(); - -

Filters

- -
- - - +
+ { + dispatch('filterApply', { + classes: detail.classes, + school: detail.school, + dueStart, + dueEnd, + fromStart, + fromEnd + }); + }} + >

@@ -56,21 +64,5 @@ - - { - dispatch('filterApply', { - classes: classes, - school: school ?? '', - dueStart, - dueEnd, - fromStart, - fromEnd - }); - }} - > - - -
- + +
diff --git a/src/lib/components/filter/SchoolAndClass.svelte b/src/lib/components/filter/SchoolAndClass.svelte index 1288c03..4c8c767 100644 --- a/src/lib/components/filter/SchoolAndClass.svelte +++ b/src/lib/components/filter/SchoolAndClass.svelte @@ -5,7 +5,8 @@ import Collapseable from '$lib/components/utils/Collapseable.svelte'; import School from '../input/School.svelte'; import Classes from '../input/Classes.svelte'; - import { createEventDispatcher } from 'svelte'; + import { createEventDispatcher, onMount } from 'svelte'; + import { svocalWithFallback } from '$lib/utils/store/svocal'; type Query = { school: string | S; @@ -14,7 +15,12 @@ export let query: Query; - let { school, classes } = query; + const school = svocalWithFallback('filter.school', query.school); + const classes = svocalWithFallback('filter.classes', query.classes); + + onMount(() => { + dispatch('change', { school: $school ?? '', classes: $classes ?? [] }); + }); const dispatch = createEventDispatcher<{ change: Query; @@ -25,15 +31,15 @@

- - + + = 1)} + disabled={!($school && $classes.length >= 1)} on:click={() => { - dispatch('change', { school: school ?? '', classes: classes ?? [] }); + dispatch('change', { school: $school ?? '', classes: $classes ?? [] }); }} > diff --git a/src/lib/utils/store/svocal.ts b/src/lib/utils/store/svocal.ts index 8ce4cf0..a59a5b6 100644 --- a/src/lib/utils/store/svocal.ts +++ b/src/lib/utils/store/svocal.ts @@ -46,3 +46,16 @@ export const svocal = (key: T) => { return localstorage(svocalKey, fallback); }; + +const svNoCallback = { + 'filter.school': null as string | null, + 'filter.classes': [] as string[] +} as const; + +type SvocalNoFallback = keyof typeof svNoCallback; +type SvocalFallback = (typeof svNoCallback)[T]; + +export const svocalWithFallback = >( + key: T, + fallback: F +) => localstorage(key, fallback);