Skip to content

Commit a75848f

Browse files
Bytter vedleggstekster til å ta i bruk Sanity (#1345)
* Legger til VedleggOppsummering komponent * Endrer props og hvordan vedlegg skal vises i VedleggOppsummering * Legger til VedleggOppsummering i steg * Bytter fra bruk av VedleggNotis til VedleggOppsummering * Legger til tekster for VedleggOppsummering * Fjerner duMaaLeggeVed og lastOppSenere * Legger til 'lastOppSenereISoknad' tekst i VedleggOppsummering * Fjerner vedleggnotis som prop for PeriodeOppsummering * Fjerner toggle for NYE_VEDLEGGSTEKSTER * Legger til flettefeltVerider på VedleggOppsummering * Bytter Informasjonsbolk til å være self-closing ettersom den ikke lengre har children * Rettskriver Verider til Verdier * Bytter VedleggOppsummering til å ta i bruk Sanity tekster * Legger til støtte for å hente tekster fra Sanity for vedlegg * Fjerner flettefeltVerider for barnetsNavn * Fikser LastOppVedlegg tester * Legger til tilRestLocaleRecord i useAppMock * Fikser feil i konverteringTillSøknadnKontrakt.test.ts ved å fjerne expect output fra testene ettersom tekster nå hentes fra Sanity * Fjerner utkommenterte tekstsammenligninger
1 parent f12008a commit a75848f

File tree

17 files changed

+245
-205
lines changed

17 files changed

+245
-205
lines changed

src/frontend/components/Felleskomponenter/VedleggOppsummering.tsx

+9-7
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,10 @@ import React, { FC } from 'react';
33
import { Alert, List } from '@navikt/ds-react';
44

55
import { useApp } from '../../context/AppContext';
6-
import { dokumentasjonsbehovTilSpråkId } from '../../typer/dokumentasjon';
6+
import { dokumentasjonsbehovTilTittelSanityApiNavn } from '../../typer/dokumentasjon';
77
import { Dokumentasjonsbehov } from '../../typer/kontrakt/dokumentasjon';
88
import { FlettefeltVerdier } from '../../typer/sanity/sanity';
99

10-
import SpråkTekst from './SpråkTekst/SpråkTekst';
11-
1210
interface IVedleggOppsummeringProps {
1311
vedlegg: {
1412
skalVises: boolean;
@@ -32,10 +30,14 @@ export const VedleggOppsummering: FC<IVedleggOppsummeringProps> = ({ vedlegg })
3230
<List>
3331
{vedleggSomSkalVises.map((vedlegg, index) => (
3432
<List.Item key={index}>
35-
<SpråkTekst
36-
id={dokumentasjonsbehovTilSpråkId(vedlegg.dokumentasjonsbehov)}
37-
values={{ barn: vedlegg.flettefeltVerdier?.barnetsNavn }}
38-
/>
33+
{plainTekst(
34+
dokumentasjonTekster[
35+
dokumentasjonsbehovTilTittelSanityApiNavn(
36+
vedlegg.dokumentasjonsbehov
37+
)
38+
],
39+
vedlegg.flettefeltVerdier
40+
)}
3941
</List.Item>
4042
))}
4143
</List>

src/frontend/components/SøknadsSteg/Dokumentasjon/LastOppVedlegg.test.tsx

+8-20
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ const hentAnnenDokumentasjon = (): IDokumentasjon => {
2525
return dokumentasjon;
2626
};
2727

28-
// Fra initialState generator
29-
const tittelSpråkId = 'dokumentasjon.annendokumentasjon.vedleggtittel';
30-
const beskrivelseSpråkId = 'dokumentasjon.annendokumentasjon.utvidet.informasjon';
31-
3228
describe('LastOppVedlegg', () => {
3329
beforeEach(() => {
3430
silenceConsoleErrors();
@@ -41,7 +37,7 @@ describe('LastOppVedlegg', () => {
4137
const dokumentasjon = hentAnnenDokumentasjon();
4238
const oppdaterDokumentasjon = jest.fn();
4339

44-
const { getByText, queryByText } = render(
40+
const { getByTestId, queryByTestId } = render(
4541
<TestProvidere>
4642
<LastOppVedlegg
4743
dokumentasjon={dokumentasjon}
@@ -51,12 +47,9 @@ describe('LastOppVedlegg', () => {
5147
</TestProvidere>
5248
);
5349

54-
const tittel = getByText(tittelSpråkId);
55-
expect(tittel).toBeInTheDocument();
56-
const infoTekst: HTMLElement | null = queryByText(beskrivelseSpråkId);
57-
expect(infoTekst).toBeNull();
58-
const checkBoxTitle: HTMLElement | null = queryByText('dokumentasjon.har-sendt-inn.spm');
59-
expect(checkBoxTitle).toBeNull();
50+
expect(queryByTestId('dokumentasjon-er-sendt-inn-checkboks')).not.toBeInTheDocument();
51+
expect(queryByTestId('dokumentasjonsbeskrivelse')).not.toBeInTheDocument();
52+
expect(getByTestId('dokumentopplaster')).toBeInTheDocument();
6053
});
6154

6255
it('Viser info-tekst og checkbox knapp for ANNEN_DOKUMENTASJON når utvidet og skilt', () => {
@@ -76,7 +69,7 @@ describe('LastOppVedlegg', () => {
7669
const dokumentasjon = hentAnnenDokumentasjon();
7770
const oppdaterDokumentasjon = jest.fn();
7871

79-
const { getByText, queryByText } = render(
72+
const { getByTestId, queryByTestId } = render(
8073
<TestProvidere>
8174
<LastOppVedlegg
8275
dokumentasjon={dokumentasjon}
@@ -86,14 +79,9 @@ describe('LastOppVedlegg', () => {
8679
</TestProvidere>
8780
);
8881

89-
const tittel = getByText(tittelSpråkId);
90-
expect(tittel).toBeInTheDocument();
91-
const infoTekst: HTMLElement | null = queryByText(beskrivelseSpråkId);
92-
expect(infoTekst).not.toBeNull();
93-
const checkBoxTitle: HTMLElement | null = queryByText(
94-
'dokumentasjon.har-sendt-inn.spm'
95-
);
96-
expect(checkBoxTitle).toBeNull();
82+
expect(queryByTestId('dokumentasjon-er-sendt-inn-checkboks')).not.toBeInTheDocument();
83+
expect(queryByTestId('dokumentasjonsbeskrivelse')).not.toBeInTheDocument();
84+
expect(getByTestId('dokumentopplaster')).toBeInTheDocument();
9785
});
9886
});
9987
});

src/frontend/components/SøknadsSteg/Dokumentasjon/LastOppVedlegg.tsx

+59-67
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
import React from 'react';
22

3-
import { useIntl } from 'react-intl';
43
import styled from 'styled-components';
54

65
import { Checkbox, Heading } from '@navikt/ds-react';
76

87
import { useApp } from '../../../context/AppContext';
9-
import { EFiltyper, IDokumentasjon, IVedlegg } from '../../../typer/dokumentasjon';
8+
import {
9+
dokumentasjonsbehovTilBeskrivelseSanityApiNavn,
10+
dokumentasjonsbehovTilTittelSanityApiNavn,
11+
EFiltyper,
12+
IDokumentasjon,
13+
IVedlegg,
14+
} from '../../../typer/dokumentasjon';
1015
import { Dokumentasjonsbehov } from '../../../typer/kontrakt/dokumentasjon';
1116
import { ESivilstand, ESøknadstype } from '../../../typer/kontrakt/generelle';
12-
import EksternLenke from '../../Felleskomponenter/EksternLenke/EksternLenke';
13-
import SpråkTekst from '../../Felleskomponenter/SpråkTekst/SpråkTekst';
17+
import { Typografi } from '../../../typer/sanity/sanity';
18+
import { slåSammen } from '../../../utils/slåSammen';
19+
import TekstBlock from '../../Felleskomponenter/Sanity/TekstBlock';
1420

1521
import Filopplaster from './filopplaster/Filopplaster';
1622

@@ -29,30 +35,18 @@ const Container = styled.div`
2935
`;
3036

3137
const LastOppVedlegg: React.FC<Props> = ({ dokumentasjon, vedleggNr, oppdaterDokumentasjon }) => {
32-
const { søknad } = useApp();
33-
const intl = useIntl();
38+
const { søknad, tekster, plainTekst } = useApp();
39+
const dokumentasjonstekster = tekster().DOKUMENTASJON;
3440
const settHarSendtInnTidligere = (event: React.ChangeEvent<HTMLInputElement>) => {
3541
const huketAv = event.target.checked;
3642
const vedlegg = huketAv ? [] : dokumentasjon.opplastedeVedlegg;
3743
oppdaterDokumentasjon(dokumentasjon.dokumentasjonsbehov, vedlegg, huketAv);
3844
};
3945

40-
const formatertListeMedBarn = () => {
41-
const barnDokGjelderFor = søknad.barnInkludertISøknaden.filter(barn =>
42-
dokumentasjon.gjelderForBarnId.find(id => id === barn.id)
43-
);
44-
45-
return barnDokGjelderFor.map((barn, index) => {
46-
const visningsNavn = barn.navn;
47-
if (index === 0) {
48-
return visningsNavn;
49-
} else {
50-
return index === barnDokGjelderFor.length - 1
51-
? ` ${intl.formatMessage({ id: 'felles.og' })} ${visningsNavn}`
52-
: `, ${visningsNavn}`;
53-
}
54-
});
55-
};
46+
const barnDokGjelderFor = søknad.barnInkludertISøknaden.filter(barn =>
47+
dokumentasjon.gjelderForBarnId.find(id => id === barn.id)
48+
);
49+
const barnasNavn = slåSammen(barnDokGjelderFor.map(barn => barn.navn));
5650

5751
const antallVedlegg = () => {
5852
const dokSomKrevesForBarn = søknad.dokumentasjon.filter(dok => dok.gjelderForBarnId.length);
@@ -81,9 +75,10 @@ const LastOppVedlegg: React.FC<Props> = ({ dokumentasjon, vedleggNr, oppdaterDok
8175
return antallVedlegg;
8276
};
8377

84-
const dokTittel = (
85-
<SpråkTekst id={dokumentasjon.tittelSpråkId} values={{ barn: formatertListeMedBarn() }} />
86-
);
78+
const tittelBlock =
79+
dokumentasjonstekster[
80+
dokumentasjonsbehovTilTittelSanityApiNavn(dokumentasjon.dokumentasjonsbehov)
81+
];
8782

8883
const skalViseDokumentasjonsBeskrivelse = () => {
8984
return (
@@ -93,61 +88,58 @@ const LastOppVedlegg: React.FC<Props> = ({ dokumentasjon, vedleggNr, oppdaterDok
9388
);
9489
};
9590

91+
const dokumentasjonsbeskrivelse = dokumentasjonsbehovTilBeskrivelseSanityApiNavn(
92+
dokumentasjon.dokumentasjonsbehov
93+
);
94+
95+
const vedleggXAvY = plainTekst(dokumentasjonstekster.vedleggXavY, {
96+
antall: vedleggNr.toString(),
97+
totalAntall: antallVedlegg().toString(),
98+
});
99+
const vedleggtittel =
100+
(dokumentasjon.dokumentasjonsbehov !== Dokumentasjonsbehov.ANNEN_DOKUMENTASJON
101+
? vedleggXAvY
102+
: '') +
103+
' ' +
104+
plainTekst(tittelBlock, { barnetsNavn: barnasNavn });
105+
96106
return (
97107
<Container>
98108
<Heading level={'3'} size={'small'}>
99-
{dokumentasjon.dokumentasjonsbehov !== Dokumentasjonsbehov.ANNEN_DOKUMENTASJON && (
100-
<>
101-
<SpråkTekst
102-
id={'dokumentasjon.vedleggsnummer'}
103-
values={{
104-
vedleggsnummer: vedleggNr,
105-
antallvedlegg: antallVedlegg(),
106-
}}
107-
/>
108-
&nbsp;
109-
</>
110-
)}
111-
{dokTittel}
109+
{vedleggtittel}
112110
</Heading>
113-
{dokumentasjon.beskrivelseSpråkId && skalViseDokumentasjonsBeskrivelse() && (
114-
<>
115-
<SpråkTekst
116-
id={dokumentasjon.beskrivelseSpråkId}
117-
values={{
118-
barn: formatertListeMedBarn(),
119-
meklingsattestLenke: (
120-
<EksternLenke
121-
lenkeSpråkId={'dokumentasjon.meklingsattest.lenke'}
122-
lenkeTekstSpråkId={'dokumentasjon.meklingsattest.lenketekst'}
123-
target="_blank"
124-
/>
125-
),
126-
}}
127-
/>
128-
</>
111+
{dokumentasjonsbeskrivelse && skalViseDokumentasjonsBeskrivelse() && (
112+
<TekstBlock
113+
data-testid={'dokumentasjonsbeskrivelse'}
114+
block={dokumentasjonstekster[dokumentasjonsbeskrivelse]}
115+
flettefelter={{ barnetsNavn: barnasNavn }}
116+
typografi={Typografi.BodyLong}
117+
/>
129118
)}
130119
{!dokumentasjon.harSendtInn && (
131-
<Filopplaster
132-
oppdaterDokumentasjon={oppdaterDokumentasjon}
133-
dokumentasjon={dokumentasjon}
134-
maxFilstørrelse={1024 * 1024 * 10}
135-
tillatteFiltyper={{
136-
'image/*': [EFiltyper.PNG, EFiltyper.JPG, EFiltyper.JPEG],
137-
'application/pdf': [EFiltyper.PDF],
138-
}}
139-
/>
120+
<div data-testid={'dokumentopplaster'}>
121+
<Filopplaster
122+
oppdaterDokumentasjon={oppdaterDokumentasjon}
123+
dokumentasjon={dokumentasjon}
124+
maxFilstørrelse={1024 * 1024 * 10}
125+
tillatteFiltyper={{
126+
'image/*': [EFiltyper.PNG, EFiltyper.JPG, EFiltyper.JPEG],
127+
'application/pdf': [EFiltyper.PDF],
128+
}}
129+
/>
130+
</div>
140131
)}
141132
<br />
142133
{dokumentasjon.dokumentasjonsbehov !== Dokumentasjonsbehov.ANNEN_DOKUMENTASJON && (
143134
<Checkbox
144-
aria-label={`${intl.formatMessage({
145-
id: 'dokumentasjon.har-sendt-inn.spm',
146-
})} (${dokTittel})`}
135+
data-testid={'dokumentasjon-er-sendt-inn-checkboks'}
136+
aria-label={`${plainTekst(
137+
dokumentasjonstekster.sendtInnTidligere
138+
)} (${plainTekst(tittelBlock, { barnetsNavn: barnasNavn })})`}
147139
checked={dokumentasjon.harSendtInn}
148140
onChange={settHarSendtInnTidligere}
149141
>
150-
<SpråkTekst id={'dokumentasjon.har-sendt-inn.spm'} />
142+
{plainTekst(dokumentasjonstekster.sendtInnTidligere)}
151143
</Checkbox>
152144
)}
153145
</Container>

src/frontend/components/SøknadsSteg/Dokumentasjon/innholdTyper.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
1-
import { BeskrivelseSanityApiNavn } from '../../../typer/dokumentasjon';
1+
import { BeskrivelseSanityApiNavn, TittelSanityApiNavn } from '../../../typer/dokumentasjon';
22
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';
33

44
export type IDokumentasjonTekstinnhold = {
55
dokumentasjonTittel: LocaleRecordBlock;
66
dokumentasjonGuide: LocaleRecordBlock;
7+
sendtInnTidligere: LocaleRecordBlock;
8+
vedleggXavY: LocaleRecordBlock;
9+
} & {
10+
[TittelSanityApiNavn.bekreftelsePaaAdopsjonTittel]: LocaleRecordBlock;
11+
[TittelSanityApiNavn.annenDokumentasjon]: LocaleRecordBlock;
12+
[TittelSanityApiNavn.avtaleOmDeltBostedTittel]: LocaleRecordBlock;
13+
[TittelSanityApiNavn.bekreftelseFraBarnevernetTittel]: LocaleRecordBlock;
14+
[TittelSanityApiNavn.bekreftelsePaaAtBarnBorSammenMedDegTittel]: LocaleRecordBlock;
15+
[TittelSanityApiNavn.meklingsattestTittel]: LocaleRecordBlock;
16+
[TittelSanityApiNavn.dokumentasjonPaaSeparasjonSkilsmisseEllerDoedsfallTittel]: LocaleRecordBlock;
17+
[TittelSanityApiNavn.vedtakOmOppholdstillatelseTittel]: LocaleRecordBlock;
718
} & {
819
[BeskrivelseSanityApiNavn.dokumentasjonPaaSeparasjonSkilsmisseEllerDoedsfall]: LocaleRecordBlock;
920
[BeskrivelseSanityApiNavn.vedtakOmOppholdstillatelse]: LocaleRecordBlock;

src/frontend/components/SøknadsSteg/OmBarnet/OmBarnet.tsx

-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,6 @@ const OmBarnet: React.FC<{ barnetsId: BarnetsId }> = ({ barnetsId }) => {
196196
{
197197
skalVises: skjema.felter.skriftligAvtaleOmDeltBosted.verdi === ESvar.JA,
198198
dokumentasjonsbehov: Dokumentasjonsbehov.AVTALE_DELT_BOSTED,
199-
flettefeltVerdier: { barnetsNavn: barn.navn },
200199
},
201200
{
202201
skalVises: skjema.felter.borMedAndreForelderCheckbox.erSynlig,

src/frontend/context/AppContext.ts

+2-7
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,12 @@ import Miljø, { basePath } from '../../shared-utils/Miljø';
1717
import { DinLivssituasjonSpørsmålId } from '../components/SøknadsSteg/DinLivssituasjon/spørsmål';
1818
import { LocaleType } from '../typer/common';
1919
import { IKontoinformasjon } from '../typer/kontoinformasjon';
20-
import { ESivilstand, ESøknadstype } from '../typer/kontrakt/generelle';
20+
import { ESivilstand, ESøknadstype, TilRestLocaleRecord } from '../typer/kontrakt/generelle';
2121
import { IKvittering } from '../typer/kvittering';
2222
import { IMellomlagretBarnetrygd } from '../typer/mellomlager';
2323
import { ISøkerRespons } from '../typer/person';
2424
import { RouteEnum } from '../typer/routes';
25-
import {
26-
ESanityFlettefeltverdi,
27-
ESanitySteg,
28-
FlettefeltVerdier,
29-
TilRestLocaleRecord,
30-
} from '../typer/sanity/sanity';
25+
import { ESanityFlettefeltverdi, ESanitySteg, FlettefeltVerdier } from '../typer/sanity/sanity';
3126
import { ITekstinnhold } from '../typer/sanity/tekstInnhold';
3227
import { initialStateSøknad, ISøknad } from '../typer/søknad';
3328
import { InnloggetStatus } from '../utils/autentisering';

src/frontend/hooks/useSendInnSkjema.tsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,16 @@ import { sendInn } from '../utils/sendInnSkjema';
1414
export const useSendInnSkjema = (): {
1515
sendInnSkjema: () => Promise<[boolean, ISøknadKontrakt]>;
1616
} => {
17-
const { axiosRequest, søknad, settInnsendingStatus, settSisteModellVersjon } = useApp();
17+
const {
18+
axiosRequest,
19+
søknad,
20+
settInnsendingStatus,
21+
settSisteModellVersjon,
22+
tekster,
23+
tilRestLocaleRecord,
24+
} = useApp();
1825
const { soknadApiProxyUrl } = Miljø();
1926
const { valgtLocale } = useSpråk();
20-
const { tekster, tilRestLocaleRecord } = useApp();
2127
const { toggles } = useFeatureToggles();
2228

2329
const sendInnSkjema = async (): Promise<[boolean, ISøknadKontrakt]> => {

0 commit comments

Comments
 (0)