Skip to content

Commit 06338c4

Browse files
committed
read filter from url on load
1 parent 071e616 commit 06338c4

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/components/ResourcesBySelector.tsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useState } from "react";
1+
import { useEffect, useState } from "react";
22
import ReactSelect from "./ReactSelect";
33
import type { CollectionEntry } from "astro:content";
44

@@ -21,6 +21,14 @@ export default function ResourcesBySelector({
2121
setSelectedFilter(option?.value || null);
2222
};
2323

24+
const options = Object.entries(facets).map(([key, values]) => ({
25+
label: key,
26+
options: values.map((v) => ({
27+
value: v,
28+
label: v,
29+
})),
30+
}));
31+
2432
const visibleResources = resources.filter((resource) => {
2533
if (!selectedFilter || !filters) return true;
2634

@@ -39,20 +47,23 @@ export default function ResourcesBySelector({
3947
return filterableValues.includes(selectedFilter);
4048
});
4149

50+
useEffect(() => {
51+
const params = new URLSearchParams(window.location.search);
52+
const value = params.get("filters");
53+
54+
if (value) {
55+
setSelectedFilter(value);
56+
}
57+
}, []);
58+
4259
return (
4360
<div>
4461
{filters && (
4562
<div className="not-content">
4663
<ReactSelect
47-
id="resources-filters"
4864
className="mt-2"
49-
options={Object.entries(facets).map(([key, values]) => ({
50-
label: key,
51-
options: values.map((v) => ({
52-
value: v,
53-
label: v,
54-
})),
55-
}))}
65+
value={{ value: selectedFilter, label: selectedFilter }}
66+
options={options}
5667
onChange={handleFilterChange}
5768
isClearable
5869
placeholder="Filter resources..."

0 commit comments

Comments
 (0)