Skip to content
This repository was archived by the owner on Jan 30, 2025. It is now read-only.

Commit accabdd

Browse files
authored
Merge pull request #68 from navikt/to-nanostore-from-zustand
To nanostore from zustand
2 parents 3111537 + 44cd54a commit accabdd

File tree

7 files changed

+71
-101
lines changed

7 files changed

+71
-101
lines changed

package-lock.json

Lines changed: 47 additions & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"prepare": "husky install"
1212
},
1313
"dependencies": {
14+
"@nanostores/react": "^0.7.1",
1415
"@navikt/ds-icons": "3.4.3",
1516
"@navikt/ds-react": "5.7.0",
1617
"amplitude-js": "8.21.9",
@@ -20,8 +21,7 @@
2021
"react-query": "3.39.3",
2122
"rollup-plugin-terser": "7.0.2",
2223
"swr": "2.2.4",
23-
"vite-plugin-css-injected-by-js": "3.3.0",
24-
"zustand": "4.4.3"
24+
"vite-plugin-css-injected-by-js": "3.3.0"
2525
},
2626
"devDependencies": {
2727
"@testing-library/jest-dom": "6.1.4",

src/components/filter/searchField/SearchField.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,10 @@ import { Search } from "@navikt/ds-react";
22
import { useContext } from "react";
33
import text from "../../../language/text";
44
import { LanguageContext } from "../../../provider/LanguageProvider";
5-
import { updateSearch } from "../../../store/selectors";
6-
import useStore from "../../../store/store";
5+
import { setFilterSearch } from "../../../store/store";
76
import styles from "./SearchField.module.css";
87

98
const SearchField = () => {
10-
const sok = useStore(updateSearch);
119
const language = useContext(LanguageContext);
1210

1311
return (
@@ -17,7 +15,7 @@ const SearchField = () => {
1715
variant="simple"
1816
hideLabel={false}
1917
onChange={(obj) => {
20-
sok(obj.toLowerCase());
18+
setFilterSearch(obj.toLowerCase());
2119
}}
2220
/>
2321
);

src/components/filter/toggleNotifikasjon/ToggleNotifikasjon.tsx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,19 @@ import { ToggleGroup } from "@navikt/ds-react";
22
import { useContext } from "react";
33
import text from "../../../language/text";
44
import { LanguageContext } from "../../../provider/LanguageProvider";
5-
import { selectAlle, selectBeskjed, selectOppgave } from "../../../store/selectors";
6-
import useStore from "../../../store/store";
5+
import { FilterTypes, setFilterType } from "../../../store/store";
76
import styles from "./ToggleNotifikasjon.module.css";
87

98
const ToggleNotifikasjon = () => {
109
const language = useContext(LanguageContext);
1110

12-
const toggleVarsler: Record<string, () => any> = {
13-
alle: useStore(selectAlle),
14-
oppgave: useStore(selectOppgave),
15-
beskjed: useStore(selectBeskjed),
16-
};
17-
1811
return (
1912
<ToggleGroup
2013
className={styles.toggleNotifikasjon}
2114
size="medium"
2215
defaultValue="alle"
2316
onChange={(value) => {
24-
console.log(value);
25-
toggleVarsler[value]();
17+
setFilterType(value as FilterTypes);
2618
}}
2719
>
2820
<ToggleGroup.Item value="alle">{text.filterToggleItemAlle[language]}</ToggleGroup.Item>

src/components/tidligereVarslerPage/TidligereVarslerPage.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,25 @@ import { useContext, useMemo } from "react";
33
import TomSokKatt from "../../assets/TomSokKatt";
44
import text from "../../language/text";
55
import { LanguageContext } from "../../provider/LanguageProvider";
6-
import { selectSearch, selectType } from "../../store/selectors";
7-
import useStore from "../../store/store";
6+
import { filterSearch, filterType } from "../../store/store";
87
import { byForstBehandlet } from "../../utils/date";
98
import Filter from "../filter/Filter";
109
import TidligereVarsel from "../varsel/TidligereVarsel";
1110
import { Varsel } from "../varsel/Varsel";
11+
import { useStore } from "@nanostores/react";
1212
import styles from "./TidligereVarslerPage.module.css";
1313

1414
const TidligereVarslerPage = ({ varsler, isSuccess }: { varsler: Array<Varsel>; isSuccess: boolean }) => {
1515
const language = useContext(LanguageContext);
16-
const filterType = useStore(selectType);
17-
const filterSok = useStore(selectSearch);
16+
17+
const selectedFilter = useStore(filterType);
18+
const searchTextInput = useStore(filterSearch);
1819

1920
const sortedVarsler = useMemo(() => varsler?.sort(byForstBehandlet), [varsler]);
2021
const filtertedVarseler = sortedVarsler?.filter(
2122
(varsel) =>
22-
(filterType === "alle" || varsel.type.toLowerCase() === filterType) &&
23-
(varsel.tekst === null || varsel.tekst.toLowerCase().includes(filterSok)),
23+
(selectedFilter === "alle" || varsel.type.toLowerCase() === selectedFilter) &&
24+
(varsel.tekst === null || varsel.tekst.toLowerCase().includes(searchTextInput)),
2425
);
2526

2627
return (

src/store/selectors.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/store/store.tsx

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,15 @@
1-
import create from "zustand";
1+
import { atom } from "nanostores";
22

3-
const actions = (set: any) => ({
4-
alle: () =>
5-
set({
6-
filterType: "alle",
7-
}),
8-
oppgave: () =>
9-
set({
10-
filterType: "oppgave",
11-
}),
12-
beskjed: () =>
13-
set({
14-
filterType: "beskjed",
15-
}),
16-
search: (search: string) =>
17-
set({
18-
filterSearch: search,
19-
}),
20-
});
3+
export type FilterTypes = "alle" | "oppgave" | "beskjed";
214

22-
export interface SelectionState extends ReturnType<typeof actions> {
23-
filterType: string;
24-
filterSearch: string;
25-
}
5+
export const filterType = atom<string>("alle");
266

27-
const useStore = create<SelectionState>((set) => ({
28-
filterType: "alle",
29-
filterSearch: "",
30-
...actions(set),
31-
}));
7+
export const setFilterType = (type: FilterTypes) => {
8+
filterType.set(type);
9+
};
3210

33-
export default useStore;
11+
export const filterSearch = atom<string>("");
12+
13+
export const setFilterSearch = (searchWord: string) => {
14+
filterSearch.set(searchWord);
15+
};

0 commit comments

Comments
 (0)