1
1
import { useEffect , useState , type FC } from 'react' ;
2
2
import { useFormContext , type FieldArrayWithId , type UseFieldArrayReplace } from 'react-hook-form' ;
3
3
import dayjs from 'dayjs' ;
4
- import { formatPeriod } from '@k9-sak-web/lib/dateUtils/dateUtils.js' ;
5
4
import { ScissorsIcon , TrashIcon } from '@navikt/aksel-icons' ;
6
5
import {
7
6
Button ,
@@ -22,37 +21,30 @@ import styles from './VurderOverlappendeSak.module.css';
22
21
23
22
interface Props {
24
23
index : number ;
25
- originaleOverlappendePerioder : { fom : string ; tom : string } [ ] ;
26
24
readOnly : boolean ;
27
25
fields : FieldArrayWithId < VurderOverlappendeSakFormData , 'perioder' , 'id' > [ ] ;
28
26
replace : UseFieldArrayReplace < VurderOverlappendeSakFormData , 'perioder' > ;
29
27
}
30
28
31
- const VurderOverlappendePeriodeForm : FC < Props > = ( {
32
- index,
33
- originaleOverlappendePerioder,
34
- readOnly,
35
- fields,
36
- replace,
37
- } ) => {
29
+ const VurderOverlappendePeriodeForm : FC < Props > = ( { index, readOnly, fields, replace } ) => {
38
30
const {
39
31
watch,
40
32
formState : { errors } ,
41
33
register,
42
34
setValue,
43
35
getValues,
44
36
} = useFormContext < VurderOverlappendeSakFormData > ( ) ;
45
- const fom = getValues ( `perioder.${ index } .periode.fom` ) ;
46
- const tom = getValues ( `perioder.${ index } .periode.tom` ) ;
37
+ const fom = dayjs ( getValues ( `perioder.${ index } .periode.fom` ) ) ;
38
+ const tom = dayjs ( getValues ( `perioder.${ index } .periode.tom` ) ) ;
47
39
const { splittPeriode, slettPeriode } = useOverlappendeSakUtils ( fields , replace ) ;
48
40
const [ visDatoVelger , setVisDatovelger ] = useState < boolean > ( false ) ;
49
41
const [ skalViseSkjema , setSkalViseSkjema ] = useState < boolean > ( false ) ;
50
42
51
- const harSplittedePerioder = ! originaleOverlappendePerioder . some ( originalPeriode => {
52
- return dayjs ( originalPeriode . fom ) . isSame ( fom ) && dayjs ( originalPeriode . tom ) . isSame ( tom ) ;
53
- } ) ;
54
- const kanSlettes = harSplittedePerioder && ! readOnly ;
55
- const kanSplittes = ! dayjs ( fom ) . isSame ( tom ) && ! readOnly ;
43
+ const harTilstøtendePeriode =
44
+ ( index < fields . length - 1 && tom . isSame ( dayjs ( fields [ index + 1 ] ?. periode . fom ) . subtract ( 1 , 'day' ) ) ) ||
45
+ ( index > 0 && fom . isSame ( dayjs ( fields [ index - 1 ] ?. periode . tom ) . add ( 1 , 'day' ) ) ) ;
46
+ const kanSlettes = harTilstøtendePeriode && ! readOnly ;
47
+ const kanSplittes = ! fom . isSame ( tom ) && ! readOnly ;
56
48
const watchValg = watch ( `perioder.${ index } .valg` ) ;
57
49
const erEndretAutomatisk = getValues ( `perioder.${ index } .endretAutomatisk` ) ;
58
50
const [ velgDato , setVelgDato ] = useState < number > ( 0 ) ;
@@ -78,7 +70,9 @@ const VurderOverlappendePeriodeForm: FC<Props> = ({
78
70
as = "span"
79
71
weight = "semibold"
80
72
className = { erEndretAutomatisk ? styles [ 'uttaksPeriodeEndret' ] : '' }
81
- > { `${ formatPeriod ( fom || '' , tom || '' ) } ` } </ BodyShort >
73
+ >
74
+ { fom . format ( 'DD.MM.YYYY' ) || '' } - { tom . format ( 'DD.MM.YYYY' ) || '' }
75
+ </ BodyShort >
82
76
</ BodyShort >
83
77
{ kanSplittes && (
84
78
< Button
@@ -147,9 +141,9 @@ const VurderOverlappendePeriodeForm: FC<Props> = ({
147
141
< Modal . Body >
148
142
< DatePicker . Standalone
149
143
dropdownCaption
150
- defaultMonth = { new Date ( fom ) }
144
+ defaultMonth = { fom . toDate ( ) }
151
145
mode = "range"
152
- disabled = { [ { before : new Date ( fom ) } , { after : new Date ( tom ) } ] }
146
+ disabled = { [ { before : fom . toDate ( ) } , { after : tom . toDate ( ) } ] }
153
147
onSelect = { ( val : undefined | { from : Date | undefined ; to ?: Date | undefined } ) => {
154
148
if ( velgDato === 0 ) setVelgDato ( 1 ) ;
155
149
if ( velgDato === 1 ) {
0 commit comments