diff --git a/packages/behandling-omsorgspenger/src/panelDefinisjoner/faktaPaneler/VurderNyoppstartetFaktaPanelDef.tsx b/packages/behandling-omsorgspenger/src/panelDefinisjoner/faktaPaneler/VurderNyoppstartetFaktaPanelDef.tsx index 3937cffc5c..626a2f75bb 100644 --- a/packages/behandling-omsorgspenger/src/panelDefinisjoner/faktaPaneler/VurderNyoppstartetFaktaPanelDef.tsx +++ b/packages/behandling-omsorgspenger/src/panelDefinisjoner/faktaPaneler/VurderNyoppstartetFaktaPanelDef.tsx @@ -1,6 +1,6 @@ import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import { FaktaPanelDef } from '@k9-sak-web/behandling-felles'; -import { VurderNyoppstartet } from '@k9-sak-web/gui/fakta/vurder-nyoppstartet/VurderNyoppstartet.js'; +import { VurderNyoppstartetIndex } from '@k9-sak-web/gui/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex.js'; import { faktaPanelCodes } from '@k9-sak-web/konstanter'; import { konverterKodeverkTilKode } from '@k9-sak-web/lib/kodeverk/konverterKodeverkTilKode.js'; @@ -16,7 +16,7 @@ class VurderNyoppstartetFaktaPanelDef extends FaktaPanelDef { getKomponent = props => { const deepCopyProps = JSON.parse(JSON.stringify(props)); konverterKodeverkTilKode(deepCopyProps, false); - return ; + return ; }; } diff --git a/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartet.stories.tsx b/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartet.stories.tsx deleted file mode 100644 index 8cd3d8ccb9..0000000000 --- a/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartet.stories.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react'; -import { expect, fn, userEvent, waitFor } from '@storybook/test'; -import { VurderNyoppstartet } from './VurderNyoppstartet'; - -const meta: Meta = { - title: 'gui/prosess/vurder-nyoppstartet/VurderNyoppstartet', - component: VurderNyoppstartet, -}; - -export default meta; - -type Story = StoryObj; - -export const Default: Story = { - args: { - submitCallback: fn(), - harApneAksjonspunkter: true, - aksjonspunkter: [], - }, - play: async ({ canvas, args, step }) => { - step('Skal sende inn nyoppstartet dato', async () => { - await userEvent.click(canvas.getByLabelText('Ja')); - await userEvent.type(canvas.getByLabelText('Dato for nyoppstartet'), '2023-01-01'); - await userEvent.type(canvas.getByLabelText('Begrunnelse'), 'Dette er en begrunnelse'); - await userEvent.click(canvas.getByText('Bekreft')); - await waitFor(() => expect(args.submitCallback).toHaveBeenCalledTimes(1)); - expect(args.submitCallback).toHaveBeenCalledWith({ - begrunnelse: 'Dette er en begrunnelse', - erNyoppstartet: true, - kode: '9016', - nyoppstartetFom: '2023-01-01', - fortsettBehandling: true, - }); - }); - }, - render: props => , -}; diff --git a/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartet.tsx b/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartet.tsx index f745715acc..9b215f2b9f 100644 --- a/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartet.tsx +++ b/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartet.tsx @@ -1,4 +1,3 @@ -import type { AksjonspunktDto } from '@k9-sak-web/backend/k9sak/generated'; import AksjonspunktCodes from '@k9-sak-web/lib/kodeverk/types/AksjonspunktCodes.js'; import { Alert, Box, Button, Heading, HStack, VStack } from '@navikt/ds-react'; import { Datepicker, Form, RadioGroupPanel, TextAreaField } from '@navikt/ft-form-hooks'; @@ -6,36 +5,32 @@ import { hasValidDate, minLength, required } from '@navikt/ft-form-validators'; import { useForm, useWatch } from 'react-hook-form'; interface FormValues { - begrunnelse: string; - erNyoppstartet: boolean; - fom: string; + begrunnelse: string | null; + erNyoppstartet: boolean | null; + fom: string | null; } -interface SubmitValues extends FormValues { +export interface SubmitValues { kode: string; - fortsettBehandling: boolean; + begrunnelse: string | null; + avklarNyoppstartet: { fom: string | null; erNyoppstartet: boolean }; } interface VurderNyoppstartetProps { submitCallback: (data: SubmitValues[]) => void; harApneAksjonspunkter: boolean; readOnly: boolean; - aksjonspunkter: AksjonspunktDto[]; + formDefaultValues: FormValues; } export const VurderNyoppstartet = ({ submitCallback, harApneAksjonspunkter, readOnly, - aksjonspunkter, + formDefaultValues, }: VurderNyoppstartetProps) => { - const aksjonspunkt = aksjonspunkter.find(ap => ap.definisjon === AksjonspunktCodes.VURDER_NYOPPSTARTET); const formMethods = useForm({ - defaultValues: { - begrunnelse: aksjonspunkt?.begrunnelse || undefined, - erNyoppstartet: undefined, - fom: undefined, - }, + defaultValues: formDefaultValues, }); const erNyoppstartet = useWatch({ control: formMethods.control, name: 'erNyoppstartet' }); @@ -43,10 +38,12 @@ export const VurderNyoppstartet = ({ const onSubmit = (values: FormValues) => { submitCallback([ { - ...values, - fom: values.erNyoppstartet ? values.fom : '', + begrunnelse: values.begrunnelse, kode: AksjonspunktCodes.VURDER_NYOPPSTARTET, - fortsettBehandling: true, // skal mest sannsynlig bort + avklarNyoppstartet: { + fom: values.erNyoppstartet ? values.fom : null, + erNyoppstartet: !!values.erNyoppstartet, + }, }, ]); }; diff --git a/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex.stories.tsx b/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex.stories.tsx new file mode 100644 index 0000000000..fe3f910d63 --- /dev/null +++ b/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex.stories.tsx @@ -0,0 +1,51 @@ +import type { Meta, StoryObj } from '@storybook/react'; +import { expect, fn, userEvent, waitFor } from '@storybook/test'; +import { http, HttpResponse } from 'msw'; +import { VurderNyoppstartetIndex } from './VurderNyoppstartetIndex'; + +const meta: Meta = { + title: 'gui/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex', + component: VurderNyoppstartetIndex, +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + submitCallback: fn(), + harApneAksjonspunkter: true, + aksjonspunkter: [], + }, + parameters: { + msw: { + handlers: [ + http.get('/k9/sak/api/behandling/nyoppstartet', async () => { + return HttpResponse.json({}, { status: 200 }); + }), + ], + }, + }, + play: async ({ canvas, args, step }) => { + step('Skal sende inn nyoppstartet dato', async () => { + await waitFor(() => expect(canvas.getByText('Ja')).toBeInTheDocument()); + await userEvent.click(canvas.getByLabelText('Ja')); + await userEvent.type(canvas.getByLabelText('Dato for nyoppstartet'), '2023-01-01'); + await userEvent.type(canvas.getByLabelText('Begrunnelse'), 'Dette er en begrunnelse'); + await userEvent.click(canvas.getByText('Bekreft')); + await waitFor(() => expect(args.submitCallback).toHaveBeenCalledTimes(1)); + expect(args.submitCallback).toHaveBeenCalledWith([ + { + begrunnelse: 'Dette er en begrunnelse', + kode: '9016', + avklarNyoppstartet: { + erNyoppstartet: true, + fom: '2023-01-01', + }, + }, + ]); + }); + }, + render: props => , +}; diff --git a/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex.tsx b/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex.tsx new file mode 100644 index 0000000000..76419a6b57 --- /dev/null +++ b/packages/v2/gui/src/fakta/vurder-nyoppstartet/VurderNyoppstartetIndex.tsx @@ -0,0 +1,63 @@ +import AksjonspunktCodes from '@k9-sak-web/lib/kodeverk/types/AksjonspunktCodes.js'; +import { Loader } from '@navikt/ds-react'; +import type { AksjonspunktDto } from '@navikt/k9-sak-typescript-client'; +import { useQuery } from '@tanstack/react-query'; +import axios from 'axios'; +import NetworkErrorPage from '../../sak/feilmeldinger/NetworkErrorPage.js'; +import { type SubmitValues, VurderNyoppstartet } from './VurderNyoppstartet.js'; + +interface VurderNyoppstartetIndexProps { + behandlingUUID: string; + submitCallback: (data: SubmitValues[]) => void; + harApneAksjonspunkter: boolean; + readOnly: boolean; + aksjonspunkter: AksjonspunktDto[]; +} + +interface NyoppstartetData { + erNyoppstartet: boolean | null; + fom: string | null; +} + +export const VurderNyoppstartetIndex = ({ + behandlingUUID, + submitCallback, + harApneAksjonspunkter, + readOnly, + aksjonspunkter, +}: VurderNyoppstartetIndexProps) => { + const aksjonspunkt = aksjonspunkter.find(ap => ap.definisjon === AksjonspunktCodes.VURDER_NYOPPSTARTET); + + const { + data: nyoppstartetData, + isFetching, + isError, + } = useQuery({ + queryKey: ['nyoppstartet', behandlingUUID], + queryFn: () => + axios + .get('/k9/sak/api/behandling/nyoppstartet', { params: { behandlingUuid: behandlingUUID } }) + .then(({ data }) => data), + }); + + const formDefaultValues = { + begrunnelse: aksjonspunkt?.begrunnelse ?? null, + erNyoppstartet: nyoppstartetData?.erNyoppstartet ?? null, + fom: nyoppstartetData?.fom ?? null, + }; + + if (isFetching) { + return ; + } + if (isError) { + return ; + } + return ( + + ); +};