diff --git a/apps/dolly-frontend/src/main/js/__tests__/KodeverkSelect.test.tsx b/apps/dolly-frontend/src/main/js/__tests__/KodeverkSelect.test.tsx index 14bc418db8d..4e022d79b69 100644 --- a/apps/dolly-frontend/src/main/js/__tests__/KodeverkSelect.test.tsx +++ b/apps/dolly-frontend/src/main/js/__tests__/KodeverkSelect.test.tsx @@ -13,7 +13,7 @@ dollyTest( expect(screen.getByText('Tester kodeverk')).toBeInTheDocument() - expect(screen.getByText('Henter verdier ...')).toBeInTheDocument() + expect(screen.getByText('Laster ...')).toBeInTheDocument() worker.use( // override the initial kodeverk request handler to return non-empty list diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/datepicker/DateInput.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/datepicker/DateInput.tsx index f17c5c349dd..0d313e6b149 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/datepicker/DateInput.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/datepicker/DateInput.tsx @@ -70,6 +70,8 @@ export const DateInput = ({ useEffect(() => { if (!fieldValue) { setFormattedValue('') + } else { + setFormattedValue(formatDate(fieldValue)) } }, [fieldValue]) diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx index a039e09eaff..c47fd0d55d9 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/monthpicker/Monthpicker.tsx @@ -1,7 +1,7 @@ import { Label } from '@/components/ui/form/inputs/label/Label' import { InputWrapper } from '@/components/ui/form/inputWrapper/InputWrapper' import { MonthPicker, useMonthpicker } from '@navikt/ds-react' -import { addYears, isDate, subYears } from 'date-fns' +import { addYears, isDate, isSameDay, subYears } from 'date-fns' import { useFormContext } from 'react-hook-form' import * as _ from 'lodash-es' import { useEffect } from 'react' @@ -35,7 +35,7 @@ export const Monthpicker = ({ ? date : new Date(date) - const { monthpickerProps, inputProps, reset } = useMonthpicker({ + const { monthpickerProps, inputProps, reset, setSelected } = useMonthpicker({ fromDate: minDate || subYears(new Date(), 125), toDate: maxDate || addYears(new Date(), 5), onMonthChange: (selectedDate) => { @@ -52,6 +52,11 @@ export const Monthpicker = ({ useEffect(() => { if (!eksisterendeVerdi && inputProps.value) { reset() + } else if ( + eksisterendeVerdi && + !isSameDay(new Date(formattedDate), new Date(monthpickerProps.selected)) + ) { + setSelected(formattedDate) } }, [eksisterendeVerdi]) diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx index 30b119c0a49..4f25122f42f 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/select/Select.tsx @@ -106,7 +106,7 @@ export const Select = ({ const getPlaceholder = () => { if (isLoading) { - return 'Henter verdier ...' + return 'Laster ...' } else if (options?.length === 0) { return 'Ingen tilgjengelige verdier' } diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx index 5ac54c8824a..e968fd969ba 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/form/inputs/textInput/TextInput.tsx @@ -95,9 +95,7 @@ export const TextInput = ({ setFieldValue(formValue || '') } else if (!useControlled) { const propValue = value - if (propValue !== undefined) { - setFieldValue(propValue || '') - } + setFieldValue(propValue || '') } }, [value, formValue, useControlled]) diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SisteSoek.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SisteSoek.tsx new file mode 100644 index 00000000000..180608f6d95 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SisteSoek.tsx @@ -0,0 +1,94 @@ +import { useHentLagredeSoek } from '@/utils/hooks/useSoek' +import { Chips, VStack } from '@navikt/ds-react' +import * as _ from 'lodash-es' +import { isDate, isSameDay, isValid } from 'date-fns' + +export enum soekType { + dolly = 'DOLLY', + tenor = 'TENOR', +} + +const listOptions = [ + 'registreRequest', + 'miljoer', + 'utenlandskPersonIdentifikasjon', + 'roller', + 'inntekt.inntektstyper', + 'inntekt.forskuddstrekk', +] + +export const SisteSoek = ({ type, formValues, handleChange, handleChangeList }) => { + const { lagredeSoek } = useHentLagredeSoek(type) + + const lagredeSoekData = [] + lagredeSoek?.forEach((soek) => { + Object.entries(soek?.soekVerdi)?.forEach((verdi) => { + if (listOptions.includes(verdi[0]) && Array.isArray(verdi[1])) { + verdi[1]?.forEach((item) => { + if (!lagredeSoekData?.some((i) => i.value === item.value)) { + lagredeSoekData.push(item) + } + }) + } else if (verdi[1]?.path && !lagredeSoekData?.some((item) => item.path === verdi[1]?.path)) { + lagredeSoekData.push(verdi[1]) + } + }) + }) + + const isSelected = (option) => { + const { path, value } = option + const formValue = _.get(formValues, path) + if (listOptions.includes(path)) { + return formValue?.includes(value) + } else if ( + formValue?.length > 8 && + isDate(new Date(formValue)) && + isValid(new Date(formValue)) + ) { + return isSameDay(new Date(formValue), new Date(value)) + } + return formValue === value + } + + const handleClick = (option) => { + const formValue = _.get(formValues, option.path) + if (listOptions.includes(option.path)) { + const listValues = formValue || [] + handleChangeList( + !listValues?.includes(option.value) + ? [...listValues, option.value] + : listValues?.filter((item) => item !== option.value), + option.path, + option.label, + ) + } else if ( + formValue?.length > 8 && + isDate(new Date(formValue)) && + isValid(new Date(formValue)) + ) { + handleChange( + !isSameDay(new Date(formValue), new Date(option.value)) ? option.value : null, + option.path, + option.label, + ) + } else { + handleChange(formValue !== option.value ? option.value : null, option.path, option.label) + } + } + + return ( + + + {lagredeSoekData?.slice(0, 10).map((option, idx) => ( + handleClick(option)} + > + {option.label} + + ))} + + + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/brukerPage/BrukernavnVelger.tsx b/apps/dolly-frontend/src/main/js/src/pages/brukerPage/BrukernavnVelger.tsx index 81ec46f863e..df0b0fde3ae 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/brukerPage/BrukernavnVelger.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/brukerPage/BrukernavnVelger.tsx @@ -53,6 +53,7 @@ export default ({ eksisterendeBrukernavn, organisasjon, addToSession }: Brukerna resolver: yupResolver(validation), mode: 'onChange', }) + const [loading, setLoading] = useState(false) const [error, setError] = useState(null as string | null) @@ -115,8 +116,15 @@ export default ({ eksisterendeBrukernavn, organisasjon, addToSession }: Brukerna size="large" defaultValue={eksisterendeBrukernavn} isDisabled={loading || !!eksisterendeBrukernavn} + useControlled + /> + - { + const [lagreSoekRequest, setLagreSoekRequest] = useState({}) + const lagreSoekRequestRef = useRef(lagreSoekRequest) + + useEffect(() => { + lagreSoekRequestRef.current = lagreSoekRequest + }, [lagreSoekRequest]) + + useEffect(() => { + return () => { + if (Object.keys(lagreSoekRequestRef.current).length > 0) { + DollyApi.lagreSoek(lagreSoekRequestRef.current, soekType.dolly) + .then((response) => console.log(response)) + .catch((error) => console.error(error)) + } + } + }, []) + + const localStorageValue = localStorage.getItem(dollySoekLocalStorageKey) + const initialValues = localStorageValue ? JSON.parse(localStorageValue) : dollySoekInitialValues + + const initialValuesClone = _.cloneDeep(initialValues) + const formMethods = useForm({ + mode: 'onChange', + defaultValues: initialValuesClone, + }) + + const [formRequest, setFormRequest] = useState(initialValues) + + const setRequest = (request: any) => { + localStorage.setItem(dollySoekLocalStorageKey, JSON.stringify(request)) + setFormRequest(request) + } + + const { watch, reset } = formMethods + const values = watch() + + const handleChange = (value: any, path: string, label: string) => { + const updatedRequest = { ...values, side: 0, seed: null } + _.set(updatedRequest, path, value) + reset(updatedRequest) + setRequest(updatedRequest) + if (value) { + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: { + path: path, + value: value, + label: label, + }, + }) + } else { + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: undefined, + }) + } + } + + const handleChangeList = (value: any, path: string, label: string) => { + const list = value?.map((item: any) => item.value ?? item) + const updatedRequest = { ...values, [path]: list, side: 0, seed: null } + reset(updatedRequest) + setRequest(updatedRequest) + if (value?.length > 0) { + const request = value.map((i) => ({ + path: path, + value: i.value ?? i, + label: label?.includes(':') ? label : `${label}: ${i.label ?? codeToNorskLabel(i)}`, + })) + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: request, + }) + } else { + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: [], + }) + } + } + return (
@@ -13,7 +101,22 @@ export default () => { eksisterende personer til nye formål.
- + +
) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx index f9672b8bc91..bee7baa3948 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/SoekForm.tsx @@ -4,7 +4,7 @@ import { Button, Table } from '@navikt/ds-react' import { ResultatVisning } from '@/pages/dollySoek/ResultatVisning' import * as _ from 'lodash-es' import { TestComponentSelectors } from '#/mocks/Selectors' -import { Form, FormProvider, useForm } from 'react-hook-form' +import { Form, FormProvider } from 'react-hook-form' import { Buttons, Header, Soekefelt, SoekefeltWrapper } from '@/components/ui/soekForm/SoekForm' import { AdresserPaths, @@ -27,28 +27,23 @@ export const dollySoekLocalStorageKey = 'dollySoek' export const personPath = 'personRequest' export const adressePath = 'personRequest.adresse' -export const SoekForm = () => { - const localStorageValue = localStorage.getItem(dollySoekLocalStorageKey) - const initialValues = localStorageValue ? JSON.parse(localStorageValue) : dollySoekInitialValues - - const [formRequest, setFormRequest] = useState(initialValues) +export const SoekForm = ({ + formMethods, + localStorageValue, + handleChange, + handleChangeList, + setRequest, + formRequest, + lagreSoekRequest, + setLagreSoekRequest, +}) => { const [result, setResult] = useState(null) const [soekPaagaar, setSoekPaagaar] = useState(false) const [soekError, setSoekError] = useState(null) const [visAntall, setVisAntall] = useState(10) - const setRequest = (request: any) => { - localStorage.setItem(dollySoekLocalStorageKey, JSON.stringify(request)) - setFormRequest(request) - } - const maxTotalHits = 10000 - const initialValuesClone = _.cloneDeep(initialValues) - const formMethods = useForm({ - mode: 'onChange', - defaultValues: initialValuesClone, - }) const { watch, reset, control, getValues } = formMethods const values = watch() @@ -75,32 +70,6 @@ export const SoekForm = () => { }) }, [formRequest]) - const handleChange = (value: any, path: string) => { - const updatedPersonRequest = { ...values.personRequest, [path]: value } - const updatedRequest = { ...values, personRequest: updatedPersonRequest, side: 0, seed: null } - reset(updatedRequest) - setRequest(updatedRequest) - } - - const handleChangeAdresse = (value: any, path: string) => { - const updatedAdresseRequest = { ...values.personRequest.adresse, [path]: value } - const updatedRequest = { - ...values, - side: 0, - seed: null, - } - _.set(updatedRequest, 'personRequest.adresse', updatedAdresseRequest) - reset(updatedRequest) - setRequest(updatedRequest) - } - - const handleChangeList = (value: any, path: string) => { - const list = value.map((item: any) => item.value) - const updatedRequest = { ...values, [path]: list, side: 0, seed: null } - reset(updatedRequest) - setRequest(updatedRequest) - } - const handleChangeSide = (side: number) => { const updatedRequest = { ...values, side: side - 1, seed: result?.seed } setRequest(updatedRequest) @@ -115,25 +84,36 @@ export const SoekForm = () => { const emptyCategory = (paths: string[]) => { const requestClone = { ...values } + const lagreSoekRequestClone = { ...lagreSoekRequest } paths.forEach((path) => { _.set(requestClone, path, _.get(dollySoekInitialValues, path)) + delete lagreSoekRequestClone[path] if (path === 'personRequest.harSkjerming') { _.set( requestClone, 'registreRequest', watch('registreRequest')?.filter((item: string) => item !== 'SKJERMING'), ) + _.set( + lagreSoekRequestClone, + 'registreRequest', + lagreSoekRequestClone.registreRequest?.filter( + (item: string) => item.value !== 'SKJERMING', + ), + ) } }) const updatedRequest = { ...requestClone, side: 0, seed: null } reset(updatedRequest) setRequest(updatedRequest) + setLagreSoekRequest(lagreSoekRequestClone) } const emptySearch = () => { setVisAntall(10) reset(dollySoekInitialValues) setRequest(dollySoekInitialValues) + setLagreSoekRequest({}) } const getNewResult = () => { @@ -180,7 +160,14 @@ export const SoekForm = () => { } + content={ + + } data-testid={TestComponentSelectors.EXPANDABLE_PERSONINFORMASJON} expandOnRowClick={runningE2ETest()} > @@ -194,9 +181,7 @@ export const SoekForm = () => { /> - } - > + }>
{ - } + content={} >
{ +export const Adresser = ({ handleChange }: any) => { return (
@@ -17,7 +18,11 @@ export const Adresser = ({ handleChangeAdresse }: any) => { size="large" placeholder="Velg kommunenummer ..." onChange={(val: SyntheticEvent) => - handleChangeAdresse(val?.value || null, 'kommunenummer') + handleChange( + val?.value || null, + `${adressePath}.kommunenummer`, + `Kommunenummer: ${val?.value}`, + ) } /> { size="large" placeholder="Velg postnummer ..." onChange={(val: SyntheticEvent) => - handleChangeAdresse(val?.value || null, 'postnummer') + handleChange( + val?.value || null, + `${adressePath}.postnummer`, + `Postnummer: ${val?.value}`, + ) } /> { size="large" placeholder="Velg bydelsnummer ..." onChange={(val: SyntheticEvent) => - handleChangeAdresse(val?.value || null, 'bydelsnummer') + handleChange( + val?.value || null, + `${adressePath}.bydelsnummer`, + `Bydelsnummer: ${val?.value}`, + ) } /> { size="xlarge" placeholder="Velg adressebeskyttelse (kode 6/7) ..." onChange={(val: SyntheticEvent) => - handleChangeAdresse(val?.value || null, 'addressebeskyttelse') + handleChange( + val?.value || null, + `${adressePath}.addressebeskyttelse`, + `Adressebeskyttelse: ${codeToNorskLabel(val?.value)}`, + ) } />
@@ -53,21 +70,25 @@ export const Adresser = ({ handleChangeAdresse }: any) => { name={`${adressePath}.harBostedsadresse`} label="Har bostedsadresse" onChange={(val: SyntheticEvent) => - handleChangeAdresse(val.target.checked, 'harBostedsadresse') + handleChange(val.target.checked, `${adressePath}.harBostedsadresse`, 'Har bostedsadresse') } /> - handleChangeAdresse(val.target.checked, 'harOppholdsadresse') + handleChange( + val.target.checked, + `${adressePath}.harOppholdsadresse`, + 'Har oppholdsadresse', + ) } /> - handleChangeAdresse(val.target.checked, 'harKontaktadresse') + handleChange(val.target.checked, `${adressePath}.harKontaktadresse`, 'Har kontaktadresse') } /> {/*//Soek paa matrikkeladresse fungerer for tiden ikke*/} @@ -82,21 +103,25 @@ export const Adresser = ({ handleChangeAdresse }: any) => { name={`${adressePath}.harUtenlandsadresse`} label="Har utenlandsadresse" onChange={(val: SyntheticEvent) => - handleChangeAdresse(val.target.checked, 'harUtenlandsadresse') + handleChange( + val.target.checked, + `${adressePath}.harUtenlandsadresse`, + 'Har utenlandsadresse', + ) } /> - handleChangeAdresse(val.target.checked, 'harUkjentAdresse') + handleChange(val.target.checked, `${adressePath}.harUkjentAdresse`, 'Har ukjent adresse') } /> - handleChangeAdresse(val.target.checked, 'harBydelsnummer') + handleChange(val.target.checked, `${adressePath}.harBydelsnummer`, 'Har bydelsnummer') } />
diff --git a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Annet.tsx b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Annet.tsx index 3634f9dba3b..9692882a655 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Annet.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Annet.tsx @@ -10,13 +10,19 @@ export const Annet = ({ handleChange }: any) => { name={`${personPath}.harKontaktinformasjonForDoedsbo`} label="Har kontaktinformasjon for dødsbo" onChange={(val: SyntheticEvent) => - handleChange(val.target.checked, 'harKontaktinformasjonForDoedsbo') + handleChange( + val.target.checked, + `${personPath}.harKontaktinformasjonForDoedsbo`, + 'Har kontaktinformasjon for dødsbo', + ) } /> handleChange(val.target.checked, 'harOpphold')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harOpphold`, 'Har opphold') + } /> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Fagsystemer.tsx b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Fagsystemer.tsx index 0fe596939f7..d184610277a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Fagsystemer.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Fagsystemer.tsx @@ -18,7 +18,7 @@ export const Fagsystemer = ({ handleChangeList }: any) => { isMulti={true} size="grow" onChange={(val: SyntheticEvent) => { - handleChangeList(val, 'registreRequest') + handleChangeList(val, 'registreRequest', 'Fagsystem') }} /> @@ -31,7 +31,7 @@ export const Fagsystemer = ({ handleChangeList }: any) => { isMulti={true} size="large" onChange={(val: SyntheticEvent) => { - handleChangeList(val, 'miljoer') + handleChangeList(val, 'miljoer', 'Miljø') }} /> diff --git a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Familierelasjoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Familierelasjoner.tsx index b8123cce64e..13cc4decd7c 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Familierelasjoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Familierelasjoner.tsx @@ -4,8 +4,9 @@ import React, { SyntheticEvent } from 'react' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { adressePath, personPath } from '@/pages/dollySoek/SoekForm' +import { codeToNorskLabel } from '@/utils/DataFormatter' -export const Familierelasjoner = ({ handleChange, handleChangeAdresse }: any) => { +export const Familierelasjoner = ({ handleChange }: any) => { return ( options={Options('sivilstandType')?.filter((item) => item.value !== 'SAMBOER')} size="large" placeholder="Velg sivilstand ..." - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'sivilstand')} + onChange={(val: SyntheticEvent) => + handleChange( + val?.value || null, + `${personPath}.sivilstand`, + `Sivilstand: ${codeToNorskLabel(val?.value)}`, + ) + } /> handleChange(val.target.checked, 'harBarn')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harBarn`, 'Har barn') + } /> handleChange(val.target.checked, 'harForeldre')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harForeldre`, 'Har foreldre') + } /> handleChange(val.target.checked, 'harDoedfoedtBarn')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harDoedfoedtBarn`, 'Har dødfødt barn') + } /> handleChange(val.target.checked, 'harForeldreAnsvar')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harForeldreAnsvar`, 'Har foreldreansvar') + } /> handleChangeAdresse(val.target.checked, 'harDeltBosted')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${adressePath}.harDeltBosted`, 'Har delt bosted') + } /> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Identifikasjon.tsx b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Identifikasjon.tsx index 665f8c02dad..8f34585254c 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Identifikasjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Identifikasjon.tsx @@ -18,7 +18,13 @@ export const Identifikasjon = ({ handleChange }: any) => { placeholder="Skriv inn ident ..." size="large" value={formMethods.watch(`${personPath}.ident`)} - onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'ident')} + onBlur={(val: SyntheticEvent) => + handleChange( + val?.target?.value || null, + `${personPath}.ident`, + `Ident: ${val?.target?.value}`, + ) + } />
@@ -30,24 +36,34 @@ export const Identifikasjon = ({ handleChange }: any) => { options={Options('identtype')} size="small" placeholder="Velg identtype ..." - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'identtype')} + onChange={(val: SyntheticEvent) => + handleChange(val?.value || null, `${personPath}.identtype`, `Identtype: ${val?.value}`) + } /> handleChange(val.target.checked, 'harFalskIdentitet')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harFalskIdentitet`, 'Har falsk identitet') + } /> - handleChange(val.target.checked, 'harUtenlandskIdentifikasjonsnummer') + handleChange( + val.target.checked, + `${personPath}.harUtenlandskIdentifikasjonsnummer`, + 'Har utenlandsk identifikasjonsnummer', + ) } /> handleChange(val.target.checked, 'harNyIdentitet')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harNyIdentitet`, 'Har ny identitet') + } /> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Personinformasjon.tsx b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Personinformasjon.tsx index d6b019cbe79..7c8339153dd 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Personinformasjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/dollySoek/soekFormPartials/Personinformasjon.tsx @@ -9,8 +9,14 @@ import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { personPath } from '../SoekForm' import { useFormContext } from 'react-hook-form' +import { codeToNorskLabel } from '@/utils/DataFormatter' -export const Personinformasjon = ({ handleChange, setRequest }: any) => { +export const Personinformasjon = ({ + handleChange, + setRequest, + lagreSoekRequest, + setLagreSoekRequest, +}: any) => { const formMethods = useFormContext() const { watch, reset } = formMethods const values = watch() @@ -23,74 +29,124 @@ export const Personinformasjon = ({ handleChange, setRequest }: any) => { options={Options('kjoenn')} size="small" placeholder="Velg kjønn ..." - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'kjoenn')} + onChange={(val: SyntheticEvent) => + handleChange( + val?.value || null, + `${personPath}.kjoenn`, + `Kjønn: ${codeToNorskLabel(val?.value)}`, + ) + } /> handleChange(val?.value || null, 'statsborgerskap')} + onChange={(val: SyntheticEvent) => + handleChange( + val?.value || null, + `${personPath}.statsborgerskap`, + `Statsborgerskap: ${val?.value}`, + ) + } /> handleChange(val?.value || null, 'personStatus')} + onChange={(val: SyntheticEvent) => + handleChange( + val?.value || null, + `${personPath}.personStatus`, + `Personstatus: ${codeToNorskLabel(val?.value)}`, + ) + } /> handleChange(val?.target?.value || null, 'alderFom')} + onBlur={(val: SyntheticEvent) => + handleChange( + val?.target?.value || null, + `${personPath}.alderFom`, + `Alder f.o.m.: ${val?.target?.value}`, + ) + } /> handleChange(val?.target?.value || null, 'alderTom')} + onBlur={(val: SyntheticEvent) => + handleChange( + val?.target?.value || null, + `${personPath}.alderTom`, + `Alder t.o.m.: ${val?.target?.value}`, + ) + } /> handleChange(val.target.checked, 'erLevende')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.erLevende`, 'Er levende') + } disabled={watch(`${personPath}.erDoed`)} /> handleChange(val.target.checked, 'erDoed')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.erDoed`, 'Er død') + } disabled={watch(`${personPath}.erLevende`)} /> handleChange(val.target.checked, 'harVerge')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harVerge`, 'Har verge') + } /> handleChange(val.target.checked, 'harInnflytting')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harInnflytting`, 'Har innflytting') + } /> handleChange(val.target.checked, 'harUtflytting')} + onChange={(val: SyntheticEvent) => + handleChange(val.target.checked, `${personPath}.harUtflytting`, 'Har utflytting') + } /> handleChange(val.target.checked, 'harSikkerhetstiltak')} + onChange={(val: SyntheticEvent) => + handleChange( + val.target.checked, + `${personPath}.harSikkerhetstiltak`, + 'Har sikkerhetstiltak', + ) + } /> - handleChange(val.target.checked, 'harTilrettelagtKommunikasjon') + handleChange( + val.target.checked, + `${personPath}.harTilrettelagtKommunikasjon`, + 'Har tilrettelagt kommunikasjon', + ) } /> { } reset(updatedRequest) setRequest(updatedRequest) + let registreSoekValues = lagreSoekRequest?.registreRequest || [] + if (val.target.checked) { + registreSoekValues.push({ + path: 'registreRequest', + value: 'SKJERMING', + label: 'Fagsystem: Skjermingsregisteret', + }) + } else { + registreSoekValues = registreSoekValues.filter( + (item: string) => item.value !== 'SKJERMING', + ) + } + setLagreSoekRequest({ ...lagreSoekRequest, registreRequest: registreSoekValues }) }} />
diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/SoekForm.tsx index b9c897a9f39..ce3aff6b2ea 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/SoekForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/SoekForm.tsx @@ -1,4 +1,4 @@ -import { Form, FormProvider, useForm } from 'react-hook-form' +import { Form, FormProvider } from 'react-hook-form' import styled from 'styled-components' import { Table } from '@navikt/ds-react' import React from 'react' @@ -10,8 +10,6 @@ import { FolkeregisteretNavn } from '@/pages/tenorSoek/soekFormPartials/Folkereg import { FolkeregisteretAdresse } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse' import { FolkeregisteretRelasjoner } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner' import { FolkeregisteretHendelser } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser' -import { isDate } from 'date-fns' -import { fixTimezone } from '@/components/ui/form/formUtils' import { Tjenestepensjonsavtale } from '@/pages/tenorSoek/soekFormPartials/Tjenestepensjonsavtale' import { Skattemelding } from '@/pages/tenorSoek/soekFormPartials/Skattemelding' import { InntektAordningen } from '@/pages/tenorSoek/soekFormPartials/InntektAordningen' @@ -34,59 +32,8 @@ const Soekefelt = styled.div` padding: 15px; ` -export const SoekForm = ({ request, setRequest, setMarkertePersoner, mutate }: any) => { - const formMethods = useForm({ - mode: 'onChange', - defaultValues: request || {}, - }) - - const { getValues, control, setValue, watch }: any = formMethods - - function getUpdatedRequest(request: any) { - for (let key of Object.keys(request)) { - if (request[key] === '' || request[key] === null || request[key] === undefined) { - delete request[key] - } else if (typeof request[key] === 'object' && !(request[key] instanceof Date)) { - request[key] = getUpdatedRequest(request[key]) - if (Object.keys(request[key]).length === 0) { - delete request[key] - } else { - request[key] = getUpdatedRequest(request[key]) - } - } - } - return Array.isArray(request) ? request.filter((val) => val) : request - } - - const handleChange = (value: any, path: string) => { - if (isDate(value)) { - value = fixTimezone(value) - } - setValue(path, value) - const request = getUpdatedRequest(watch()) - setRequest({ ...request }) - setMarkertePersoner([]) - mutate() - } - - const handleChangeList = (value: any, path: string) => { - const list = value.map((item: any) => item.value) - setValue(path, list) - const request = getUpdatedRequest(watch()) - setRequest({ ...request }) - setMarkertePersoner([]) - mutate() - } - - const emptyCategory = (paths: Array) => { - paths.forEach((path) => { - setValue(path, undefined) - }) - const request = getUpdatedRequest(watch()) - setRequest({ ...request }) - setMarkertePersoner([]) - mutate() - } +export const SoekForm = ({ formMethods, handleChange, handleChangeList, emptyCategory }: any) => { + const { getValues, control, watch }: any = formMethods const devEnabled = window.location.hostname.includes('localhost') || @@ -139,7 +86,15 @@ export const SoekForm = ({ request, setRequest, setMarkertePersoner, mutate }: a
@@ -289,15 +244,7 @@ export const SoekForm = ({ request, setRequest, setMarkertePersoner, mutate }: a /> - - } - > + }>
{ + const [lagreSoekRequest, setLagreSoekRequest] = useState({}) + const lagreSoekRequestRef = useRef(lagreSoekRequest) + + useEffect(() => { + lagreSoekRequestRef.current = lagreSoekRequest + }, [lagreSoekRequest]) + + useEffect(() => { + return () => { + if (Object.keys(lagreSoekRequestRef.current).length > 0) { + DollyApi.lagreSoek(lagreSoekRequestRef.current, soekType.tenor) + .then((response) => console.log(response)) + .catch((error) => console.error(error)) + } + } + }, []) + const initialRequest = localStorage.getItem(tenorSoekLocalStorageKey) ? JSON.parse(localStorage.getItem(tenorSoekLocalStorageKey) as string) : {} @@ -52,6 +75,13 @@ export default () => { const [markertePersoner, setMarkertePersoner] = useState([]) const [inkluderPartnere, setInkluderPartnere] = useState(false) + const formMethods = useForm({ + mode: 'onChange', + defaultValues: formRequest || {}, + }) + + const { setValue, watch }: any = formMethods + useEffect(() => { setState(initialState) }, [formRequest]) @@ -129,11 +159,96 @@ export default () => { window.scrollTo({ top: treff, behavior: 'smooth' }) } + function getUpdatedRequest(request: any) { + for (let key of Object.keys(request)) { + if (request[key] === '' || request[key] === null || request[key] === undefined) { + delete request[key] + } else if (typeof request[key] === 'object' && !(request[key] instanceof Date)) { + request[key] = getUpdatedRequest(request[key]) + if (Object.keys(request[key]).length === 0) { + delete request[key] + } else { + request[key] = getUpdatedRequest(request[key]) + } + } + } + return Array.isArray(request) ? request.filter((val) => val) : request + } + + const handleChange = (value: any, path: string, label: string) => { + if (isDate(value)) { + value = fixTimezone(value) + } + setValue(path, value) + const request = getUpdatedRequest(watch()) + setRequest({ ...request }) + setMarkertePersoner([]) + mutate() + if (value || typeof value === 'boolean') { + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: { + path: path, + value: value, + label: label, + }, + }) + } else { + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: undefined, + }) + } + } + + const handleChangeList = (value: any, path: string, label: string) => { + setValue(path, value) + const request = getUpdatedRequest(watch()) + setRequest({ ...request }) + setMarkertePersoner([]) + mutate() + if (value?.length > 0) { + const request = value.map((i) => ({ + path: path, + value: i, + label: label.includes(':') ? label : `${label}: ${codeToNorskLabel(i)}`, + })) + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: request, + }) + } else { + setLagreSoekRequest({ + ...lagreSoekRequest, + [path]: [], + }) + } + } + + const emptyCategory = (paths: Array) => { + const lagreSoekRequestClone = { ...lagreSoekRequest } + paths.forEach((path: string) => { + setValue(path, undefined) + delete lagreSoekRequestClone[path] + }) + const request = getUpdatedRequest(watch()) + setRequest({ ...request }) + setMarkertePersoner([]) + setLagreSoekRequest(lagreSoekRequestClone) + mutate() + } + return (
</div> + <SisteSoek + type={soekType.tenor} + formValues={formMethods.watch()} + handleChange={handleChange} + handleChangeList={handleChangeList} + /> <div className="flexbox--flex-wrap" id="soek"> <NavigateButton className="gaa-til-treff" @@ -143,10 +258,10 @@ export default () => { GÅ TIL TREFF </NavigateButton> <SoekForm - request={formRequest} - setRequest={setRequest} - setMarkertePersoner={setMarkertePersoner} - mutate={mutate} + formMethods={formMethods} + handleChange={handleChange} + handleChangeList={handleChangeList} + emptyCategory={emptyCategory} /> </div> <div id="treff"> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Arbeidsforhold.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Arbeidsforhold.tsx index 6b5133510a3..32979269dc6 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Arbeidsforhold.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Arbeidsforhold.tsx @@ -5,9 +5,11 @@ import { createOptions } from '@/pages/tenorSoek/utils' import React, { SyntheticEvent } from 'react' import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' +import { formatDate } from '@/utils/DataFormatter' -export const Arbeidsforhold = ({ handleChange, handleChangeList, getValue }: any) => { - const { domain: arbeidsforholdstypeOptions } = useTenorDomain('Arbeidsforholdstype') +export const Arbeidsforhold = ({ handleChange }: any) => { + const { domain: arbeidsforholdstypeOptions, loading: loadingArbeidsforholdstype } = + useTenorDomain('Arbeidsforholdstype') return ( <SoekKategori> @@ -17,15 +19,24 @@ export const Arbeidsforhold = ({ handleChange, handleChangeList, getValue }: any size="xlarge" label="Arbeidsforholdstype" onChange={(val: SyntheticEvent) => - handleChange(val?.value || null, 'arbeidsforhold.arbeidsforholdstype') + handleChange( + val?.value || null, + 'arbeidsforhold.arbeidsforholdstype', + `Arbeidsforholdstype: ${val?.label}`, + ) } + isLoading={loadingArbeidsforholdstype} /> <div className="flexbox--flex-wrap"> <FormDatepicker name="arbeidsforhold.startDatoPeriode.fraOgMed" label="Startdato f.o.m." onChange={(val: SyntheticEvent) => - handleChange(val || null, 'arbeidsforhold.startDatoPeriode.fraOgMed') + handleChange( + val || null, + 'arbeidsforhold.startDatoPeriode.fraOgMed', + `Arbeidsforhold startdato f.o.m.: ${formatDate(val)}`, + ) } visHvisAvhuket={false} /> @@ -33,7 +44,11 @@ export const Arbeidsforhold = ({ handleChange, handleChangeList, getValue }: any name="arbeidsforhold.startDatoPeriode.tilOgMed" label="Startdato t.o.m." onChange={(val: SyntheticEvent) => - handleChange(val || null, 'arbeidsforhold.startDatoPeriode.tilOgMed') + handleChange( + val || null, + 'arbeidsforhold.startDatoPeriode.tilOgMed', + `Arbeidsforhold startdato t.o.m.: ${formatDate(val)}`, + ) } visHvisAvhuket={false} /> @@ -41,7 +56,11 @@ export const Arbeidsforhold = ({ handleChange, handleChangeList, getValue }: any name="arbeidsforhold.sluttDatoPeriode.fraOgMed" label="Sluttdato f.o.m." onChange={(val: SyntheticEvent) => - handleChange(val || null, 'arbeidsforhold.sluttDatoPeriode.fraOgMed') + handleChange( + val || null, + 'arbeidsforhold.sluttDatoPeriode.fraOgMed', + `Arbeidsforhold sluttdato f.o.m.: ${formatDate(val)}`, + ) } visHvisAvhuket={false} /> @@ -49,7 +68,11 @@ export const Arbeidsforhold = ({ handleChange, handleChangeList, getValue }: any name="arbeidsforhold.sluttDatoPeriode.tilOgMed" label="Sluttdato t.o.m." onChange={(val: SyntheticEvent) => - handleChange(val || null, 'arbeidsforhold.sluttDatoPeriode.tilOgMed') + handleChange( + val || null, + 'arbeidsforhold.sluttDatoPeriode.tilOgMed', + `Arbeidsforhold sluttdato t.o.m.: ${formatDate(val)}`, + ) } visHvisAvhuket={false} /> @@ -58,35 +81,55 @@ export const Arbeidsforhold = ({ handleChange, handleChangeList, getValue }: any name="arbeidsforhold.harPermisjoner" label="Har permisjoner" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'arbeidsforhold.harPermisjoner') + handleChange( + val?.target?.checked || undefined, + 'arbeidsforhold.harPermisjoner', + 'Arbeidsforhold har permisjoner', + ) } /> <FormCheckbox name="arbeidsforhold.harPermitteringer" label="Har permitteringer" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'arbeidsforhold.harPermitteringer') + handleChange( + val?.target?.checked || undefined, + 'arbeidsforhold.harPermitteringer', + 'Arbeidsforhold har permitteringer', + ) } /> <FormCheckbox name="arbeidsforhold.harTimerMedTimeloenn" label="Har timer med timelønn" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'arbeidsforhold.harTimerMedTimeloenn') + handleChange( + val?.target?.checked || undefined, + 'arbeidsforhold.harTimerMedTimeloenn', + 'Arbeidsforhold har timer med timelønn', + ) } /> <FormCheckbox name="arbeidsforhold.harUtenlandsopphold" label="Har utenlandsopphold" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'arbeidsforhold.harUtenlandsopphold') + handleChange( + val?.target?.checked || undefined, + 'arbeidsforhold.harUtenlandsopphold', + 'Arbeidsforhold har utenlandsopphold', + ) } /> <FormCheckbox name="arbeidsforhold.harHistorikk" label="Har historikk" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'arbeidsforhold.harHistorikk') + handleChange( + val?.target?.checked || undefined, + 'arbeidsforhold.harHistorikk', + 'Arbeidsforhold har historikk', + ) } /> </SoekKategori> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx index cde0967aa50..d49f2a5e26e 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx @@ -5,7 +5,7 @@ import { FormSelect } from '@/components/ui/form/inputs/select/Select' import { useTenorDomain } from '@/utils/hooks/useTenorSoek' export const EnhetsregisteretForetaksregisteret = ({ handleChangeList }: any) => { - const { domain: rollerOptions } = useTenorDomain('Roller') + const { domain: rollerOptions, loading: loadingRoller } = useTenorDomain('Roller') return ( <SoekKategori> <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> @@ -15,7 +15,14 @@ export const EnhetsregisteretForetaksregisteret = ({ handleChangeList }: any) => isMulti={true} size="grow" label="Roller" - onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'roller')} + onChange={(val: SyntheticEvent) => + handleChangeList( + val?.map((item: any) => item.value) || null, + 'roller', + 'Rolle i Enhetsregisteret/Foretaksregisteret', + ) + } + isLoading={loadingRoller} /> </div> </SoekKategori> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx index d83017ee5ea..3ddcfdce3ba 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx @@ -7,9 +7,11 @@ import { createOptions } from '@/pages/tenorSoek/utils' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import { AdresseKodeverk } from '@/config/kodeverk' import { Option } from '@/service/SelectOptionsOppslag' +import { codeToNorskLabel, oversettBoolean } from '@/utils/DataFormatter' export const FolkeregisteretAdresse = ({ handleChange }: any) => { - const { domain: adresseGraderingOptions } = useTenorDomain('AdresseGradering') + const { domain: adresseGraderingOptions, loading: loadingAdresseGradering } = + useTenorDomain('AdresseGradering') return ( <SoekKategori> @@ -17,62 +19,101 @@ export const FolkeregisteretAdresse = ({ handleChange }: any) => { name="adresser.adresseGradering" options={createOptions(adresseGraderingOptions?.data)} label="Adressegradering" - onChange={(val: any) => handleChange(val?.value || null, 'adresser.adresseGradering')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'adresser.adresseGradering', + `Adressegradering: ${codeToNorskLabel(val?.value)}`, + ) + } + isLoading={loadingAdresseGradering} /> <FormSelect name="adresser.kommunenummer" label="Kommunenummer" kodeverk={AdresseKodeverk.Kommunenummer} - onChange={(val: Option) => handleChange(val?.value, 'adresser.kommunenummer')} + onChange={(val: Option) => + handleChange(val?.value, 'adresser.kommunenummer', `Kommunenummer: ${val?.value}`) + } size="large" /> <FormSelect name="adresser.harAdresseSpesialtegn" options={Options('boolean')} label="Har spesialtegn i adresse" - onChange={(val: any) => handleChange(val?.value, 'adresser.harAdresseSpesialtegn')} + onChange={(val: any) => + handleChange( + val?.value, + 'adresser.harAdresseSpesialtegn', + `Har spesialtegn i adresse: ${oversettBoolean(val?.value)}`, + ) + } /> <div className="flexbox--flex-wrap"> <FormCheckbox name="adresser.harBostedsadresse" label="Har bostedsadresse" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'adresser.harBostedsadresse') + handleChange( + val?.target?.checked || undefined, + 'adresser.harBostedsadresse', + 'Har bostedsadresse', + ) } /> <FormCheckbox name="avansert.harBostedsadresseHistorikk" label="Har bostedsadressehistorikk" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'avansert.harBostedsadresseHistorikk') + handleChange( + val?.target?.checked || undefined, + 'avansert.harBostedsadresseHistorikk', + 'Har bostedsadressehistorikk', + ) } /> <FormCheckbox name="adresser.harOppholdAnnetSted" label="Har opphold annet sted" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'adresser.harOppholdAnnetSted') + handleChange( + val?.target?.checked || undefined, + 'adresser.harOppholdAnnetSted', + 'Har opphold annet sted', + ) } /> <FormCheckbox name="adresser.harPostadresseNorge" label="Har postadresse i Norge" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseNorge') + handleChange( + val?.target?.checked || undefined, + 'adresser.harPostadresseNorge', + 'Har postadresse i Norge', + ) } /> <FormCheckbox name="adresser.harPostadresseUtland" label="Har postadresse i utlandet" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseUtland') + handleChange( + val?.target?.checked || undefined, + 'adresser.harPostadresseUtland', + 'Har postadresse i utlandet', + ) } /> <FormCheckbox name="adresser.harKontaktadresseDoedsbo" label="Har kontaktadresse for dødsbo" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'adresser.harKontaktadresseDoedsbo') + handleChange( + val?.target?.checked || undefined, + 'adresser.harKontaktadresseDoedsbo', + 'Har kontaktadresse for dødsbo', + ) } /> </div> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx index 40606db04c2..01687d6f677 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx @@ -5,7 +5,7 @@ import { createOptions } from '@/pages/tenorSoek/utils' import React from 'react' export const FolkeregisteretHendelser = ({ handleChange }: any) => { - const { domain: hendelseOptions } = useTenorDomain('Hendelse') + const { domain: hendelseOptions, loading: loadingHendelse } = useTenorDomain('Hendelse') return ( <SoekKategori> @@ -14,14 +14,24 @@ export const FolkeregisteretHendelser = ({ handleChange }: any) => { options={createOptions(hendelseOptions?.data, true)} size="large" label="Har hatt hendelse" - onChange={(val: any) => handleChange(val?.value || null, 'hendelser.hendelse')} + onChange={(val: any) => + handleChange(val?.value || null, 'hendelser.hendelse', `Har hatt hendelse: ${val?.label}`) + } + isLoading={loadingHendelse} /> <FormSelect name="hendelser.sisteHendelse" options={createOptions(hendelseOptions?.data, true)} size="large" label="Siste hendelse" - onChange={(val: any) => handleChange(val?.value || null, 'hendelser.sisteHendelse')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'hendelser.sisteHendelse', + `Siste hendelse: ${val?.label}`, + ) + } + isLoading={loadingHendelse} /> </SoekKategori> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx index ec1d73c810c..57904387849 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx @@ -8,17 +8,22 @@ import { SelectOptionsManager as Options } from '@/service/SelectOptions' import { FormDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import { TestComponentSelectors } from '#/mocks/Selectors' +import { codeToNorskLabel, formatDate, oversettBoolean } from '@/utils/DataFormatter' export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChangeList }: any) => { - const { domain: identifikatorTypeOptions } = useTenorDomain('IdentifikatorType') - const { domain: kjoennOptions } = useTenorDomain('Kjoenn') - const { domain: personstatusOptions } = useTenorDomain('Personstatus') - const { domain: sivilstatusOptions } = useTenorDomain('Sivilstatus') - const { domain: utenlandskPersonIdentifikasjonOptions } = useTenorDomain( - 'UtenlandskPersonIdentifikasjon', + const { domain: identifikatorTypeOptions, loading: loadingIdentifikatorType } = + useTenorDomain('IdentifikatorType') + const { domain: kjoennOptions, loading: loadingKjoenn } = useTenorDomain('Kjoenn') + const { domain: personstatusOptions, loading: loadingPersonstatus } = + useTenorDomain('Personstatus') + const { domain: sivilstatusOptions, loading: loadingSivilstatus } = useTenorDomain('Sivilstatus') + const { domain: utenlandskPersonIdentifikasjonOptions, loading: loadingUtenlandsid } = + useTenorDomain('UtenlandskPersonIdentifikasjon') + const { domain: identitetsgrunnlagStatusOptions, loading: loadingIdentgrunnlag } = useTenorDomain( + 'IdentitetsgrunnlagStatus', ) - const { domain: identitetsgrunnlagStatusOptions } = useTenorDomain('IdentitetsgrunnlagStatus') - const { domain: adressebeskyttelseOptions } = useTenorDomain('Adressebeskyttelse') + const { domain: adressebeskyttelseOptions, loading: loadingAdressebeskyttelse } = + useTenorDomain('Adressebeskyttelse') return ( <SoekKategori> @@ -26,74 +31,140 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange name="identifikator" label="Fødselsnummer / D-nummer" // @ts-ignore - onBlur={(val: any) => handleChange(val?.target?.value || null, 'identifikator')} + onBlur={(val: any) => + handleChange( + val?.target?.value || null, + 'identifikator', + `Fødselsnummer/D-nummer: ${val?.target?.value}`, + ) + } visHvisAvhuket={false} /> <FormSelect name="identifikatorType" options={createOptions(identifikatorTypeOptions?.data, true)} label="Identifikatortype" - onChange={(val: any) => handleChange(val?.value || null, 'identifikatorType')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'identifikatorType', + `Identifikatortype: ${codeToNorskLabel(val?.value)}`, + ) + } + isLoading={loadingIdentifikatorType} /> <FormDatepicker name="foedselsdato.fraOgMed" label="Fødselsdato f.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.fraOgMed')} + onChange={(val: SyntheticEvent) => + handleChange( + val || null, + 'foedselsdato.fraOgMed', + `Fødselsdato f.o.m.: ${formatDate(val)}`, + ) + } visHvisAvhuket={false} /> <FormDatepicker name="foedselsdato.tilOgMed" label="Fødselsdato t.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.tilOgMed')} + onChange={(val: SyntheticEvent) => + handleChange( + val || null, + 'foedselsdato.tilOgMed', + `Fødselsdato t.o.m.: ${formatDate(val)}`, + ) + } visHvisAvhuket={false} /> <FormDatepicker name="doedsdato.fraOgMed" label="Dødsdato f.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.fraOgMed')} + onChange={(val: SyntheticEvent) => + handleChange(val || null, 'doedsdato.fraOgMed', `Dødsdato f.o.m.: ${formatDate(val)}`) + } visHvisAvhuket={false} /> <FormDatepicker name="doedsdato.tilOgMed" label="Dødsdato t.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.tilOgMed')} + onChange={(val: SyntheticEvent) => + handleChange(val || null, 'doedsdato.tilOgMed', `Dødsdato t.o.m.: ${formatDate(val)}`) + } visHvisAvhuket={false} /> <FormSelect name="kjoenn" options={createOptions(kjoennOptions?.data)} label="Kjønn" - onChange={(val: any) => handleChange(val?.value || null, 'kjoenn')} + onChange={(val: any) => + handleChange(val?.value || null, 'kjoenn', `Kjønn: ${codeToNorskLabel(val?.value)}`) + } + isLoading={loadingKjoenn} /> <FormSelect name="personstatus" options={createOptions(personstatusOptions?.data)} label="Personstatus" - onChange={(val: any) => handleChange(val?.value || null, 'personstatus')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'personstatus', + `Personstatus: ${codeToNorskLabel(val?.value)}`, + ) + } + isLoading={loadingPersonstatus} /> <FormSelect name="sivilstand" options={createOptions(sivilstatusOptions?.data)} label="Sivilstand" - onChange={(val: any) => handleChange(val?.value || null, 'sivilstand')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'sivilstand', + `Sivilstand: ${codeToNorskLabel(val?.value)}`, + ) + } + isLoading={loadingSivilstatus} /> <FormSelect name="identitetsgrunnlagStatus" options={createOptions(identitetsgrunnlagStatusOptions?.data)} label="Identitetsgrunnlagsstatus" - onChange={(val: any) => handleChange(val?.value || null, 'identitetsgrunnlagStatus')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'identitetsgrunnlagStatus', + `Identitetsgrunnlagsstatus: ${codeToNorskLabel(val?.value)}`, + ) + } + isLoading={loadingIdentgrunnlag} /> <FormSelect name="adressebeskyttelse" options={createOptions(adressebeskyttelseOptions?.data)} label="Adressebeskyttelse" - onChange={(val: any) => handleChange(val?.value || null, 'adressebeskyttelse')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'adressebeskyttelse', + `Adressebeskyttelse: ${codeToNorskLabel(val?.value)}`, + ) + } + isLoading={loadingAdressebeskyttelse} /> <FormSelect name="harFalskIdentitet" options={Options('boolean')} label="Har falsk identitet" - onChange={(val: any) => handleChange(val?.value, 'harFalskIdentitet')} + onChange={(val: any) => + handleChange( + val?.value, + 'harFalskIdentitet', + `Har falsk identitet: ${oversettBoolean(val?.value)}`, + ) + } /> <div className="flexbox--full-width"> <FormSelect @@ -102,9 +173,14 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange isMulti={true} size="grow" label="Utenlandsk identifikasjonsnummertype" - onChange={(val: SyntheticEvent) => - handleChangeList(val || null, 'utenlandskPersonIdentifikasjon') - } + onChange={(val: SyntheticEvent) => { + handleChangeList( + val?.map((item: any) => item.value) || null, + 'utenlandskPersonIdentifikasjon', + 'Utenlandsk ident.nr.type', + ) + }} + isLoading={loadingUtenlandsid} /> </div> <FormCheckbox @@ -112,7 +188,11 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange data-testid={TestComponentSelectors.CHECKBOX_TENORSOEK} label="Har legitimasjonsdokument" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'harLegitimasjonsdokument') + handleChange( + val?.target?.checked || undefined, + 'harLegitimasjonsdokument', + 'Har legitimasjonsdokument', + ) } /> </SoekKategori> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx index 7e05d0a5002..a7130c78aa9 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx @@ -4,6 +4,7 @@ import React from 'react' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' +import { oversettBoolean } from '@/utils/DataFormatter' export const FolkeregisteretNavn = ({ handleChange }: any) => { return ( @@ -13,7 +14,13 @@ export const FolkeregisteretNavn = ({ handleChange }: any) => { label="Lengde på navn f.o.m." type="number" // @ts-ignore - onBlur={(val: any) => handleChange(val?.target?.value || null, 'navn.navnLengde.fraOgMed')} + onBlur={(val: any) => + handleChange( + val?.target?.value || null, + 'navn.navnLengde.fraOgMed', + `Lengde på navn f.o.m.: ${val?.target?.value}`, + ) + } visHvisAvhuket={false} /> <FormTextInput @@ -21,26 +28,44 @@ export const FolkeregisteretNavn = ({ handleChange }: any) => { label="Lengde på navn t.o.m." type="number" // @ts-ignore - onBlur={(val: any) => handleChange(val?.target?.value || null, 'navn.navnLengde.tilOgMed')} + onBlur={(val: any) => + handleChange( + val?.target?.value || null, + 'navn.navnLengde.tilOgMed', + `Lengde på navn t.o.m.: ${val?.target?.value}`, + ) + } visHvisAvhuket={false} /> <FormSelect name="navn.harFlereFornavn" options={Options('boolean')} - label="Har flere fornnavn" - onChange={(val: any) => handleChange(val?.value, 'navn.harFlereFornavn')} + label="Har flere fornavn" + onChange={(val: any) => + handleChange( + val?.value, + 'navn.harFlereFornavn', + `Har flere fornavn: ${oversettBoolean(val?.value)}`, + ) + } /> <FormSelect name="navn.harNavnSpesialtegn" options={Options('boolean')} label="Har spesialtegn i navn" - onChange={(val: any) => handleChange(val?.value, 'navn.harNavnSpesialtegn')} + onChange={(val: any) => + handleChange( + val?.value, + 'navn.harNavnSpesialtegn', + `Har spesialtegn i navn: ${oversettBoolean(val?.value)}`, + ) + } /> <FormCheckbox name="navn.harMellomnavn" label="Har mellomnavn" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'navn.harMellomnavn') + handleChange(val?.target?.checked || undefined, 'navn.harMellomnavn', 'Har mellomnavn') } /> </SoekKategori> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx index e1e5a3b8cb7..877849464c6 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx @@ -7,7 +7,7 @@ import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { - const { domain: relasjonOptions } = useTenorDomain('Relasjon') + const { domain: relasjonOptions, loading: loadingRelasjon } = useTenorDomain('Relasjon') return ( <SoekKategori> @@ -15,7 +15,10 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { name="relasjoner.relasjon" options={createOptions(relasjonOptions?.data)} label="Relasjon" - onChange={(val: any) => handleChange(val?.value || null, 'relasjoner.relasjon')} + onChange={(val: any) => + handleChange(val?.value || null, 'relasjoner.relasjon', `Relasjon: ${val?.label}`) + } + isLoading={loadingRelasjon} /> <div className="flexbox--flex-wrap"> <FormTextInput @@ -24,7 +27,11 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { type="number" // @ts-ignore onBlur={(val: any) => - handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') + handleChange( + val?.target?.value || null, + 'relasjoner.antallBarn.fraOgMed', + `Antall barn f.o.m.: ${val?.target?.value}`, + ) } visHvisAvhuket={false} /> @@ -34,7 +41,11 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { type="number" // @ts-ignore onBlur={(val: any) => - handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') + handleChange( + val?.target?.value || null, + 'relasjoner.antallBarn.tilOgMed', + `Antall barn t.o.m.: ${val?.target?.value}`, + ) } visHvisAvhuket={false} /> @@ -46,7 +57,11 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { type="number" // @ts-ignore onBlur={(val: any) => - handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') + handleChange( + val?.target?.value || null, + 'relasjoner.relasjonMedFoedselsaar.fraOgMed', + `Relasjon med fødselsår f.o.m.: ${val?.target?.value}`, + ) } visHvisAvhuket={false} /> @@ -56,7 +71,11 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { type="number" // @ts-ignore onBlur={(val: any) => - handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') + handleChange( + val?.target?.value || null, + 'relasjoner.relasjonMedFoedselsaar.tilOgMed', + `Relasjon med fødselsår t.o.m.: ${val?.target?.value}`, + ) } visHvisAvhuket={false} /> @@ -66,14 +85,22 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { name="relasjoner.harForeldreAnsvar" label="Har foreldreansvar" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'relasjoner.harForeldreAnsvar') + handleChange( + val?.target?.checked || undefined, + 'relasjoner.harForeldreAnsvar', + 'Har foreldreansvar', + ) } /> <FormCheckbox name="relasjoner.harDeltBosted" label="Har delt bosted" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'relasjoner.harDeltBosted') + handleChange( + val?.target?.checked || undefined, + 'relasjoner.harDeltBosted', + 'Har delt bosted', + ) } /> <FormCheckbox @@ -83,6 +110,7 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { handleChange( val?.target?.checked || undefined, 'relasjoner.harVergemaalEllerFremtidsfullmakt', + 'Har vergemål eller fremtidsfullmakt', ) } /> @@ -90,28 +118,36 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { name="relasjoner.borMedMor" label="Bor med mor" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMor') + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMor', 'Bor med mor') } /> <FormCheckbox name="relasjoner.borMedFar" label="Bor med far" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'relasjoner.borMedFar') + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedFar', 'Bor med far') } /> <FormCheckbox name="relasjoner.borMedMedmor" label="Bor med medmor" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMedmor') + handleChange( + val?.target?.checked || undefined, + 'relasjoner.borMedMedmor', + 'Bor med medmor', + ) } /> <FormCheckbox name="relasjoner.foreldreHarSammeAdresse" label="Foreldre har samme adresse" onChange={(val: any) => - handleChange(val?.target?.checked || undefined, 'relasjoner.foreldreHarSammeAdresse') + handleChange( + val?.target?.checked || undefined, + 'relasjoner.foreldreHarSammeAdresse', + 'Foreldre har samme adresse', + ) } /> </div> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx index 66e36739aa1..716cf436314 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx @@ -2,6 +2,7 @@ import { SelectOptionsManager as Options } from '@/service/SelectOptions' import { FormSelect } from '@/components/ui/form/inputs/select/Select' import React from 'react' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { oversettBoolean } from '@/utils/DataFormatter' export const FolkeregisteretStatsborgerskap = ({ handleChange }: any) => { return ( @@ -10,13 +11,85 @@ export const FolkeregisteretStatsborgerskap = ({ handleChange }: any) => { name="harNorskStatsborgerskap" options={Options('boolean')} label="Har norsk statsborgerskap" - onChange={(val: any) => handleChange(val?.value, 'harNorskStatsborgerskap')} + onChange={(val: any) => + handleChange( + val?.value, + 'harNorskStatsborgerskap', + `Har norsk statsborgerskap: ${oversettBoolean(val?.value)}`, + ) + } /> <FormSelect name="harFlereStatsborgerskap" options={Options('boolean')} label="Har flere statsborgerskap" - onChange={(val: any) => handleChange(val?.value, 'harFlereStatsborgerskap')} + onChange={(val: any) => + handleChange( + val?.value, + 'harFlereStatsborgerskap', + `Har flere statsborgerskap: ${oversettBoolean(val?.value)}`, + ) + } + /> + <FormSelect + name="harNordenStatsborgerskap" + options={Options('boolean')} + label="Har statsborgerskap i Norden" + onChange={(val: any) => + handleChange( + val?.value, + 'harNordenStatsborgerskap', + `Har statsborgerskap i Norden: ${oversettBoolean(val?.value)}`, + ) + } + /> + <FormSelect + name="harEuEoesStatsborgerskap" + options={Options('boolean')} + label="Har statsborgerskap i EU/EØS" + onChange={(val: any) => + handleChange( + val?.value, + 'harEuEoesStatsborgerskap', + `Har statsborgerskap i EU/EØS: ${oversettBoolean(val?.value)}`, + ) + } + /> + <FormSelect + name="harTredjelandStatsborgerskap" + options={Options('boolean')} + label="Har st.borgerskap i tredjeland" + onChange={(val: any) => + handleChange( + val?.value, + 'harTredjelandStatsborgerskap', + `Har statsborgerskap i tredjeland: ${oversettBoolean(val?.value)}`, + ) + } + /> + <FormSelect + name="harUtgaattStatsborgerskap" + options={Options('boolean')} + label="Har utgått statsborgerskap" + onChange={(val: any) => + handleChange( + val?.value, + 'harUtgaattStatsborgerskap', + `Har utgått statsborgerskap: ${oversettBoolean(val?.value)}`, + ) + } + /> + <FormSelect + name="harStatsborgerskapHistorikk" + options={Options('boolean')} + label="Har statsborgerskapshistorikk" + onChange={(val: any) => + handleChange( + val?.value, + 'harStatsborgerskapHistorikk', + `Har statsborgerskapshistorikk: ${oversettBoolean(val?.value)}`, + ) + } /> </SoekKategori> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx index de0c786da9c..e63b488cd52 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx @@ -6,11 +6,15 @@ import { createOptions } from '@/pages/tenorSoek/utils' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import { oversettBoolean } from '@/utils/DataFormatter' export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: any) => { - const { domain: inntektstypeOptions } = useTenorDomain('Inntektstype') - const { domain: beskrivelseOptions } = useTenorDomain('AOrdningBeskrivelse') - const { domain: forskuddstrekkOptions } = useTenorDomain('Forskuddstrekk') + const { domain: inntektstypeOptions, loading: loadingInntektstype } = + useTenorDomain('Inntektstype') + const { domain: beskrivelseOptions, loading: loadingBeskrivelse } = + useTenorDomain('AOrdningBeskrivelse') + const { domain: forskuddstrekkOptions, loading: loadingForskuddstrekk } = + useTenorDomain('Forskuddstrekk') return ( <SoekKategori> @@ -19,7 +23,11 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: label="Periode f.o.m. dato" // @ts-ignore handleDateChange={(val: Date) => { - handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.fraOgMed') + handleChange( + val ? val.toISOString().substring(0, 7) : '', + 'inntekt.periode.fraOgMed', + `Inntekt periode f.o.m.: ${val?.toISOString().substring(0, 7)}`, + ) }} date={getValue('inntekt.periode.fraOgMed')} /> @@ -28,7 +36,11 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: label="Periode t.o.m. dato" // @ts-ignore handleDateChange={(val: Date) => { - handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.tilOgMed') + handleChange( + val ? val.toISOString().substring(0, 7) : '', + 'inntekt.periode.tilOgMed', + `Inntekt periode t.o.m.: ${val?.toISOString().substring(0, 7)}`, + ) }} date={getValue('inntekt.periode.tilOgMed')} /> @@ -37,7 +49,11 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: label="Opplysningspliktig org.nr." // @ts-ignore onBlur={(val: any) => - handleChange(val?.target?.value || null, 'inntekt.opplysningspliktig') + handleChange( + val?.target?.value || null, + 'inntekt.opplysningspliktig', + `Inntekt opplysningspliktig org.nr.: ${val?.target?.value}`, + ) } visHvisAvhuket={false} /> @@ -48,7 +64,14 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: isMulti={true} size="grow" label="Inntektstyper" - onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'inntekt.inntektstyper')} + onChange={(val: SyntheticEvent) => + handleChangeList( + val?.map((item: any) => item.value) || null, + 'inntekt.inntektstyper', + 'Inntektstype', + ) + } + isLoading={loadingInntektstype} /> <FormSelect name="inntekt.forskuddstrekk" @@ -57,8 +80,13 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: size="grow" label="Forskuddstrekk" onChange={(val: SyntheticEvent) => - handleChangeList(val || null, 'inntekt.forskuddstrekk') + handleChangeList( + val?.map((item: any) => item.value) || null, + 'inntekt.forskuddstrekk', + 'Inntekt forskuddstrekk', + ) } + isLoading={loadingForskuddstrekk} /> </div> <FormSelect @@ -66,14 +94,27 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: options={createOptions(beskrivelseOptions?.data)} size="xlarge" label="Beskrivelse" - onChange={(val: any) => handleChange(val?.value || null, 'inntekt.beskrivelse')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'inntekt.beskrivelse', + `Inntekt beskrivelse: ${val?.label}`, + ) + } + isLoading={loadingBeskrivelse} /> <FormSelect name="inntekt.harHistorikk" options={Options('boolean')} size="small" label="Har historikk" - onChange={(val: any) => handleChange(val?.value, 'inntekt.harHistorikk')} + onChange={(val: any) => + handleChange( + val?.value, + 'inntekt.harHistorikk', + `Inntekt har historikk: ${oversettBoolean(val?.value)}`, + ) + } /> </SoekKategori> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Skattemelding.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Skattemelding.tsx index ef0f2ed443a..165c6d14ce8 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Skattemelding.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Skattemelding.tsx @@ -5,7 +5,8 @@ import React from 'react' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' export const Skattemelding = ({ handleChange }: any) => { - const { domain: skattemeldingstypeOptions } = useTenorDomain('Skattemeldingstype') + const { domain: skattemeldingstypeOptions, loading: loadingSkattemeldingstype } = + useTenorDomain('Skattemeldingstype') const getInntektsaarOptions = () => { const inntektsaarListe = [] @@ -24,7 +25,13 @@ export const Skattemelding = ({ handleChange }: any) => { name="skattemelding.inntektsaar" options={inntektsaarOptions} label="Inntektsår" - onChange={(val: any) => handleChange(val?.value || null, 'skattemelding.inntektsaar')} + onChange={(val: any) => + handleChange( + val?.value || null, + 'skattemelding.inntektsaar', + `Inntektsår skattemelding: ${val?.label}`, + ) + } /> <FormSelect name="skattemelding.skattemeldingstype" @@ -32,8 +39,13 @@ export const Skattemelding = ({ handleChange }: any) => { label="Type skattemelding" size="large" onChange={(val: any) => - handleChange(val?.value || null, 'skattemelding.skattemeldingstype') + handleChange( + val?.value || null, + 'skattemelding.skattemeldingstype', + `Type skattemelding: ${val?.label}`, + ) } + isLoading={loadingSkattemeldingstype} /> </SoekKategori> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Tjenestepensjonsavtale.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Tjenestepensjonsavtale.tsx index 5c011567660..727006a7c32 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Tjenestepensjonsavtale.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Tjenestepensjonsavtale.tsx @@ -9,10 +9,13 @@ export const Tjenestepensjonsavtale = ({ handleChange, getValue }: any) => { <FormTextInput name="tjenestepensjonsavtale.pensjonsinnretningOrgnr" label="Pensjonsinnretning (org.nr.)" - type="number" // @ts-ignore onBlur={(val: any) => - handleChange(val?.target?.value || null, 'tjenestepensjonsavtale.pensjonsinnretningOrgnr') + handleChange( + val?.target?.value ?? null, + 'tjenestepensjonsavtale.pensjonsinnretningOrgnr', + `Tjenestepensjonsavtale org.nr.: ${val?.target?.value}`, + ) } visHvisAvhuket={false} /> @@ -24,6 +27,7 @@ export const Tjenestepensjonsavtale = ({ handleChange, getValue }: any) => { handleChange( val ? val.toISOString().substring(0, 7) : '', 'tjenestepensjonsavtale.periode', + `Tjenestepensjonsavtale periode: ${val?.toISOString().substring(0, 7)}`, ) }} date={getValue('tjenestepensjonsavtale.periode')} diff --git a/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyEndpoints.tsx b/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyEndpoints.tsx index b289f5afc7e..8c891ca460a 100644 --- a/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyEndpoints.tsx +++ b/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyEndpoints.tsx @@ -222,4 +222,8 @@ export default class DollyEndpoints { static fjernRepresentererTeam() { return `${brukerBase}/representererTeam` } + + static lagreSoek(soekType: string) { + return `${uri}/soek?soekType=${soekType}` + } } diff --git a/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyService.tsx b/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyService.tsx index c0b3610859f..e009508346c 100644 --- a/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyService.tsx +++ b/apps/dolly-frontend/src/main/js/src/service/services/dolly/DollyService.tsx @@ -165,6 +165,10 @@ export default { return Request.delete(Endpoints.fjernRepresentererTeam()) }, + lagreSoek(data, soekType) { + return Request.post(Endpoints.lagreSoek(soekType), data) + }, + //* Organisasjoner createOrganisasjonBestilling(data) { diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useSoek.tsx new file mode 100644 index 00000000000..1e753272e29 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useSoek.tsx @@ -0,0 +1,15 @@ +import { fetcher } from '@/api' +import useSWR from 'swr' + +export const useHentLagredeSoek = (soekType: string) => { + const { data, isLoading, error } = useSWR<any, Error>( + `/dolly-backend/api/v1/soek?soekType=${soekType}`, + fetcher, + ) + + return { + lagredeSoek: data, + loading: isLoading, + error: error, + } +}