diff --git "a/src/frontend/App/hooks/useHentGjenbrukbareVilk\303\245rsvurderinger.ts" "b/src/frontend/App/hooks/useHentGjenbrukbareVilk\303\245rsvurderinger.ts" new file mode 100644 index 000000000..cc301f983 --- /dev/null +++ "b/src/frontend/App/hooks/useHentGjenbrukbareVilk\303\245rsvurderinger.ts" @@ -0,0 +1,37 @@ +import { useCallback, useState } from 'react'; +import { RessursStatus } from '../typer/ressurs'; +import { useApp } from '../context/AppContext'; + +interface Props { + gjenbrukbareVilkårsvurderinger: string[]; + hentAlleGjenbrukbareVilkårsvurderinger: (behandlingId: string) => void; +} + +export const useHentGjenbrukbareVilkårsvurderinger = (): Props => { + const [gjenbrukbareVilkårsvurderinger, settGjenbrukbareVilkårsvurderinger] = useState( + [] + ); + + const { axiosRequest } = useApp(); + + const hentAlleGjenbrukbareVilkårsvurderinger = useCallback( + (behandlingId: string): void => { + axiosRequest({ + method: 'GET', + url: `/familie-ef-sak/api/vurdering/${behandlingId}/gjenbrukbare-vilkar`, + }).then((respons) => { + if (respons.status === RessursStatus.SUKSESS) { + settGjenbrukbareVilkårsvurderinger(respons.data); + } else { + settGjenbrukbareVilkårsvurderinger([]); + } + }); + }, + [axiosRequest] + ); + + return { + gjenbrukbareVilkårsvurderinger, + hentAlleGjenbrukbareVilkårsvurderinger, + }; +}; diff --git "a/src/frontend/App/hooks/useVilk\303\245r.ts" "b/src/frontend/App/hooks/useVilk\303\245r.ts" index dc400f345..6c15811df 100644 --- "a/src/frontend/App/hooks/useVilk\303\245r.ts" +++ "b/src/frontend/App/hooks/useVilk\303\245r.ts" @@ -1,5 +1,4 @@ import { - byggHenterRessurs, byggTomRessurs, Ressurs, RessursFeilet, @@ -15,7 +14,7 @@ import { SvarPåVilkårsvurdering, Vurderingsfeilmelding, } from '../../Komponenter/Behandling/Inngangsvilkår/vilkår'; -import { EToast } from '../typer/toast'; +import { useHentGjenbrukbareVilkårsvurderinger } from './useHentGjenbrukbareVilkårsvurderinger'; const oppdaterInngangsvilkårMedVurdering = ( vilkår: RessursSuksess, @@ -44,11 +43,14 @@ export interface UseVilkår { ikkeVurderVilkår: ( nullstillVilkårsvurdering: OppdaterVilkårsvurdering ) => Promise | RessursFeilet>; - gjenbrukInngangsvilkår: (behandlingId: string, kopierBehandlingId: string) => void; + gjenbrukEnkelVilkårsvurdering: (behandlingId: string, vilkårId: string) => void; + gjenbrukbareVilkårsvurderinger: string[]; } export const useVilkår = (): UseVilkår => { - const { axiosRequest, settToast } = useApp(); + const { axiosRequest } = useApp(); + const { hentAlleGjenbrukbareVilkårsvurderinger, gjenbrukbareVilkårsvurderinger } = + useHentGjenbrukbareVilkårsvurderinger(); const [feilmeldinger, settFeilmeldinger] = useState({}); @@ -133,16 +135,17 @@ export const useVilkår = (): UseVilkår => { }); }; const hentVilkår = useCallback( - (behandlingId: string) => { - axiosRequest({ + async (behandlingId: string) => { + const hentetInngangsvilkår = await axiosRequest({ method: 'GET', url: `/familie-ef-sak/api/vurdering/${behandlingId}/vilkar`, - }).then((hentetInngangsvilkår: RessursSuksess | RessursFeilet) => { - settVilkår(hentetInngangsvilkår); }); + hentAlleGjenbrukbareVilkårsvurderinger(behandlingId); + settVilkår(hentetInngangsvilkår); }, - [axiosRequest] + [axiosRequest, hentAlleGjenbrukbareVilkårsvurderinger] ); + const oppdaterGrunnlagsdataOgHentVilkår = useCallback( (behandlingId: string) => axiosRequest({ @@ -153,21 +156,27 @@ export const useVilkår = (): UseVilkår => { }), [axiosRequest] ); - const gjenbrukInngangsvilkår = useCallback( - (behandlingId: string, kopierBehandlingId: string) => { - settVilkår(byggHenterRessurs()); - axiosRequest({ + + const gjenbrukEnkelVilkårsvurdering = useCallback( + (behandlingId: string, vilkårId: string) => { + axiosRequest({ method: 'POST', - url: `/familie-ef-sak/api/vurdering/gjenbruk`, - data: { behandlingId: behandlingId, kopierBehandlingId: kopierBehandlingId }, - }).then((respons: RessursSuksess | RessursFeilet) => { - settVilkår(respons); + url: `/familie-ef-sak/api/vurdering/gjenbruk-enkelt-vilkar`, + data: { behandlingId: behandlingId, vilkårId: vilkårId }, + }).then((respons: RessursSuksess | RessursFeilet) => { if (respons.status === RessursStatus.SUKSESS) { - settToast(EToast.INNGANGSVILKÅR_GJENBRUKT); + settVilkår((prevInngangsvilkår) => + oppdaterInngangsvilkårMedVurdering( + prevInngangsvilkår as RessursSuksess, + respons.data + ) + ); + } else { + leggTilFeilmelding(vilkårId, respons.frontendFeilmelding); } }); }, - [axiosRequest, settToast] + [axiosRequest] ); return { @@ -178,6 +187,7 @@ export const useVilkår = (): UseVilkår => { nullstillVurdering, ikkeVurderVilkår, oppdaterGrunnlagsdataOgHentVilkår, - gjenbrukInngangsvilkår, + gjenbrukEnkelVilkårsvurdering, + gjenbrukbareVilkårsvurderinger, }; }; diff --git "a/src/frontend/Komponenter/Behandling/Aktivitet/Aktivitetsvilk\303\245rHeader.tsx" "b/src/frontend/Komponenter/Behandling/Aktivitet/Aktivitetsvilk\303\245rHeader.tsx" index ea7e6bc2f..cfa3de2b2 100644 --- "a/src/frontend/Komponenter/Behandling/Aktivitet/Aktivitetsvilk\303\245rHeader.tsx" +++ "b/src/frontend/Komponenter/Behandling/Aktivitet/Aktivitetsvilk\303\245rHeader.tsx" @@ -4,7 +4,7 @@ import { EVilkårstyper, useEkspanderbareVilkårpanelContext, } from '../../../App/context/EkspanderbareVilkårpanelContext'; -import { ÅpneOgLukkePanelKnapper } from '../Inngangsvilkår/InngangsvilkårHeader/ÅpneOgLukkePanelKnapper'; +import { ÅpneOgLukkePanelKnapper } from '../Inngangsvilkår/ÅpneOgLukkePanelKnapper'; const Container = styled.div` margin: 2rem; diff --git "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rFane.tsx" "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rFane.tsx" index f8ef49b3c..a7a73a4a7 100644 --- "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rFane.tsx" +++ "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rFane.tsx" @@ -9,12 +9,12 @@ import { Samliv } from './Samliv/Samliv'; import { Sivilstand } from './Sivilstand/Sivilstand'; import { useBehandling } from '../../../App/context/BehandlingContext'; import { Behandlingsårsak } from '../../../App/typer/behandlingsårsak'; -import { formaterIsoDatoTidMedSekunder } from '../../../App/utils/formatter'; -import { InngangsvilkårHeader } from './InngangsvilkårHeader/InngangsvilkårHeader'; -import { useApp } from '../../../App/context/AppContext'; import { FyllUtVilkårKnapp } from './FyllUtVilkårKnapp'; import VilkårIkkeOpprettetAlert from '../Vurdering/VilkårIkkeOpprettet'; import { Behandling } from '../../../App/typer/fagsak'; +import { useApp } from '../../../App/context/AppContext'; +import { InngangsvilkårHeader } from './InngangsvilkårHeader'; +import { formaterIsoDatoTidMedSekunder } from '../../../App/utils/formatter'; interface Props { behandling: Behandling; @@ -31,7 +31,6 @@ export const InngangsvilkårFane: FC = ({ behandling }) => { nullstillVurdering, ikkeVurderVilkår, oppdaterGrunnlagsdataOgHentVilkår, - gjenbrukInngangsvilkår, } = vilkårState; React.useEffect(() => { @@ -63,7 +62,6 @@ export const InngangsvilkårFane: FC = ({ behandling }) => { behandlingErRedigerbar={behandlingErRedigerbar} oppdaterGrunnlagsdata={oppdaterGrunnlagsdataOgHentVilkår} behandlingId={behandling.id} - gjenbrukInngangsvilkår={gjenbrukInngangsvilkår} /> )} Promise; + behandlingId: string; +} + +export const InngangsvilkårHeader: React.FC = ({ + oppdatertDato, + behandlingErRedigerbar, + oppdaterGrunnlagsdata, + behandlingId, +}) => { + const { lukkAlle, åpneAlle } = useEkspanderbareVilkårpanelContext(); + + return ( + + + + + + <ÅpneOgLukkePanelKnapper + lukkAlle={() => lukkAlle(EVilkårstyper.INNGANGSVILKÅR)} + åpneAlle={() => åpneAlle(EVilkårstyper.INNGANGSVILKÅR)} + /> + + + ); +}; diff --git "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/Inngangsvilk\303\245rHeader.tsx" "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/Inngangsvilk\303\245rHeader.tsx" deleted file mode 100644 index 95747bd9d..000000000 --- "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/Inngangsvilk\303\245rHeader.tsx" +++ /dev/null @@ -1,101 +0,0 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import styled from 'styled-components'; -import { OppdaterOpplysninger } from './OppdaterOpplysninger'; -import { KopierInngangsvilkår } from './KopierInngangsvilkår'; -import { byggTomRessurs, Ressurs } from '../../../../App/typer/ressurs'; -import { Behandling } from '../../../../App/typer/fagsak'; -import DataViewer from '../../../../Felles/DataViewer/DataViewer'; -import { useApp } from '../../../../App/context/AppContext'; -import { ÅpneOgLukkePanelKnapper } from './ÅpneOgLukkePanelKnapper'; -import { - EVilkårstyper, - useEkspanderbareVilkårpanelContext, -} from '../../../../App/context/EkspanderbareVilkårpanelContext'; - -const FlexRow = styled.div` - margin: 2rem; - display: flex; - justify-content: space-between; -`; - -const FlexColumn = styled.div` - display: flex; - flex-direction: column; - gap: 1rem; -`; - -const AlignBottom = styled.div` - align-self: end; -`; - -interface Props { - oppdatertDato: string; - behandlingErRedigerbar: boolean; - oppdaterGrunnlagsdata: (behandlingId: string) => Promise; - behandlingId: string; - gjenbrukInngangsvilkår: (behandlingId: string, kopierBehandlingId: string) => void; -} - -export const InngangsvilkårHeader: React.FC = ({ - oppdatertDato, - behandlingErRedigerbar, - oppdaterGrunnlagsdata, - behandlingId, - gjenbrukInngangsvilkår, -}) => { - const [behandlingerForVilkårsgjenbruk, settbehandlingerForVilkårsgjenbruk] = - useState>(byggTomRessurs()); - const { axiosRequest } = useApp(); - - const { lukkAlle, åpneAlle } = useEkspanderbareVilkårpanelContext(); - - const finnBehandlingForGjenbrukAvVilkår = useCallback( - (behandlingId: string) => { - axiosRequest({ - method: 'GET', - url: `/familie-ef-sak/api/behandling/gjenbruk/${behandlingId}`, - }).then((respons: Ressurs) => { - settbehandlingerForVilkårsgjenbruk(respons); - }); - }, - [axiosRequest] - ); - - useEffect(() => { - finnBehandlingForGjenbrukAvVilkår(behandlingId); - }, [behandlingId, finnBehandlingForGjenbrukAvVilkår]); - - return ( - - - - {behandlingErRedigerbar && ( - - {({ behandlingerForVilkårsgjenbruk }) => - behandlingerForVilkårsgjenbruk.length > 0 ? ( - - ) : ( - <> - ) - } - - )} - - - <ÅpneOgLukkePanelKnapper - lukkAlle={() => lukkAlle(EVilkårstyper.INNGANGSVILKÅR)} - åpneAlle={() => åpneAlle(EVilkårstyper.INNGANGSVILKÅR)} - /> - - - ); -}; diff --git "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/KopierInngangsvilk\303\245r.tsx" "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/KopierInngangsvilk\303\245r.tsx" deleted file mode 100644 index ed000cf79..000000000 --- "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/KopierInngangsvilk\303\245r.tsx" +++ /dev/null @@ -1,155 +0,0 @@ -import React, { useState } from 'react'; -import styled from 'styled-components'; -import { ChevronUpIcon, ChevronDownIcon, ExternalLinkIcon } from '@navikt/aksel-icons'; -import { Alert, BodyLong, Button, Heading, Link } from '@navikt/ds-react'; -import { Behandling, behandlingResultatTilTekst } from '../../../../App/typer/fagsak'; -import { behandlingstypeTilTekst } from '../../../../App/typer/behandlingstype'; -import { formaterIsoDato } from '../../../../App/utils/formatter'; -import { stønadstypeTilTekst } from '../../../../App/typer/behandlingstema'; -import { behandlingStatusTilTekst } from '../../../../App/typer/behandlingstatus'; -import { ModalWrapper } from '../../../../Felles/Modal/ModalWrapper'; -import { ABorderStrong } from '@navikt/ds-tokens/dist/tokens'; - -const Alertstripe = styled(Alert)` - width: fit-content; -`; - -const ForrigeBehandlingTabell = styled.table` - margin-top: 1rem; - margin-bottom: 1rem; - width: 100%; - border-collapse: collapse; - font-size: 1rem; - - td, - th { - border-bottom: 1px solid ${ABorderStrong}; - padding: 0rem 1.5rem 0rem 0rem; - text-align: left; - } -`; - -const ÅpneLukkeKnapp = styled(Button)` - width: fit-content; -`; - -const Gjenbruksknapp = styled(Button)` - display: block; - margin-left: auto; - margin-right: auto; -`; - -interface Props { - behandlinger: Behandling[]; - behandlingId: string; - gjenbrukInngangsvilkår: (behandlingId: string, kopierBehandlingId: string) => void; -} - -export const KopierInngangsvilkår: React.FC = ({ - behandlinger, - behandlingId, - gjenbrukInngangsvilkår, -}) => { - const [visForrigeBehandlinger, settVisForrigeBehandlinger] = useState(false); - const [visModal, settVisModal] = useState(false); - const forrigeBehandling = behandlinger.slice(0, 1); // Dersom vi ønsker at bruker skal kunne velge mellom flere tidligere behandlinger kan denne linjen fjernes - - return ( - - - <ÅpneLukkeKnapp - type={'button'} - variant={'tertiary'} - icon={visForrigeBehandlinger ? : } - iconPosition={'right'} - onClick={() => { - settVisForrigeBehandlinger((prevState) => !prevState); - }} - size={'xsmall'} - > - Gjenbruk vurdering av inngangsvilkår fra forrige behandling? - - - {visForrigeBehandlinger && ( - <> - - - - - Stønadstype - - - Behandlingstype - - - Status - - - Vedtaksdato - - - Vedtaksresultat - - - - - {forrigeBehandling.map((behandling) => { - return ( - - {stønadstypeTilTekst[behandling.stønadstype]} - - - {behandlingstypeTilTekst[behandling.type]} - - - - {behandlingStatusTilTekst[behandling.status]} - - {behandling.vedtaksdato && - formaterIsoDato(behandling.vedtaksdato)} - - {behandlingResultatTilTekst[behandling.resultat]} - - ); - })} - - - settVisModal(true)} - > - Gjenbruk vilkårsvurdering - - settVisModal(false)} - aksjonsknapper={{ - hovedKnapp: { - onClick: () => { - settVisModal(false); - gjenbrukInngangsvilkår(behandlingId, forrigeBehandling[0].id); - }, - tekst: 'Gjenbruk vilkårsvurdering', - }, - lukkKnapp: { - onClick: () => settVisModal(false), - tekst: 'Avbryt', - }, - }} - > - - Er du sikker på at du vil gjenbruke vilkårsvurdering fra tidligere - behandling? Inngangsvilkår du allerede har vurdert i inneværende - behandling vil bli overskrevet. - - - - )} - - ); -}; diff --git "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/OppdaterOpplysninger.tsx" "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/OppdaterOpplysninger.tsx" similarity index 94% rename from "src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/OppdaterOpplysninger.tsx" rename to "src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/OppdaterOpplysninger.tsx" index a09a3c557..5c399ccff 100644 --- "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/OppdaterOpplysninger.tsx" +++ "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/OppdaterOpplysninger.tsx" @@ -2,9 +2,9 @@ import React, { useState } from 'react'; import styled from 'styled-components'; import { ArrowsCirclepathIcon } from '@navikt/aksel-icons'; import { Button, HelpText } from '@navikt/ds-react'; -import { DetailSmall } from '../../../../Felles/Visningskomponenter/Tekster'; +import { DetailSmall } from '../../../Felles/Visningskomponenter/Tekster'; import { ATextSubtle } from '@navikt/ds-tokens/dist/tokens'; -import { useBehandling } from '../../../../App/context/BehandlingContext'; +import { useBehandling } from '../../../App/context/BehandlingContext'; const FlexWrapper = styled.div` display: flex; diff --git "a/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/\303\205pneOgLukkePanelKnapper.tsx" "b/src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/\303\205pneOgLukkePanelKnapper.tsx" similarity index 100% rename from "src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/Inngangsvilk\303\245rHeader/\303\205pneOgLukkePanelKnapper.tsx" rename to "src/frontend/Komponenter/Behandling/Inngangsvilk\303\245r/\303\205pneOgLukkePanelKnapper.tsx" diff --git "a/src/frontend/Komponenter/Behandling/Vurdering/ModalGjenbrukVilk\303\245rsvurdering.tsx" "b/src/frontend/Komponenter/Behandling/Vurdering/ModalGjenbrukVilk\303\245rsvurdering.tsx" new file mode 100644 index 000000000..90649b041 --- /dev/null +++ "b/src/frontend/Komponenter/Behandling/Vurdering/ModalGjenbrukVilk\303\245rsvurdering.tsx" @@ -0,0 +1,44 @@ +import { Button, Modal, BodyLong } from '@navikt/ds-react'; +import React, { FC } from 'react'; + +const ModalGjenbrukVilkårsvurdering: FC<{ + visModal: boolean; + settVisModal: React.Dispatch>; + gjenbrukVilkårsvurdering: () => void; +}> = ({ visModal, settVisModal, gjenbrukVilkårsvurdering }) => { + if (!visModal) { + return null; + } + + return ( + settVisModal(false)} + open={visModal} + aria-labelledby="modal-heading" + header={{ heading: 'Gjenbruk av vilkårsvurdering' }} + > + + + Er du sikker på at du vil gjenbruke vilkårsvurdering fra tidligere behandling? + Inngangsvilkåret vil bli overskrevet. + + + + + + + + ); +}; + +export default ModalGjenbrukVilkårsvurdering; diff --git a/src/frontend/Komponenter/Behandling/Vurdering/VisEllerEndreVurdering.tsx b/src/frontend/Komponenter/Behandling/Vurdering/VisEllerEndreVurdering.tsx index 1e1205547..98fe438f4 100644 --- a/src/frontend/Komponenter/Behandling/Vurdering/VisEllerEndreVurdering.tsx +++ b/src/frontend/Komponenter/Behandling/Vurdering/VisEllerEndreVurdering.tsx @@ -18,6 +18,7 @@ import { useEkspanderbareVilkårpanelContext, } from '../../../App/context/EkspanderbareVilkårpanelContext'; import { ModalState } from '../Modal/NyEierModal'; +import { skalViseGjenbrukKnapp } from './utils'; const KnappWrapper = styled.div` display: flex; @@ -81,7 +82,11 @@ const VisEllerEndreVurdering: FC = ({ hentAnsvarligSaksbehandler, hentBehandling, settNyEierModalState, + vilkårState, } = useBehandling(); + + const { gjenbrukEnkelVilkårsvurdering, gjenbrukbareVilkårsvurderinger } = vilkårState; + const { settPanelITilstand } = useEkspanderbareVilkårpanelContext(); const [redigeringsmodus, settRedigeringsmodus] = useState( utledRedigeringsmodus(feilmelding, vurdering, behandlingErRedigerbar) @@ -109,6 +114,10 @@ const VisEllerEndreVurdering: FC = ({ }); }; + const gjenbrukVilkårsvurdering = () => { + gjenbrukEnkelVilkårsvurdering(vurdering.behandlingId, vurdering.id); + }; + const initiellRedigeringsmodus = vurdering.resultat === Vilkårsresultat.IKKE_TATT_STILLING_TIL ? Redigeringsmodus.IKKE_PÅSTARTET @@ -145,6 +154,15 @@ const VisEllerEndreVurdering: FC = ({ + {skalViseGjenbrukKnapp(vurdering, gjenbrukbareVilkårsvurderinger) && ( + + )} ); case Redigeringsmodus.REDIGERING: @@ -166,6 +184,8 @@ const VisEllerEndreVurdering: FC = ({ feilmelding={feilmelding || resetFeilmelding} behandlingErRedigerbar={behandlingErRedigerbar && erSaksbehandler} tittelTekst={tittelTekstVisVurdering} + gjenbrukVilkårsvurdering={gjenbrukVilkårsvurdering} + gjenbrukbareVilkårsvurderinger={gjenbrukbareVilkårsvurderinger} /> ); } diff --git a/src/frontend/Komponenter/Behandling/Vurdering/VisVurdering.tsx b/src/frontend/Komponenter/Behandling/Vurdering/VisVurdering.tsx index e9ec06d5d..7e14a9efa 100644 --- a/src/frontend/Komponenter/Behandling/Vurdering/VisVurdering.tsx +++ b/src/frontend/Komponenter/Behandling/Vurdering/VisVurdering.tsx @@ -7,7 +7,8 @@ import { IVurdering, resultatTilTekst, Vilkårsresultat } from '../Inngangsvilk import { BreakWordBodyLongSmall } from '../../../Felles/Visningskomponenter/BreakWordBodyLongSmall'; import { formaterIsoDatoTidMedSekunder } from '../../../App/utils/formatter'; import { Button, ErrorMessage, Heading } from '@navikt/ds-react'; -import { TrashIcon, PencilIcon } from '@navikt/aksel-icons'; +import { TrashIcon, PencilIcon, RecycleIcon } from '@navikt/aksel-icons'; + import { SistOppdatertOgVurderingWrapper, TittelOgKnappWrapper, @@ -20,6 +21,8 @@ import { SmallTextLabel, } from '../../../Felles/Visningskomponenter/Tekster'; import { ATextSubtle } from '@navikt/ds-tokens/dist/tokens'; +import ModalGjenbrukVilkårsvurdering from './ModalGjenbrukVilkårsvurdering'; +import { skalViseGjenbrukKnapp } from './utils'; const StyledVilkår = styled.div` grid-column: 2/4; @@ -61,6 +64,8 @@ interface Props { startRedigering: () => void; behandlingErRedigerbar: boolean; tittelTekst?: string; + gjenbrukVilkårsvurdering: () => void; + gjenbrukbareVilkårsvurderinger: string[]; } const VisVurdering: FC = ({ @@ -70,7 +75,10 @@ const VisVurdering: FC = ({ feilmelding, behandlingErRedigerbar, tittelTekst, + gjenbrukVilkårsvurdering, + gjenbrukbareVilkårsvurderinger, }) => { + const [visModal, settVisModal] = React.useState(false); const vilkårsresultat = vurdering.resultat; const sistOppdatert = formaterIsoDatoTidMedSekunder( vurdering.opphavsvilkår?.endretTid || vurdering.endretTid @@ -121,8 +129,19 @@ const VisVurdering: FC = ({ onClick={resetVurdering} size={'small'} > - slett + Slett + {skalViseGjenbrukKnapp(vurdering, gjenbrukbareVilkårsvurderinger) && ( + + )} {feilmelding && ( @@ -135,6 +154,12 @@ const VisVurdering: FC = ({ )} + + {(vilkårsresultat === Vilkårsresultat.OPPFYLT || diff --git a/src/frontend/Komponenter/Behandling/Vurdering/utils.ts b/src/frontend/Komponenter/Behandling/Vurdering/utils.ts index 3c294d9e3..296acba61 100644 --- a/src/frontend/Komponenter/Behandling/Vurdering/utils.ts +++ b/src/frontend/Komponenter/Behandling/Vurdering/utils.ts @@ -7,7 +7,13 @@ import { Regler, Svarsalternativ, } from './typer'; -import { IDelvilkår, Vurdering } from '../Inngangsvilkår/vilkår'; +import { + IDelvilkår, + InngangsvilkårType, + IVurdering, + VilkårType, + Vurdering, +} from '../Inngangsvilkår/vilkår'; import { harIkkeVerdi, harVerdi } from '../../../App/utils/utils'; export const manglerBegrunnelse = (begrunnelse: string | undefined | null): boolean => { @@ -175,3 +181,16 @@ export const kopierBegrunnelse = ( return nyeVurderinger; } }; + +const sjekkErInngangsvilkårType = (vilkårtype: VilkårType): vilkårtype is InngangsvilkårType => { + return Object.values(InngangsvilkårType).includes(vilkårtype as InngangsvilkårType); +}; + +export const skalViseGjenbrukKnapp = ( + vurdering: IVurdering, + gjenbrukbareVilkårsvurderinger: string[] +) => { + const erInngangsvilkårType = sjekkErInngangsvilkårType(vurdering.vilkårType); + const kanGjenbruke = gjenbrukbareVilkårsvurderinger.includes(vurdering.id); + return erInngangsvilkårType && kanGjenbruke; +};