1
1
import React , { FunctionComponent , useEffect , useState } from 'react' ;
2
2
import css from './Janzz.module.css' ;
3
- import Typeahead , { Suggestion } from '../../../../common/typeahead/Typeahead' ;
4
3
import { ikkeLastet , Nettressurs , Nettstatus } from 'felles/nettressurs' ;
5
4
import { fetchJanzzYrker , JanzzStilling } from '../../../../api/api' ;
6
5
import capitalizeEmployerName from '../../endre-arbeidsgiver/capitalizeEmployerName' ;
7
6
import { SET_EMPLOYMENT_JOBTITLE , SET_JANZZ } from '../../../adDataReducer' ;
8
- import { StyrkCategory } from 'felles/domene/stilling/Stilling' ;
9
7
import { useDispatch , useSelector } from 'react-redux' ;
10
- import Skjemalabel from '../../skjemaetikett/Skjemalabel' ;
11
8
import { State } from '../../../../redux/store' ;
9
+ import { UNSAFE_Combobox as UnsafeCombobox } from '@navikt/ds-react' ;
10
+ import Skjemalabel from '../../skjemaetikett/Skjemalabel' ;
12
11
13
12
type Props = {
14
- categoryList : StyrkCategory [ ] ;
15
13
tittel : string ;
16
14
} ;
17
15
18
- const Janzz : FunctionComponent < Props > = ( { categoryList , tittel } ) => {
16
+ const Janzz : FunctionComponent < Props > = ( { tittel } ) => {
19
17
const dispatch = useDispatch ( ) ;
20
18
const yrkestittelError = useSelector ( ( state : State ) => state . adValidation . errors . yrkestittel ) ;
21
19
@@ -28,10 +26,8 @@ const Janzz: FunctionComponent<Props> = ({ categoryList, tittel }) => {
28
26
kind : Nettstatus . LasterInn ,
29
27
} ) ;
30
28
31
- let response : JanzzStilling [ ] | null = null ;
32
-
33
29
try {
34
- response = await fetchJanzzYrker ( typeahead ) ;
30
+ const response = await fetchJanzzYrker ( typeahead ) ;
35
31
36
32
setSuggestions ( {
37
33
kind : Nettstatus . Suksess ,
@@ -47,22 +43,19 @@ const Janzz: FunctionComponent<Props> = ({ categoryList, tittel }) => {
47
43
48
44
if ( input . length > 2 ) {
49
45
hentJanzzYrker ( input ) ;
46
+ } else {
47
+ setSuggestions ( ikkeLastet ( ) ) ;
50
48
}
51
49
} , [ input ] ) ;
52
50
53
- const onChange = ( value : string | undefined ) => {
54
- if ( value ) {
55
- setInput ( value ) ;
56
- } else {
57
- setInput ( '' ) ;
58
- }
51
+ const onChange = ( event : React . ChangeEvent < HTMLInputElement > | null , value ?: string ) => {
52
+ setInput ( value || '' ) ;
59
53
} ;
60
54
61
- const onForslagValgt = ( valgtForslag : Suggestion ) => {
62
- console . log ( 'valgtforslag' , valgtForslag ) ;
63
- if ( suggestions . kind === Nettstatus . Suksess ) {
64
- if ( valgtForslag ) {
65
- const found = finnJanzzStilling ( suggestions . data , valgtForslag . value ) ;
55
+ const onToggleSelected = ( option : string , isSelected : boolean , isCustomOption : boolean ) => {
56
+ if ( isSelected ) {
57
+ if ( suggestions . kind === Nettstatus . Suksess ) {
58
+ const found = finnJanzzStilling ( suggestions . data , option ) ;
66
59
67
60
if ( found ) {
68
61
dispatch ( { type : SET_EMPLOYMENT_JOBTITLE , jobtitle : found . label } ) ;
@@ -76,64 +69,47 @@ const Janzz: FunctionComponent<Props> = ({ categoryList, tittel }) => {
76
69
parentId : null ,
77
70
} ,
78
71
] ;
79
- console . log ( 'kategori' , kategori ) ;
80
72
dispatch ( { type : SET_JANZZ , kategori } ) ;
73
+ setInput ( capitalizeEmployerName ( found . label ) || '' ) ;
81
74
} else {
82
75
dispatch ( { type : SET_JANZZ , undefined } ) ;
83
76
}
84
- setInput ( capitalizeEmployerName ( found ? found . label : null ) || '' ) ;
85
- } else {
86
- dispatch ( { type : SET_JANZZ , undefined } ) ;
87
77
}
78
+ } else {
79
+ dispatch ( { type : SET_JANZZ , undefined } ) ;
88
80
}
89
81
} ;
90
82
91
- // const feilmeldingTilBruker = suggestions.kind === Nettstatus.Feil && suggestions.error.message;
83
+ const feilmeldingTilBruker = suggestions . kind === Nettstatus . Feil && suggestions . error . message ;
92
84
93
85
return (
94
86
< div >
95
- < Skjemalabel påkrevd > Yrkestittel som vises på stillingen</ Skjemalabel >
96
- < Typeahead
97
- label = ""
87
+ < UnsafeCombobox
88
+ label = { < Skjemalabel påkrevd > Yrkestittel som vises på stillingen</ Skjemalabel > }
98
89
value = { input === 'Stilling uten valgt jobbtittel' ? '' : input }
99
- onSelect = { onForslagValgt }
90
+ options = { konverterTilComboboxOptions ( suggestions ) }
100
91
onChange = { onChange }
101
- onBlur = { onChange }
102
- suggestions = { konverterTilTypeaheadFormat ( suggestions ) }
103
- error = { yrkestittelError }
92
+ onToggleSelected = { onToggleSelected }
93
+ isLoading = { suggestions . kind === Nettstatus . LasterInn }
94
+ error = { yrkestittelError || feilmeldingTilBruker || undefined }
104
95
className = { css . typeahead }
105
96
aria-labelledby = "endre-stilling-styrk"
106
97
/>
107
98
</ div >
108
99
) ;
109
100
} ;
110
- /* <UNSAFE_Combobox
111
- label="Yrkestittel som vises på stillingen"
112
- value={input === 'Stilling uten valgt jobbtittel' ? '' : input}
113
- options={}
114
- //onSelect={onForslagValgt}
115
- //onChange={onChange}
116
- //onBlur={onChange}
117
- //suggestions={konverterTilTypeaheadFormat(suggestions)}
118
- error={feilmeldingTilBruker || undefined}
119
- className={css.typeahead}
120
- aria-labelledby="endre-stilling-styrk"
121
- />*/
122
101
123
- const finnJanzzStilling = ( suggestions : JanzzStilling [ ] , navn : string ) =>
124
- suggestions . find (
125
- ( forslag : JanzzStilling ) => forslag . label . toLowerCase ( ) === navn . toLowerCase ( )
126
- ) ;
127
-
128
- const konverterTilTypeaheadFormat = ( suggestions : Nettressurs < JanzzStilling [ ] > ) => {
102
+ const konverterTilComboboxOptions = ( suggestions : Nettressurs < JanzzStilling [ ] > ) : string [ ] => {
129
103
if ( suggestions . kind === Nettstatus . Suksess ) {
130
- return suggestions . data . map ( ( f ) => ( {
131
- value : f . label ,
132
- label : f . label ,
133
- } ) ) ;
104
+ return suggestions . data . map ( ( f ) => f . label ) ;
134
105
} else {
135
106
return [ ] ;
136
107
}
137
108
} ;
138
109
110
+ const finnJanzzStilling = ( suggestions : JanzzStilling [ ] , navn : string ) =>
111
+ suggestions . find (
112
+ ( forslag : JanzzStilling ) => forslag . label . toLowerCase ( ) === navn . toLowerCase ( )
113
+ ) ;
114
+
139
115
export default Janzz ;
0 commit comments