Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spør kun om måned hvor spesifikk dato ikke er nødvendig #1550

Open
wants to merge 16 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
82fdd4f
Legger til MånedÅrVelger komponent
ole-kristian-rudjord Mar 13, 2025
098a63e
Legger til bruk av MånedÅrVelger
ole-kristian-rudjord Mar 13, 2025
2e5bb94
Bytter til formattering av måned for fraDatoArbeidsperiode og tilDato…
ole-kristian-rudjord Mar 13, 2025
5428bba
Legger til feature-toggle for å bytte mellom Datovelger (av) og Måned…
ole-kristian-rudjord Mar 13, 2025
794e6e8
Legger til MånedÅrVelger i pensjonsmodal
ole-kristian-rudjord Mar 13, 2025
5e16c95
Merge branch 'main' into feat/spør-kun-om-måned-hvor-dato-ikke-er-nød…
ole-kristian-rudjord Mar 17, 2025
befebfc
Legger til MånedÅrVelger i usePensjonsSkjema og ubetalinger-komponenter
ole-kristian-rudjord Mar 17, 2025
af266bd
Legger til MånedÅrVelger-relaterte verdier i mapping til kontrakt
ole-kristian-rudjord Mar 17, 2025
3d5f940
Endrer fra true prop til å bruke toggle verdien i ArbeidsperiodeOppsu…
ole-kristian-rudjord Mar 18, 2025
94a2ca1
Fjerner duplikat tilDatoArbeidsperiode oppsummeringfelt
ole-kristian-rudjord Mar 18, 2025
847238f
Fjerner duplikat pensjon fra og til datovelger
ole-kristian-rudjord Mar 18, 2025
66f569e
Flytter SkjemaCheckboxForSanity inn i toggle conditional slik at den …
ole-kristian-rudjord Mar 18, 2025
8ee33d2
Legger til tilPensjonperiodeSluttdatoAvgrensning slik at det er mulig…
ole-kristian-rudjord Mar 18, 2025
19d7812
Merge branch 'main' into feat/spør-kun-om-måned-hvor-dato-ikke-er-nød…
ole-kristian-rudjord Mar 19, 2025
cabc381
Legger til Sanity tekster for dato/måned placeholder og format
ole-kristian-rudjord Mar 20, 2025
d2ab452
Fikser 'Søknaden har lastet uten tekster' feil i Datovelger.test.tsx
ole-kristian-rudjord Mar 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,19 @@ import React from 'react';
import { ESvar } from '@navikt/familie-form-elements';

import { useApp } from '../../../context/AppContext';
import { useFeatureToggles } from '../../../context/FeatureToggleContext';
import { EFeatureToggle } from '../../../typer/feature-toggles';
import { IArbeidsperiode } from '../../../typer/perioder';
import { PersonType } from '../../../typer/personType';
import { IArbeidsperiodeTekstinnhold } from '../../../typer/sanity/modaler/arbeidsperiode';
import { dagensDato, gårsdagensDato } from '../../../utils/dato';
import { dagensDato, gårsdagensDato, sisteDagDenneMåneden } from '../../../utils/dato';
import { trimWhiteSpace, visFeiloppsummering } from '../../../utils/hjelpefunksjoner';
import { minTilDatoForUtbetalingEllerArbeidsperiode } from '../../../utils/perioder';
import { svarForSpørsmålMedUkjent } from '../../../utils/spørsmål';
import Datovelger from '../Datovelger/Datovelger';
import { LandDropdown } from '../Dropdowns/LandDropdown';
import JaNeiSpmForSanity from '../JaNeiSpm/JaNeiSpmForSanity';
import { DagIMåneden, MånedÅrVelger } from '../MånedÅrVelger/MånedÅrVelger';
import TekstBlock from '../Sanity/TekstBlock';
import { SkjemaCheckboxForSanity } from '../SkjemaCheckbox/SkjemaCheckboxForSanity';
import { SkjemaFeiloppsummering } from '../SkjemaFeiloppsummering/SkjemaFeiloppsummering';
Expand All @@ -39,6 +42,7 @@ export const ArbeidsperiodeModal: React.FC<ArbeidsperiodeModalProps> = ({
erDød = false,
forklaring = undefined,
}) => {
const { toggles } = useFeatureToggles();
const { tekster, plainTekst } = useApp();
const { skjema, valideringErOk, nullstillSkjema, validerFelterOgVisFeilmelding } =
useArbeidsperiodeSkjema(gjelderUtlandet, personType, erDød);
Expand Down Expand Up @@ -137,41 +141,97 @@ export const ArbeidsperiodeModal: React.FC<ArbeidsperiodeModalProps> = ({
label={<TekstBlock block={teksterForModal.arbeidsgiver.sporsmal} />}
/>
)}
{fraDatoArbeidsperiode.erSynlig && (
<Datovelger
felt={skjema.felter.fraDatoArbeidsperiode}
skjema={skjema}
label={<TekstBlock block={teksterForModal.startdato.sporsmal} />}
avgrensMaxDato={periodenErAvsluttet ? gårsdagensDato() : dagensDato()}
/>
)}
{tilDatoArbeidsperiode.erSynlig && (
<div>
<Datovelger
felt={skjema.felter.tilDatoArbeidsperiode}
skjema={skjema}
label={
<TekstBlock
block={
periodenErAvsluttet
? teksterForModal.sluttdatoFortid.sporsmal
: teksterForModal.sluttdatoFremtid.sporsmal
{toggles[EFeatureToggle.SPOR_OM_MANED_IKKE_DATO] ? (
<>
{fraDatoArbeidsperiode.erSynlig && (
<MånedÅrVelger
label={<TekstBlock block={teksterForModal.startdato.sporsmal} />}
senesteValgbareMåned={
periodenErAvsluttet ? gårsdagensDato() : dagensDato()
}
felt={skjema.felter.fraDatoArbeidsperiode}
visFeilmeldinger={skjema.visFeilmeldinger}
dagIMåneden={DagIMåneden.FØRSTE_DAG}
kanIkkeVæreFremtid={true}
/>
)}
{tilDatoArbeidsperiode.erSynlig && (
<div>
<MånedÅrVelger
label={
<TekstBlock
block={
periodenErAvsluttet
? teksterForModal.sluttdatoFortid.sporsmal
: teksterForModal.sluttdatoFremtid.sporsmal
}
/>
}
tidligsteValgbareMåned={minTilDatoForUtbetalingEllerArbeidsperiode(
periodenErAvsluttet,
skjema.felter.fraDatoArbeidsperiode.verdi
)}
senesteValgbareMåned={
periodenErAvsluttet ? sisteDagDenneMåneden() : undefined
}
felt={skjema.felter.tilDatoArbeidsperiode}
visFeilmeldinger={skjema.visFeilmeldinger}
dagIMåneden={DagIMåneden.SISTE_DAG}
kanIkkeVæreFremtid={periodenErAvsluttet}
kanIkkeVæreFortid={!periodenErAvsluttet}
disabled={
skjema.felter.tilDatoArbeidsperiodeUkjent.verdi === ESvar.JA
}
/>
}
avgrensMinDato={minTilDatoForUtbetalingEllerArbeidsperiode(
periodenErAvsluttet,
skjema.felter.fraDatoArbeidsperiode.verdi
)}
avgrensMaxDato={periodenErAvsluttet ? dagensDato() : undefined}
disabled={skjema.felter.tilDatoArbeidsperiodeUkjent.verdi === ESvar.JA}
/>
<SkjemaCheckboxForSanity
felt={skjema.felter.tilDatoArbeidsperiodeUkjent}
label={plainTekst(teksterForModal.sluttdatoFremtid.checkboxLabel)}
/>
</div>
<SkjemaCheckboxForSanity
felt={skjema.felter.tilDatoArbeidsperiodeUkjent}
label={plainTekst(teksterForModal.sluttdatoFremtid.checkboxLabel)}
/>
</div>
)}
</>
) : (
<>
{fraDatoArbeidsperiode.erSynlig && (
<Datovelger
felt={skjema.felter.fraDatoArbeidsperiode}
skjema={skjema}
label={<TekstBlock block={teksterForModal.startdato.sporsmal} />}
avgrensMaxDato={periodenErAvsluttet ? gårsdagensDato() : dagensDato()}
/>
)}
{tilDatoArbeidsperiode.erSynlig && (
<div>
<Datovelger
felt={skjema.felter.tilDatoArbeidsperiode}
skjema={skjema}
label={
<TekstBlock
block={
periodenErAvsluttet
? teksterForModal.sluttdatoFortid.sporsmal
: teksterForModal.sluttdatoFremtid.sporsmal
}
/>
}
avgrensMinDato={minTilDatoForUtbetalingEllerArbeidsperiode(
periodenErAvsluttet,
skjema.felter.fraDatoArbeidsperiode.verdi
)}
avgrensMaxDato={periodenErAvsluttet ? dagensDato() : undefined}
disabled={
skjema.felter.tilDatoArbeidsperiodeUkjent.verdi === ESvar.JA
}
/>
<SkjemaCheckboxForSanity
felt={skjema.felter.tilDatoArbeidsperiodeUkjent}
label={plainTekst(teksterForModal.sluttdatoFremtid.checkboxLabel)}
/>
</div>
)}
</>
)}

{visFeiloppsummering(skjema) && <SkjemaFeiloppsummering skjema={skjema} />}
</SkjemaModal>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ import React from 'react';
import { ESvar } from '@navikt/familie-form-elements';

import { useApp } from '../../../context/AppContext';
import { useFeatureToggles } from '../../../context/FeatureToggleContext';
import { useSpråk } from '../../../context/SpråkContext';
import { EFeatureToggle } from '../../../typer/feature-toggles';
import { IArbeidsperiode } from '../../../typer/perioder';
import { PeriodePersonTypeMedBarnProps, PersonType } from '../../../typer/personType';
import { IArbeidsperiodeTekstinnhold } from '../../../typer/sanity/modaler/arbeidsperiode';
import { formaterDato } from '../../../utils/dato';
import { formaterDato, formaterDatostringKunMåned } from '../../../utils/dato';
import { landkodeTilSpråk } from '../../../utils/språk';
import { formaterDatoMedUkjent } from '../../../utils/visning';
import { formaterMånedMedUkjent, uppercaseFørsteBokstav } from '../../../utils/visning';
import { OppsummeringFelt } from '../../SøknadsSteg/Oppsummering/OppsummeringFelt';
import PeriodeOppsummering from '../PeriodeOppsummering/PeriodeOppsummering';
import TekstBlock from '../Sanity/TekstBlock';
Expand All @@ -33,6 +35,7 @@ export const ArbeidsperiodeOppsummering: React.FC<ArbeidsperiodeOppsummeringProp
personType,
erDød = false,
}) => {
const { toggles } = useFeatureToggles();
const { tekster, plainTekst } = useApp();
const { valgtLocale } = useSpråk();
const {
Expand Down Expand Up @@ -97,7 +100,16 @@ export const ArbeidsperiodeOppsummering: React.FC<ArbeidsperiodeOppsummeringProp
{fraDatoArbeidsperiode.svar && (
<OppsummeringFelt
tittel={<TekstBlock block={teksterForModal.startdato.sporsmal} />}
søknadsvar={formaterDato(fraDatoArbeidsperiode.svar)}
søknadsvar={
toggles[EFeatureToggle.SPOR_OM_MANED_IKKE_DATO]
? uppercaseFørsteBokstav(
formaterDatostringKunMåned(
fraDatoArbeidsperiode.svar,
valgtLocale
)
)
: formaterDato(fraDatoArbeidsperiode.svar)
}
/>
)}
{tilDatoArbeidsperiode.svar && (
Expand All @@ -111,9 +123,11 @@ export const ArbeidsperiodeOppsummering: React.FC<ArbeidsperiodeOppsummeringProp
}
/>
}
søknadsvar={formaterDatoMedUkjent(
søknadsvar={formaterMånedMedUkjent(
tilDatoArbeidsperiode.svar,
plainTekst(teksterForModal.sluttdatoFremtid.checkboxLabel)
plainTekst(teksterForModal.sluttdatoFremtid.checkboxLabel),
toggles[EFeatureToggle.SPOR_OM_MANED_IKKE_DATO],
valgtLocale
)}
/>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,21 @@ import { useFelt, useSkjema, Valideringsstatus } from '@navikt/familie-skjema';

import { useApp } from '../../../context/AppContext';
import { useEøs } from '../../../context/EøsContext';
import { useFeatureToggles } from '../../../context/FeatureToggleContext';
import useDatovelgerFeltMedUkjentForSanity from '../../../hooks/useDatovelgerFeltMedUkjentForSanity';
import useInputFelt from '../../../hooks/useInputFelt';
import useJaNeiSpmFelt from '../../../hooks/useJaNeiSpmFelt';
import useLanddropdownFelt from '../../../hooks/useLanddropdownFelt';
import useDatovelgerFeltForSanity from '../../../hooks/useSendInnSkjemaTest/useDatovelgerForSanity';
import { EFeatureToggle } from '../../../typer/feature-toggles';
import { PersonType } from '../../../typer/personType';
import { IArbeidsperiodeTekstinnhold } from '../../../typer/sanity/modaler/arbeidsperiode';
import { IArbeidsperioderFeltTyper } from '../../../typer/skjema';
import {
dagensDato,
erSammeDatoSomDagensDato,
gårsdagensDato,
sisteDagDenneMåneden,
stringTilDate,
} from '../../../utils/dato';
import { minTilDatoForUtbetalingEllerArbeidsperiode } from '../../../utils/perioder';
Expand All @@ -33,6 +36,7 @@ export const useArbeidsperiodeSkjema = (
personType: PersonType,
erDød = false
) => {
const { toggles } = useFeatureToggles();
const { tekster, plainTekst } = useApp();
const { erEøsLand } = useEøs();

Expand Down Expand Up @@ -93,6 +97,10 @@ export const useArbeidsperiodeSkjema = (
avhengigheter: { arbeidsperiodeAvsluttet, arbeidsperiodeLand },
});

const tilArbeidsperiodeSluttdatoAvgrensning = toggles[EFeatureToggle.SPOR_OM_MANED_IKKE_DATO]
? sisteDagDenneMåneden()
: dagensDato();

const tilDatoArbeidsperiode = useDatovelgerFeltMedUkjentForSanity({
feltId: ArbeidsperiodeSpørsmålsId.tilDatoArbeidsperiode,
initiellVerdi: '',
Expand All @@ -104,7 +112,9 @@ export const useArbeidsperiodeSkjema = (
? !!erEøsLand(arbeidsperiodeLand.verdi)
: arbeidsperiodeAvsluttet.valideringsstatus === Valideringsstatus.OK ||
andreForelderErDød,
sluttdatoAvgrensning: periodenErAvsluttet ? dagensDato() : undefined,
sluttdatoAvgrensning: periodenErAvsluttet
? tilArbeidsperiodeSluttdatoAvgrensning
: undefined,
startdatoAvgrensning: minTilDatoForUtbetalingEllerArbeidsperiode(
periodenErAvsluttet,
fraDatoArbeidsperiode.verdi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { ISODateString } from '../../../typer/common';
import { SkjemaFeltTyper } from '../../../typer/skjema';
import * as datoUtils from '../../../utils/dato';
import { dagensDato } from '../../../utils/dato';
import { silenceConsoleErrors, TestProvidere } from '../../../utils/testing';
import { silenceConsoleErrors, spyOnUseApp, TestProvidere } from '../../../utils/testing';

import Datovelger from './Datovelger';

Expand All @@ -31,6 +31,7 @@ const IntlProviderMedLocale = ({ children }) => <IntlProvider locale="nb">{child

describe('Datovelger', () => {
beforeEach(() => {
spyOnUseApp({});
silenceConsoleErrors();
window.ResizeObserver = ResizeObserver;
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import React, { ReactNode, useEffect } from 'react';

import { formatISO, isAfter, startOfDay } from 'date-fns';
import { useIntl } from 'react-intl';

import { BodyShort, ErrorMessage, DatePicker, useDatepicker } from '@navikt/ds-react';
import type { Felt, ISkjema } from '@navikt/familie-skjema';

import { useApp } from '../../../context/AppContext';
import { useSpråk } from '../../../context/SpråkContext';
import { ISODateString } from '../../../typer/common';
import { SkjemaFeltTyper } from '../../../typer/skjema';
Expand All @@ -17,7 +17,6 @@ import {
tidenesEnde,
tidenesMorgen,
} from '../../../utils/dato';
import SpråkTekst from '../SpråkTekst/SpråkTekst';

interface DatoVelgerProps {
felt: Felt<ISODateString>;
Expand All @@ -44,8 +43,9 @@ const Datovelger: React.FC<DatoVelgerProps> = ({
dynamisk = false,
strategy = 'fixed',
}) => {
const { formatMessage } = useIntl();
const { valgtLocale } = useSpråk();
const { tekster, plainTekst } = useApp();
const { datoformatHjelpetekst, datoformatPlaceholder } = tekster().FELLES.hjelpeteksterForInput;

const minDatoErIFremtiden = () =>
tilhørendeFraOgMedFelt?.verdi &&
Expand Down Expand Up @@ -113,12 +113,8 @@ const Datovelger: React.FC<DatoVelgerProps> = ({
disabled={disabled}
size={'medium'}
label={label}
description={
<BodyShort>
<SpråkTekst id={'felles.velg-dato.hjelpetekst'} />
</BodyShort>
}
placeholder={formatMessage({ id: 'felles.velg-dato.placeholder' })}
description={<BodyShort>{plainTekst(datoformatHjelpetekst)}</BodyShort>}
placeholder={plainTekst(datoformatPlaceholder)}
error={!!(felt.feilmelding && skjema.visFeilmeldinger)}
/>
</DatePicker>
Expand Down
Loading