summaryrefslogtreecommitdiffstatshomepage
path: root/frontend/src/lib/filter/TagFilterForm.svelte
blob: be5996eb4defb08614a780aab090bfc4e7387d84 (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
<script lang="ts">
	import { page } from '$app/stores';
	import { namespaceList } from '$gql/Queries';
	import { TagFilterContext, getFilterContext } from '$lib/Filter';
	import { getContextClient } from '@urql/svelte';
	import FilterForm from './components/FilterForm.svelte';
	import TagFilterGroup from './components/TagFilterGroup.svelte';

	const client = getContextClient();

	$: namespaceQuery = namespaceList(client);
	$: namespaces = $namespaceQuery.data?.namespaces.edges;

	const filter = getFilterContext<TagFilterContext>();
	const apply = () => $filter.apply($page.url.searchParams);
</script>

<FilterForm on:submit={apply}>
	<TagFilterGroup
		slot="include"
		type="include"
		bind:controls={$filter.include.controls}
		{namespaces}
	/>
	<TagFilterGroup
		slot="exclude"
		type="exclude"
		bind:controls={$filter.exclude.controls}
		{namespaces}
	/>
</FilterForm>