1
1
import { FormFieldsIds } from '@app/components/case/common/form-fields-ids' ;
2
2
import { useTranslation } from '@app/language/use-translation' ;
3
- import { PencilIcon } from '@navikt/aksel-icons' ;
4
- import { BodyShort , Button , Label , TextField } from '@navikt/ds-react' ;
5
- import { useEffect , useRef , useState } from 'react' ;
6
- import { styled } from 'styled-components' ;
3
+ import { BodyShort , Heading , TextField } from '@navikt/ds-react' ;
4
+ import { useEffect , useState } from 'react' ;
7
5
8
- interface Props {
6
+ interface UserSaksnummerProps {
9
7
value : string | null ;
10
- internalSaksnummer ?: string | null ;
11
8
onChange : ( saksnummer : string | null ) => void ;
12
9
error : string | undefined ;
13
10
}
14
11
15
- export const DebouncedSaksnummer = ( { value, onChange, ...props } : Props ) => {
12
+ interface Props extends UserSaksnummerProps {
13
+ internalSaksnummer : string | null ;
14
+ }
15
+
16
+ const DebouncedUserSaksnummer = ( { value, onChange, error } : UserSaksnummerProps ) => {
16
17
const [ localValue , setLocalValue ] = useState ( value ) ;
17
18
18
19
useEffect ( ( ) => {
@@ -25,56 +26,49 @@ export const DebouncedSaksnummer = ({ value, onChange, ...props }: Props) => {
25
26
return ( ) => clearTimeout ( timeout ) ;
26
27
} , [ onChange , value , localValue ] ) ;
27
28
28
- return < Saksnummer { ... props } value = { localValue } onChange = { setLocalValue } /> ;
29
+ return < UserSaksnummer error = { error } value = { localValue } onChange = { setLocalValue } /> ;
29
30
} ;
30
31
31
- export const Saksnummer = ( { value, internalSaksnummer, onChange, error } : Props ) => {
32
- const inputRef = useRef < HTMLInputElement > ( null ) ;
32
+ const InternalSaksnummer = ( { internalSaksnummer } : { internalSaksnummer : string } ) => {
33
33
const { skjema } = useTranslation ( ) ;
34
34
35
- const usersaksnummer = (
35
+ if ( typeof internalSaksnummer === 'string' && internalSaksnummer . length !== 0 ) {
36
+ return (
37
+ < section >
38
+ < Heading size = "xsmall" > { skjema . begrunnelse . saksnummer . internalTitle } </ Heading >
39
+ < BodyShort > { internalSaksnummer } </ BodyShort >
40
+ </ section >
41
+ ) ;
42
+ }
43
+ } ;
44
+
45
+ const UserSaksnummer = ( { value, onChange, error } : UserSaksnummerProps ) => {
46
+ const { skjema } = useTranslation ( ) ;
47
+
48
+ return (
36
49
< TextField
37
50
id = { FormFieldsIds . SAKSNUMMER }
38
51
label = { skjema . begrunnelse . saksnummer . title }
39
52
value = { value ?? '' }
40
53
onChange = { ( { target } ) => onChange ( target . value ) }
41
54
htmlSize = { 24 }
42
55
error = { error }
43
- ref = { inputRef }
44
56
/>
45
57
) ;
58
+ } ;
46
59
47
- if ( value !== null ) {
48
- return usersaksnummer ;
60
+ export const Saksnummer = ( { value, internalSaksnummer, onChange, error } : Props ) => {
61
+ if ( typeof internalSaksnummer === 'string' && internalSaksnummer . length !== 0 ) {
62
+ return < InternalSaksnummer internalSaksnummer = { internalSaksnummer } /> ;
49
63
}
50
64
65
+ return < UserSaksnummer value = { value } onChange = { onChange } error = { error } /> ;
66
+ } ;
67
+
68
+ export const DebouncedSaksnummer = ( { value, internalSaksnummer, onChange, error } : Props ) => {
51
69
if ( typeof internalSaksnummer === 'string' && internalSaksnummer . length !== 0 ) {
52
- return (
53
- < div >
54
- < Label > { skjema . begrunnelse . saksnummer . internalTitle } </ Label >
55
- < Row >
56
- < BodyShort > { internalSaksnummer } </ BodyShort >
57
- < Button
58
- title = { skjema . begrunnelse . saksnummer . change }
59
- onClick = { ( ) => {
60
- onChange ( internalSaksnummer ) ;
61
- setTimeout ( ( ) => inputRef . current ?. focus ( ) , 0 ) ;
62
- } }
63
- size = "small"
64
- icon = { < PencilIcon aria-hidden /> }
65
- variant = "tertiary"
66
- />
67
- </ Row >
68
- </ div >
69
- ) ;
70
+ return < InternalSaksnummer internalSaksnummer = { internalSaksnummer } /> ;
70
71
}
71
72
72
- return usersaksnummer ;
73
+ return < DebouncedUserSaksnummer value = { value } onChange = { onChange } error = { error } /> ;
73
74
} ;
74
-
75
- const Row = styled . div `
76
- display: flex;
77
- flex-direction: row;
78
- align-items: center;
79
- column-gap: 8px;
80
- ` ;
0 commit comments