From 322e6cb1beffbe44137a5221d35f6bf9329284b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Odd=20Andreas=20S=C3=B8rs=C3=A6ther?= Date: Thu, 16 Jan 2025 16:02:42 +0100 Subject: [PATCH] Fjern moment.js --- package-lock.json | 9 -- package.json | 1 - src/AvtaleOversikt/AvtalekortMobil.tsx | 5 +- .../AvtaleStatus/ArbeidsgiverAvtaleStatus.tsx | 9 +- src/AvtaleSide/AvtaleStatus/Avsluttet.tsx | 8 +- .../AvtaleStatus/DeltakerAvtaleStatus.tsx | 14 +- .../AvtaleStatus/Gjennomf\303\270res.tsx" | 8 +- .../AvtaleStatus/HvemHarGodkjentModal.tsx | 6 +- .../AvtaleStatus/KlarForOppstart.tsx | 13 +- .../AvtaleStatus/MentorAvtaleStatus.tsx | 12 +- .../AvtaleStatus/VeilederAvtaleStatus.tsx | 53 ++++---- src/AvtaleSide/VarselModal/VarselModal.less | 2 +- src/AvtaleSide/Varsellogg/VarselTabell.tsx | 6 +- src/AvtaleSide/Varsellogg/Varsellogg.less | 2 +- src/AvtaleSide/Varsellogg/Varsellogg.tsx | 4 +- .../steg/BeregningTilskudd/UtregningPanel.tsx | 6 +- .../steg/BeregningTilskudd/Utregningsrad.tsx | 2 +- .../TilskuddsPerioderVeileder.tsx | 4 +- .../InfoRundtRedusertProsentsats.tsx | 6 +- .../InfoRundtTilskuddsperioder.tsx | 6 +- .../MeldingArbeidsgiverSokRefusjon.tsx | 4 +- .../VisningTilskuddsperioderTabell.tsx | 7 +- .../VisningTilskuddsperioderTabellVtao.tsx | 8 +- .../StartOgSluttdatoOppsummering.tsx | 6 +- .../varighet/VarighetOppsummering.tsx | 8 +- .../TilskuddsperioderReturnert.tsx | 10 +- .../Versjonering/TidligereVersjoner.tsx | 4 +- .../JusterArenaMigreringsdato.tsx | 120 ----------------- .../forkortAvtale/ForkortAvtale.tsx | 17 ++- .../forlengAvtale/ForlengAvtale.tsx | 15 +-- .../AvtaleMinMaxDato/AvtaleMinMaxDato.ts | 43 +++--- .../VarighetSteg/InfoArenaOppryddingAlert.tsx | 6 +- .../steg/VarighetSteg/VarighetInputfelt.tsx | 10 +- .../steg/VarighetSteg/VarighetSteg.tsx | 21 +-- .../VarighetSteg/VarighetTilbakeTidAlert.tsx | 2 +- .../InfoVisningTilskuddsperiode.tsx | 7 +- .../TilskuddsperiodeBehandlingsTittel.tsx | 6 +- .../beslutterPanel/TilskuddsperiodeStatus.tsx | 37 ----- .../BeslutterTilskuddsperioder.tsx | 8 +- src/komponenter/Banner/BannerNAVAnsatt.tsx | 20 +-- .../AlleredeOpprettetAvtaleDetaljer.tsx | 8 +- src/komponenter/datovelger/Datovelger.tsx | 8 +- .../datovelger/DatovelgerForlengOgForkort.tsx | 4 +- src/services/rest-service.ts | 8 -- src/types/avtale.spec.ts | 7 - src/types/avtale.ts | 4 +- src/utils/datoUtils.spec.ts | 7 - src/utils/datoUtils.ts | 127 ++++++------------ src/utils/fnrUtils.ts | 8 +- 49 files changed, 238 insertions(+), 478 deletions(-) delete mode 100644 src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/JusterArenaMigreringsdato/JusterArenaMigreringsdato.tsx delete mode 100644 src/BeslutterSide/beslutterPanel/TilskuddsperiodeStatus.tsx delete mode 100644 src/types/avtale.spec.ts delete mode 100644 src/utils/datoUtils.spec.ts diff --git a/package-lock.json b/package-lock.json index 79c37d4e6..35130caa3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,6 @@ "lodash.debounce": "^4.0.8", "lodash.isequal": "^4.5.0", "lodash.sortby": "^4.7.0", - "moment": "^2.30.1", "prop-types": "^15.7.2", "react": "18.3.1", "react-collapse": "^5.1.1", @@ -6747,14 +6746,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "engines": { - "node": "*" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/package.json b/package.json index ff67aafbd..ef63fce01 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "lodash.debounce": "^4.0.8", "lodash.isequal": "^4.5.0", "lodash.sortby": "^4.7.0", - "moment": "^2.30.1", "prop-types": "^15.7.2", "react": "18.3.1", "react-collapse": "^5.1.1", diff --git a/src/AvtaleOversikt/AvtalekortMobil.tsx b/src/AvtaleOversikt/AvtalekortMobil.tsx index 35034a5e3..ad97a38f1 100644 --- a/src/AvtaleOversikt/AvtalekortMobil.tsx +++ b/src/AvtaleOversikt/AvtalekortMobil.tsx @@ -1,7 +1,6 @@ import { Fragment, FunctionComponent, useState } from 'react'; import { useNavigate, generatePath } from 'react-router-dom'; import { LinkPanel, Heading, Ingress, BodyShort } from '@navikt/ds-react'; -import moment from 'moment'; import './AvtalekortMobil.less'; import BEMHelper from '@/utils/bem'; @@ -13,6 +12,7 @@ import { InnloggetBruker } from '@/types/innlogget-bruker'; import { Path } from '@/Router'; import { Varsel } from '@/types/varsel'; import { avtaleStatusTekst } from '@/messages'; +import { formaterDatoHvisDefinert } from '@/utils/datoUtils'; const cls = BEMHelper('avtalekortMobil'); @@ -64,7 +64,8 @@ const AvtalekortMobil: FunctionComponent<{ {avtale.bedriftNavn} - Opprettet {moment(avtale.opprettetTidspunkt).format('DD.MM.YYYY')} + Startdato {formaterDatoHvisDefinert(avtale.startDato)}, sluttdato{' '} + {formaterDatoHvisDefinert(avtale.sluttDato)}
diff --git a/src/AvtaleSide/AvtaleStatus/ArbeidsgiverAvtaleStatus.tsx b/src/AvtaleSide/AvtaleStatus/ArbeidsgiverAvtaleStatus.tsx index 038c73052..6cfa1bc27 100644 --- a/src/AvtaleSide/AvtaleStatus/ArbeidsgiverAvtaleStatus.tsx +++ b/src/AvtaleSide/AvtaleStatus/ArbeidsgiverAvtaleStatus.tsx @@ -4,7 +4,7 @@ import KlarForOppstart from '@/AvtaleSide/AvtaleStatus/KlarForOppstart'; import StatusPanel from '@/AvtaleSide/AvtaleStatus/StatusPanel'; import VerticalSpacer from '@/komponenter/layout/VerticalSpacer'; import { Avtale } from '@/types/avtale'; -import { formatterDatoHvisDefinert } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_OG_TID_FORMAT_FULL } from '@/utils/datoUtils'; import { BodyShort } from '@navikt/ds-react'; import React, { FunctionComponent } from 'react'; import { useFeatureToggles } from '@/FeatureToggleProvider'; @@ -48,7 +48,8 @@ const ArbeidsgiverAvtaleStatus: FunctionComponent = ({ avtale }) => { header={'Avtalen er annullert'} body={ - Veileder har annullert avtalen {formatterDatoHvisDefinert(avtale.annullertTidspunkt!)}. + Veileder har annullert avtalen{' '} + {formaterDato(avtale.annullertTidspunkt!, NORSK_DATO_OG_TID_FORMAT_FULL)}. } /> @@ -94,9 +95,7 @@ const ArbeidsgiverAvtaleStatus: FunctionComponent = ({ avtale }) => { ); } case 'KLAR_FOR_OPPSTART': - return ( - - ); + return ; case 'GJENNOMFØRES': return ; case 'AVSLUTTET': diff --git a/src/AvtaleSide/AvtaleStatus/Avsluttet.tsx b/src/AvtaleSide/AvtaleStatus/Avsluttet.tsx index 6ed0d4941..9b2f2223d 100644 --- a/src/AvtaleSide/AvtaleStatus/Avsluttet.tsx +++ b/src/AvtaleSide/AvtaleStatus/Avsluttet.tsx @@ -1,7 +1,7 @@ import StatusPanel from '@/AvtaleSide/AvtaleStatus/StatusPanel'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT_FULL } from '@/utils/datoUtils'; import { BodyShort } from '@navikt/ds-react'; -import React, { FunctionComponent } from 'react'; +import { FunctionComponent } from 'react'; interface Props { startDato?: string; @@ -14,8 +14,8 @@ const Avsluttet: FunctionComponent = ({ startDato, sluttDato }) => { header="Tiltaket er avsluttet" body={ - Tiltaket varte fra {formatterDato(startDato!, NORSK_DATO_FORMAT)} til{' '} - {formatterDato(sluttDato!, NORSK_DATO_FORMAT)}. + Tiltaket varte fra {formaterDato(startDato!, NORSK_DATO_FORMAT_FULL)} til{' '} + {formaterDato(sluttDato!, NORSK_DATO_FORMAT_FULL)}. } /> diff --git a/src/AvtaleSide/AvtaleStatus/DeltakerAvtaleStatus.tsx b/src/AvtaleSide/AvtaleStatus/DeltakerAvtaleStatus.tsx index 1ed9adf05..4a8c5698a 100644 --- a/src/AvtaleSide/AvtaleStatus/DeltakerAvtaleStatus.tsx +++ b/src/AvtaleSide/AvtaleStatus/DeltakerAvtaleStatus.tsx @@ -4,9 +4,9 @@ import KlarForOppstart from '@/AvtaleSide/AvtaleStatus/KlarForOppstart'; import StatusPanel from '@/AvtaleSide/AvtaleStatus/StatusPanel'; import VerticalSpacer from '@/komponenter/layout/VerticalSpacer'; import { Avtale, Avtaleinnhold } from '@/types/avtale'; -import { formatterDato } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_OG_TID_FORMAT_FULL } from '@/utils/datoUtils'; import { BodyShort } from '@navikt/ds-react'; -import React, { FunctionComponent } from 'react'; +import { FunctionComponent } from 'react'; interface Props { avtale: Pick< @@ -31,7 +31,8 @@ const DeltakerAvtaleStatus: FunctionComponent = ({ avtale }) => { header="Avtalen er annullert" body={ - Veileder har annullert avtalen {formatterDato(avtale.annullertTidspunkt!)}. Årsak:{' '} + Veileder har annullert avtalen{' '} + {formaterDato(avtale.annullertTidspunkt!, NORSK_DATO_OG_TID_FORMAT_FULL)}. Årsak:{' '} {avtale.annullertGrunn}. } @@ -43,7 +44,8 @@ const DeltakerAvtaleStatus: FunctionComponent = ({ avtale }) => { header="Avtalen er avbrutt" body={ - Veileder har avbrutt avtalen {formatterDato(avtale.avbruttDato!)}. Årsak:{' '} + Veileder har avbrutt avtalen{' '} + {formaterDato(avtale.avbruttDato!, NORSK_DATO_OG_TID_FORMAT_FULL)}. Årsak:{' '} {avtale.avbruttGrunn}. } @@ -92,9 +94,7 @@ const DeltakerAvtaleStatus: FunctionComponent = ({ avtale }) => { /> ); case 'KLAR_FOR_OPPSTART': - return ( - - ); + return ; case 'GJENNOMFØRES': return ; case 'AVSLUTTET': diff --git "a/src/AvtaleSide/AvtaleStatus/Gjennomf\303\270res.tsx" "b/src/AvtaleSide/AvtaleStatus/Gjennomf\303\270res.tsx" index bba65547d..6b5715762 100644 --- "a/src/AvtaleSide/AvtaleStatus/Gjennomf\303\270res.tsx" +++ "b/src/AvtaleSide/AvtaleStatus/Gjennomf\303\270res.tsx" @@ -1,7 +1,7 @@ import StatusPanel from '@/AvtaleSide/AvtaleStatus/StatusPanel'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT_FULL } from '@/utils/datoUtils'; import { BodyShort } from '@navikt/ds-react'; -import React, { FunctionComponent } from 'react'; +import { FunctionComponent } from 'react'; interface Props { avtaleInngått?: string; @@ -14,8 +14,8 @@ const Gjennomføres: FunctionComponent = ({ avtaleInngått, startDato }) header="Tiltaket gjennomføres" body={ - Avtale ble inngått {formatterDato(avtaleInngått!, NORSK_DATO_FORMAT)}. Tiltaket startet{' '} - {formatterDato(startDato!, NORSK_DATO_FORMAT)}. + Avtale ble inngått {formaterDato(avtaleInngått!, NORSK_DATO_FORMAT_FULL)}. Tiltaket startet{' '} + {formaterDato(startDato!, NORSK_DATO_FORMAT_FULL)}. } /> diff --git a/src/AvtaleSide/AvtaleStatus/HvemHarGodkjentModal.tsx b/src/AvtaleSide/AvtaleStatus/HvemHarGodkjentModal.tsx index 16d8c3198..3e10d1f2b 100644 --- a/src/AvtaleSide/AvtaleStatus/HvemHarGodkjentModal.tsx +++ b/src/AvtaleSide/AvtaleStatus/HvemHarGodkjentModal.tsx @@ -2,8 +2,8 @@ import CheckIkon from '@/assets/ikoner/check.svg?react'; import VarselIkon from '@/assets/ikoner/varsel.svg?react'; import { AvtaleContext } from '@/AvtaleProvider'; import { TiltaksType } from '@/types/avtale'; -import { formatterDato } from '@/utils/datoUtils'; -import { BodyLong, BodyShort, Button, Label, Modal } from '@navikt/ds-react'; +import { formaterDato, NORSK_DATO_FORMAT_FULL } from '@/utils/datoUtils'; +import { BodyShort, Button, Label, Modal } from '@navikt/ds-react'; import { FunctionComponent, useContext, useState } from 'react'; import './HvemHarGodkjentModal.less'; @@ -70,7 +70,7 @@ const GodkjenningRad: React.FunctionComponent = (props: God const måGodkjenneTekst = props.tiltakstype === 'MENTOR' ? 'Må signere' : 'Må godkjenne'; const godkjentStatus: string = props.godkjentAvtale - ? harGodkjentTekst + ' ' + formatterDato(props.godkjentAvtale) + ? harGodkjentTekst + ' ' + formaterDato(props.godkjentAvtale, NORSK_DATO_FORMAT_FULL) : måGodkjenneTekst; const navn = props.navn; diff --git a/src/AvtaleSide/AvtaleStatus/KlarForOppstart.tsx b/src/AvtaleSide/AvtaleStatus/KlarForOppstart.tsx index 8b52c31d3..bf568a1c9 100644 --- a/src/AvtaleSide/AvtaleStatus/KlarForOppstart.tsx +++ b/src/AvtaleSide/AvtaleStatus/KlarForOppstart.tsx @@ -1,18 +1,19 @@ import StatusPanel from '@/AvtaleSide/AvtaleStatus/StatusPanel'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT_FULL } from '@/utils/datoUtils'; import { BodyShort } from '@navikt/ds-react'; -import React, { FunctionComponent } from 'react'; +import { FunctionComponent } from 'react'; interface Props { - avtaleInngått?: string; - startDato?: string; + startDato: string; } -const KlarForOppstart: FunctionComponent = ({ avtaleInngått, startDato }) => { +const KlarForOppstart: FunctionComponent = ({ startDato }) => { return ( Tiltaket starter {formatterDato(startDato!, NORSK_DATO_FORMAT)}.} + body={ + Tiltaket starter {formaterDato(startDato, NORSK_DATO_FORMAT_FULL)}. + } /> ); }; diff --git a/src/AvtaleSide/AvtaleStatus/MentorAvtaleStatus.tsx b/src/AvtaleSide/AvtaleStatus/MentorAvtaleStatus.tsx index dbc2abbd9..7ee3fb5e5 100644 --- a/src/AvtaleSide/AvtaleStatus/MentorAvtaleStatus.tsx +++ b/src/AvtaleSide/AvtaleStatus/MentorAvtaleStatus.tsx @@ -2,11 +2,10 @@ import Avsluttet from '@/AvtaleSide/AvtaleStatus/Avsluttet'; import Gjennomføres from '@/AvtaleSide/AvtaleStatus/Gjennomføres'; import KlarForOppstart from '@/AvtaleSide/AvtaleStatus/KlarForOppstart'; import StatusPanel from '@/AvtaleSide/AvtaleStatus/StatusPanel'; -import VerticalSpacer from '@/komponenter/layout/VerticalSpacer'; import { Avtale, Avtaleinnhold } from '@/types/avtale'; -import { formatterDato } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_OG_TID_FORMAT_FULL } from '@/utils/datoUtils'; import { BodyShort } from '@navikt/ds-react'; -import React, { FunctionComponent } from 'react'; +import { FunctionComponent } from 'react'; interface Props { avtale: Pick & { @@ -22,7 +21,8 @@ const MentorAvtaleStatus: FunctionComponent = ({ avtale }) => { header="Avtalen er annullert" body={ - Veileder har annullert avtalen {formatterDato(avtale.annullertTidspunkt!)}. + Veileder har annullert avtalen{' '} + {formaterDato(avtale.annullertTidspunkt!, NORSK_DATO_OG_TID_FORMAT_FULL)}. } /> @@ -59,9 +59,7 @@ const MentorAvtaleStatus: FunctionComponent = ({ avtale }) => { /> ); case 'KLAR_FOR_OPPSTART': - return ( - - ); + return ; case 'GJENNOMFØRES': return ; case 'AVSLUTTET': diff --git a/src/AvtaleSide/AvtaleStatus/VeilederAvtaleStatus.tsx b/src/AvtaleSide/AvtaleStatus/VeilederAvtaleStatus.tsx index 225f40fba..b829a54c3 100644 --- a/src/AvtaleSide/AvtaleStatus/VeilederAvtaleStatus.tsx +++ b/src/AvtaleSide/AvtaleStatus/VeilederAvtaleStatus.tsx @@ -1,5 +1,4 @@ import { BodyShort } from '@navikt/ds-react'; -import moment from 'moment'; import React, { useContext } from 'react'; import { AvtaleContext } from '@/AvtaleProvider'; @@ -9,7 +8,7 @@ import StatusPanel from '@/AvtaleSide/AvtaleStatus/StatusPanel'; import TilskuddsperioderReturnert from '@/AvtaleSide/steg/GodkjenningSteg/TilskuddsperioderReturnert'; import LagreKnapp from '@/komponenter/LagreKnapp/LagreKnapp'; import VerticalSpacer from '@/komponenter/layout/VerticalSpacer'; -import { formaterTid, formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { tidSidenTidspunkt, formaterDato, NORSK_DATO_FORMAT_FULL } from '@/utils/datoUtils'; import { Avtale } from '@/types/avtale'; import { useFeatureToggles } from '@/FeatureToggleProvider'; @@ -77,15 +76,6 @@ function VeilederAvtaleStatus(props: Props) { const { overtaAvtale } = useContext(AvtaleContext); const { arbeidstreningReadonly } = useFeatureToggles(); - const tidSidenDeltakerFikkVarsling = () => { - if (avtale.godkjentAvArbeidsgiver !== undefined) { - if (moment(avtale.godkjentAvArbeidsgiver).diff(moment().toString(), 'days') > 0) { - return `${moment(avtale.godkjentAvArbeidsgiver).diff(moment().toString(), 'days')} dager siden.`; - } - return `${formaterTid(avtale.godkjentAvArbeidsgiver)}`; - } - }; - if (avtale.tiltakstype === 'ARBEIDSTRENING' && arbeidstreningReadonly) { return ( - Du eller en annen veileder har annullert avtalen {formatterDato(avtale.annullertTidspunkt!)} - . Årsak: {avtale.annullertGrunn}. - + <> + + Du eller en annen veileder har annullert avtalen{' '} + {formaterDato(avtale.annullertTidspunkt!)}. + + Årsak: {avtale.annullertGrunn}. + } /> ); @@ -289,9 +282,14 @@ function VeilederAvtaleStatus(props: Props) { header="Venter på godkjenning av avtalen fra deltaker og signering av mentor" body={ - Avtalen må godkjennes av deltaker Deltaker fikk en varsling på min side Personbruker - om å godkjenne avtalen for {tidSidenDeltakerFikkVarsling()} Mentor må signere - taushetserklæringen før du kan godkjenne avtalen. + Avtalen må godkjennes av deltaker.{' '} + {avtale.godkjentAvArbeidsgiver && ( + <> + Deltaker fikk en varsling på min side Personbruker om å godkjenne avtalen + for {tidSidenTidspunkt(avtale.godkjentAvArbeidsgiver)} siden. + + )}{' '} + Mentor må signere taushetserklæringen før du kan godkjenne avtalen. } /> @@ -317,8 +315,13 @@ function VeilederAvtaleStatus(props: Props) { header="Venter på godkjenning av avtalen fra deltaker" body={ - Avtalen må godkjennes av deltaker. Deltaker fikk en varsling på min side på NAV.no - om å godkjenne avtalen for {tidSidenDeltakerFikkVarsling()} + Avtalen må godkjennes av deltaker. + {avtale.godkjentAvArbeidsgiver && ( + <> + Deltaker fikk en varsling på min side på NAV.no om å godkjenne avtalen for{' '} + {tidSidenTidspunkt(avtale.godkjentAvArbeidsgiver)} siden + + )} } /> @@ -374,8 +377,9 @@ function VeilederAvtaleStatus(props: Props) { body={ <> - Avtale ble inngått {formatterDato(avtale.avtaleInngått!, NORSK_DATO_FORMAT)}. Tiltaket - starter {formatterDato(avtale.gjeldendeInnhold.startDato!, NORSK_DATO_FORMAT)}. + Avtale ble inngått {formaterDato(avtale.avtaleInngått!, NORSK_DATO_FORMAT_FULL)}. + Tiltaket starter{' '} + {formaterDato(avtale.gjeldendeInnhold.startDato!, NORSK_DATO_FORMAT_FULL)}. @@ -393,8 +397,9 @@ function VeilederAvtaleStatus(props: Props) { body={ <> - Avtale ble inngått {formatterDato(avtale.avtaleInngått!, NORSK_DATO_FORMAT)}. Tiltaket - starter {formatterDato(avtale.gjeldendeInnhold.startDato!, NORSK_DATO_FORMAT)}. + Avtale ble inngått {formaterDato(avtale.avtaleInngått!, NORSK_DATO_FORMAT_FULL)}.{' '} + Tiltaket starter{' '} + {formaterDato(avtale.gjeldendeInnhold.startDato!, NORSK_DATO_FORMAT_FULL)}. diff --git a/src/AvtaleSide/VarselModal/VarselModal.less b/src/AvtaleSide/VarselModal/VarselModal.less index fddf9ece9..4d72c1ad8 100644 --- a/src/AvtaleSide/VarselModal/VarselModal.less +++ b/src/AvtaleSide/VarselModal/VarselModal.less @@ -14,7 +14,7 @@ // Desktop only &__modal { max-width: 60rem; - width: 50rem; + width: 60rem; } } @media (max-width: @screen-sm-min) { diff --git a/src/AvtaleSide/Varsellogg/VarselTabell.tsx b/src/AvtaleSide/Varsellogg/VarselTabell.tsx index 76aedfc7e..0054e036c 100644 --- a/src/AvtaleSide/Varsellogg/VarselTabell.tsx +++ b/src/AvtaleSide/Varsellogg/VarselTabell.tsx @@ -1,6 +1,6 @@ import HendelseIkon from '@/komponenter/HendelseIkon'; import { Varsel } from '@/types/varsel'; -import { formaterTid, formatterDato } from '@/utils/datoUtils'; +import { tidSidenTidspunkt, formaterDato } from '@/utils/datoUtils'; import { storForbokstav } from '@/utils/stringUtils'; import { Table } from '@navikt/ds-react'; import { Checkbox, CheckboxGroup } from '@navikt/ds-react'; @@ -74,8 +74,8 @@ const VarselTabell: FunctionComponent = (props) => { .map((varsel) => ( - - {formaterTid(varsel.tidspunkt)} + + {tidSidenTidspunkt(varsel.tidspunkt)} siden diff --git a/src/AvtaleSide/Varsellogg/Varsellogg.less b/src/AvtaleSide/Varsellogg/Varsellogg.less index 4dea276d2..a9a863eda 100644 --- a/src/AvtaleSide/Varsellogg/Varsellogg.less +++ b/src/AvtaleSide/Varsellogg/Varsellogg.less @@ -21,7 +21,7 @@ // Desktop only &__modal { max-width: 60rem; - width: 50rem; + width: 60rem; padding: 2rem; } } diff --git a/src/AvtaleSide/Varsellogg/Varsellogg.tsx b/src/AvtaleSide/Varsellogg/Varsellogg.tsx index 146e488be..5b25f4c85 100644 --- a/src/AvtaleSide/Varsellogg/Varsellogg.tsx +++ b/src/AvtaleSide/Varsellogg/Varsellogg.tsx @@ -6,10 +6,10 @@ import { Nettressurs, Status } from '@/types/nettressurs'; import { Varsel } from '@/types/varsel'; import BEMHelper from '@/utils/bem'; import { Alert, BodyShort, Heading, Link, Loader, Modal } from '@navikt/ds-react'; -import moment from 'moment'; import React, { FunctionComponent, useContext, useEffect, useState } from 'react'; import './Varsellogg.less'; import VarselTabell from './VarselTabell'; +import { isBefore } from 'date-fns'; const cls = BEMHelper('varsellogg'); @@ -56,7 +56,7 @@ const Varsellogg: FunctionComponent = () => { - {moment(avtaleContext.avtale.opprettetTidspunkt).isBefore('2020-09-10') && ( + {isBefore(avtaleContext.avtale.opprettetTidspunkt, '2020-09-10') && ( <> Denne avtalen ble opprettet før hendelsesloggen ble innført og vil være mangelfull. diff --git a/src/AvtaleSide/steg/BeregningTilskudd/UtregningPanel.tsx b/src/AvtaleSide/steg/BeregningTilskudd/UtregningPanel.tsx index 494cd8d80..de8b840d5 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/UtregningPanel.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/UtregningPanel.tsx @@ -11,7 +11,7 @@ import { AvtaleContext } from '@/AvtaleProvider'; import VerticalSpacer from '@/komponenter/layout/VerticalSpacer'; import { Beregningsgrunnlag } from '@/types/avtale'; import BEMHelper from '@/utils/bem'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; import { formaterPenger } from '@/utils/PengeUtils'; import { Accordion, Label } from '@navikt/ds-react'; import { FunctionComponent, useContext } from 'react'; @@ -86,7 +86,7 @@ const UtregningPanel: FunctionComponent = (props) => { labelTekst={props.datoForRedusertProsent ? `Tilskuddsprosent frem til` : 'Tilskuddsprosent'} midtrekkeTekst={ props.datoForRedusertProsent - ? formatterDato(props.datoForRedusertProsent, NORSK_DATO_FORMAT) + ? formaterDato(props.datoForRedusertProsent, NORSK_DATO_FORMAT) : null } labelIkon={} @@ -103,7 +103,7 @@ const UtregningPanel: FunctionComponent = (props) => { <> } ikkePenger verdiOperator={} diff --git a/src/AvtaleSide/steg/BeregningTilskudd/Utregningsrad.tsx b/src/AvtaleSide/steg/BeregningTilskudd/Utregningsrad.tsx index 67320dac2..db9b709e7 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/Utregningsrad.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/Utregningsrad.tsx @@ -52,7 +52,7 @@ const Utregningsrad: FunctionComponent = (props: Props) => { )}
{setLabelSats(props.labelSats)} - {props.midtrekkeTekst} + {props.midtrekkeTekst && {props.midtrekkeTekst}}
{setOperator(props.verdiOperator)} diff --git a/src/AvtaleSide/steg/BeregningTilskudd/tilskuddsPerioder/TilskuddsPerioderVeileder.tsx b/src/AvtaleSide/steg/BeregningTilskudd/tilskuddsPerioder/TilskuddsPerioderVeileder.tsx index 717fdd4bf..a1726c788 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/tilskuddsPerioder/TilskuddsPerioderVeileder.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/tilskuddsPerioder/TilskuddsPerioderVeileder.tsx @@ -1,7 +1,7 @@ import EtikettStatus from '@/BeslutterSide/EtikettStatus'; import { TilskuddsPeriode } from '@/types/avtale'; import BEMHelper from '@/utils/bem'; -import { formatterPeriode } from '@/utils/datoUtils'; +import { formaterPeriode } from '@/utils/datoUtils'; import { formatterProsent } from '@/utils/formatterProsent'; import { formaterPenger } from '@/utils/PengeUtils'; import { FunctionComponent } from 'react'; @@ -34,7 +34,7 @@ const TilskuddsPerioderVeileder: FunctionComponent = (props) => { {periode.løpenummer} - {formatterPeriode(periode.startDato, periode.sluttDato)} + {formaterPeriode(periode.startDato, periode.sluttDato)} {formatterProsent(periode.lonnstilskuddProsent)} {formaterPenger(periode.beløp)} diff --git a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtRedusertProsentsats.tsx b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtRedusertProsentsats.tsx index f1e55f9f9..2070ea250 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtRedusertProsentsats.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtRedusertProsentsats.tsx @@ -1,6 +1,6 @@ import React, { useContext } from 'react'; import { BodyShort, Label } from '@navikt/ds-react'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; import { AvtaleContext } from '@/AvtaleProvider'; import BEMHelper from '@/utils/bem'; @@ -21,7 +21,7 @@ const InfoRundtRedusertProsentsats: React.FC = ({ className }: Props) => Tilskuddsprosenten reduseres med 10% etter{' '} {avtale.gjeldendeInnhold.lonnstilskuddProsent === 60 ? '1 år' : '6 måneder'}. Datoen for ny redusert - sats er {formatterDato(avtale.gjeldendeInnhold.datoForRedusertProsent, NORSK_DATO_FORMAT)}. + sats er {formaterDato(avtale.gjeldendeInnhold.datoForRedusertProsent, NORSK_DATO_FORMAT)}. )} @@ -29,7 +29,7 @@ const InfoRundtRedusertProsentsats: React.FC = ({ className }: Props) => Tilskuddsprosenten reduseres til 67% etter 1 år om tilskuddsprosenten er eller over 68%. Datoen for ny redusert sats er{' '} - {formatterDato(avtale.gjeldendeInnhold.datoForRedusertProsent, NORSK_DATO_FORMAT)}. + {formaterDato(avtale.gjeldendeInnhold.datoForRedusertProsent, NORSK_DATO_FORMAT)}. )}
diff --git a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtTilskuddsperioder.tsx b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtTilskuddsperioder.tsx index 7084608cc..70e7fb25d 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtTilskuddsperioder.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtTilskuddsperioder.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; import { Button } from '@navikt/ds-react'; import BEMHelper from '@/utils/bem'; @@ -26,8 +26,8 @@ const InfoRundtTilskuddsperioder: React.FC = ({ return ( <>
- Avtalen varer fra {formatterDato(gjeldendeInnholdStartdato, NORSK_DATO_FORMAT)} til{' '} - {formatterDato(gjeldendeInnholdSluttdato, NORSK_DATO_FORMAT)}. Det tilsvarer{' '} + Avtalen varer fra {formaterDato(gjeldendeInnholdStartdato, NORSK_DATO_FORMAT)} til{' '} + {formaterDato(gjeldendeInnholdSluttdato, NORSK_DATO_FORMAT)}. Det tilsvarer{' '} {antallAktiveTilskuddsperioder} tilskuddsperioder.
{!visAllePerioder && ( diff --git a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/MeldingArbeidsgiverSokRefusjon.tsx b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/MeldingArbeidsgiverSokRefusjon.tsx index eecb882a6..9cda8fcfa 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/MeldingArbeidsgiverSokRefusjon.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/MeldingArbeidsgiverSokRefusjon.tsx @@ -1,6 +1,6 @@ import React, { useContext } from 'react'; import { BodyShort, Heading, Label } from '@navikt/ds-react'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT_FULL } from '@/utils/datoUtils'; import BEMHelper from '@/utils/bem'; import { InnloggetBrukerContext } from '@/InnloggingBoundary/InnloggingBoundary'; import { Avtale } from '@/types/avtale'; @@ -30,7 +30,7 @@ const MeldingArbeidsgiverSokRefusjon: React.FC = ({ className, avtale }: over, vil NAV sende dere et ferdig utregnet forslag til refusjon. Refusjonen regnes ut på bakgrunn av innhold i avtalen og innrapporterte inntekter i A-meldingen. - + ); }; diff --git a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabell.tsx b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabell.tsx index 44512d7eb..09bffbbda 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabell.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabell.tsx @@ -1,7 +1,7 @@ import React, { useContext, useState } from 'react'; import { BodyShort, Label } from '@navikt/ds-react'; import { TilskuddsPeriode } from '@/types/avtale'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterPeriode } from '@/utils/datoUtils'; import EtikettStatus from '@/BeslutterSide/EtikettStatus'; import { formaterPenger } from '@/utils/PengeUtils'; import InfoRundtTilskuddsperioder from '@/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtTilskuddsperioder'; @@ -55,10 +55,7 @@ const VisningTilskuddsperioderTabell: React.FC = ({ className }: Pro borderTop: nyProsent ? '2px solid gray' : 'undefined', }} > - - {formatterDato(periode.startDato, NORSK_DATO_FORMAT)} -{' '} - {formatterDato(periode.sluttDato, NORSK_DATO_FORMAT)} - + {formaterPeriode(periode.startDato, periode.sluttDato)} {innloggetBruker.erNavAnsatt && ( diff --git a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabellVtao.tsx b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabellVtao.tsx index a37320e27..8cf40fddc 100644 --- a/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabellVtao.tsx +++ b/src/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/VisningTilskuddsperioderTabellVtao.tsx @@ -1,7 +1,7 @@ import React, { useContext, useState } from 'react'; import { BodyShort, Label } from '@navikt/ds-react'; import { TilskuddsPeriode } from '@/types/avtale'; -import { formaterDatoNy, formaterPeriodeNy, NORSK_DATO_FORMAT_NY } from '@/utils/datoUtils'; +import { formaterDato, formaterPeriode } from '@/utils/datoUtils'; import EtikettStatus from '@/BeslutterSide/EtikettStatus'; import { formaterPenger } from '@/utils/PengeUtils'; import InfoRundtTilskuddsperioder from '@/AvtaleSide/steg/BeregningTilskudd/visningTilskuddsperioder/InfoRundtTilskuddsperioder'; @@ -38,9 +38,7 @@ const tilskuddsperiodeRad = ({ return (
- - {formaterPeriodeNy(periode.startDato, periode.sluttDato, NORSK_DATO_FORMAT_NY)} - + {formaterPeriode(periode.startDato, periode.sluttDato)} {erITidligereAar && ( Sats for {periodeAar} @@ -56,7 +54,7 @@ const tilskuddsperiodeRad = ({ {periode.beløp !== null ? formaterPenger(periode.beløp) : '-'} - {formaterDatoNy(addDays(new Date(periode.sluttDato), 3).toString(), 'dd MMM yyyy')} + {formaterDato(addDays(new Date(periode.sluttDato), 3).toString(), 'dd MMM yyyy')}
); diff --git a/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/InkluderingstilskuddOppsummering/StartOgSluttdatoOppsummering.tsx b/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/InkluderingstilskuddOppsummering/StartOgSluttdatoOppsummering.tsx index d310c3e0a..97759cef3 100644 --- a/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/InkluderingstilskuddOppsummering/StartOgSluttdatoOppsummering.tsx +++ b/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/InkluderingstilskuddOppsummering/StartOgSluttdatoOppsummering.tsx @@ -1,6 +1,6 @@ -import React, { FunctionComponent } from 'react'; +import { FunctionComponent } from 'react'; import { Varighet } from '@/types/avtale'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; import { Column, Container, Row } from '@/komponenter/NavGrid/Grid'; import { Label } from '@navikt/ds-react'; import SjekkOmVerdiEksisterer from '../SjekkOmVerdiEksisterer/SjekkOmVerdiEksisterer'; @@ -8,7 +8,7 @@ import Stegoppsummering from '../Stegoppsummering/Stegoppsummering'; import VarighetIkon from '../varighet/VarighetIkon'; const StartOgSluttdatoOppsummering: FunctionComponent = (props) => { - const harDato = (dato?: string): string => (dato ? formatterDato(dato, NORSK_DATO_FORMAT) : ''); + const harDato = (dato?: string): string => (dato ? formaterDato(dato, NORSK_DATO_FORMAT) : ''); return ( } tittel="Varighet"> diff --git a/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/varighet/VarighetOppsummering.tsx b/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/varighet/VarighetOppsummering.tsx index 4d68737dc..f97bdf2c9 100644 --- a/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/varighet/VarighetOppsummering.tsx +++ b/src/AvtaleSide/steg/GodkjenningSteg/Oppsummering/varighet/VarighetOppsummering.tsx @@ -1,7 +1,6 @@ import { AvtaleContext } from '@/AvtaleProvider'; import VerticalSpacer from '@/komponenter/layout/VerticalSpacer'; import { Varighet } from '@/types/avtale'; -import moment from 'moment'; import { Column, Container, Row } from '@/komponenter/NavGrid/Grid'; import { Label } from '@navikt/ds-react'; import React, { FunctionComponent, useContext } from 'react'; @@ -9,13 +8,10 @@ import SjekkOmVerdiEksisterer from '../SjekkOmVerdiEksisterer/SjekkOmVerdiEksist import Stegoppsummering from '../Stegoppsummering/Stegoppsummering'; import VarighetIkon from './VarighetIkon'; import { formaterNorskeTall } from '@/utils'; - -const formaterDato = (dato: string): string => { - return moment(dato).format('DD.MM.YYYY'); -}; +import { formaterDato } from '@/utils/datoUtils'; const harDato = (dato?: string): string => { - return dato ? formaterDato(dato).toString() : ''; + return dato ? formaterDato(dato, 'dd.MM.yyyy').toString() : ''; }; const VarighetOppsummering: FunctionComponent = ({ diff --git a/src/AvtaleSide/steg/GodkjenningSteg/TilskuddsperioderReturnert.tsx b/src/AvtaleSide/steg/GodkjenningSteg/TilskuddsperioderReturnert.tsx index c8e6f2724..1ff2eed78 100644 --- a/src/AvtaleSide/steg/GodkjenningSteg/TilskuddsperioderReturnert.tsx +++ b/src/AvtaleSide/steg/GodkjenningSteg/TilskuddsperioderReturnert.tsx @@ -1,10 +1,10 @@ -import React, { FunctionComponent, useContext } from 'react'; +import { FunctionComponent, useContext } from 'react'; import Innholdsboks from '@/komponenter/Innholdsboks/Innholdsboks'; import { AvtaleContext } from '@/AvtaleProvider'; import { Accordion, Alert, BodyShort, Heading } from '@navikt/ds-react'; import ProblemIkon from '@/assets/ikoner/varsel.svg?react'; import VerticalSpacer from '@/komponenter/layout/VerticalSpacer'; -import { formatterDato, NORSK_DATO_OG_TID_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_OG_TID_FORMAT_FULL } from '@/utils/datoUtils'; import { tilskuddsperiodeReturÅrsakTekst } from '@/messages'; import { Returårsaker, TilskuddsPeriode } from '@/types/avtale'; import { interleave } from '@/utils/arrayUtils'; @@ -14,8 +14,8 @@ const avslåttBegrunnelse = (avslåttTilskuddsperiode: TilskuddsPeriode) => { return (
- {formatterDato(avslåttTilskuddsperiode.avslåttTidspunkt!, NORSK_DATO_OG_TID_FORMAT)}: Returnert av{' '} - {avslåttTilskuddsperiode.avslåttAvNavIdent} med følgende årsak{avslagsårsaker.length > 1 ? 'er' : ''}: + {formaterDato(avslåttTilskuddsperiode.avslåttTidspunkt!, NORSK_DATO_OG_TID_FORMAT_FULL)}: Returnert + av {avslåttTilskuddsperiode.avslåttAvNavIdent} med følgende årsak{avslagsårsaker.length > 1 ? 'er' : ''}:
    {avslagsårsaker.map((årsak: Returårsaker, index: number) => (
  • {tilskuddsperiodeReturÅrsakTekst[årsak]}
  • @@ -32,7 +32,7 @@ const TilskuddsperioderReturnert: FunctionComponent = (_props) => { avtale.gjeldendeTilskuddsperiode?.status === 'AVSLÅTT' ? avtale.gjeldendeTilskuddsperiode : undefined; const returnerteTilskuddsperioder = avtale.tilskuddPeriode - // Filtrer vekk gjendelde periode fra listen; denne skal vises på toppen av dialogvinduet hvis den er relevant. + // Filtrer vekk gjeldende periode fra listen; denne skal vises på toppen av dialogvinduet hvis den er relevant. .filter((p) => p.status === 'AVSLÅTT' && p.id !== gjeldendeReturnerteTilskuddsperiode?.id) .sort((a: TilskuddsPeriode, b: TilskuddsPeriode) => { if (a.avslåttTidspunkt && b.avslåttTidspunkt) { diff --git a/src/AvtaleSide/steg/GodkjenningSteg/Versjonering/TidligereVersjoner.tsx b/src/AvtaleSide/steg/GodkjenningSteg/Versjonering/TidligereVersjoner.tsx index 40d0051ba..a004352c8 100644 --- a/src/AvtaleSide/steg/GodkjenningSteg/Versjonering/TidligereVersjoner.tsx +++ b/src/AvtaleSide/steg/GodkjenningSteg/Versjonering/TidligereVersjoner.tsx @@ -3,9 +3,9 @@ import VersjonModal from '@/komponenter/modal/VersjonModal'; import { innholdTypeTekst } from '@/messages'; import { AvtaleVersjon, TiltaksType } from '@/types/avtale'; import BEMHelper from '@/utils/bem'; -import moment from 'moment'; import { BodyShort, Label, LinkPanel, Heading } from '@navikt/ds-react'; import './TidligereVersjoner.less'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; const cls = BEMHelper('tidligereVersjoner'); @@ -37,7 +37,7 @@ const TidligereVersjoner: React.FunctionComponent<{ versjoner: AvtaleVersjon[]; {avtaleVersjon.ikrafttredelsestidspunkt && - moment(avtaleVersjon.ikrafttredelsestidspunkt).format('DD.MM.YYYY')} + formaterDato(avtaleVersjon.ikrafttredelsestidspunkt, NORSK_DATO_FORMAT)}
diff --git a/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/JusterArenaMigreringsdato/JusterArenaMigreringsdato.tsx b/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/JusterArenaMigreringsdato/JusterArenaMigreringsdato.tsx deleted file mode 100644 index 67bd7b3bb..000000000 --- a/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/JusterArenaMigreringsdato/JusterArenaMigreringsdato.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { AvtaleContext } from '@/AvtaleProvider'; -import SlikVilTilskuddsperioderSeUt from '@/AvtaleSide/Oppgavelinje/SlikVilTilskuddsperioderSeUt'; -import BekreftelseModal from '@/komponenter/modal/BekreftelseModal'; -import { justerArenaMigreringsdato, justerArenaMigreringsdatoDryRun } from '@/services/rest-service'; -import { TilskuddsPeriode } from '@/types/avtale'; -import { handterFeil } from '@/utils/apiFeilUtils'; -import BEMHelper from '@/utils/bem'; -import { Notes } from '@navikt/ds-icons/cjs'; -import { Link, MonthPicker, Fieldset } from '@navikt/ds-react'; -import moment from 'moment'; -import { FunctionComponent, useContext, useState } from 'react'; - -const JusterArenaMigreringsdato: FunctionComponent = () => { - const avtaleContext = useContext(AvtaleContext); - const cls = BEMHelper('forlengAvtale'); - - const [modalApen, setModalApen] = useState(false); - const [sluttDato, setSluttDato] = useState(); - const [feil, setFeil] = useState(); - const [tilskuddsperioder, setTilskuddsperioder] = useState([]); - - const juster = async () => { - if (sluttDato) { - await justerArenaMigreringsdato(avtaleContext.avtale, sluttDato); - await avtaleContext.hentAvtale(); - lukkModal(); - } - }; - const onDatoChange = async (dato: string | undefined) => { - if (dato) { - const datoUtenTimezone = moment(dato).format('YYYY-MM-DD'); - setSluttDato(datoUtenTimezone); - - try { - const nyAvtale = await justerArenaMigreringsdatoDryRun(avtaleContext.avtale, datoUtenTimezone); - setTilskuddsperioder(nyAvtale.tilskuddPeriode); - setFeil(undefined); - } catch (e: any) { - handterFeil(e, (feilmelding) => { - setFeil(feilmelding); - }); - } - } - }; - - const startDatoDate = avtaleContext.avtale.gjeldendeInnhold.startDato - ? new Date(avtaleContext.avtale.gjeldendeInnhold.startDato) - : undefined; - - const lukkModal = () => { - setModalApen(false); - setTilskuddsperioder([]); - setSluttDato(undefined); - setFeil(undefined); - }; - - const startDatoErEtterMigreringsdato = - avtaleContext.avtale.gjeldendeInnhold.startDato && - moment(avtaleContext.avtale.gjeldendeInnhold.startDato).isAfter(moment('2023-02-01')); - if (!avtaleContext.avtale.gjeldendeInnhold.startDato || startDatoErEtterMigreringsdato) { - return null; - } - - return ( - <> -
- { - event.stopPropagation(); - setModalApen(true); - }} - href="#" - role="menuitem" - style={{ - display: 'flex', - alignItems: 'center', - }} - > -
- -
- Juster arenamigreringsdato - -
- - -
-
-
} error={feil}> - -
- onDatoChange(dato)} - dropdownCaption - fromDate={startDatoDate} - toDate={new Date('2023-02-01')} - /> -
-
- -
- - - ); -}; - -export default JusterArenaMigreringsdato; diff --git a/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forkortAvtale/ForkortAvtale.tsx b/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forkortAvtale/ForkortAvtale.tsx index ca94d49f2..6cdf7299d 100644 --- a/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forkortAvtale/ForkortAvtale.tsx +++ b/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forkortAvtale/ForkortAvtale.tsx @@ -7,13 +7,13 @@ import { forkortAvtale, forkortAvtaleDryRun } from '@/services/rest-service'; import { TilskuddsPeriode } from '@/types/avtale'; import { handterFeil } from '@/utils/apiFeilUtils'; import { Notes } from '@navikt/ds-icons/cjs'; -import moment from 'moment'; import { BodyShort, Fieldset, Label, Link, Radio, RadioGroup } from '@navikt/ds-react'; import React, { FunctionComponent, useContext, useState } from 'react'; import BEMHelper from '@/utils/bem'; import DatovelgerForlengOgForkort from '@/komponenter/datovelger/DatovelgerForlengOgForkort'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; import './forkortAvtale.less'; +import { addDays, format } from 'date-fns'; const ForkortAvtale: FunctionComponent = () => { const avtaleContext = useContext(AvtaleContext); @@ -24,6 +24,9 @@ const ForkortAvtale: FunctionComponent = () => { const [datoFeil, setDatoFeil] = useState(); const [grunn, setGrunn] = useState(''); const [annetGrunn, setAnnetGrunn] = useState(); + // Hvis man skal forkorte, kan vi gå ut fra at start og sluttdato alltid er satt + const naavaerendeDato = avtaleContext.avtale.gjeldendeInnhold.sluttDato!; + const startDato = avtaleContext.avtale.gjeldendeInnhold.startDato!; const [tilskuddsperioder, setTilskuddsperioder] = useState([]); @@ -90,9 +93,7 @@ const ForkortAvtale: FunctionComponent = () => {
- - {formatterDato(avtaleContext.avtale.gjeldendeInnhold.sluttDato!, NORSK_DATO_FORMAT)} - + {formaterDato(naavaerendeDato, NORSK_DATO_FORMAT)}
{ datoFelt="sluttDato" label="" onChangeHåndtereNyDato={onDatoChange} - minDate={moment(avtaleContext.avtale.gjeldendeInnhold.startDato).format('YYYY-MM-DD')} - maxDate={moment(avtaleContext.avtale.gjeldendeInnhold.sluttDato) - .subtract(1, 'days') - .format('YYYY-MM-DD')} + minDate={formaterDato(startDato, 'yyyy-MM-dd')} + maxDate={format(addDays(naavaerendeDato, -1), 'yyyy-MM-dd')} />
diff --git a/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forlengAvtale/ForlengAvtale.tsx b/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forlengAvtale/ForlengAvtale.tsx index 00d7b2340..e2809e72a 100644 --- a/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forlengAvtale/ForlengAvtale.tsx +++ b/src/AvtaleSide/steg/GodkjenningSteg/endringAvAvtaleInnhold/forlengAvtale/ForlengAvtale.tsx @@ -6,13 +6,13 @@ import { forlengAvtale, forlengAvtaleDryRun } from '@/services/rest-service'; import { TilskuddsPeriode } from '@/types/avtale'; import { handterFeil } from '@/utils/apiFeilUtils'; import { Notes } from '@navikt/ds-icons/cjs'; -import moment from 'moment'; import { BodyShort, Fieldset, Label, Link } from '@navikt/ds-react'; import React, { FunctionComponent, useContext, useState } from 'react'; import BEMHelper from '@/utils/bem'; import './forlengAvtale.less'; import DatovelgerForlengOgForkort from '@/komponenter/datovelger/DatovelgerForlengOgForkort'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { addDays } from 'date-fns'; const ForlengAvtale: FunctionComponent = () => { const avtaleContext = useContext(AvtaleContext); @@ -23,6 +23,9 @@ const ForlengAvtale: FunctionComponent = () => { const [feil, setFeil] = useState(); const [tilskuddsperioder, setTilskuddsperioder] = useState([]); + // Kan trygt anta at sluttdato er satt ved forlenging av avtale + const naavaerendeSluttDato = avtaleContext.avtale.gjeldendeInnhold.sluttDato!; + const forleng = async (): Promise => { if (sluttDato) { await forlengAvtale(avtaleContext.avtale, sluttDato); @@ -86,18 +89,14 @@ const ForlengAvtale: FunctionComponent = () => {
- - {formatterDato(avtaleContext.avtale.gjeldendeInnhold.sluttDato!, NORSK_DATO_FORMAT)} - + {formaterDato(naavaerendeSluttDato, NORSK_DATO_FORMAT)}
diff --git a/src/AvtaleSide/steg/VarighetSteg/AvtaleMinMaxDato/AvtaleMinMaxDato.ts b/src/AvtaleSide/steg/VarighetSteg/AvtaleMinMaxDato/AvtaleMinMaxDato.ts index 1f94d7bf1..5a5e90ca5 100644 --- a/src/AvtaleSide/steg/VarighetSteg/AvtaleMinMaxDato/AvtaleMinMaxDato.ts +++ b/src/AvtaleSide/steg/VarighetSteg/AvtaleMinMaxDato/AvtaleMinMaxDato.ts @@ -2,7 +2,7 @@ import { AvtaleContext } from '@/AvtaleProvider'; import { Kvalifiseringsgruppe } from '@/AvtaleSide/steg/BeregningTilskudd/Kvalifiseringsgruppe'; import { InnloggetBrukerContext } from '@/InnloggingBoundary/InnloggingBoundary'; import { TiltaksType } from '@/types/avtale'; -import moment, { DurationInputArg2 } from 'moment'; +import { add, addDays, Duration, format, sub } from 'date-fns'; import { useContext } from 'react'; export declare type ISODateString = string; @@ -32,17 +32,14 @@ export const AvtaleMinMaxDato = (startDatePicker: boolean): DatepickerLimitation const { rolle } = useContext(InnloggetBrukerContext); const erVeileder = rolle === 'VEILEDER'; - const startdatoPluss = (megde: number, tidsEnhet: DurationInputArg2): any => { - return moment(avtale.gjeldendeInnhold.startDato).subtract(1, 'days').add(megde, tidsEnhet).format('YYYY-MM-DD'); - }; + const startdatoPluss = (duration: Duration): any => + format(add(addDays(avtale.gjeldendeInnhold.startDato!, -1), duration), 'yyyy-MM-dd'); - const startdatoFraAvtalensSluttDato = (megde: number, tidsEnhet: DurationInputArg2): any => { - return moment(avtale.gjeldendeInnhold.sluttDato).add(1, 'days').subtract(megde, tidsEnhet).format('YYYY-MM-DD'); - }; + const startdatoFraAvtalensSluttDato = (duration: Duration): any => + format(sub(addDays(avtale.gjeldendeInnhold.sluttDato!, 1), duration), 'yyyy-MM-dd'); - const sluttDatoFraDagensDato = (megde: number, tidsEnhet: DurationInputArg2): any => { - return moment(new Date()).add(megde, tidsEnhet).subtract(1, 'days').format('YYYY-MM-DD'); - }; + const sluttDatoFraDagensDato = (duration: Duration): any => + format(add(addDays(new Date(), -1), duration), 'yyyy-MM-dd'); const settdatoBegrensningTiltakstype = (tiltakstype: TiltaksType) => { switch (tiltakstype) { @@ -55,8 +52,8 @@ export const AvtaleMinMaxDato = (startDatePicker: boolean): DatepickerLimitation } if (avtale.gjeldendeInnhold.startDato) { return { - minDate: startdatoPluss(1, 'days'), - maxDate: startdatoPluss(28, 'days'), + minDate: startdatoPluss({ days: 1 }), + maxDate: startdatoPluss({ days: 28 }), }; } return { @@ -74,13 +71,13 @@ export const AvtaleMinMaxDato = (startDatePicker: boolean): DatepickerLimitation } if (avtale.gjeldendeInnhold.startDato) { return { - minDate: startdatoPluss(1, 'days'), - maxDate: startdatoPluss(18, 'months'), + minDate: startdatoPluss({ days: 1 }), + maxDate: startdatoPluss({ months: 18 }), }; } return { minDate: sjekkMuligMinDato(), - maxDate: sluttDatoFraDagensDato(18, 'months'), + maxDate: sluttDatoFraDagensDato({ months: 18 }), }; case 'MENTOR': @@ -89,18 +86,18 @@ export const AvtaleMinMaxDato = (startDatePicker: boolean): DatepickerLimitation if (startDatePicker === true) { return { minDate: sjekkMuligMinDato(), - maxDate: sluttDatoFraDagensDato(1, 'years'), + maxDate: sluttDatoFraDagensDato({ years: 1 }), }; } if (avtale.gjeldendeInnhold.startDato) { return { minDate: avtale.gjeldendeInnhold.startDato, - maxDate: startdatoPluss(1, 'years'), + maxDate: startdatoPluss({ years: 1 }), }; } else { return { minDate: sjekkMuligMinDato(), - maxDate: sluttDatoFraDagensDato(1, 'years'), + maxDate: sluttDatoFraDagensDato({ years: 1 }), }; } case 'VTAO': @@ -116,10 +113,10 @@ export const AvtaleMinMaxDato = (startDatePicker: boolean): DatepickerLimitation if (startDatePicker) { if (avtale.gjeldendeInnhold.sluttDato) { if (mengde) { - if (startdatoFraAvtalensSluttDato(mengde, 'years') < EN_UKE_SIDEN) { + if (startdatoFraAvtalensSluttDato({ years: mengde }) < EN_UKE_SIDEN) { return EN_UKE_SIDEN; } else { - return startdatoFraAvtalensSluttDato(mengde, 'years'); + return startdatoFraAvtalensSluttDato({ years: mengde }); } } } @@ -141,18 +138,18 @@ export const AvtaleMinMaxDato = (startDatePicker: boolean): DatepickerLimitation if (startDatePicker) { return { minDate: sjekkMuligMinDato(maksDato), - maxDate: sluttDatoFraDagensDato(maksDato, 'years'), + maxDate: sluttDatoFraDagensDato({ years: maksDato }), }; } if (avtale.gjeldendeInnhold.startDato) { return { minDate: sjekkMuligMinDato(maksDato), - maxDate: startdatoPluss(maksDato, 'years'), + maxDate: startdatoPluss({ years: maksDato }), }; } return { minDate: sjekkMuligMinDato(maksDato), - maxDate: sluttDatoFraDagensDato(maksDato, 'years'), + maxDate: sluttDatoFraDagensDato({ years: maksDato }), }; }; diff --git a/src/AvtaleSide/steg/VarighetSteg/InfoArenaOppryddingAlert.tsx b/src/AvtaleSide/steg/VarighetSteg/InfoArenaOppryddingAlert.tsx index cdbe179c6..17b39c5c6 100644 --- a/src/AvtaleSide/steg/VarighetSteg/InfoArenaOppryddingAlert.tsx +++ b/src/AvtaleSide/steg/VarighetSteg/InfoArenaOppryddingAlert.tsx @@ -1,12 +1,12 @@ import { TiltaksType } from '@/types/avtale'; import BEMHelper from '@/utils/bem'; import { Alert, BodyShort } from '@navikt/ds-react'; -import moment from 'moment'; +import { isBefore } from 'date-fns'; import React from 'react'; interface Props { tiltakstype: TiltaksType; - startDato: string | undefined; + startDato: string; erRyddeAvtale: boolean; erNavAnsatt: boolean; className: string; @@ -21,7 +21,7 @@ const InfoArenaOppryddingAlert: React.FC = ({ }: Props) => { const skalViseAlert = ['MIDLERTIDIG_LONNSTILSKUDD', 'VARIG_LONNSTILSKUDD'].includes(tiltakstype) && - moment(startDato).isBefore('2023-02-01') && + isBefore(startDato, '2023-02-01') && !erRyddeAvtale && erNavAnsatt; diff --git a/src/AvtaleSide/steg/VarighetSteg/VarighetInputfelt.tsx b/src/AvtaleSide/steg/VarighetSteg/VarighetInputfelt.tsx index dcd20d4cb..a2cf3d12b 100644 --- a/src/AvtaleSide/steg/VarighetSteg/VarighetInputfelt.tsx +++ b/src/AvtaleSide/steg/VarighetSteg/VarighetInputfelt.tsx @@ -3,10 +3,10 @@ import InfoBoks from '@/AvtaleSide/steg/VarighetSteg/InfoBoks/InfoBoks'; import StillingsprosentInput from '@/AvtaleSide/steg/VarighetSteg/StillingsprosentInput'; import { Column, Row } from '@/komponenter/NavGrid/Grid'; import BEMHelper from '@/utils/bem'; -import { accurateHumanize } from '@/utils/datoUtils'; -import moment from 'moment'; +import { formaterVarighet } from '@/utils/datoUtils'; import React, { useContext } from 'react'; import AntallDagerInput from '@/AvtaleSide/steg/VarighetSteg/AntallDagerInput'; +import { addDays } from 'date-fns'; interface Props { className: string; @@ -22,8 +22,10 @@ const VarighetInputfelt: React.FC = ({ className }: Props) => { const timerIUka = Number(((37.5 * (avtale.gjeldendeInnhold.stillingprosent || 0)) / 100).toFixed(2)); const dagerIUka = Number(((timerIUka / 37.5) * 5).toFixed(2)); - const duration = moment(avtale.gjeldendeInnhold.sluttDato).diff(avtale.gjeldendeInnhold.startDato, 'days') + 1; - const avtaleDuration = duration ? accurateHumanize(moment.duration(duration, 'days'), 3) : undefined; + const avtaleDuration = + avtale.gjeldendeInnhold.startDato && avtale.gjeldendeInnhold.sluttDato + ? formaterVarighet(avtale.gjeldendeInnhold.startDato, addDays(avtale.gjeldendeInnhold.sluttDato, 1)) + : ''; const cls = BEMHelper(className); return ( diff --git a/src/AvtaleSide/steg/VarighetSteg/VarighetSteg.tsx b/src/AvtaleSide/steg/VarighetSteg/VarighetSteg.tsx index a47b763c9..74e9af0ae 100644 --- a/src/AvtaleSide/steg/VarighetSteg/VarighetSteg.tsx +++ b/src/AvtaleSide/steg/VarighetSteg/VarighetSteg.tsx @@ -12,11 +12,10 @@ import Datovelger from '@/komponenter/datovelger/Datovelger'; import SkjemaTittel from '@/komponenter/form/SkjemaTittel'; import BEMHelper from '@/utils/bem'; import { VellykketGenerertIsoDatoString, genererFnrdatostringFraFnr } from '@/utils/fnrUtils'; -import moment from 'moment'; -import 'moment/dist/locale/nb'; import { FunctionComponent, useContext, useEffect, useState } from 'react'; import './varighetSteg.less'; import AvtaleStatus from '@/AvtaleSide/AvtaleStatus/AvtaleStatus'; +import { addYears, differenceInDays } from 'date-fns'; const VarighetSteg: FunctionComponent = () => { const { avtale, lagreAvtale } = useContext(AvtaleContext); @@ -32,7 +31,7 @@ const VarighetSteg: FunctionComponent = () => { if (tiltakstype === 'SOMMERJOBB' && startDato) { const isoDato: VellykketGenerertIsoDatoString = genererFnrdatostringFraFnr(deltakerFnr); if (isoDato.vellykketgenerering) { - if (moment(startDato).diff(moment(isoDato.isoDatostring).add(30, 'years').format('YYYY-MM-DD')) >= 0) { + if (differenceInDays(startDato, addYears(isoDato.isoDatostring, 30)) >= 0) { return setSommerjobbDeltakerOver30VedStartdato(true); } return setSommerjobbDeltakerOver30VedStartdato(false); @@ -55,13 +54,15 @@ const VarighetSteg: FunctionComponent = () => { - + {startDato !== undefined && ( + + )} diff --git a/src/AvtaleSide/steg/VarighetSteg/VarighetTilbakeTidAlert.tsx b/src/AvtaleSide/steg/VarighetSteg/VarighetTilbakeTidAlert.tsx index 611b825dc..2f74ec57a 100644 --- a/src/AvtaleSide/steg/VarighetSteg/VarighetTilbakeTidAlert.tsx +++ b/src/AvtaleSide/steg/VarighetSteg/VarighetTilbakeTidAlert.tsx @@ -23,7 +23,7 @@ const VarighetTilbakeTidAlert: React.FC = ({
{sommerjobbDeltakerOver30VedStartdato && ( - Deltaker kan ikke ha fylt 30år før startdatoen. Det vil ikke være mulig å starte opp avtalen. + Deltaker kan ikke ha fylt 30 år før startdatoen. Det vil ikke være mulig å starte opp avtalen. )} {(erDatoTilbakeITid(startDato) || erDatoTilbakeITid(sluttDato)) && ( diff --git a/src/BeslutterSide/beslutterPanel/InfoVisningTilskuddsperiode.tsx b/src/BeslutterSide/beslutterPanel/InfoVisningTilskuddsperiode.tsx index 96d65b824..23704e498 100644 --- a/src/BeslutterSide/beslutterPanel/InfoVisningTilskuddsperiode.tsx +++ b/src/BeslutterSide/beslutterPanel/InfoVisningTilskuddsperiode.tsx @@ -1,5 +1,5 @@ import React, { FunctionComponent, useContext } from 'react'; -import { formatterPeriode } from '@/utils/datoUtils'; +import { formaterPeriode } from '@/utils/datoUtils'; import HentNavEnhetFraContext from '@/utils/HentNavEnhetFraContext'; import { Label } from '@navikt/ds-react'; import BEMHelper from '@/utils/bem'; @@ -27,10 +27,7 @@ const InfoVisningTilskuddsperiode: FunctionComponent = () => {
diff --git a/src/BeslutterSide/beslutterPanel/TilskuddsperiodeBehandlingsTittel.tsx b/src/BeslutterSide/beslutterPanel/TilskuddsperiodeBehandlingsTittel.tsx index 0c3c198be..4971ba403 100644 --- a/src/BeslutterSide/beslutterPanel/TilskuddsperiodeBehandlingsTittel.tsx +++ b/src/BeslutterSide/beslutterPanel/TilskuddsperiodeBehandlingsTittel.tsx @@ -1,9 +1,9 @@ -import React, { FunctionComponent, useContext } from 'react'; +import { FunctionComponent, useContext } from 'react'; import { BodyShort, Heading } from '@navikt/ds-react'; import { TilskuddPeriodeStatus } from '@/types/avtale'; import BEMHelper from '@/utils/bem'; import { AvtaleContext } from '@/AvtaleProvider'; -import { formatterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; const TilskuddsperiodeBehandlingsTittel: FunctionComponent = () => { const cls = BEMHelper('beslutter-panel'); @@ -24,7 +24,7 @@ const TilskuddsperiodeBehandlingsTittel: FunctionComponent = () => { {tittel[avtale.gjeldendeTilskuddsperiode.status]} - {formatterDato(avtale.opprettetTidspunkt, NORSK_DATO_FORMAT)} + {formaterDato(avtale.opprettetTidspunkt, NORSK_DATO_FORMAT)}
); }; diff --git a/src/BeslutterSide/beslutterPanel/TilskuddsperiodeStatus.tsx b/src/BeslutterSide/beslutterPanel/TilskuddsperiodeStatus.tsx deleted file mode 100644 index 059427080..000000000 --- a/src/BeslutterSide/beslutterPanel/TilskuddsperiodeStatus.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React, { FunctionComponent, useContext } from 'react'; -import { BodyShort } from '@navikt/ds-react'; -import { formatterDato, NORSK_DATO_OG_TID_FORMAT } from '@/utils/datoUtils'; -import { tilskuddsperiodeReturÅrsakTekst } from '@/messages'; -import { AvtaleContext } from '@/AvtaleProvider'; - -const TilskuddsperiodeStatus: FunctionComponent = () => { - const { avtale } = useContext(AvtaleContext); - const { gjeldendeTilskuddsperiode } = avtale; - if (!gjeldendeTilskuddsperiode) return null; - - return ( - <> - {gjeldendeTilskuddsperiode.status === 'GODKJENT' && ( - - Tilskuddsperioden ble godkjent av {gjeldendeTilskuddsperiode.godkjentAvNavIdent} den{' '} - {formatterDato(gjeldendeTilskuddsperiode.godkjentTidspunkt!, NORSK_DATO_OG_TID_FORMAT)}. - Kostnadssted: {gjeldendeTilskuddsperiode.enhet}. - - )} - {gjeldendeTilskuddsperiode.status === 'AVSLÅTT' && ( - - Tilskuddsperioden ble returnert av {gjeldendeTilskuddsperiode.avslåttAvNavIdent} den{' '} - {formatterDato(gjeldendeTilskuddsperiode.avslåttTidspunkt!, NORSK_DATO_OG_TID_FORMAT)} med følgende - årsak(er): -
    - {Array.from(gjeldendeTilskuddsperiode.avslagsårsaker).map((årsak, index) => ( -
  • {tilskuddsperiodeReturÅrsakTekst[årsak]}
  • - ))} -
- med forklaringen: {gjeldendeTilskuddsperiode.avslagsforklaring} -
- )} - - ); -}; -export default TilskuddsperiodeStatus; diff --git a/src/BeslutterSide/beslutterTilskuddsperioder/BeslutterTilskuddsperioder.tsx b/src/BeslutterSide/beslutterTilskuddsperioder/BeslutterTilskuddsperioder.tsx index 7983052ad..58301fd17 100644 --- a/src/BeslutterSide/beslutterTilskuddsperioder/BeslutterTilskuddsperioder.tsx +++ b/src/BeslutterSide/beslutterTilskuddsperioder/BeslutterTilskuddsperioder.tsx @@ -1,5 +1,5 @@ import { AvtaleContext, Context } from '@/AvtaleProvider'; -import { formatterDato, formatterPeriode, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; +import { formaterDato, formaterPeriode, NORSK_DATO_FORMAT_FULL, NORSK_DATO_FORMAT } from '@/utils/datoUtils'; import { formatterProsent } from '@/utils/formatterProsent'; import { formaterPenger } from '@/utils/PengeUtils'; import React, { FunctionComponent, useContext, useRef, useState, useEffect } from 'react'; @@ -54,7 +54,7 @@ const BeslutterTilskuddsPerioder: FunctionComponent = (props) => { Tilskuddsperioden ble returnert av {' ' + periode.avslåttAvNavIdent + ' '} den - {' ' + formatterDato(periode.avslåttTidspunkt ?? '', NORSK_DATO_FORMAT) + ' '} + {' ' + formaterDato(periode.avslåttTidspunkt ?? '', NORSK_DATO_FORMAT_FULL) + ' '} med følgende årsak(er): {' ' + hentReturÅrsaker(periode) + ' '} @@ -97,11 +97,11 @@ const BeslutterTilskuddsPerioder: FunctionComponent = (props) => { - {formatterPeriode(periode.startDato, periode.sluttDato, 'DD.MM.YY')} + {formaterPeriode(periode.startDato, periode.sluttDato, 'dd.MM.yy')} {formaterPenger(periode.beløp)} {formatterProsent(periode.lonnstilskuddProsent)} - {formatterDato(periode.kanBesluttesFom, NORSK_DATO_FORMAT)} + {formaterDato(periode.kanBesluttesFom, NORSK_DATO_FORMAT)} {periode.status === 'GODKJENT' ? periode.enhet : enhet} { - const sistEndretPlussTolvUker = moment(sistEndret).endOf('day').add(TOLV_UKER_I_DAGER, 'days'); - const slettetidspunkt = STARTDATO_FOR_RYDDING.isAfter(sistEndretPlussTolvUker) - ? STARTDATO_FOR_RYDDING - : sistEndretPlussTolvUker; + const sistEndretPlussTolvUker = addDays(endOfDay(sistEndret), TOLV_UKER_I_DAGER); + const slettetidspunkt = max([STARTDATO_FOR_RYDDING, sistEndretPlussTolvUker]); - const antallDager = slettetidspunkt.diff(moment(), 'days'); + const antallDager = Math.abs(differenceInDays(new Date(), slettetidspunkt)); if (antallDager === 0) { return `kl. 23:59 i dag`; @@ -36,7 +36,7 @@ const formaterSlettetidspunkt = (sistEndret: string) => { if (antallDager < 14) { return `${antallDager} dager`; } - return `den ${slettetidspunkt.format('DD.MM.YYYY')}`; + return `den ${format(slettetidspunkt, NORSK_DATO_FORMAT_FULL, { locale: nb })}`; }; const BannerNAVAnsatt: React.FunctionComponent = (props) => { @@ -44,7 +44,7 @@ const BannerNAVAnsatt: React.FunctionComponent = (props) => { const { pabegyntAvtaleRyddeJobb } = useFeatureToggles(); const innloggetBruker = useContext(InnloggetBrukerContext); - return innloggetBruker.erNavAnsatt ? ( + return innloggetBruker.erNavAnsatt && avtale ? ( <>
@@ -72,7 +72,7 @@ const BannerNAVAnsatt: React.FunctionComponent = (props) => {
- {pabegyntAvtaleRyddeJobb && ['PÅBEGYNT', 'MANGLER_GODKJENNING'].includes(avtale?.status) && ( + {pabegyntAvtaleRyddeJobb && ['PÅBEGYNT', 'MANGLER_GODKJENNING'].includes(avtale.status) && ( Avtalen vil automatisk slettes dersom den ikke blir inngått eller endret innen{' '} {formaterSlettetidspunkt(avtale.sistEndret)}. diff --git a/src/komponenter/alleredeOpprettetTiltak/innholdsvisning/AlleredeOpprettetAvtaleDetaljer.tsx b/src/komponenter/alleredeOpprettetTiltak/innholdsvisning/AlleredeOpprettetAvtaleDetaljer.tsx index 858ccb3d5..2de5344e9 100644 --- a/src/komponenter/alleredeOpprettetTiltak/innholdsvisning/AlleredeOpprettetAvtaleDetaljer.tsx +++ b/src/komponenter/alleredeOpprettetTiltak/innholdsvisning/AlleredeOpprettetAvtaleDetaljer.tsx @@ -3,7 +3,7 @@ import { BEMWrapper } from '@/utils/bem'; import { AlleredeRegistrertAvtale } from '@/types/avtale'; import { BodyShort, Link } from '@navikt/ds-react'; import { Expand } from '@navikt/ds-icons'; -import { formatterDato } from '@/utils/datoUtils'; +import { formaterDato } from '@/utils/datoUtils'; import { avtaleStatusTekst } from '@/messages'; import RadInfo from '@/komponenter/alleredeOpprettetTiltak/innholdsvisning/RadInfo'; import { storForbokstav } from '@/utils/stringUtils'; @@ -19,7 +19,7 @@ const AlleredeOpprettetAvtaleDetaljer: React.FC = ({ cls, innhold }) => { const settGodkjentAvBeslutter = () => { if (['VARIG_LONNSTILSKUDD', 'MIDLERTIDIG_LONNSTILSKUDD', 'SOMMERJOBB'].includes(innhold.tiltakstype)) { const info = innhold.godkjentAvBeslutter - ? formatterDato(innhold.godkjentAvBeslutter, 'DD.MM.YY') + ? formaterDato(innhold.godkjentAvBeslutter, 'dd.MM.yy') : 'ikke godkjent'; return ; } @@ -27,7 +27,7 @@ const AlleredeOpprettetAvtaleDetaljer: React.FC = ({ cls, innhold }) => { }; const settDatoInfo = (datoString: string | null, backupTxt: string): string => - datoString ? formatterDato(datoString, 'DD.MM.YY') : backupTxt; + datoString ? formaterDato(datoString, 'dd.MM.yy') : backupTxt; return (
@@ -63,7 +63,7 @@ const AlleredeOpprettetAvtaleDetaljer: React.FC = ({ cls, innhold }) => { /> {settGodkjentAvBeslutter()} - +
diff --git a/src/komponenter/datovelger/Datovelger.tsx b/src/komponenter/datovelger/Datovelger.tsx index cf2975999..5436d10db 100644 --- a/src/komponenter/datovelger/Datovelger.tsx +++ b/src/komponenter/datovelger/Datovelger.tsx @@ -2,7 +2,7 @@ import { AvtaleContext } from '@/AvtaleProvider'; import { Avtaleinnhold } from '@/types/avtale'; import { DateValidationT, DatePicker, useDatepicker } from '@navikt/ds-react'; import { FunctionComponent, PropsWithChildren, useContext, useState } from 'react'; -import { formatterDatoHvisDefinert } from '@/utils/datoUtils'; +import { formaterDatoHvisDefinert } from '@/utils/datoUtils'; import { AvtaleMinMaxDato } from '@/AvtaleSide/steg/VarighetSteg/AvtaleMinMaxDato/AvtaleMinMaxDato'; interface Props { @@ -57,14 +57,14 @@ const Datovelger: FunctionComponent = ({ label, datoFelt }: PropsWithChil defaultSelected: avtale.gjeldendeInnhold[datoFelt] ? new Date(avtale.gjeldendeInnhold[datoFelt]!) : undefined, onDateChange: (dato) => { settAvtaleInnholdVerdier({ - [datoFelt]: formatterDatoHvisDefinert(dato?.toDateString(), 'YYYY-MM-DD'), + [datoFelt]: formaterDatoHvisDefinert(dato?.toDateString(), 'yyyy-MM-dd'), }); }, onValidate: (val) => { feilmelding( val, - formatterDatoHvisDefinert(datepickerProps.fromDate?.toDateString()), - formatterDatoHvisDefinert(datepickerProps.toDate?.toDateString()), + formaterDatoHvisDefinert(datepickerProps.fromDate?.toDateString()), + formaterDatoHvisDefinert(datepickerProps.toDate?.toDateString()), ); }, }); diff --git a/src/komponenter/datovelger/DatovelgerForlengOgForkort.tsx b/src/komponenter/datovelger/DatovelgerForlengOgForkort.tsx index 5d9e24fb1..f36e31cc0 100644 --- a/src/komponenter/datovelger/DatovelgerForlengOgForkort.tsx +++ b/src/komponenter/datovelger/DatovelgerForlengOgForkort.tsx @@ -2,7 +2,7 @@ import { AvtaleContext } from '@/AvtaleProvider'; import { Avtaleinnhold } from '@/types/avtale'; import { DatePicker, useDatepicker } from '@navikt/ds-react'; import { FunctionComponent, PropsWithChildren, useContext } from 'react'; -import { formatterDatoHvisDefinert } from '@/utils/datoUtils'; +import { formaterDatoHvisDefinert } from '@/utils/datoUtils'; import { ISODateString } from '@/AvtaleSide/steg/VarighetSteg/AvtaleMinMaxDato/AvtaleMinMaxDato'; interface Props { @@ -28,7 +28,7 @@ const DatovelgerForlengOgForkort: FunctionComponent = ({ inputFormat: 'dd.MM.yyyy', defaultSelected: avtale.gjeldendeInnhold[datoFelt] ? new Date(avtale.gjeldendeInnhold[datoFelt]!) : undefined, onDateChange: (dato) => { - onChangeHåndtereNyDato(formatterDatoHvisDefinert(dato?.toDateString(), 'YYYY-MM-DD')); + onChangeHåndtereNyDato(formaterDatoHvisDefinert(dato?.toDateString(), 'yyyy-MM-dd')); }, }); diff --git a/src/services/rest-service.ts b/src/services/rest-service.ts index 06742b6df..4bcbb8c8c 100644 --- a/src/services/rest-service.ts +++ b/src/services/rest-service.ts @@ -571,14 +571,6 @@ export const endreOmMentor = async (avtale: Avtale, mentorInnhold: MentorInnhold await mutate(`/avtaler/${avtale.id}/versjoner`); }; -export const justerArenaMigreringsdato = async (avtale: Avtale, migreringsdato: string): Promise => { - await api.post(`/avtaler/${avtale.id}/juster-arena-migreringsdato`, { migreringsdato }); - await mutate(`/avtaler/${avtale.id}/versjoner`); -}; -export const justerArenaMigreringsdatoDryRun = async (avtale: Avtale, migreringsdato: string): Promise => { - const response = await api.post(`/avtaler/${avtale.id}/juster-arena-migreringsdato/dry-run`, { migreringsdato }); - return response.data; -}; export const hentVtaoSats = async (forDato?: string): Promise<{ aar: number; belop: number }> => { const queryParams = new URLSearchParams(removeEmpty({ forDato })); const response = await api.get(`/satser/vtao?${queryParams}`); diff --git a/src/types/avtale.spec.ts b/src/types/avtale.spec.ts deleted file mode 100644 index eb83f1df9..000000000 --- a/src/types/avtale.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { expect, test } from 'vitest'; - -import * as avtale from './avtale'; - -test('Test that datoIkkeTilbakeITid is defined', () => { - expect(avtale).toBeDefined(); -}); diff --git a/src/types/avtale.ts b/src/types/avtale.ts index 6531ae021..3109568fd 100644 --- a/src/types/avtale.ts +++ b/src/types/avtale.ts @@ -49,8 +49,8 @@ export type AvtaleMinimalListeVisning = { deltakerEtternavn: string; bedriftNavn: string; veilederNavIdent: string; - startDato: string; - sluttDato: string; + startDato: string | null; + sluttDato: string | null; status: AvtaleStatus; tiltakstype: TiltaksType; erGodkjentTaushetserklæringAvMentor: boolean; diff --git a/src/utils/datoUtils.spec.ts b/src/utils/datoUtils.spec.ts deleted file mode 100644 index 3b1451419..000000000 --- a/src/utils/datoUtils.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { expect, test } from 'vitest'; - -import * as datoUtils from './datoUtils'; - -test('Test that datoIkkeTilbakeITid is defined', () => { - expect(datoUtils).toBeDefined(); -}); diff --git a/src/utils/datoUtils.ts b/src/utils/datoUtils.ts index c4124112e..a63f99c58 100644 --- a/src/utils/datoUtils.ts +++ b/src/utils/datoUtils.ts @@ -1,126 +1,85 @@ -import moment from 'moment'; -import 'moment/dist/locale/nb'; -moment.locale('nb'); -import { format } from 'date-fns'; +import { differenceInDays, format, isBefore, formatDistanceToNowStrict, Duration, intervalToDuration } from 'date-fns'; import { nb } from 'date-fns/locale'; -export const datoIkkeTilbakeITid = (dato: Date) => { - return moment().isSameOrBefore(dato, 'date'); -}; -const units: Array<{ unit: moment.unitOfTime.Base; key: moment.RelativeTimeKey }> = [ - { unit: 'y', key: 'yy' }, - { unit: 'M', key: 'MM' }, - { unit: 'd', key: 'dd' }, - { unit: 'h', key: 'hh' }, - { unit: 'm', key: 'mm' }, - { unit: 's', key: 'ss' }, +const units: Array<{ unit: keyof Duration; single: string; plural: string }> = [ + { unit: 'years', single: 'år', plural: 'år' }, + { unit: 'months', single: 'måned', plural: 'måneder' }, + { unit: 'days', single: 'dag', plural: 'dager' }, ]; -export const accurateHumanize = (duration: moment.Duration, accuracy: number = 2): string => { - let beginFilter = false; - let componentCount = 0; + +export const formaterVarighet = (dato1: Date | string, dato2: Date | string): string => { + const duration = intervalToDuration({ start: dato1, end: dato2 }); return units - .map(({ unit, key }) => ({ value: duration.get(unit), key })) - .filter(({ value, key }) => { - if (beginFilter === false) { - if (value === 0) return false; - beginFilter = true; - } - componentCount++; - return value !== 0 && componentCount <= accuracy; + .filter(({ unit }) => duration[unit] !== undefined) + .map(({ unit, single, plural }) => { + const value = duration[unit] || 0; + if (value === 1) { + return `${value} ${single}`; + } else return `${value} ${plural}`; }) - .map(({ value, key }) => ({ value, key: value === 1 ? key[0] : key })) - .map(({ value, key }) => moment.localeData().relativeTime(value, true, key as moment.RelativeTimeKey, true)) .join(', '); }; /** - * @deprecated - */ -export const NORSK_DATO_OG_TID_FORMAT = 'DD.MM.YYYY HH:mm'; -/** - * @deprecated + * Eksempel: + * `format(new Date('2024-01-10', NORSK_DATO_OG_TID_FORMAT_NY, {locale: nb}))` => '10. januar 2025 kl. 01:00' */ -export const NORSK_DATO_FORMAT = 'DD.MM.YYYY'; +export const NORSK_DATO_OG_TID_FORMAT_FULL = 'PPPp'; + /** * For bruk når man formaterer med date-fns (ikke moment) */ -export const NORSK_DATO_FORMAT_NY = 'dd.MM.yyyy'; +export const NORSK_DATO_FORMAT = 'dd.MM.yyyy'; -/** - * Formater en dato gitt en formateringsstring. - * - * Bør fases ut til fordel for `formaterDatoNy` - * - * @deprecated - */ -export const formatterDato = (dato: string, format: string = NORSK_DATO_OG_TID_FORMAT) => { - try { - if (dato === '-999999999-01-01') return ''; - const formattertDato = moment(dato).format(format); - return !formattertDato.includes('NaN') ? formattertDato : dato; - } catch (e) { - return dato; - } -}; +export const NORSK_DATO_FORMAT_FULL = 'PPP'; /** * Formater en dato gitt en formateringsstring. - * - * Bruker date-fns, og ikke moment. */ -export const formaterDatoNy = (dato: string, formatString: string = NORSK_DATO_OG_TID_FORMAT) => { +export const formaterDato = (dato: string, formatString: string = NORSK_DATO_OG_TID_FORMAT_FULL) => { try { if (dato === '-999999999-01-01') return ''; const formatertDato = format(dato, formatString, { locale: nb }); return !formatertDato.includes('NaN') ? formatertDato : dato; } catch (e) { - return dato; + return 'Ugyldig dato'; } }; /** * Formater en (tilskudds)periode gitt en formateringsstring. - * - * Bruker date-fns, og ikke moment. */ -export const formaterPeriodeNy = (fra: string, til: string, format: string = NORSK_DATO_FORMAT) => { - return formaterDatoNy(fra, format) + ' – ' + formaterDatoNy(til, format); +export const formaterPeriode = (fra: string, til: string, format: string = NORSK_DATO_FORMAT) => { + return formaterDato(fra, format) + ' – ' + formaterDato(til, format); }; -/** - * Formater en (tilskudds)periode gitt en formateringsstring. - * - * Bør fases ut til fordel for `formaterPeriodeNy`. - * - * @deprecated - */ -export const formatterPeriode = (fra: string, til: string, format: string = NORSK_DATO_FORMAT) => { - return formatterDato(fra, format) + ' – ' + formatterDato(til, format); +export const erDatoTilbakeITid = (dato?: string) => { + const now = new Date(); + return differenceInDays(dato!, now) < 0 && isBefore(dato!, now); }; -export const erDatoTilbakeITid = (dato?: string) => moment(dato).diff(moment(), 'days') < 0; - export const visPeriodeForTiltak = (fra?: string, til?: string): string => { - if (fra && til) return formatterPeriode(fra, til, 'DD.MM.YY'); - if (fra && !til) return formatterDato(fra, 'DD.MM.YY') + ' - sluttdato ikke satt'; - if (!fra && til) return 'startdato ikke satt - ' + formatterDato(til, 'DD.MM.YY'); + if (fra && til) return formaterPeriode(fra, til, 'dd.MM.yy'); + if (fra && !til) return formaterDato(fra, 'dd.MM.yy') + ' - sluttdato ikke satt'; + if (!fra && til) return 'startdato ikke satt - ' + formaterDato(til, 'dd.MM.yy'); return 'ikke satt'; }; -export const formatterDatoHvisDefinert = (dato?: string, format: string = NORSK_DATO_FORMAT) => { - if (!dato) return ''; - const formattertDato = formatterDato(dato, format); - if (formattertDato === 'Invalid date') { +export const formaterDatoHvisDefinert = (dato?: string | null, format: string = NORSK_DATO_FORMAT) => { + if (!dato) return '-'; + const formatertDato = formaterDato(dato, format); + if (formatertDato === 'Ugyldig dato') { return dato; } - return formatterDato(dato, format); + return formatertDato; }; -export const formaterTid = (tidspunkt: string) => { - const antallTimerSiden = moment(moment()).diff(tidspunkt, 'hours'); - if (antallTimerSiden > 12) { - return formatterDato(tidspunkt); - } else { - return moment(tidspunkt).fromNow(); - } +/** + * Eksempler: + * `tidSidenTidspunkt(addDays(new Date(), -5))` => '5 dager' + * `tidSidenTidspunkt(addHours(new Date(), -5))` => '5 timer' + * `tidSidenTidspunkt(addYears(new Date(), -5))` => '5 år' + */ +export const tidSidenTidspunkt = (tidspunkt: string) => { + return formatDistanceToNowStrict(tidspunkt, { locale: nb }); }; diff --git a/src/utils/fnrUtils.ts b/src/utils/fnrUtils.ts index b90cefa9e..a51c5ff8b 100644 --- a/src/utils/fnrUtils.ts +++ b/src/utils/fnrUtils.ts @@ -1,4 +1,4 @@ -import moment from 'moment'; +import { differenceInYears } from 'date-fns'; import { ChangeEvent, Dispatch, SetStateAction } from 'react'; /** Beregner gyldighet av fødselsnr med utgangspunkt i mod11. @@ -117,9 +117,9 @@ export const setFnrBrukerOnChange = ( } }; export const erUnder18 = (fnr: string): boolean => { - const idag = moment(); - const bursdagDatoMoment = moment(genererFnrdatostringFraFnr(fnr).isoDatostring); - return idag.diff(bursdagDatoMoment, 'years') < 18; + const idag = new Date(); + const bursdagDato = new Date(genererFnrdatostringFraFnr(fnr).isoDatostring); + return differenceInYears(idag, bursdagDato) < 18; }; export { genererFnrdatostringFraFnr, validerFnr };