1
1
import React from 'react' ;
2
2
3
- import { useIntl } from 'react-intl' ;
4
3
import styled from 'styled-components' ;
5
4
6
5
import { Checkbox , Heading } from '@navikt/ds-react' ;
7
6
8
7
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' ;
10
15
import { Dokumentasjonsbehov } from '../../../typer/kontrakt/dokumentasjon' ;
11
16
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' ;
14
20
15
21
import Filopplaster from './filopplaster/Filopplaster' ;
16
22
@@ -29,30 +35,18 @@ const Container = styled.div`
29
35
` ;
30
36
31
37
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 ;
34
40
const settHarSendtInnTidligere = ( event : React . ChangeEvent < HTMLInputElement > ) => {
35
41
const huketAv = event . target . checked ;
36
42
const vedlegg = huketAv ? [ ] : dokumentasjon . opplastedeVedlegg ;
37
43
oppdaterDokumentasjon ( dokumentasjon . dokumentasjonsbehov , vedlegg , huketAv ) ;
38
44
} ;
39
45
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 ) ) ;
56
50
57
51
const antallVedlegg = ( ) => {
58
52
const dokSomKrevesForBarn = søknad . dokumentasjon . filter ( dok => dok . gjelderForBarnId . length ) ;
@@ -81,9 +75,10 @@ const LastOppVedlegg: React.FC<Props> = ({ dokumentasjon, vedleggNr, oppdaterDok
81
75
return antallVedlegg ;
82
76
} ;
83
77
84
- const dokTittel = (
85
- < SpråkTekst id = { dokumentasjon . tittelSpråkId } values = { { barn : formatertListeMedBarn ( ) } } />
86
- ) ;
78
+ const tittelBlock =
79
+ dokumentasjonstekster [
80
+ dokumentasjonsbehovTilTittelSanityApiNavn ( dokumentasjon . dokumentasjonsbehov )
81
+ ] ;
87
82
88
83
const skalViseDokumentasjonsBeskrivelse = ( ) => {
89
84
return (
@@ -93,61 +88,58 @@ const LastOppVedlegg: React.FC<Props> = ({ dokumentasjon, vedleggNr, oppdaterDok
93
88
) ;
94
89
} ;
95
90
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
+
96
106
return (
97
107
< Container >
98
108
< 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
-
109
- </ >
110
- ) }
111
- { dokTittel }
109
+ { vedleggtittel }
112
110
</ 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
+ />
129
118
) }
130
119
{ ! 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 >
140
131
) }
141
132
< br />
142
133
{ dokumentasjon . dokumentasjonsbehov !== Dokumentasjonsbehov . ANNEN_DOKUMENTASJON && (
143
134
< 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 } ) } )`}
147
139
checked = { dokumentasjon . harSendtInn }
148
140
onChange = { settHarSendtInnTidligere }
149
141
>
150
- < SpråkTekst id = { 'dokumentasjon.har-sendt-inn.spm' } />
142
+ { plainTekst ( dokumentasjonstekster . sendtInnTidligere ) }
151
143
</ Checkbox >
152
144
) }
153
145
</ Container >
0 commit comments