Skip to content

Commit 9633cd4

Browse files
committed
IS-3017: Tydeliggjøre søket
1 parent f627d6b commit 9633cd4

File tree

1 file changed

+82
-29
lines changed

1 file changed

+82
-29
lines changed

src/sider/sokperson/SokPerson.tsx

Lines changed: 82 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import React, { useState } from 'react';
22
import {
33
Alert,
4-
BodyShort,
4+
BodyLong,
55
Box,
66
Button,
77
ErrorMessage,
88
Heading,
9-
HStack,
9+
HelpText,
10+
Label,
1011
TextField,
1112
VStack,
1213
} from '@navikt/ds-react';
@@ -21,7 +22,28 @@ import * as Amplitude from '@/utils/amplitude';
2122
const texts = {
2223
header: 'Søk etter sykmeldt',
2324
info:
24-
'Her kan du søke opp sykmeldte personer basert på initialer og fødselsdato.',
25+
'Her kan du søke opp sykmeldte personer basert på initialer og fødselsdato. ',
26+
label: {
27+
initials: 'Initialer (valgfritt)',
28+
birthdate: 'Fødselsdato (obligatorisk)',
29+
},
30+
helpText: {
31+
info: {
32+
title: 'Hvordan søke etter sykmeldt?',
33+
text:
34+
'Fyll inn fødselsdato for å finne en sykmeldt du har tilgang til, vedkommende må ha et aktivt sykefravær. Ønsker man et mer nøyaktig søk kan man legge til initialer til den sykmeldte, men dette er valgfritt. Det er ikke mulig å bare søke med initialer. ',
35+
},
36+
initials: {
37+
title: 'Hvordan fyller jeg inn initialer?',
38+
text:
39+
'For å optimalisere søket kan du fylle inn initialene til den du vil søke opp. Feltet krever forbokstaven for fornavn og etternavn uten punktum mellom bokstavene. Det er mulig å legge til forbokstavene for mellomnavn for mer nøyaktig søkeresultat. Rekkefølgen på fornavn, mellomnavn og etternavn i søket er viktig.',
40+
},
41+
birthdate: {
42+
title: 'Hvordan fyller jeg inn fødselsdato?',
43+
text:
44+
'Fyll inn fødselsdato for å finne en sykmeldt du har tilgang til, vedkommende må ha et aktivt sykefravær. Ønsker man et mer nøyaktig søk kan man legge til initialer til den sykmeldte, men dette er valgfritt. Det er ikke mulig å bare søke med initialer.',
45+
},
46+
},
2547
validation: {
2648
initials: 'Vennligst angi gyldige initialer',
2749
birthdate: 'Vennligst angi en gyldig fødselsdato',
@@ -55,6 +77,30 @@ function logSokPersonResults(amount: number, requestDTO: SokDTO) {
5577
});
5678
}
5779

80+
function InitialerLabel() {
81+
return (
82+
<div className="flex gap-2">
83+
{texts.label.initials}
84+
<HelpText title={texts.helpText.initials.title}>
85+
<Label>{texts.helpText.initials.title}</Label>
86+
<BodyLong>{texts.helpText.initials.text}</BodyLong>
87+
</HelpText>
88+
</div>
89+
);
90+
}
91+
92+
function FodselsdatoLabel() {
93+
return (
94+
<div className="flex gap-2">
95+
{texts.label.birthdate}
96+
<HelpText title={texts.helpText.birthdate.title}>
97+
<Label>{texts.helpText.birthdate.title}</Label>
98+
<BodyLong>{texts.helpText.birthdate.text}</BodyLong>
99+
</HelpText>
100+
</div>
101+
);
102+
}
103+
58104
export default function SokPerson() {
59105
const [initials, setInitials] = useState<string>('');
60106
const [birthdate, setBirthdate] = useState<string>('');
@@ -78,7 +124,7 @@ export default function SokPerson() {
78124
};
79125

80126
const isValidInitials = (initials: string): boolean => {
81-
return initials === '' || (initials.length <= 3 && initials.length > 1);
127+
return initials === '' || (initials.length <= 4 && initials.length > 1);
82128
};
83129

84130
const handleSubmit = () => {
@@ -109,46 +155,53 @@ export default function SokPerson() {
109155
handleSubmit();
110156
}}
111157
>
112-
<Heading level="2" size="medium">
113-
{texts.header}
114-
</Heading>
158+
<div className="flex gap-2 items-center">
159+
<Heading level="2" size="medium">
160+
{texts.header}
161+
</Heading>
162+
<HelpText title={texts.helpText.info.title}>
163+
<Label>{texts.helpText.info.title}</Label>
164+
<BodyLong>{texts.helpText.info.text}</BodyLong>
165+
</HelpText>
166+
</div>
115167
<VStack gap="4">
116-
<BodyShort>{texts.info}</BodyShort>
117-
<HStack gap="8" align="end">
168+
<BodyLong>{texts.info}</BodyLong>
169+
<div className="grid grid-cols-[auto,auto,auto] gap-x-8 gap-y-2 align-end max-w-max">
118170
<TextField
119-
label="Initialer"
120-
description="AB"
121-
htmlSize={10}
122-
type="text"
123-
onChange={(e) => setInitials(e.target.value)}
124-
error={isFormError && !isValidInitials(initials)}
125-
/>
126-
<TextField
127-
label="Fødselsdato"
171+
label={<FodselsdatoLabel />}
128172
description="ddmmåå"
129173
htmlSize={14}
130174
type="text"
131175
onChange={(e) => setBirthdate(e.target.value)}
132176
error={isInvalidBirthdate}
133177
/>
178+
<TextField
179+
label={<InitialerLabel />}
180+
description="AB"
181+
htmlSize={10}
182+
type="text"
183+
onChange={(e) => setInitials(e.target.value)}
184+
error={isFormError && !isValidInitials(initials)}
185+
/>
134186
<Button
135187
loading={isLoading}
136188
icon={<MagnifyingGlassIcon />}
137189
type="submit"
190+
className="self-end max-w-max"
138191
>
139192
Søk
140193
</Button>
141-
</HStack>
142-
{isInvalidInitials && (
143-
<ErrorMessage size="small">
144-
{texts.validation.initials}
145-
</ErrorMessage>
146-
)}
147-
{isInvalidBirthdate && (
148-
<ErrorMessage size="small">
149-
{texts.validation.birthdate}
150-
</ErrorMessage>
151-
)}
194+
{isInvalidBirthdate && (
195+
<ErrorMessage size="small">
196+
{texts.validation.birthdate}
197+
</ErrorMessage>
198+
)}
199+
{isInvalidInitials && (
200+
<ErrorMessage size="small" className="col-start-2">
201+
{texts.validation.initials}
202+
</ErrorMessage>
203+
)}
204+
</div>
152205
{isError && (
153206
<Alert variant="error" size="small">
154207
{texts.error}

0 commit comments

Comments
 (0)