1
- import React , { useState } from 'react' ;
2
- import { Button , Label , Radio , RadioGroup , UNSAFE_Combobox } from '@navikt/ds-react' ;
1
+ import React from 'react' ;
2
+ import { Button , Label , Radio , RadioGroup } from '@navikt/ds-react' ;
3
3
import { ChevronDownIcon , XMarkIcon } from '@navikt/aksel-icons' ;
4
4
import { classNames } from '../../../../../utils/classNames' ;
5
- import { CmsCategoryListItem } from '../../../../../../common/cms-documents/category' ;
6
- import { useAppState } from '../../../../../context/app-state/useAppState' ;
7
5
import { useSearchState } from '../../../../../context/search-state/useSearchState' ;
8
6
9
7
import style from './SearchSettings.module.css' ;
10
8
11
9
export const SearchSettings = ( ) => {
12
- const [ isOpen , setIsOpen ] = useState ( false ) ;
10
+ const {
11
+ searchParams,
12
+ updateSearchParams,
13
+ resetSearchSettings,
14
+ searchSettingsIsOpen,
15
+ setSearchSettingsIsOpen,
16
+ } = useSearchState ( ) ;
13
17
14
- const { appContext } = useAppState ( ) ;
15
- const { rootCategories } = appContext ;
16
-
17
- const { searchParams, updateSearchParams, resetSearchSettings } = useSearchState ( ) ;
18
- const { sort, categoryKeys, type, isCustom } = searchParams ;
19
-
20
- const { titlesToKeys, keysToTitles } = createKeysTitlesMaps ( rootCategories ) ;
21
- const categoryKeysSelected = new Set < string > ( categoryKeys ) ;
22
- const categoryTitlesSelected = [ ...categoryKeysSelected ] . map ( ( key ) => keysToTitles [ key ] ) ;
23
- const categoryTitlesAll = Object . keys ( titlesToKeys ) ;
18
+ const { sort, type, isCustom } = searchParams ;
24
19
25
20
return (
26
21
< div className = { style . container } >
@@ -42,14 +37,16 @@ export const SearchSettings = () => {
42
37
size = { 'xsmall' }
43
38
variant = { 'tertiary' }
44
39
className = { style . toggle }
45
- onClick = { ( ) => setIsOpen ( ! isOpen ) }
40
+ onClick = { ( ) => setSearchSettingsIsOpen ( ! searchSettingsIsOpen ) }
46
41
>
47
42
{ 'Tilpass søket' }
48
- < ChevronDownIcon className = { classNames ( style . icon , isOpen && style . open ) } />
43
+ < ChevronDownIcon
44
+ className = { classNames ( style . icon , searchSettingsIsOpen && style . open ) }
45
+ />
49
46
</ Button >
50
47
</ div >
51
48
</ div >
52
- < div className = { classNames ( style . settings , isOpen && style . open ) } >
49
+ < div className = { classNames ( style . settings , searchSettingsIsOpen && style . open ) } >
53
50
< div className = { style . radioGroups } >
54
51
< RadioGroup
55
52
size = { 'small' }
@@ -72,41 +69,7 @@ export const SearchSettings = () => {
72
69
< Radio value = { 'datetime' } > { 'Sist endret' } </ Radio >
73
70
</ RadioGroup >
74
71
</ div >
75
- < UNSAFE_Combobox
76
- label = { 'Avgrens søket til valgte kategorier:' }
77
- size = { 'small' }
78
- className = { style . categoriesSelector }
79
- clearButton = { true }
80
- isMultiSelect = { true }
81
- allowNewValues = { false }
82
- options = { categoryTitlesAll }
83
- selectedOptions = { categoryTitlesSelected }
84
- onToggleSelected = { ( value , isSelected ) => {
85
- const key = titlesToKeys [ value ] ;
86
- if ( isSelected ) {
87
- categoryKeysSelected . add ( key ) ;
88
- } else {
89
- categoryKeysSelected . delete ( key ) ;
90
- }
91
-
92
- updateSearchParams ( { categoryKeys : [ ...categoryKeysSelected ] } ) ;
93
- } }
94
- />
95
72
</ div >
96
73
</ div >
97
74
) ;
98
75
} ;
99
-
100
- const createKeysTitlesMaps = ( categories : CmsCategoryListItem [ ] ) => {
101
- return categories . reduce < {
102
- keysToTitles : Record < string , string > ;
103
- titlesToKeys : Record < string , string > ;
104
- } > (
105
- ( acc , category ) => {
106
- acc . titlesToKeys [ category . title ] = category . key ;
107
- acc . keysToTitles [ category . key ] = category . title ;
108
- return acc ;
109
- } ,
110
- { keysToTitles : { } , titlesToKeys : { } }
111
- ) ;
112
- } ;
0 commit comments