Skip to content

Commit 098a63e

Browse files
Legger til bruk av MånedÅrVelger
1 parent 82fdd4f commit 098a63e

File tree

3 files changed

+78
-9
lines changed

3 files changed

+78
-9
lines changed

src/frontend/components/Felleskomponenter/Arbeidsperiode/ArbeidsperiodeModal.tsx

+38-6
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@ import { useApp } from '../../../context/AppContext';
66
import { IArbeidsperiode } from '../../../typer/perioder';
77
import { PersonType } from '../../../typer/personType';
88
import { IArbeidsperiodeTekstinnhold } from '../../../typer/sanity/modaler/arbeidsperiode';
9-
import { dagensDato, gårsdagensDato } from '../../../utils/dato';
9+
import { dagensDato, gårsdagensDato, sisteDagDenneMåneden } from '../../../utils/dato';
1010
import { trimWhiteSpace, visFeiloppsummering } from '../../../utils/hjelpefunksjoner';
1111
import { minTilDatoForUtbetalingEllerArbeidsperiode } from '../../../utils/perioder';
1212
import { svarForSpørsmålMedUkjent } from '../../../utils/spørsmål';
13-
import Datovelger from '../Datovelger/Datovelger';
1413
import { LandDropdown } from '../Dropdowns/LandDropdown';
1514
import JaNeiSpmForSanity from '../JaNeiSpm/JaNeiSpmForSanity';
15+
import { DagIMåneden, MånedÅrVelger } from '../MånedÅrVelger/MånedÅrVelger';
1616
import TekstBlock from '../Sanity/TekstBlock';
17-
import { SkjemaCheckboxForSanity } from '../SkjemaCheckbox/SkjemaCheckboxForSanity';
1817
import { SkjemaFeiloppsummering } from '../SkjemaFeiloppsummering/SkjemaFeiloppsummering';
1918
import { SkjemaFeltInputForSanity } from '../SkjemaFeltInput/SkjemaFeltInputForSanity';
2019
import SkjemaModal from '../SkjemaModal/SkjemaModal';
@@ -39,7 +38,7 @@ export const ArbeidsperiodeModal: React.FC<ArbeidsperiodeModalProps> = ({
3938
erDød = false,
4039
forklaring = undefined,
4140
}) => {
42-
const { tekster, plainTekst } = useApp();
41+
const { tekster } = useApp();
4342
const { skjema, valideringErOk, nullstillSkjema, validerFelterOgVisFeilmelding } =
4443
useArbeidsperiodeSkjema(gjelderUtlandet, personType, erDød);
4544

@@ -137,15 +136,25 @@ export const ArbeidsperiodeModal: React.FC<ArbeidsperiodeModalProps> = ({
137136
label={<TekstBlock block={teksterForModal.arbeidsgiver.sporsmal} />}
138137
/>
139138
)}
140-
{fraDatoArbeidsperiode.erSynlig && (
139+
{/* {fraDatoArbeidsperiode.erSynlig && (
141140
<Datovelger
142141
felt={skjema.felter.fraDatoArbeidsperiode}
143142
skjema={skjema}
144143
label={<TekstBlock block={teksterForModal.startdato.sporsmal} />}
145144
avgrensMaxDato={periodenErAvsluttet ? gårsdagensDato() : dagensDato()}
146145
/>
146+
)} */}
147+
{fraDatoArbeidsperiode.erSynlig && (
148+
<MånedÅrVelger
149+
label={<TekstBlock block={teksterForModal.startdato.sporsmal} />}
150+
senesteValgbareMåned={periodenErAvsluttet ? gårsdagensDato() : dagensDato()}
151+
felt={skjema.felter.fraDatoArbeidsperiode}
152+
visFeilmeldinger={skjema.visFeilmeldinger}
153+
dagIMåneden={DagIMåneden.FØRSTE_DAG}
154+
kanIkkeVæreFremtid={true}
155+
/>
147156
)}
148-
{tilDatoArbeidsperiode.erSynlig && (
157+
{/* {tilDatoArbeidsperiode.erSynlig && (
149158
<div>
150159
<Datovelger
151160
felt={skjema.felter.tilDatoArbeidsperiode}
@@ -171,6 +180,29 @@ export const ArbeidsperiodeModal: React.FC<ArbeidsperiodeModalProps> = ({
171180
label={plainTekst(teksterForModal.sluttdatoFremtid.checkboxLabel)}
172181
/>
173182
</div>
183+
)} */}
184+
{tilDatoArbeidsperiode.erSynlig && (
185+
<MånedÅrVelger
186+
label={
187+
<TekstBlock
188+
block={
189+
periodenErAvsluttet
190+
? teksterForModal.sluttdatoFortid.sporsmal
191+
: teksterForModal.sluttdatoFremtid.sporsmal
192+
}
193+
/>
194+
}
195+
tidligsteValgbareMåned={minTilDatoForUtbetalingEllerArbeidsperiode(
196+
periodenErAvsluttet,
197+
skjema.felter.fraDatoArbeidsperiode.verdi
198+
)}
199+
senesteValgbareMåned={periodenErAvsluttet ? sisteDagDenneMåneden() : undefined}
200+
felt={skjema.felter.tilDatoArbeidsperiode}
201+
visFeilmeldinger={skjema.visFeilmeldinger}
202+
dagIMåneden={DagIMåneden.SISTE_DAG}
203+
kanIkkeVæreFremtid={periodenErAvsluttet}
204+
kanIkkeVæreFortid={!periodenErAvsluttet}
205+
/>
174206
)}
175207
{visFeiloppsummering(skjema) && <SkjemaFeiloppsummering skjema={skjema} />}
176208
</SkjemaModal>

src/frontend/utils/dato.tsx

+23-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import React from 'react';
22

33
import {
44
add,
5+
endOfMonth,
56
format,
67
isAfter,
78
isBefore,
@@ -13,11 +14,13 @@ import {
1314
startOfToday,
1415
sub,
1516
} from 'date-fns';
17+
import type { Locale } from 'date-fns/locale';
18+
import { enGB, nb, nn } from 'date-fns/locale';
1619

1720
import { feil, type FeltState, ok } from '@navikt/familie-skjema';
1821

1922
import SpråkTekst from '../components/Felleskomponenter/SpråkTekst/SpråkTekst';
20-
import { AlternativtSvarForInput, DatoMedUkjent, ISODateString } from '../typer/common';
23+
import { AlternativtSvarForInput, DatoMedUkjent, ISODateString, LocaleType } from '../typer/common';
2124
import { LocaleRecordBlock, PlainTekst } from '../typer/sanity/sanity';
2225
import { IFormateringsfeilmeldingerTekstinnhold } from '../typer/sanity/tekstInnhold';
2326

@@ -47,6 +50,8 @@ export const tidenesMorgen = () => startOfDay(new Date(1000, 0));
4750

4851
export const tidenesEnde = () => startOfDay(new Date(3000, 0));
4952

53+
export const sisteDagDenneMåneden = () => endOfMonth(new Date());
54+
5055
export const stringTilDate = (dato: string) => startOfDay(new Date(dato));
5156

5257
export const parseTilGyldigDato = (dateString: string, format: string): Date | undefined => {
@@ -140,11 +145,28 @@ export const validerDatoForSanity = (
140145
return ok(feltState);
141146
};
142147

148+
export const formaterDatostringKunMåned = (datoString: ISODateString, språk: LocaleType) =>
149+
format(new Date(datoString), 'MMMM yyyy', { locale: mapSpråkvalgTilDateFnsLocale(språk) });
150+
143151
export const formaterDato = (datoString: ISODateString) =>
144152
format(new Date(datoString), 'dd.MM.yyyy');
145153

154+
export const formaterDatoKunMåned = (dato: Date, språk: LocaleType) =>
155+
format(dato, 'MMMM yyyy', { locale: mapSpråkvalgTilDateFnsLocale(språk) });
156+
146157
export const formaterDatoMedUkjent = (datoMedUkjent: DatoMedUkjent, tekstForUkjent): string => {
147158
return datoMedUkjent === AlternativtSvarForInput.UKJENT
148159
? tekstForUkjent
149160
: format(new Date(datoMedUkjent), 'dd.MM.yyyy');
150161
};
162+
163+
const mapSpråkvalgTilDateFnsLocale = (språkvalg: LocaleType): Locale => {
164+
switch (språkvalg) {
165+
case LocaleType.nb:
166+
return nb;
167+
case LocaleType.nn:
168+
return nn;
169+
case LocaleType.en:
170+
return enGB;
171+
}
172+
};

src/frontend/utils/visning.ts

+17-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { AlternativtSvarForInput, DatoMedUkjent } from '../typer/common';
1+
import { AlternativtSvarForInput, DatoMedUkjent, LocaleType } from '../typer/common';
22

3-
import { formaterDato } from './dato';
3+
import { formaterDato, formaterDatostringKunMåned } from './dato';
44

55
export const formaterFnr = (fødselsnummer: string) => {
66
return fødselsnummer.substring(0, 6) + ' ' + fødselsnummer.substring(6, 11);
@@ -12,6 +12,21 @@ export const formaterDatoMedUkjent = (datoMedUkjent: DatoMedUkjent, tekstForUkje
1212
: formaterDato(datoMedUkjent);
1313
};
1414

15+
export const formaterMånedMedUkjent = (
16+
svar: string,
17+
vetIkkeTekst,
18+
toggle: boolean,
19+
valgtLocale: LocaleType
20+
) => {
21+
if (svar === AlternativtSvarForInput.UKJENT) {
22+
return vetIkkeTekst;
23+
} else if (toggle) {
24+
return uppercaseFørsteBokstav(formaterDatostringKunMåned(svar, valgtLocale));
25+
} else {
26+
return formaterDato(svar);
27+
}
28+
};
29+
1530
export const uppercaseFørsteBokstav = text => {
1631
if (typeof text !== 'string') return '';
1732
return text.charAt(0).toUpperCase() + text.slice(1);

0 commit comments

Comments
 (0)