summaryrefslogtreecommitdiffstatshomepage
path: root/frontend/src/lib/toolbar/ToggleAdvancedFilters.svelte
blob: 2ef63f4692998550390a296454c9bd68c7583dd3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<script lang="ts">
	import { page } from '$app/state';
	import { navigate } from '$lib/Navigation';
	import { accelerator } from '$lib/Shortcuts';
	import { slideXFast } from '$lib/Transitions';
	import Badge from '$lib/components/Badge.svelte';
	import { slide } from 'svelte/transition';
	import type { ToolbarState } from './Toolbar.svelte';

	interface Props extends ToolbarState {
		filterSize: number;
	}

	let { expanded, toggle, filterSize }: Props = $props();
</script>

<div class="rounded-group flex">
	<button
		class:toggled={expanded}
		class="btn-slate relative"
		title={`${expanded ? 'Hide' : 'Show'} filters`}
		onclick={toggle}
		use:accelerator={'F'}
	>
		{#if expanded}
			<span class="icon-base icon-[material-symbols--filter-alt]"></span>
		{:else}
			<span class="icon-base icon-[material-symbols--filter-alt-outline]"></span>
		{/if}
		<Badge number={filterSize} />
	</button>
	{#if filterSize > 0}
		<button
			class="btn-slate relative hover:bg-rose-700"
			onclick={() => navigate({ filter: {} }, page.url.searchParams)}
			transition:slide={slideXFast}
			title="Reset filters"
			aria-label="Reset filters"
			use:accelerator={'X'}
		>
			<div class="flex">
				<span class="icon-base icon-[material-symbols--filter-alt-off]"></span>
			</div>
		</button>
	{/if}
</div>