From 2b9ac01e6031ed0153f69f11d9dcaec34ac65ec1 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran Date: Wed, 24 Jan 2024 17:09:59 +0100 Subject: [PATCH 01/50] Tenor soek page --- apps/dolly-frontend/src/main/js/src/allRoutes.tsx | 4 +++- .../layout/header/FinnPersonDropdown.tsx | 8 ++++++++ .../main/js/src/pages/tenorSoek/TenorSoekPage.tsx | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx diff --git a/apps/dolly-frontend/src/main/js/src/allRoutes.tsx b/apps/dolly-frontend/src/main/js/src/allRoutes.tsx index 88633d627cf..486e2459e6e 100644 --- a/apps/dolly-frontend/src/main/js/src/allRoutes.tsx +++ b/apps/dolly-frontend/src/main/js/src/allRoutes.tsx @@ -12,6 +12,7 @@ const UI = lazy(() => import('@/pages/ui/index')) const TestnorgePage = lazy(() => import('@/pages/testnorgePage/index')) const Endringsmelding = lazy(() => import('@/pages/endringsmelding/Endringsmelding')) const DollySoekPage = lazy(() => import('@/pages/dollySoek/DollySoekPage')) +const TenorSoekPage = lazy(() => import('@/pages/tenorSoek/TenorSoekPage')) const GruppeBreadcrumb = (props) => Gruppe #{props.match?.params?.gruppeId} @@ -45,8 +46,9 @@ const allRoutes = [ }, { path: '/minside', breadcrumb: 'Min side', element: () => }, { path: '/ui', breadcrumb: 'UI demo', element: () => }, - { path: '/testnorge', breadcrumb: 'Søk i Test-Norge', element: () => }, { path: '/dollysoek', breadcrumb: 'Søk i Dolly', element: () => }, + { path: '/testnorge', breadcrumb: 'Søk i Test-Norge', element: () => }, + { path: '/tenor', breadcrumb: 'Søk i Tenor', element: () => }, { path: '/importer', breadcrumb: 'Importer', diff --git a/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx b/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx index a895e562ffb..4481d559065 100644 --- a/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx @@ -45,6 +45,14 @@ export const FinnPersonDropdown = () => { Søk i Test-Norge + navigate('/tenor')} + style={{ color: '#212529' }} + > + + Søk i Tenor + diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx new file mode 100644 index 00000000000..96eff3e0cfe --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -0,0 +1,15 @@ +import Title from '@/components/Title' +import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' +import { bottom } from '@popperjs/core' + +export default () => { + return ( +
+
+ + <Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst> + </div> + <p>Test</p> + </div> + ) +} From 69b795482786e41c03b224c31682823fd6bca15e Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 25 Jan 2024 14:52:53 +0100 Subject: [PATCH 02/50] Oppsett mot api --- apps/dolly-frontend/config.idporten.yml | 1 + apps/dolly-frontend/config.test.yml | 1 + apps/dolly-frontend/config.unstable.yml | 1 + apps/dolly-frontend/config.yml | 1 + .../web/DollyFrontendApplicationStarter.java | 1 + .../no/nav/dolly/web/config/Consumers.java | 1 + .../src/main/js/proxy-routes.json | 5 +++ .../main/js/src/pages/tenorSoek/SoekForm.tsx | 14 ++++++++ .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 13 +++++++ .../main/js/src/utils/hooks/useTenorSoek.tsx | 36 +++++++++++++++++++ .../src/main/resources/application-local.yml | 4 ++- .../src/main/resources/application.yml | 5 +++ 12 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/SoekForm.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx diff --git a/apps/dolly-frontend/config.idporten.yml b/apps/dolly-frontend/config.idporten.yml index 3d6423e58b6..ec20ca31270 100644 --- a/apps/dolly-frontend/config.idporten.yml +++ b/apps/dolly-frontend/config.idporten.yml @@ -46,6 +46,7 @@ spec: - application: dolly-backend - application: testnav-person-service - application: generer-navn-service + - application: testnav-tenor-search-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.test.yml b/apps/dolly-frontend/config.test.yml index 8f725c1d820..776d064c071 100644 --- a/apps/dolly-frontend/config.test.yml +++ b/apps/dolly-frontend/config.test.yml @@ -51,6 +51,7 @@ spec: - application: dolly-backend-dev - application: testnav-person-service - application: generer-navn-service + - application: testnav-tenor-search-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.unstable.yml b/apps/dolly-frontend/config.unstable.yml index cbbed02f8e2..b32bcb89ad2 100644 --- a/apps/dolly-frontend/config.unstable.yml +++ b/apps/dolly-frontend/config.unstable.yml @@ -51,6 +51,7 @@ spec: - application: testnav-miljoer-service - application: testnav-adresse-service - application: testnorge-tilbakemelding-api + - application: testnav-tenor-search-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/config.yml b/apps/dolly-frontend/config.yml index c463664db78..eb04adc29ba 100644 --- a/apps/dolly-frontend/config.yml +++ b/apps/dolly-frontend/config.yml @@ -56,6 +56,7 @@ spec: - application: testnav-miljoer-service - application: testnav-adresse-service - application: testnorge-tilbakemelding-api + - application: testnav-tenor-search-service external: - host: testnav-pensjon-testdata-facade-proxy.dev-fss-pub.nais.io - host: testnav-sigrunstub-proxy.dev-fss-pub.nais.io diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java index 75078944514..83790ab2af8 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java @@ -81,6 +81,7 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { .route(createRoute(consumers.getTestnavHelsepersonellService())) .route(createRoute(consumers.getTestnavPersonService(), "person-service")) .route(createRoute(consumers.getGenererNavnService())) + .route(createRoute(consumers.getTestnavTenorSearchService())) .build(); } diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java index 4830926caf2..aa88f93f97c 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/config/Consumers.java @@ -60,5 +60,6 @@ public class Consumers { private ServerProperties testnorgeTilbakemeldingApi; private ServerProperties testnavTpsMessagingService; private ServerProperties testnavUdistubProxy; + private ServerProperties testnavTenorSearchService; } diff --git a/apps/dolly-frontend/src/main/js/proxy-routes.json b/apps/dolly-frontend/src/main/js/proxy-routes.json index ec1e44f6817..b881645e4f2 100644 --- a/apps/dolly-frontend/src/main/js/proxy-routes.json +++ b/apps/dolly-frontend/src/main/js/proxy-routes.json @@ -223,5 +223,10 @@ "target": "http://localhost:8020", "changeOrigin": true, "secure": false + }, + "/testnav-tenor-search-service/api": { + "target": "http://localhost:8020", + "changeOrigin": true, + "secure": false } } \ No newline at end of file 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 new file mode 100644 index 00000000000..81169472a63 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/SoekForm.tsx @@ -0,0 +1,14 @@ +import {Formik} from "formik"; + +export const soekForm = () => { + return ( + <Formik initialValues={} onSubmit={}> + {(formikBag) => { + return ( + <Form className="flexbox--flex-wrap" autoComplete="off"> + + </Form> + }} + </Formik> + ) +} \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index 96eff3e0cfe..7861a08261a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -1,8 +1,21 @@ import Title from '@/components/Title' import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import { bottom } from '@popperjs/core' +import { useTenorDomain, useTenorSoek } from '@/utils/hooks/useTenorSoek' export default () => { + const { domain, loading, error } = useTenorDomain('AOrdningBeskrivelse') + console.log('domain: ', domain) //TODO - SLETT MEG + + const request = { + inntektAordningen: { + beskrivelse: 'ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat', + }, + } + + const { response, loading: isLoading, error: isError } = useTenorSoek('Noekkelinfo', request) + console.log('response: ', response) //TODO - SLETT MEG + return ( <div> <div className="flexbox--align-center--justify-start"> diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx new file mode 100644 index 00000000000..5179a2e6f04 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx @@ -0,0 +1,36 @@ +import useSWR from 'swr' +import Request from '@/service/services/Request' + +const tenorSearchUrl = '/testnav-tenor-search-service/api/v1/tenor/testdata' + +export const useTenorSoek = ( + type: string, + request: any, + kilde?: string, + fields?: string, + seed?: number, +) => { + const { data, isLoading, error } = useSWR( + request ? [`${tenorSearchUrl}?type=${type}`, request] : null, + ([url, headers]) => Request.post(url, headers), + ) + + return { + response: data, + loading: isLoading, + error: error, + } +} + +export const useTenorDomain = (lookup: string) => { + const { data, isLoading, error } = useSWR( + lookup ? `${tenorSearchUrl}/domain?lookup=${lookup}` : null, + (url) => Request.get(url), + ) + + return { + domain: data, + loading: isLoading, + error: error, + } +} diff --git a/apps/dolly-frontend/src/main/resources/application-local.yml b/apps/dolly-frontend/src/main/resources/application-local.yml index 1c35d8f7dce..831e262e46f 100644 --- a/apps/dolly-frontend/src/main/resources/application-local.yml +++ b/apps/dolly-frontend/src/main/resources/application-local.yml @@ -74,4 +74,6 @@ consumers: generer-navn-service: url: https://generer-navn-service.intern.dev.nav.no testnav-person-service: - url: https://testnav-person-service.intern.dev.nav.no \ No newline at end of file + url: https://testnav-person-service.intern.dev.nav.no + testnav-tenor-search-service: + url: https://testnav-tenor-search-service.intern.dev.nav.no \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/resources/application.yml b/apps/dolly-frontend/src/main/resources/application.yml index 2c15148f945..b45c602144b 100644 --- a/apps/dolly-frontend/src/main/resources/application.yml +++ b/apps/dolly-frontend/src/main/resources/application.yml @@ -213,6 +213,11 @@ consumers: namespace: dolly url: https://testnav-histark-proxy.dev-fss-pub.nais.io cluster: dev-fss + testnav-tenor-search-service: + cluster: dev-gcp + namespace: dolly + name: testnav-tenor-search-service + url: http://testnav-tenor-search-service.dolly.svc.cluster.local management: endpoints: From 8ebe2b71612758a6f1e030e49e4162e6a39c3e07 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 26 Jan 2024 11:30:29 +0100 Subject: [PATCH 03/50] Minimum soek --- .../js/src/pages/tenorSoek/InitialValues.tsx | 144 ++++++++++++++++++ .../main/js/src/pages/tenorSoek/SoekForm.tsx | 78 ++++++++-- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 6 +- .../soekFormPartials/InntektAordningen.tsx | 37 +++++ .../src/main/js/src/pages/tenorSoek/utils.tsx | 9 ++ .../main/js/src/utils/hooks/useTenorSoek.tsx | 4 +- 6 files changed, 259 insertions(+), 19 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx new file mode 100644 index 00000000000..ca6d433fc3f --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx @@ -0,0 +1,144 @@ +export const initialValues = { + // identifikator: null, + // identifikatorType: null, + // foedselsdato: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // doedsdato: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // kjoenn: null, + // personstatus: null, + // sivilstatus: null, + // utenlandskPersonIdentifikasjon: [null], + // identitetsgrunnlagStatus: null, + // adressebeskyttelse: null, + // harLegitimasjonsdokument: false, + // harFalskIdentitet: false, + // harNorskStatsborgerskap: false, + // harFlereStatsborgerskap: false, + // navn: { + // navnLengde: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // harFlereFornavn: false, + // harMellomnavn: false, + // harNavnSpesialtegn: false, + // }, + // adresser: { + // adresseGradering: null, + // kommunenummer: null, + // harBostedsadresse: false, + // harOppholdAnnetSted: false, + // harPostadresseNorge: false, + // harPostadresseUtland: false, + // harKontaktadresseDoedsbo: false, + // harAdresseSpesialtegn: false, + // }, + // relasjoner: { + // relasjon: null, + // antallBarn: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // harForeldreAnsvar: false, + // relasjonMedFoedselsaar: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // harDeltBosted: false, + // harVergemaalEllerFremtidsfullmakt: false, + // borMedMor: false, + // borMedFar: false, + // borMedMedmor: false, + // foreldreHarSammeAdresse: false, + // }, + // hendelser: { + // hendelse: null, + // sisteHendelse: null, + // }, + // roller: [null], + // tjenestepensjonsavtale: { + // pensjonsinnretningOrgnr: null, + // periode: null, + // }, + // skattemelding: { + // inntektsaar: null, + // skattemeldingstype: null, + // }, + inntektAordningen: { + // periode: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // opplysningspliktig: null, + // inntektstyper: [null], + beskrivelse: null, + // forskuddstrekk: [null], + // harHistorikk: false, + }, + // skatteplikt: { + // inntektsaar: null, + // skattepliktstyper: [null], + // saerskiltSkatteplikt: null, + // }, + // tilleggsskatt: { + // inntektsaar: null, + // tilleggsskattTyper: [null], + // }, + // arbeidsforhold: { + // startDatoPeriode: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // sluttDatoPeriode: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // harPermisjoner: false, + // harPermitteringer: false, + // harArbeidsgiver: false, + // harTimerMedTimeloenn: false, + // harUtenlandsopphold: false, + // harHistorikk: false, + // arbeidsforholdstype: null, + // }, + // beregnetSkatt: { + // inntektsaar: null, + // oppgjoerstype: null, + // pensjonsgivendeInntekt: false, + // }, + // opplysningerFraSkatteetatensInnsendingsmiljoe: { + // inntektsaar: null, + // harSkattemeldingUtkast: false, + // harSkattemeldingFastsatt: false, + // }, + // samletReskontroInnsyn: { + // harKrav: false, + // harInnbetaling: false, + // }, + // summertSkattegrunnlag: { + // inntektsaar: null, + // stadietype: null, + // oppgjoerstype: null, + // tekniskNavn: null, + // alminneligInntektFoerSaerfradragBeloep: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // }, + // spesisfisertSummertSkattegrunnlag: { + // inntektsaar: null, + // stadietype: null, + // oppgjoerstype: null, + // tekniskNavn: null, + // spesifiseringstype: null, + // alminneligInntektFoerSaerfradragBeloep: { + // fraOgMed: null, + // tilOgMed: null, + // }, + // }, +} 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 81169472a63..04dd683e06a 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,14 +1,64 @@ -import {Formik} from "formik"; - -export const soekForm = () => { - return ( - <Formik initialValues={} onSubmit={}> - {(formikBag) => { - return ( - <Form className="flexbox--flex-wrap" autoComplete="off"> - - </Form> - }} - </Formik> - ) -} \ No newline at end of file +import { Form, Formik } from 'formik' +import { initialValues } from '@/pages/tenorSoek/InitialValues' +import styled from 'styled-components' +import { Accordion } from '@navikt/ds-react' +import { InntektAordningen } from '@/pages/tenorSoek/soekFormPartials/InntektAordningen' +import { useState } from 'react' +import { useTenorSoek } from '@/utils/hooks/useTenorSoek' +import { SoekRequest } from '@/pages/dollySoek/DollySoekTypes' +import * as _ from 'lodash-es' + +const SoekefeltWrapper = styled.div` + display: flex; + flex-direction: column; + margin-bottom: 20px; + background-color: white; + border: 1px @color-bg-grey-border; + border-radius: 4px; +` + +const Soekefelt = styled.div` + padding: 20px 15px 5px 15px; +` + +export const SoekForm = () => { + const [request, setRequest] = useState(null) + const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) + console.log('response: ', response) //TODO - SLETT MEG + const handleSubmit = (request: SoekRequest) => { + setRequest(request) + mutate() + } + + return ( + <SoekefeltWrapper> + <Soekefelt> + {/*<Formik initialValues={initialValues} onSubmit={(request) => handleSubmit(request)}>*/} + <Formik initialValues={initialValues} onSubmit={() => console.log('submit...')}> + {(formikBag) => { + const handleChange = (value: any, path: string) => { + const updatedRequest = _.set(formikBag.values, path, value) + setRequest(updatedRequest) + formikBag.setFieldValue(path, value) + mutate() + } + + const getValue = (path: string) => { + return _.get(formikBag.values, path) + } + + return ( + <Form className="flexbox--flex-wrap" autoComplete="off"> + <InntektAordningen + formikBag={formikBag} + handleChange={handleChange} + getValue={getValue} + /> + </Form> + ) + }} + </Formik> + </Soekefelt> + </SoekefeltWrapper> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index 7861a08261a..272a0854d2e 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -2,11 +2,9 @@ import Title from '@/components/Title' import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import { bottom } from '@popperjs/core' import { useTenorDomain, useTenorSoek } from '@/utils/hooks/useTenorSoek' +import { SoekForm } from '@/pages/tenorSoek/SoekForm' export default () => { - const { domain, loading, error } = useTenorDomain('AOrdningBeskrivelse') - console.log('domain: ', domain) //TODO - SLETT MEG - const request = { inntektAordningen: { beskrivelse: 'ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat', @@ -22,7 +20,7 @@ export default () => { <Title title="Søk etter personer i Tenor" /> <Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst> </div> - <p>Test</p> + <SoekForm /> </div> ) } 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 new file mode 100644 index 00000000000..4c8a183c7a9 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/InntektAordningen.tsx @@ -0,0 +1,37 @@ +import Accordion from '@navikt/ds-react/src/accordion/Accordion' +import React, { SyntheticEvent } from 'react' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { createOptions } from '@/pages/tenorSoek/utils' + +export const InntektAordningen = ({ formikBag, handleChange, getValue }: any) => { + const { domain: beskrivelseOptions, loading, error } = useTenorDomain('AOrdningBeskrivelse') + console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG + return ( + <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> + <Accordion.Item defaultOpen={true}> + <Accordion.Header> + <span>Inntekt A-ordningen</span> + </Accordion.Header> + <Accordion.Content> + <div className="flexbox--full-width"> + <div className="flexbox--flex-wrap"> + <FormikSelect + name="inntektAordningen.beskrivelse" + options={createOptions(beskrivelseOptions?.data)} + size="large" + label="Beskrivelse" + // placeholder="Velg beskrivelse ..." + onChange={(val: SyntheticEvent) => + handleChange(val?.value || null, 'inntektAordningen.beskrivelse') + } + value={getValue('inntektAordningen.beskrivelse')} + /> + </div> + </div> + </Accordion.Content> + </Accordion.Item> + </Accordion> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx new file mode 100644 index 00000000000..e1c0caa7448 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx @@ -0,0 +1,9 @@ +export const createOptions = (optionsList: Array<string>) => { + if (!optionsList || optionsList.length === 0) { + return [] + } + return optionsList.map((option) => ({ + value: option, + label: option, + })) +} diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx index 5179a2e6f04..d071d89bba4 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx @@ -10,7 +10,7 @@ export const useTenorSoek = ( fields?: string, seed?: number, ) => { - const { data, isLoading, error } = useSWR( + const { data, isLoading, error, mutate } = useSWR( request ? [`${tenorSearchUrl}?type=${type}`, request] : null, ([url, headers]) => Request.post(url, headers), ) @@ -19,6 +19,7 @@ export const useTenorSoek = ( response: data, loading: isLoading, error: error, + mutate: mutate, } } @@ -27,6 +28,7 @@ export const useTenorDomain = (lookup: string) => { lookup ? `${tenorSearchUrl}/domain?lookup=${lookup}` : null, (url) => Request.get(url), ) + // console.log('data: ', data) //TODO - SLETT MEG return { domain: data, From 6d8a094578fe1af3e07967356661da18bdb866f5 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 26 Jan 2024 16:01:55 +0100 Subject: [PATCH 04/50] Utkast visning av treff --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 62 +++++++++-------- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 22 +++++-- .../tenorSoek/resultatVisning/TreffListe.tsx | 66 +++++++++++++++++++ 3 files changed, 115 insertions(+), 35 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx 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 04dd683e06a..cbbfd8cb30f 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 @@ -7,6 +7,7 @@ import { useState } from 'react' import { useTenorSoek } from '@/utils/hooks/useTenorSoek' import { SoekRequest } from '@/pages/dollySoek/DollySoekTypes' import * as _ from 'lodash-es' +import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' const SoekefeltWrapper = styled.div` display: flex; @@ -21,44 +22,49 @@ const Soekefelt = styled.div` padding: 20px 15px 5px 15px; ` +// export const SoekForm = ({request, setRequest, mutate}) => { export const SoekForm = () => { const [request, setRequest] = useState(null) const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) - console.log('response: ', response) //TODO - SLETT MEG + // console.log('response: ', response) //TODO - SLETT MEG const handleSubmit = (request: SoekRequest) => { setRequest(request) mutate() } return ( - <SoekefeltWrapper> - <Soekefelt> - {/*<Formik initialValues={initialValues} onSubmit={(request) => handleSubmit(request)}>*/} - <Formik initialValues={initialValues} onSubmit={() => console.log('submit...')}> - {(formikBag) => { - const handleChange = (value: any, path: string) => { - const updatedRequest = _.set(formikBag.values, path, value) - setRequest(updatedRequest) - formikBag.setFieldValue(path, value) - mutate() - } + <> + <SoekefeltWrapper> + <Soekefelt> + {/*<Formik initialValues={initialValues} onSubmit={(request) => handleSubmit(request)}>*/} + <Formik initialValues={initialValues} onSubmit={() => console.log('submit...')}> + {(formikBag) => { + const handleChange = (value: any, path: string) => { + const updatedRequest = _.set(formikBag.values, path, value) + setRequest(updatedRequest) + formikBag.setFieldValue(path, value) + mutate() + } - const getValue = (path: string) => { - return _.get(formikBag.values, path) - } + const getValue = (path: string) => { + return _.get(formikBag.values, path) + } - return ( - <Form className="flexbox--flex-wrap" autoComplete="off"> - <InntektAordningen - formikBag={formikBag} - handleChange={handleChange} - getValue={getValue} - /> - </Form> - ) - }} - </Formik> - </Soekefelt> - </SoekefeltWrapper> + return ( + <Form className="flexbox--flex-wrap" autoComplete="off"> + <InntektAordningen + formikBag={formikBag} + handleChange={handleChange} + getValue={getValue} + /> + </Form> + // TODO sett inn chips her? + ) + }} + </Formik> + </Soekefelt> + </SoekefeltWrapper> + <TreffListe response={response?.data} loading={loading} error={error} /> + </> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index 272a0854d2e..8469bf025e9 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -3,16 +3,22 @@ import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import { bottom } from '@popperjs/core' import { useTenorDomain, useTenorSoek } from '@/utils/hooks/useTenorSoek' import { SoekForm } from '@/pages/tenorSoek/SoekForm' +import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' +import { useState } from 'react' export default () => { - const request = { - inntektAordningen: { - beskrivelse: 'ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat', - }, - } + // const request = { + // inntektAordningen: { + // beskrivelse: 'ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat', + // }, + // } + // + // const { response, loading: isLoading, error: isError } = useTenorSoek('Noekkelinfo', request) + // console.log('response: ', response) //TODO - SLETT MEG - const { response, loading: isLoading, error: isError } = useTenorSoek('Noekkelinfo', request) - console.log('response: ', response) //TODO - SLETT MEG + // const [request, setRequest] = useState(null) + // const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) + // console.log('response: ', response) //TODO - SLETT MEG return ( <div> @@ -20,7 +26,9 @@ export default () => { <Title title="Søk etter personer i Tenor" /> <Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst> </div> + {/*<SoekForm request={request} setRequest={setRequest}/>*/} <SoekForm /> + {/*<TreffListe />*/} </div> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx new file mode 100644 index 00000000000..da324b1ab04 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -0,0 +1,66 @@ +import { Box, VStack, Tag } from '@navikt/ds-react' +import { Simulate } from 'react-dom/test-utils' +import click = Simulate.click +import React, { useState } from 'react' +import { PersonVisning } from '@/pages/dollySoek/PersonVisning' +import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +export const TreffListe = ({ response }: any) => { + if (!response) { + return null + } + // console.log('response: ', response) //TODO - SLETT MEG + + const [valgtPerson, setValgtPerson] = useState(null) + console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG + const antallTreff = response?.data?.treff + return ( + <div className="flexbox--flex-wrap"> + <div style={{ width: '30%' }}> + <h2>{antallTreff} treff</h2> + {/*<p>{response}</p>*/} + <VStack gap="4"> + {response?.data?.dokumentListe.map((person: any) => ( + // <Box key={person.identifikator} padding="2" border="1" borderColor="navds-color-gray-20"> + <Box + key={person.identifikator} + padding="2" + background={ + person.identifikator === valgtPerson?.identifikator + ? 'surface-alt-3-moderate' + : 'surface-alt-3-subtle' + } + // background={'surface-alt-3-subtle'} + onClick={() => setValgtPerson(person)} + > + <h3>{person.visningnavn}</h3> + <p>{person.identifikator}</p> + <Tag size="small" variant="neutral"> + Attributt + </Tag> + </Box> + ))} + </VStack> + </div> + <div style={{ width: '68%', marginLeft: '2%', marginTop: '68px' }}> + {valgtPerson && ( + // <div className="dolly-panel-content"> + <Box background="surface-default" padding="3"> + <SubOverskrift label="Persondetaljer" iconKind="personinformasjon" /> + <div className="person-visning_content"> + <TitleValue title="Navn" value={valgtPerson.visningnavn} /> + <TitleValue title="Ident" value={valgtPerson.identifikator} /> + <TitleValue title="Fødselsdato" value={valgtPerson.foedselsdato} /> + <TitleValue title="Kjønn" value={valgtPerson.kjoenn} /> + <TitleValue title="Personstatus" value={valgtPerson.personstatus} /> + <TitleValue title="Sivilstand" value={valgtPerson.sivilstand} /> + <TitleValue title="Bostedsadresse" value={valgtPerson.bostedsadresse} /> + <TitleValue title="Siste hendelse" value={valgtPerson.sisteHendelse} /> + </div> + </Box> + // </div> + )} + </div> + </div> + ) +} From 5eb1487c89ee412e1919df377889db2945b49a32 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 26 Jan 2024 18:40:18 +0100 Subject: [PATCH 05/50] Hent og vis relasjoner paa person --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 7 +++--- .../tenorSoek/resultatVisning/TreffListe.tsx | 22 ++++++++++++++----- .../main/js/src/utils/hooks/useTenorSoek.tsx | 14 ++++++++++++ 3 files changed, 34 insertions(+), 9 deletions(-) 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 cbbfd8cb30f..89111e1b509 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 @@ -4,7 +4,7 @@ import styled from 'styled-components' import { Accordion } from '@navikt/ds-react' import { InntektAordningen } from '@/pages/tenorSoek/soekFormPartials/InntektAordningen' import { useState } from 'react' -import { useTenorSoek } from '@/utils/hooks/useTenorSoek' +import { useTenorOversikt, useTenorSoek } from '@/utils/hooks/useTenorSoek' import { SoekRequest } from '@/pages/dollySoek/DollySoekTypes' import * as _ from 'lodash-es' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' @@ -25,8 +25,9 @@ const Soekefelt = styled.div` // export const SoekForm = ({request, setRequest, mutate}) => { export const SoekForm = () => { const [request, setRequest] = useState(null) - const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) - // console.log('response: ', response) //TODO - SLETT MEG + // const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) + const { response, loading, error, mutate } = useTenorOversikt(request) + console.log('response: ', response) //TODO - SLETT MEG const handleSubmit = (request: SoekRequest) => { setRequest(request) mutate() diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index da324b1ab04..92d78758ee9 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -9,7 +9,7 @@ export const TreffListe = ({ response }: any) => { if (!response) { return null } - // console.log('response: ', response) //TODO - SLETT MEG + console.log('response: ', response) //TODO - SLETT MEG const [valgtPerson, setValgtPerson] = useState(null) console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG @@ -20,7 +20,7 @@ export const TreffListe = ({ response }: any) => { <h2>{antallTreff} treff</h2> {/*<p>{response}</p>*/} <VStack gap="4"> - {response?.data?.dokumentListe.map((person: any) => ( + {response?.data?.personer?.map((person: any) => ( // <Box key={person.identifikator} padding="2" border="1" borderColor="navds-color-gray-20"> <Box key={person.identifikator} @@ -33,11 +33,21 @@ export const TreffListe = ({ response }: any) => { // background={'surface-alt-3-subtle'} onClick={() => setValgtPerson(person)} > - <h3>{person.visningnavn}</h3> + {/*<h3>{person.visningnavn}</h3>*/} + <h3> + {person.fornavn} {person.etternavn} + </h3> <p>{person.identifikator}</p> - <Tag size="small" variant="neutral"> - Attributt - </Tag> + {person.tenorRelasjoner?.map((relasjon: any, idx: number) => ( + <Tag + size="small" + variant="neutral" + key={person.identifikator + idx} + style={{ margin: '0 5px 5px 0' }} + > + {relasjon} + </Tag> + ))} </Box> ))} </VStack> diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx index d071d89bba4..7908df0bfab 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx @@ -23,6 +23,20 @@ export const useTenorSoek = ( } } +export const useTenorOversikt = (request: any, antall?: number, side?: number, seed?: number) => { + const { data, isLoading, error, mutate } = useSWR( + request ? [`${tenorSearchUrl}/oversikt`, request] : null, + ([url, headers]) => Request.post(url, headers), + ) + + return { + response: data, + loading: isLoading, + error: error, + mutate: mutate, + } +} + export const useTenorDomain = (lookup: string) => { const { data, isLoading, error } = useSWR( lookup ? `${tenorSearchUrl}/domain?lookup=${lookup}` : null, From 124f0d623d54c858962cac971c3a53bd2eb1c160 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 29 Jan 2024 15:39:46 +0100 Subject: [PATCH 06/50] Vis valgt person --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 5 ++- .../FolkeregisteretVisning.tsx | 34 +++++++++++++++++++ .../resultatVisning/PersonVisning.tsx | 25 ++++++++++++++ .../tenorSoek/resultatVisning/TreffListe.tsx | 29 +++++++--------- .../main/js/src/utils/hooks/useTenorSoek.tsx | 21 ++++++++++++ 5 files changed, 96 insertions(+), 18 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx 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 89111e1b509..ae2c54b4063 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 @@ -4,7 +4,7 @@ import styled from 'styled-components' import { Accordion } from '@navikt/ds-react' import { InntektAordningen } from '@/pages/tenorSoek/soekFormPartials/InntektAordningen' import { useState } from 'react' -import { useTenorOversikt, useTenorSoek } from '@/utils/hooks/useTenorSoek' +import { useTenorIdent, useTenorOversikt, useTenorSoek } from '@/utils/hooks/useTenorSoek' import { SoekRequest } from '@/pages/dollySoek/DollySoekTypes' import * as _ from 'lodash-es' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' @@ -28,6 +28,9 @@ export const SoekForm = () => { // const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) const { response, loading, error, mutate } = useTenorOversikt(request) console.log('response: ', response) //TODO - SLETT MEG + + // const { person: valgtPersonData } = useTenorIdent('22866198962') + // console.log('valgtPersonData: ', valgtPersonData) //TODO - SLETT MEG const handleSubmit = (request: SoekRequest) => { setRequest(request) mutate() diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx new file mode 100644 index 00000000000..4291133b4cc --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -0,0 +1,34 @@ +import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import React from 'react' +import { formatDate, showLabel } from '@/utils/DataFormatter' + +export const FolkeregisteretVisning = ({ data }) => { + console.log('data: ', data) //TODO - SLETT MEG + if (!data) { + return null + } + + return ( + <> + <SubOverskrift label="Folkeregisteret" iconKind="personinformasjon" /> + <div className="person-visning_content"> + <TitleValue title="Identifikator" value={data.identifikator} /> + <TitleValue title="Navn" value={data.visningnavn} /> + <TitleValue title="Fødselsdato" value={formatDate(data.foedselsdato)} /> + <TitleValue title="Kjønn" value={showLabel('kjoenn', data.kjoenn)} /> + <TitleValue title="Personstatus" value={showLabel('personstatus', data.personstatus)} /> + <TitleValue title="Sivilstand" value={showLabel('sivilstandType', data.sivilstand)} /> + <TitleValue + title="Adressebeskyttelse" + value={showLabel('gradering', data.adresseBeskyttelse)} + /> + {/*// evt adresseGradering som er en array?*/} + <TitleValue title="Bostedsadresse" value={data.bostedsadresse} /> + <TitleValue title="Siste hendelse" value={data.sisteHendelse} /> + {/*// Relasjoner:*/} + {/*// Kildedata:*/} + </div> + </> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx new file mode 100644 index 00000000000..f9234acabba --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -0,0 +1,25 @@ +import { Box } from '@navikt/ds-react' +import React from 'react' +import { FolkeregisteretVisning } from '@/pages/tenorSoek/resultatVisning/FolkeregisteretVisning' +import styled from 'styled-components' + +const NavnHeader = styled.h2` + margin: 5px 0 15px 0; +` +export const PersonVisning = ({ person }) => { + console.log('person: ', person) //TODO - SLETT MEG + if (!person) { + return null + } + // TODO check for errors + + const personData = person.data?.dokumentListe?.[0] + // TODO maa kanskje ta med flere personer hvis lista er lengre? + + return ( + <Box background="surface-default" padding="3"> + <NavnHeader>{personData?.visningnavn}</NavnHeader> + <FolkeregisteretVisning data={personData} /> + </Box> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 92d78758ee9..5719039048e 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -2,17 +2,23 @@ import { Box, VStack, Tag } from '@navikt/ds-react' import { Simulate } from 'react-dom/test-utils' import click = Simulate.click import React, { useState } from 'react' -import { PersonVisning } from '@/pages/dollySoek/PersonVisning' + import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import { useTenorIdent } from '@/utils/hooks/useTenorSoek' +import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' export const TreffListe = ({ response }: any) => { if (!response) { return null } - console.log('response: ', response) //TODO - SLETT MEG + // console.log('response: ', response) //TODO - SLETT MEG + + const [valgtPerson, setValgtPerson] = useState(response?.data?.personer?.[0] || null) + const { person: valgtPersonData, loading, error } = useTenorIdent(valgtPerson?.identifikator) + + // console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG + // console.log('person: ', valgtPersonData) //TODO - SLETT MEG - const [valgtPerson, setValgtPerson] = useState(null) - console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG const antallTreff = response?.data?.treff return ( <div className="flexbox--flex-wrap"> @@ -54,20 +60,9 @@ export const TreffListe = ({ response }: any) => { </div> <div style={{ width: '68%', marginLeft: '2%', marginTop: '68px' }}> {valgtPerson && ( + <PersonVisning person={valgtPersonData?.data} /> // <div className="dolly-panel-content"> - <Box background="surface-default" padding="3"> - <SubOverskrift label="Persondetaljer" iconKind="personinformasjon" /> - <div className="person-visning_content"> - <TitleValue title="Navn" value={valgtPerson.visningnavn} /> - <TitleValue title="Ident" value={valgtPerson.identifikator} /> - <TitleValue title="Fødselsdato" value={valgtPerson.foedselsdato} /> - <TitleValue title="Kjønn" value={valgtPerson.kjoenn} /> - <TitleValue title="Personstatus" value={valgtPerson.personstatus} /> - <TitleValue title="Sivilstand" value={valgtPerson.sivilstand} /> - <TitleValue title="Bostedsadresse" value={valgtPerson.bostedsadresse} /> - <TitleValue title="Siste hendelse" value={valgtPerson.sisteHendelse} /> - </div> - </Box> + // </div> )} </div> diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx index 7908df0bfab..d419fed58d7 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx @@ -23,6 +23,27 @@ export const useTenorSoek = ( } } +export const useTenorIdent = (ident: string) => { + const { data, isLoading, error, mutate } = useSWR( + ident + ? [ + `${tenorSearchUrl}?kilde=FREG&type=AlleFelter`, + { + identifikator: ident, + }, + ] + : null, + ([url, headers]) => Request.post(url, headers), + ) + + return { + person: data, + loading: isLoading, + error: error, + mutate: mutate, + } +} + export const useTenorOversikt = (request: any, antall?: number, side?: number, seed?: number) => { const { data, isLoading, error, mutate } = useSWR( request ? [`${tenorSearchUrl}/oversikt`, request] : null, From f8cbd2e6a88a618c4fb28b1b34997320d8d63e93 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 29 Jan 2024 18:45:22 +0100 Subject: [PATCH 07/50] Inntektsvisning og generell visning med tabs --- .../resultatVisning/InntektVisning.tsx | 36 +++++++++++++++++ .../resultatVisning/PersonVisning.tsx | 2 + .../tenorSoek/resultatVisning/TabsVisning.tsx | 40 +++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx new file mode 100644 index 00000000000..737c532ea3f --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx @@ -0,0 +1,36 @@ +import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import { arrayToString } from '@/utils/DataFormatter' +import React from 'react' +import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' + +export const InntektVisning = ({ data }) => { + console.log('data: ', data) //TODO - SLETT MEG + if (!data || data.length < 1) { + return null + } + + return ( + <> + <SubOverskrift label={`Inntekt A-ordningen (${data.length})`} iconKind="inntektstub" /> + <div> + <DollyFieldArray data={data} header="" nested> + {(inntekt, idx: number) => { + return ( + <TabsVisning kildedata={inntekt.tenorMetadata?.kildedata}> + <TitleValue title="Periode" value={inntekt.periode} /> + <TitleValue title="Opplysningspliktig" value={inntekt.opplysningspliktig} /> + <TitleValue title="Inntektstype" value={arrayToString(inntekt.inntektstype)} /> + <TitleValue title="Beskrivelse" value={arrayToString(inntekt.beskrivelse)} /> + <TitleValue title="Forskuddstrekk" value={arrayToString(inntekt.forskuddstrekk)} /> + {/*Historikk: 0*/} + {/* Relasjoner:*/} + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index f9234acabba..49dc7beaf7f 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -2,6 +2,7 @@ import { Box } from '@navikt/ds-react' import React from 'react' import { FolkeregisteretVisning } from '@/pages/tenorSoek/resultatVisning/FolkeregisteretVisning' import styled from 'styled-components' +import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning' const NavnHeader = styled.h2` margin: 5px 0 15px 0; @@ -20,6 +21,7 @@ export const PersonVisning = ({ person }) => { <Box background="surface-default" padding="3"> <NavnHeader>{personData?.visningnavn}</NavnHeader> <FolkeregisteretVisning data={personData} /> + <InntektVisning data={personData?.tenorRelasjoner?.inntekt} /> </Box> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx new file mode 100644 index 00000000000..28419275632 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx @@ -0,0 +1,40 @@ +import { Tabs } from '@navikt/ds-react' +import { CodeView } from '@/components/codeView' +import React from 'react' +import styled from 'styled-components' + +const TabsVisningFormatter = styled.div` + width: 100%; + //word-break: break-word; + && { + .navds-tabs__tablist-wrapper { + margin-bottom: 20px; + } + } + &&& { + button { + position: static; + } + } +` +export const TabsVisning = ({ children, kildedata }: any) => { + const kildedataJson = JSON.parse(kildedata) + const kildedataPretty = JSON.stringify(kildedataJson, null, 2) + + return ( + <TabsVisningFormatter> + <Tabs defaultValue="nokkelinfo" size="small"> + <Tabs.List> + <Tabs.Tab value="nokkelinfo" label="NØKKELINFORMASJON" /> + <Tabs.Tab value="kildedata" label="KILDEDATA" /> + </Tabs.List> + <Tabs.Panel value="nokkelinfo"> + <div className="person-visning_content">{children}</div> + </Tabs.Panel> + <Tabs.Panel value="kildedata"> + <CodeView code={kildedataPretty} language="json" /> + </Tabs.Panel> + </Tabs> + </TabsVisningFormatter> + ) +} From 465c15cf503d603f89526677bbf7472e0e127ac7 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 30 Jan 2024 11:06:08 +0100 Subject: [PATCH 08/50] Div fix --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 2 +- .../FolkeregisteretVisning.tsx | 2 +- .../resultatVisning/InntektVisning.tsx | 2 +- .../resultatVisning/PersonVisning.tsx | 9 +++++-- .../tenorSoek/resultatVisning/TabsVisning.tsx | 3 +-- .../tenorSoek/resultatVisning/TreffListe.tsx | 27 ++++++++++++------- .../soekFormPartials/InntektAordningen.tsx | 2 +- 7 files changed, 29 insertions(+), 18 deletions(-) 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 ae2c54b4063..80f83ba0af9 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 @@ -27,7 +27,7 @@ export const SoekForm = () => { const [request, setRequest] = useState(null) // const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) const { response, loading, error, mutate } = useTenorOversikt(request) - console.log('response: ', response) //TODO - SLETT MEG + // console.log('response: ', response) //TODO - SLETT MEG // const { person: valgtPersonData } = useTenorIdent('22866198962') // console.log('valgtPersonData: ', valgtPersonData) //TODO - SLETT MEG diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index 4291133b4cc..ea81156e945 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -4,7 +4,7 @@ import React from 'react' import { formatDate, showLabel } from '@/utils/DataFormatter' export const FolkeregisteretVisning = ({ data }) => { - console.log('data: ', data) //TODO - SLETT MEG + // console.log('data: ', data) //TODO - SLETT MEG if (!data) { return null } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx index 737c532ea3f..5cc6468a74c 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx @@ -6,7 +6,7 @@ import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' export const InntektVisning = ({ data }) => { - console.log('data: ', data) //TODO - SLETT MEG + // console.log('data: ', data) //TODO - SLETT MEG if (!data || data.length < 1) { return null } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 49dc7beaf7f..e5e18e5621f 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -3,12 +3,17 @@ import React from 'react' import { FolkeregisteretVisning } from '@/pages/tenorSoek/resultatVisning/FolkeregisteretVisning' import styled from 'styled-components' import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning' +import Loading from '@/components/ui/loading/Loading' const NavnHeader = styled.h2` margin: 5px 0 15px 0; ` -export const PersonVisning = ({ person }) => { - console.log('person: ', person) //TODO - SLETT MEG +export const PersonVisning = ({ person, loading, error }) => { + // console.log('person: ', person) //TODO - SLETT MEG + if (loading) { + return <Loading label="Laster person..." /> + } + if (!person) { return null } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx index 28419275632..061ac0d8c4c 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx @@ -5,7 +5,6 @@ import styled from 'styled-components' const TabsVisningFormatter = styled.div` width: 100%; - //word-break: break-word; && { .navds-tabs__tablist-wrapper { margin-bottom: 20px; @@ -31,7 +30,7 @@ export const TabsVisning = ({ children, kildedata }: any) => { <Tabs.Panel value="nokkelinfo"> <div className="person-visning_content">{children}</div> </Tabs.Panel> - <Tabs.Panel value="kildedata"> + <Tabs.Panel value="kildedata" style={{ display: 'inline-grid', width: '100%' }}> <CodeView code={kildedataPretty} language="json" /> </Tabs.Panel> </Tabs> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 5719039048e..30b8028027f 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -1,24 +1,27 @@ import { Box, VStack, Tag } from '@navikt/ds-react' -import { Simulate } from 'react-dom/test-utils' -import click = Simulate.click -import React, { useState } from 'react' - -import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' -import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import React, { useEffect, useState } from 'react' import { useTenorIdent } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' export const TreffListe = ({ response }: any) => { if (!response) { return null } - // console.log('response: ', response) //TODO - SLETT MEG + console.log('response: ', response?.data?.personer) //TODO - SLETT MEG - const [valgtPerson, setValgtPerson] = useState(response?.data?.personer?.[0] || null) - const { person: valgtPersonData, loading, error } = useTenorIdent(valgtPerson?.identifikator) + const [valgtPerson, setValgtPerson] = useState(null) + const { + person: valgtPersonData, + loading: valgtPersonLoading, + error: valgtPersonError, + } = useTenorIdent(valgtPerson?.identifikator) // console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG // console.log('person: ', valgtPersonData) //TODO - SLETT MEG + useEffect(() => { + setValgtPerson(response?.data?.personer?.[0] || null) + }, [response]) + const antallTreff = response?.data?.treff return ( <div className="flexbox--flex-wrap"> @@ -60,7 +63,11 @@ export const TreffListe = ({ response }: any) => { </div> <div style={{ width: '68%', marginLeft: '2%', marginTop: '68px' }}> {valgtPerson && ( - <PersonVisning person={valgtPersonData?.data} /> + <PersonVisning + person={valgtPersonData?.data} + loading={valgtPersonLoading} + error={valgtPersonError} + /> // <div className="dolly-panel-content"> // </div> 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 4c8a183c7a9..60ff384004b 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 @@ -7,7 +7,7 @@ import { createOptions } from '@/pages/tenorSoek/utils' export const InntektAordningen = ({ formikBag, handleChange, getValue }: any) => { const { domain: beskrivelseOptions, loading, error } = useTenorDomain('AOrdningBeskrivelse') - console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG + // console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG return ( <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> <Accordion.Item defaultOpen={true}> From 9441a4c35aefbebecd56b958185c124adbfcf64c Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 1 Feb 2024 13:25:18 +0100 Subject: [PATCH 09/50] Generelt soek form, inntekt-form, changehandling --- .../src/components/ui/soekForm/SoekForm.tsx | 101 ++++++++++++++ .../main/js/src/pages/dollySoek/SoekForm.tsx | 123 ++++-------------- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 117 +++++++++++++---- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 21 +-- .../resultatVisning/PersonVisning.tsx | 8 +- .../tenorSoek/resultatVisning/TreffListe.tsx | 19 ++- .../soekFormPartials/InntektAordningen.tsx | 115 ++++++++++++---- 7 files changed, 336 insertions(+), 168 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx new file mode 100644 index 00000000000..2c68454af2a --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx @@ -0,0 +1,101 @@ +import styled from 'styled-components' +import React from 'react' + +export const SoekefeltWrapper = styled.div` + display: flex; + flex-direction: column; + margin-bottom: 20px; + background-color: white; + border: 1px @color-bg-grey-border; + border-radius: 4px; +` + +export const Soekefelt = styled.div` + padding: 20px 15px 5px 15px; +` + +export const SoekKategori = styled.div` + display: flex; + flex-wrap: wrap; + font-size: medium; + && { + .dolly-form-input { + min-width: 0; + flex-grow: 0; + } + } + && { + .navds-checkbox__icon { + margin-top: -4px; + } + } +` + +export const Buttons = styled.div` + margin: 15px 0 10px 0; + && { + button { + margin-right: 10px; + } + } +` + +const KategoriHeader = styled.div` + display: flex; + align-items: center; +` + +const KategoriCircle = styled.div` + display: flex; + width: 20px; + height: 20px; + border-radius: 50%; + margin-left: 10px; + background-color: #0067c5ff; + && { + p { + margin: auto; + margin-top: -1px; + font-size: 15px; + font-weight: bold; + color: white; + padding-bottom: 5px; + } + } +` + +export const Header = ({ title, antall }) => ( + <KategoriHeader> + <span>{title}</span> + {antall > 0 && ( + <KategoriCircle> + <p>{antall}</p> + </KategoriCircle> + )} + </KategoriHeader> +) + +export const requestIsEmpty = (updatedRequest) => { + let isEmpty = true + const flatten = (obj) => { + for (const i in obj) { + if (typeof obj[i] === 'object' && !Array.isArray(obj[i])) { + flatten(obj[i]) + } else { + if (Array.isArray(obj[i])) { + if (obj[i].length > 0) { + isEmpty = false + } + } else if (obj[i] !== null && obj[i] !== false && obj[i] !== '') { + isEmpty = false + } + } + } + } + flatten(updatedRequest) + return isEmpty +} + +// export const objectIsEmpty = (obj) => { +// return Object.keys(obj).length === 0 +// } 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 028526e1e07..70bbd24b04b 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 @@ -1,5 +1,4 @@ import '@/styles/variables.less' -import styled from 'styled-components' import { Form, Formik } from 'formik' import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import React, { SyntheticEvent, useState } from 'react' @@ -12,69 +11,14 @@ import { SoekRequest } from '@/pages/dollySoek/DollySoekTypes' import { ResultatVisning } from '@/pages/dollySoek/ResultatVisning' import * as _ from 'lodash-es' import { CypressSelector } from '../../../cypress/mocks/Selectors' - -const SoekefeltWrapper = styled.div` - display: flex; - flex-direction: column; - margin-bottom: 20px; - background-color: white; - border: 1px @color-bg-grey-border; - border-radius: 4px; -` - -const Soekefelt = styled.div` - padding: 20px 15px 5px 15px; -` - -const SoekKategori = styled.div` - display: flex; - flex-wrap: wrap; - font-size: medium; - && { - .dolly-form-input { - min-width: 0; - flex-grow: 0; - } - } - && { - .navds-checkbox__icon { - margin-top: -4px; - } - } -` - -const Buttons = styled.div` - margin: 15px 0 10px 0; - && { - button { - margin-right: 10px; - } - } -` - -const KategoriHeader = styled.div` - display: flex; - align-items: center; -` - -const KategoriCircle = styled.div` - display: flex; - width: 20px; - height: 20px; - border-radius: 50%; - margin-left: 10px; - background-color: #0067c5ff; - && { - p { - margin: auto; - margin-top: -1px; - font-size: 15px; - font-weight: bold; - color: white; - padding-bottom: 5px; - } - } -` +import { + Buttons, + Header, + requestIsEmpty, + Soekefelt, + SoekefeltWrapper, + SoekKategori, +} from '@/components/ui/soekForm/SoekForm' const initialValues = { typer: [], @@ -115,17 +59,6 @@ const initialValues = { }, } -const Header = ({ title, antall }) => ( - <KategoriHeader> - <span>{title}</span> - {antall > 0 && ( - <KategoriCircle> - <p>{antall}</p> - </KategoriCircle> - )} - </KategoriHeader> -) - export const SoekForm = () => { const [request, setRequest] = useState(null) const { result, loading, error, mutate } = useSoekIdenter(request) @@ -139,26 +72,26 @@ export const SoekForm = () => { const initialValuesClone = _.cloneDeep(initialValues) - const requestIsEmpty = (updatedRequest) => { - let isEmpty = true - const flatten = (obj) => { - for (const i in obj) { - if (typeof obj[i] === 'object' && !Array.isArray(obj[i])) { - flatten(obj[i]) - } else { - if (Array.isArray(obj[i])) { - if (obj[i].length > 0) { - isEmpty = false - } - } else if (obj[i] !== null && obj[i] !== false && obj[i] !== '') { - isEmpty = false - } - } - } - } - flatten(updatedRequest) - return isEmpty - } + // const requestIsEmpty = (updatedRequest) => { + // let isEmpty = true + // const flatten = (obj) => { + // for (const i in obj) { + // if (typeof obj[i] === 'object' && !Array.isArray(obj[i])) { + // flatten(obj[i]) + // } else { + // if (Array.isArray(obj[i])) { + // if (obj[i].length > 0) { + // isEmpty = false + // } + // } else if (obj[i] !== null && obj[i] !== false && obj[i] !== '') { + // isEmpty = false + // } + // } + // } + // } + // flatten(updatedRequest) + // return isEmpty + // } return ( <> 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 80f83ba0af9..440d39c70d7 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 @@ -3,11 +3,13 @@ import { initialValues } from '@/pages/tenorSoek/InitialValues' import styled from 'styled-components' import { Accordion } from '@navikt/ds-react' import { InntektAordningen } from '@/pages/tenorSoek/soekFormPartials/InntektAordningen' -import { useState } from 'react' +import React, { useState } from 'react' import { useTenorIdent, useTenorOversikt, useTenorSoek } from '@/utils/hooks/useTenorSoek' import { SoekRequest } from '@/pages/dollySoek/DollySoekTypes' import * as _ from 'lodash-es' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' +import { Header, requestIsEmpty } from '@/components/ui/soekForm/SoekForm' +import DisplayFormikState from '@/utils/DisplayFormikState' const SoekefeltWrapper = styled.div` display: flex; @@ -22,31 +24,80 @@ const Soekefelt = styled.div` padding: 20px 15px 5px 15px; ` -// export const SoekForm = ({request, setRequest, mutate}) => { -export const SoekForm = () => { - const [request, setRequest] = useState(null) - // const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) - const { response, loading, error, mutate } = useTenorOversikt(request) - // console.log('response: ', response) //TODO - SLETT MEG - - // const { person: valgtPersonData } = useTenorIdent('22866198962') - // console.log('valgtPersonData: ', valgtPersonData) //TODO - SLETT MEG - const handleSubmit = (request: SoekRequest) => { - setRequest(request) - mutate() - } +export const SoekForm = ({ request, setRequest, mutate }) => { + // const handleSubmit = (request: SoekRequest) => { + // setRequest(request) + // mutate() + // } return ( <> <SoekefeltWrapper> <Soekefelt> {/*<Formik initialValues={initialValues} onSubmit={(request) => handleSubmit(request)}>*/} - <Formik initialValues={initialValues} onSubmit={() => console.log('submit...')}> + <Formik initialValues={{}} onSubmit={() => console.log('submit...')}> {(formikBag) => { + const handleChangeGammel = (value: any, path: string) => { + console.log('value: ', value) //TODO - SLETT MEG + const updatedRequest = value + ? _.set(formikBag.values, path, value) + : _.omit(formikBag.values, path) + // console.log('formikBag.values: ', formikBag.values) //TODO - SLETT MEG + // console.log('updatedRequest: ', updatedRequest) //TODO - SLETT MEG + setRequest(updatedRequest) + if (value) { + formikBag.setFieldValue(path, value) + } else { + formikBag.setFieldValue(path, undefined) + } + mutate() + } + const handleChange = (value: any, path: string) => { - const updatedRequest = _.set(formikBag.values, path, value) + console.log('value: ', value === '') //TODO - SLETT MEG + const kategori = path.split('.')[0] + const updatedRequest = + value !== null && value !== '' + ? _.set(formikBag.values, path, value) + : _.omit(formikBag.values, path) + if (Object.keys(_.get(updatedRequest, kategori))?.length === 0) { + setRequest(_.omit(updatedRequest, kategori)) + formikBag.setFieldValue(kategori, undefined) + } else { + setRequest(updatedRequest) + if (value !== null && value !== '') { + formikBag.setFieldValue(path, value) + } else { + formikBag.setFieldValue(path, undefined) + } + } + mutate() + // TODO: sjekk om alle verdier OG inderkategorier er tomme + } + + // const handleChange = (value: any, path: string, kategori: string) => { + // if (value || value === false) { + // formikBag.setFieldValue(path, value) + // } else { + // formikBag.setFieldValue(path, undefined) + // } + // if (Object.keys(_.get(formikBag.values, kategori))?.length === 0) { + // formikBag.setFieldValue(kategori, undefined) + // } + // setRequest(formikBag.values) + // console.log('request: ', request) //TODO - SLETT MEG + // mutate() + // } + + const handleChangeList = (value: any, path: string) => { + // console.log('value: ', value) //TODO - SLETT MEG + const list = value.map((item: any) => item.value) + const updatedRequest = _.set(formikBag.values, path, list) + // if (requestIsEmpty(updatedRequest)) { + // setRequest(null) + // } else { setRequest(updatedRequest) - formikBag.setFieldValue(path, value) + // } mutate() } @@ -54,21 +105,37 @@ export const SoekForm = () => { return _.get(formikBag.values, path) } + const devEnabled = + window.location.hostname.includes('localhost') || + window.location.hostname.includes('dolly-frontend-dev') + return ( - <Form className="flexbox--flex-wrap" autoComplete="off"> - <InntektAordningen - formikBag={formikBag} - handleChange={handleChange} - getValue={getValue} - /> - </Form> + <> + <Form className="flexbox--flex-wrap" autoComplete="off"> + <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> + <Accordion.Item defaultOpen={true}> + <Accordion.Header> + <Header title="Inntekt A-ordningen" antall={0} /> + </Accordion.Header> + <Accordion.Content> + <InntektAordningen + formikBag={formikBag} + handleChange={handleChange} + handleChangeList={handleChangeList} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + </Accordion> + </Form> + {devEnabled && <DisplayFormikState {...formikBag} />} + </> // TODO sett inn chips her? ) }} </Formik> </Soekefelt> </SoekefeltWrapper> - <TreffListe response={response?.data} loading={loading} error={error} /> </> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index 8469bf025e9..b43c23b931c 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -1,24 +1,14 @@ import Title from '@/components/Title' import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import { bottom } from '@popperjs/core' -import { useTenorDomain, useTenorSoek } from '@/utils/hooks/useTenorSoek' +import { useTenorOversikt } from '@/utils/hooks/useTenorSoek' import { SoekForm } from '@/pages/tenorSoek/SoekForm' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' import { useState } from 'react' export default () => { - // const request = { - // inntektAordningen: { - // beskrivelse: 'ReiseKostMedOvernattingPaaHybelMedKokEllerPrivat', - // }, - // } - // - // const { response, loading: isLoading, error: isError } = useTenorSoek('Noekkelinfo', request) - // console.log('response: ', response) //TODO - SLETT MEG - - // const [request, setRequest] = useState(null) - // const { response, loading, error, mutate } = useTenorSoek('Noekkelinfo', request) - // console.log('response: ', response) //TODO - SLETT MEG + const [request, setRequest] = useState({}) // Evt. bruk null for aa ikke hente data ved oppstart + const { response, loading, error, mutate } = useTenorOversikt(request) return ( <div> @@ -26,9 +16,8 @@ export default () => { <Title title="Søk etter personer i Tenor" /> <Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst> </div> - {/*<SoekForm request={request} setRequest={setRequest}/>*/} - <SoekForm /> - {/*<TreffListe />*/} + <SoekForm request={request} setRequest={setRequest} mutate={mutate} /> + <TreffListe response={response?.data} loading={loading} error={error} /> </div> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index e5e18e5621f..3dd71276820 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -1,4 +1,4 @@ -import { Box } from '@navikt/ds-react' +import { Alert, Box } from '@navikt/ds-react' import React from 'react' import { FolkeregisteretVisning } from '@/pages/tenorSoek/resultatVisning/FolkeregisteretVisning' import styled from 'styled-components' @@ -11,7 +11,11 @@ const NavnHeader = styled.h2` export const PersonVisning = ({ person, loading, error }) => { // console.log('person: ', person) //TODO - SLETT MEG if (loading) { - return <Loading label="Laster person..." /> + return <Loading label="Laster person ..." /> + } + + if (error) { + return <Alert variant="error">{`Feil ved henting av person: ${error}`}</Alert> } if (!person) { diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 30b8028027f..1d822aef4f0 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -1,12 +1,25 @@ -import { Box, VStack, Tag } from '@navikt/ds-react' +import { Box, VStack, Tag, Alert } from '@navikt/ds-react' import React, { useEffect, useState } from 'react' import { useTenorIdent } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' -export const TreffListe = ({ response }: any) => { +import Loading from '@/components/ui/loading/Loading' +export const TreffListe = ({ response, loading, error }: any) => { + if (loading) { + return <Loading label="Laster treff ..." /> + } + + if (error || response?.error) { + return ( + <Alert variant="error" size="small">{`Feil ved henting av personer: ${ + error || response?.error + }`}</Alert> + ) + } + if (!response) { return null } - console.log('response: ', response?.data?.personer) //TODO - SLETT MEG + // console.log('response: ', response?.data?.personer) //TODO - SLETT MEG const [valgtPerson, setValgtPerson] = useState(null) const { 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 60ff384004b..5c4ed750e04 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 @@ -4,34 +4,95 @@ import { SelectOptionsManager as Options } from '@/service/SelectOptions' import { FormikSelect } from '@/components/ui/form/inputs/select/Select' import { useTenorDomain } from '@/utils/hooks/useTenorSoek' import { createOptions } from '@/pages/tenorSoek/utils' +import { Header, SoekKategori } from '@/components/ui/soekForm/SoekForm' +import * as _ from 'lodash-es' +import { FormikDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' +import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' +import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' -export const InntektAordningen = ({ formikBag, handleChange, getValue }: any) => { - const { domain: beskrivelseOptions, loading, error } = useTenorDomain('AOrdningBeskrivelse') - // console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG +export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, getValue }: any) => { + const { domain: inntektstypeOptions } = useTenorDomain('Inntektstype') + const { domain: beskrivelseOptions } = useTenorDomain('AOrdningBeskrivelse') + const { domain: forskuddstrekkOptions } = useTenorDomain('Forskuddstrekk') + console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG return ( - <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> - <Accordion.Item defaultOpen={true}> - <Accordion.Header> - <span>Inntekt A-ordningen</span> - </Accordion.Header> - <Accordion.Content> - <div className="flexbox--full-width"> - <div className="flexbox--flex-wrap"> - <FormikSelect - name="inntektAordningen.beskrivelse" - options={createOptions(beskrivelseOptions?.data)} - size="large" - label="Beskrivelse" - // placeholder="Velg beskrivelse ..." - onChange={(val: SyntheticEvent) => - handleChange(val?.value || null, 'inntektAordningen.beskrivelse') - } - value={getValue('inntektAordningen.beskrivelse')} - /> - </div> - </div> - </Accordion.Content> - </Accordion.Item> - </Accordion> + <SoekKategori> + <Monthpicker + name="inntekt.periode.fraOgMed" + label="Periode f.o.m. dato" + handleDateChange={(val: Date) => { + handleChange(val ? val.toISOString().substr(0, 7) : '', 'inntekt.periode.fraOgMed') + }} + date={getValue('inntekt.periode.fraOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <Monthpicker + name="inntekt.periode.tilOgMed" + label="Periode t.o.m. dato" + handleDateChange={(val: Date) => { + handleChange(val ? val.toISOString().substr(0, 7) : '', 'inntekt.periode.tilOgMed') + }} + date={getValue('inntekt.periode.tilOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikTextInput + name="inntekt.opplysningspliktig" + label="Opplysningspliktig org.nr." + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'inntekt.opplysningspliktig') + } + // value={getValue('inntekt.opplysningspliktig')} + visHvisAvhuket={false} + fastfield={false} + /> + <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> + <FormikSelect + name="inntekt.inntektstyper" + options={createOptions(inntektstypeOptions?.data)} + isMulti={true} + size="grow" + label="Inntektstyper" + // placeholder="Velg beskrivelse ..." + onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'inntekt.inntektstyper')} + value={getValue('inntekt.inntektstyper')} + /> + <FormikSelect + name="inntekt.forskuddstrekk" + options={createOptions(forskuddstrekkOptions?.data)} + isMulti={true} + size="grow" + label="Forskuddstrekk" + // placeholder="Velg beskrivelse ..." + onChange={(val: SyntheticEvent) => + handleChangeList(val || null, 'inntekt.forskuddstrekk') + } + value={getValue('inntekt.forskuddstrekk')} + /> + </div> + <FormikSelect + name="inntekt.beskrivelse" + options={createOptions(beskrivelseOptions?.data)} + size="large" + label="Beskrivelse" + // placeholder="Velg beskrivelse ..." + // onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'inntekt.beskrivelse')} + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'inntekt.beskrivelse')} + value={getValue('inntekt.beskrivelse')} + /> + {/*<div className="flexbox--full-width" style={{ fontSize: 'medium' }}>*/} + {/* */} + {/*</div>*/} + <FormikSelect + name="inntekt.harHistorikk" + options={Options('boolean')} + size="small" + label="Har historikk" + // placeholder="Velg beskrivelse ..." + onChange={(val: boolean) => handleChange(val?.value, 'inntekt.harHistorikk')} + value={getValue('inntekt.harHistorikk')} + /> + </SoekKategori> ) } From a90eb6134b7fdf85d9d77fec11813e721d374001 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 1 Feb 2024 17:56:13 +0100 Subject: [PATCH 10/50] Brreg soek-form og visning --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 168 ++++++++---------- ...etsregisteretForetaksregisteretVisning.tsx | 65 +++++++ .../resultatVisning/InntektVisning.tsx | 5 +- .../resultatVisning/PersonVisning.tsx | 5 + .../EnhetsregisteretForetaksregisteret.tsx | 28 +++ 5 files changed, 175 insertions(+), 96 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx 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 440d39c70d7..d21116be3c1 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 @@ -10,6 +10,7 @@ import * as _ from 'lodash-es' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' import { Header, requestIsEmpty } from '@/components/ui/soekForm/SoekForm' import DisplayFormikState from '@/utils/DisplayFormikState' +import { EnhetsregisteretForetaksregisteret } from '@/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret' const SoekefeltWrapper = styled.div` display: flex; @@ -31,111 +32,92 @@ export const SoekForm = ({ request, setRequest, mutate }) => { // } return ( - <> - <SoekefeltWrapper> - <Soekefelt> - {/*<Formik initialValues={initialValues} onSubmit={(request) => handleSubmit(request)}>*/} - <Formik initialValues={{}} onSubmit={() => console.log('submit...')}> - {(formikBag) => { - const handleChangeGammel = (value: any, path: string) => { - console.log('value: ', value) //TODO - SLETT MEG - const updatedRequest = value + <SoekefeltWrapper> + <Soekefelt> + {/*<Formik initialValues={initialValues} onSubmit={(request) => handleSubmit(request)}>*/} + <Formik initialValues={{}} onSubmit={() => console.log('submit...')}> + {(formikBag) => { + const handleChange = (value: any, path: string) => { + console.log('value: ', value === '') //TODO - SLETT MEG + const kategori = path.split('.')[0] + const updatedRequest = + value !== null && value !== '' ? _.set(formikBag.values, path, value) : _.omit(formikBag.values, path) - // console.log('formikBag.values: ', formikBag.values) //TODO - SLETT MEG - // console.log('updatedRequest: ', updatedRequest) //TODO - SLETT MEG + if (Object.keys(_.get(updatedRequest, kategori))?.length === 0) { + setRequest(_.omit(updatedRequest, kategori)) + formikBag.setFieldValue(kategori, undefined) + } else { setRequest(updatedRequest) - if (value) { + if (value !== null && value !== '') { formikBag.setFieldValue(path, value) } else { formikBag.setFieldValue(path, undefined) } - mutate() } + mutate() + // TODO: sjekk om alle verdier OG underkategorier er tomme + } - const handleChange = (value: any, path: string) => { - console.log('value: ', value === '') //TODO - SLETT MEG - const kategori = path.split('.')[0] - const updatedRequest = - value !== null && value !== '' - ? _.set(formikBag.values, path, value) - : _.omit(formikBag.values, path) - if (Object.keys(_.get(updatedRequest, kategori))?.length === 0) { - setRequest(_.omit(updatedRequest, kategori)) - formikBag.setFieldValue(kategori, undefined) - } else { - setRequest(updatedRequest) - if (value !== null && value !== '') { - formikBag.setFieldValue(path, value) - } else { - formikBag.setFieldValue(path, undefined) - } - } - mutate() - // TODO: sjekk om alle verdier OG inderkategorier er tomme - } - - // const handleChange = (value: any, path: string, kategori: string) => { - // if (value || value === false) { - // formikBag.setFieldValue(path, value) - // } else { - // formikBag.setFieldValue(path, undefined) - // } - // if (Object.keys(_.get(formikBag.values, kategori))?.length === 0) { - // formikBag.setFieldValue(kategori, undefined) - // } - // setRequest(formikBag.values) - // console.log('request: ', request) //TODO - SLETT MEG - // mutate() + const handleChangeList = (value: any, path: string) => { + // console.log('value: ', value) //TODO - SLETT MEG + const list = value.map((item: any) => item.value) + const updatedRequest = _.set(formikBag.values, path, list) + // if (requestIsEmpty(updatedRequest)) { + // setRequest(null) + // } else { + setRequest(updatedRequest) // } + mutate() + // TODO: tilpass denne også + } - const handleChangeList = (value: any, path: string) => { - // console.log('value: ', value) //TODO - SLETT MEG - const list = value.map((item: any) => item.value) - const updatedRequest = _.set(formikBag.values, path, list) - // if (requestIsEmpty(updatedRequest)) { - // setRequest(null) - // } else { - setRequest(updatedRequest) - // } - mutate() - } - - const getValue = (path: string) => { - return _.get(formikBag.values, path) - } + const getValue = (path: string) => { + return _.get(formikBag.values, path) + } - const devEnabled = - window.location.hostname.includes('localhost') || - window.location.hostname.includes('dolly-frontend-dev') + const devEnabled = + window.location.hostname.includes('localhost') || + window.location.hostname.includes('dolly-frontend-dev') - return ( - <> - <Form className="flexbox--flex-wrap" autoComplete="off"> - <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> - <Accordion.Item defaultOpen={true}> - <Accordion.Header> - <Header title="Inntekt A-ordningen" antall={0} /> - </Accordion.Header> - <Accordion.Content> - <InntektAordningen - formikBag={formikBag} - handleChange={handleChange} - handleChangeList={handleChangeList} - getValue={getValue} - /> - </Accordion.Content> - </Accordion.Item> - </Accordion> - </Form> - {devEnabled && <DisplayFormikState {...formikBag} />} - </> - // TODO sett inn chips her? - ) - }} - </Formik> - </Soekefelt> - </SoekefeltWrapper> - </> + return ( + <> + <Form className="flexbox--flex-wrap" autoComplete="off"> + <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> + <Accordion.Item defaultOpen={true}> + <Accordion.Header> + <Header title="Inntekt A-ordningen" antall={0} /> + </Accordion.Header> + <Accordion.Content> + <InntektAordningen + formikBag={formikBag} + handleChange={handleChange} + handleChangeList={handleChangeList} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header title="Enhetsregisteret og Foretaksregisteret" antall={0} /> + </Accordion.Header> + <Accordion.Content> + <EnhetsregisteretForetaksregisteret + formikBag={formikBag} + handleChangeList={handleChangeList} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + </Accordion> + </Form> + {devEnabled && <DisplayFormikState {...formikBag} />} + </> + // TODO sett inn chips her? + ) + }} + </Formik> + </Soekefelt> + </SoekefeltWrapper> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx new file mode 100644 index 00000000000..f7073d37d2e --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx @@ -0,0 +1,65 @@ +import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' +import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' +import { arrayToString } from '@/utils/DataFormatter' +import React from 'react' + +export const EnhetsregisteretForetaksregisteretVisning = ({ data }) => { + if (!data || data.length < 1) { + return null + } + + return ( + <> + <SubOverskrift + label={`Enhetsregisteret og Foretaksregisteret (${data.length})`} + iconKind="brreg" + /> + <div> + <DollyFieldArray data={data} header="" nested> + {(organisasjon, idx: number) => { + return ( + <TabsVisning kildedata={organisasjon.tenorMetadata?.kildedata}> + <TitleValue title="Organisasjonsnummer" value={organisasjon.organisasjonsnummer} /> + <TitleValue + title="Organisasjonsform" + value={organisasjon.organisasjonsform?.kode} + /> + <TitleValue + title="Beskrivelse" + value={organisasjon.organisasjonsform?.beskrivelse} + /> + <TitleValue title="Navn" value={organisasjon.navn} /> + <TitleValue + title="Adresse" + value={arrayToString(organisasjon.forretningsadresse?.adresse)} + /> + <TitleValue + title="Postnummer" + value={organisasjon.forretningsadresse?.postnummer} + /> + <TitleValue title="Poststed" value={organisasjon.forretningsadresse?.poststed} /> + <TitleValue + title="Kommunenummer" + value={organisasjon.forretningsadresse?.kommunenummer} + /> + <TitleValue title="Kommune" value={organisasjon.forretningsadresse?.kommune} /> + <TitleValue + title="Reg. i Enhetsregisteret" + value={organisasjon.registreringsdatoEnhetsregisteret} + /> + <TitleValue title="Næringskode" value={arrayToString(organisasjon.naeringKode)} /> + <TitleValue + title="Næringsbeskrivelse" + value={arrayToString(organisasjon.naeringBeskrivelse)} + /> + {/* Relasjoner:*/} + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx index 5cc6468a74c..9f874b65790 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx @@ -1,12 +1,11 @@ import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' import { TitleValue } from '@/components/ui/titleValue/TitleValue' -import { arrayToString } from '@/utils/DataFormatter' +import { arrayToString, oversettBoolean } from '@/utils/DataFormatter' import React from 'react' import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' export const InntektVisning = ({ data }) => { - // console.log('data: ', data) //TODO - SLETT MEG if (!data || data.length < 1) { return null } @@ -24,7 +23,7 @@ export const InntektVisning = ({ data }) => { <TitleValue title="Inntektstype" value={arrayToString(inntekt.inntektstype)} /> <TitleValue title="Beskrivelse" value={arrayToString(inntekt.beskrivelse)} /> <TitleValue title="Forskuddstrekk" value={arrayToString(inntekt.forskuddstrekk)} /> - {/*Historikk: 0*/} + <TitleValue title="Har historikk" value={oversettBoolean(inntekt.harHistorikk)} /> {/* Relasjoner:*/} </TabsVisning> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 3dd71276820..394b0784ae3 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -1,9 +1,11 @@ import { Alert, Box } from '@navikt/ds-react' import React from 'react' +import * as _ from 'lodash-es' import { FolkeregisteretVisning } from '@/pages/tenorSoek/resultatVisning/FolkeregisteretVisning' import styled from 'styled-components' import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning' import Loading from '@/components/ui/loading/Loading' +import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning' const NavnHeader = styled.h2` margin: 5px 0 15px 0; @@ -30,6 +32,9 @@ export const PersonVisning = ({ person, loading, error }) => { <Box background="surface-default" padding="3"> <NavnHeader>{personData?.visningnavn}</NavnHeader> <FolkeregisteretVisning data={personData} /> + <EnhetsregisteretForetaksregisteretVisning + data={_.get(personData, 'tenorRelasjoner.brreg-er-fr')} + /> <InntektVisning data={personData?.tenorRelasjoner?.inntekt} /> </Box> ) 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 new file mode 100644 index 00000000000..445c25d7a8f --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret.tsx @@ -0,0 +1,28 @@ +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import React, { SyntheticEvent } from 'react' +import { createOptions } from '@/pages/tenorSoek/utils' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' + +export const EnhetsregisteretForetaksregisteret = ({ + formikBag, + handleChangeList, + getValue, +}: any) => { + const { domain: rollerOptions } = useTenorDomain('Roller') + return ( + <SoekKategori> + <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> + <FormikSelect + name="roller" + options={createOptions(rollerOptions?.data)} + isMulti={true} + size="grow" + label="Roller" + onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'roller')} + value={getValue('roller')} + /> + </div> + </SoekKategori> + ) +} From 3399a5555ad6ca8c9967add15488ebf85065c7cd Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 2 Feb 2024 11:49:30 +0100 Subject: [PATCH 11/50] Folkeregisteret-form paabegynt --- .../src/components/ui/soekForm/SoekForm.tsx | 1 + .../main/js/src/pages/tenorSoek/SoekForm.tsx | 18 ++++- .../FolkeregisteretVisning.tsx | 7 +- .../resultatVisning/PersonVisning.tsx | 1 - .../tenorSoek/resultatVisning/TabsVisning.tsx | 11 ++- .../soekFormPartials/Folkeregisteret.tsx | 74 +++++++++++++++++++ 6 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx index 2c68454af2a..4058fa54769 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx @@ -18,6 +18,7 @@ export const SoekKategori = styled.div` display: flex; flex-wrap: wrap; font-size: medium; + && { .dolly-form-input { min-width: 0; 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 d21116be3c1..290da54ae75 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 @@ -11,6 +11,7 @@ import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' import { Header, requestIsEmpty } from '@/components/ui/soekForm/SoekForm' import DisplayFormikState from '@/utils/DisplayFormikState' import { EnhetsregisteretForetaksregisteret } from '@/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret' +import { Folkeregisteret } from '@/pages/tenorSoek/soekFormPartials/Folkeregisteret' const SoekefeltWrapper = styled.div` display: flex; @@ -85,10 +86,23 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <Form className="flexbox--flex-wrap" autoComplete="off"> <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> <Accordion.Item defaultOpen={true}> + <Accordion.Header> + <Header title="Folkeregisteret" antall={0} /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <Folkeregisteret + formikBag={formikBag} + handleChange={handleChange} + handleChangeList={handleChangeList} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> <Accordion.Header> <Header title="Inntekt A-ordningen" antall={0} /> </Accordion.Header> - <Accordion.Content> + <Accordion.Content style={{ paddingRight: '0' }}> <InntektAordningen formikBag={formikBag} handleChange={handleChange} @@ -101,7 +115,7 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <Accordion.Header> <Header title="Enhetsregisteret og Foretaksregisteret" antall={0} /> </Accordion.Header> - <Accordion.Content> + <Accordion.Content style={{ paddingRight: '0' }}> <EnhetsregisteretForetaksregisteret formikBag={formikBag} handleChangeList={handleChangeList} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index ea81156e945..a46748b10c7 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -2,6 +2,7 @@ import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' import { TitleValue } from '@/components/ui/titleValue/TitleValue' import React from 'react' import { formatDate, showLabel } from '@/utils/DataFormatter' +import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' export const FolkeregisteretVisning = ({ data }) => { // console.log('data: ', data) //TODO - SLETT MEG @@ -12,7 +13,7 @@ export const FolkeregisteretVisning = ({ data }) => { return ( <> <SubOverskrift label="Folkeregisteret" iconKind="personinformasjon" /> - <div className="person-visning_content"> + <TabsVisning kildedata={data.tenorMetadata?.kildedata}> <TitleValue title="Identifikator" value={data.identifikator} /> <TitleValue title="Navn" value={data.visningnavn} /> <TitleValue title="Fødselsdato" value={formatDate(data.foedselsdato)} /> @@ -23,12 +24,10 @@ export const FolkeregisteretVisning = ({ data }) => { title="Adressebeskyttelse" value={showLabel('gradering', data.adresseBeskyttelse)} /> - {/*// evt adresseGradering som er en array?*/} <TitleValue title="Bostedsadresse" value={data.bostedsadresse} /> <TitleValue title="Siste hendelse" value={data.sisteHendelse} /> {/*// Relasjoner:*/} - {/*// Kildedata:*/} - </div> + </TabsVisning> </> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 394b0784ae3..660b6ce3c42 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -23,7 +23,6 @@ export const PersonVisning = ({ person, loading, error }) => { if (!person) { return null } - // TODO check for errors const personData = person.data?.dokumentListe?.[0] // TODO maa kanskje ta med flere personer hvis lista er lengre? diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx index 061ac0d8c4c..14ff8942f67 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx @@ -30,7 +30,16 @@ export const TabsVisning = ({ children, kildedata }: any) => { <Tabs.Panel value="nokkelinfo"> <div className="person-visning_content">{children}</div> </Tabs.Panel> - <Tabs.Panel value="kildedata" style={{ display: 'inline-grid', width: '100%' }}> + <Tabs.Panel + value="kildedata" + style={{ + display: 'inline-grid', + width: '100%', + maxHeight: '600px', + overflowX: 'auto', + marginBottom: '15px', + }} + > <CodeView code={kildedataPretty} language="json" /> </Tabs.Panel> </Tabs> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx new file mode 100644 index 00000000000..a395674e989 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx @@ -0,0 +1,74 @@ +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' +import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import React, { SyntheticEvent } from 'react' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import { createOptions } from '@/pages/tenorSoek/utils' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormikDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' + +export const Folkeregisteret = ({ formikBag, handleChange, handleChangeList, getValue }: any) => { + const { domain: identifikatorTypeOptions } = useTenorDomain('IdentifikatorType') + const { domain: kjoennOptions } = useTenorDomain('Kjoenn') + + return ( + <SoekKategori> + <FormikTextInput + name="identifikator" + label="Fødselsnummer / D-nummer" + onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'identifikator')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikSelect + name="identifikatorType" + options={createOptions(identifikatorTypeOptions?.data)} + // size="medium" + label="Identifikatortype" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'identifikatorType')} + value={getValue('identifikatorType')} + /> + <FormikDatepicker + name="foedselsdato.fraOgMed" + label="Fødselsdato f.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.fraOgMed')} + date={getValue('foedselsdato.fraOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikDatepicker + name="foedselsdato.tilOgMed" + label="Fødselsdato t.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.tilOgMed')} + date={getValue('foedselsdato.tilOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikDatepicker + name="doedsdato.fraOgMed" + label="Dødsdato f.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.fraOgMed')} + date={getValue('doedsdato.fraOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikDatepicker + name="doedsdato.tilOgMed" + label="Dødsdato t.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.tilOgMed')} + date={getValue('doedsdato.tilOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikSelect + name="kjoenn" + options={createOptions(kjoennOptions?.data)} + // size="medium" + label="Kjønn" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'kjoenn')} + value={getValue('kjoenn')} + /> + </SoekKategori> + ) +} From 4690e2faed249b96c89ba1c9f9767341a0b73e4b Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Wed, 7 Feb 2024 14:21:40 +0100 Subject: [PATCH 12/50] Freg soekform ferdig --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 84 ++++++++- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 2 +- .../soekFormPartials/Folkeregisteret.tsx | 74 -------- .../FolkeregisteretAdresse.tsx | 92 +++++++++ .../FolkeregisteretHendelser.tsx | 32 ++++ .../FolkeregisteretIdentifikasjonStatus.tsx | 176 ++++++++++++++++++ .../soekFormPartials/FolkeregisteretNavn.tsx | 61 ++++++ .../FolkeregisteretRelasjoner.tsx | 126 +++++++++++++ .../FolkeregisteretStatsborgerskap.tsx | 31 +++ .../soekFormPartials/InntektAordningen.tsx | 2 +- 10 files changed, 601 insertions(+), 79 deletions(-) delete mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx 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 290da54ae75..a05fea4bfb9 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 @@ -11,7 +11,12 @@ import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' import { Header, requestIsEmpty } from '@/components/ui/soekForm/SoekForm' import DisplayFormikState from '@/utils/DisplayFormikState' import { EnhetsregisteretForetaksregisteret } from '@/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret' -import { Folkeregisteret } from '@/pages/tenorSoek/soekFormPartials/Folkeregisteret' +import { FolkeregisteretIdentifikasjonStatus } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus' +import { FolkeregisteretStatsborgerskap } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap' +import { FolkeregisteretNavn } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn' +import { FolkeregisteretAdresse } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse' +import { FolkeregisteretRelasjoner } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner' +import { FolkeregisteretHendelser } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser' const SoekefeltWrapper = styled.div` display: flex; @@ -56,6 +61,8 @@ export const SoekForm = ({ request, setRequest, mutate }) => { formikBag.setFieldValue(path, undefined) } } + console.log('updatedRequest: ', updatedRequest) //TODO - SLETT MEG + console.log('formikBag.values: ', formikBag.values) //TODO - SLETT MEG mutate() // TODO: sjekk om alle verdier OG underkategorier er tomme } @@ -73,6 +80,13 @@ export const SoekForm = ({ request, setRequest, mutate }) => { // TODO: tilpass denne også } + const handleChangeBoolean = (value: boolean, path: string) => { + const updatedRequest = _.set(formikBag.values, path, value) + setRequest(updatedRequest) + formikBag.setFieldValue(path, value) + mutate() + } + const getValue = (path: string) => { return _.get(formikBag.values, path) } @@ -87,13 +101,77 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> <Accordion.Item defaultOpen={true}> <Accordion.Header> - <Header title="Folkeregisteret" antall={0} /> + <Header title="Folkeregisteret - identifikasjon og status" antall={0} /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> - <Folkeregisteret + <FolkeregisteretIdentifikasjonStatus formikBag={formikBag} handleChange={handleChange} handleChangeList={handleChangeList} + handleChangeBoolean={handleChangeBoolean} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header title="Folkeregisteret - statsborgerskap" antall={0} /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretStatsborgerskap + formikBag={formikBag} + handleChangeBoolean={handleChangeBoolean} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header title="Folkeregisteret - navn" antall={0} /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretNavn + formikBag={formikBag} + handleChange={handleChange} + handleChangeBoolean={handleChangeBoolean} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header title="Folkeregisteret - adresser" antall={0} /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretAdresse + formikBag={formikBag} + handleChange={handleChange} + handleChangeBoolean={handleChangeBoolean} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header title="Folkeregisteret - relasjoner" antall={0} /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretRelasjoner + formikBag={formikBag} + handleChange={handleChange} + handleChangeBoolean={handleChangeBoolean} + getValue={getValue} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header title="Folkeregisteret - hendelser" antall={0} /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretHendelser + formikBag={formikBag} + handleChange={handleChange} getValue={getValue} /> </Accordion.Content> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index b43c23b931c..c8587d4df67 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -9,7 +9,7 @@ import { useState } from 'react' export default () => { const [request, setRequest] = useState({}) // Evt. bruk null for aa ikke hente data ved oppstart const { response, loading, error, mutate } = useTenorOversikt(request) - + console.log('request: ', request) //TODO - SLETT MEG return ( <div> <div className="flexbox--align-center--justify-start"> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx deleted file mode 100644 index a395674e989..00000000000 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/Folkeregisteret.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { useTenorDomain } from '@/utils/hooks/useTenorSoek' -import { SoekKategori } from '@/components/ui/soekForm/SoekForm' -import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' -import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' -import React, { SyntheticEvent } from 'react' -import { FormikSelect } from '@/components/ui/form/inputs/select/Select' -import { createOptions } from '@/pages/tenorSoek/utils' -import { SelectOptionsManager as Options } from '@/service/SelectOptions' -import { FormikDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' - -export const Folkeregisteret = ({ formikBag, handleChange, handleChangeList, getValue }: any) => { - const { domain: identifikatorTypeOptions } = useTenorDomain('IdentifikatorType') - const { domain: kjoennOptions } = useTenorDomain('Kjoenn') - - return ( - <SoekKategori> - <FormikTextInput - name="identifikator" - label="Fødselsnummer / D-nummer" - onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'identifikator')} - visHvisAvhuket={false} - fastfield={false} - /> - <FormikSelect - name="identifikatorType" - options={createOptions(identifikatorTypeOptions?.data)} - // size="medium" - label="Identifikatortype" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'identifikatorType')} - value={getValue('identifikatorType')} - /> - <FormikDatepicker - name="foedselsdato.fraOgMed" - label="Fødselsdato f.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.fraOgMed')} - date={getValue('foedselsdato.fraOgMed')} - visHvisAvhuket={false} - fastfield={false} - /> - <FormikDatepicker - name="foedselsdato.tilOgMed" - label="Fødselsdato t.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.tilOgMed')} - date={getValue('foedselsdato.tilOgMed')} - visHvisAvhuket={false} - fastfield={false} - /> - <FormikDatepicker - name="doedsdato.fraOgMed" - label="Dødsdato f.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.fraOgMed')} - date={getValue('doedsdato.fraOgMed')} - visHvisAvhuket={false} - fastfield={false} - /> - <FormikDatepicker - name="doedsdato.tilOgMed" - label="Dødsdato t.o.m." - onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.tilOgMed')} - date={getValue('doedsdato.tilOgMed')} - visHvisAvhuket={false} - fastfield={false} - /> - <FormikSelect - name="kjoenn" - options={createOptions(kjoennOptions?.data)} - // size="medium" - label="Kjønn" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'kjoenn')} - value={getValue('kjoenn')} - /> - </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 new file mode 100644 index 00000000000..e11a27c79a4 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretAdresse.tsx @@ -0,0 +1,92 @@ +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import React, { SyntheticEvent } from 'react' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { createOptions } from '@/pages/tenorSoek/utils' +import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' + +export const FolkeregisteretAdresse = ({ + formikBag, + handleChange, + handleChangeBoolean, + getValue, +}: any) => { + const { domain: adresseGraderingOptions } = useTenorDomain('AdresseGradering') + + return ( + <SoekKategori> + <FormikSelect + name="adresser.adresseGradering" + options={createOptions(adresseGraderingOptions?.data)} + // size="medium" + label="Adressegradering" + onChange={(val: SyntheticEvent) => + handleChange(val?.value || null, 'adresser.adresseGradering') + } + value={getValue('adresser.adresseGradering')} + /> + <FormikTextInput + name="adresser.kommunenummer" + label="Kommunenummer" + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'adresser.kommunenummer') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikCheckbox + name="adresser.harBostedsadresse" + label="Har bostedsadresse" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'adresser.harBostedsadresse') + } + value={getValue('adresser.harBostedsadresse')} + /> + <FormikCheckbox + name="adresser.harOppholdAnnetSted" + label="Har opphold annet sted" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'adresser.harOppholdAnnetSted') + } + value={getValue('adresser.harOppholdAnnetSted')} + /> + <FormikCheckbox + name="adresser.harPostadresseNorge" + label="Har postadresse i Norge" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'adresser.harPostadresseNorge') + } + value={getValue('adresser.harPostadresseNorge')} + /> + <FormikCheckbox + name="adresser.harPostadresseUtland" + label="Har postadresse i utlandet" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'adresser.harPostadresseUtland') + } + value={getValue('adresser.harPostadresseUtland')} + /> + <FormikCheckbox + name="adresser.harKontaktadresseDoedsbo" + label="Har kontaktadresse for dødsbo" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'adresser.harKontaktadresseDoedsbo') + } + value={getValue('adresser.harKontaktadresseDoedsbo')} + /> + <FormikSelect + name="adresser.harAdresseSpesialtegn" + options={Options('boolean')} + size="small" + label="Har spesialtegn i adresse" + onChange={(val: boolean) => + handleChangeBoolean(val?.value, 'adresser.harAdresseSpesialtegn') + } + value={getValue('adresser.harAdresseSpesialtegn')} + /> + </SoekKategori> + ) +} 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 new file mode 100644 index 00000000000..7f9be038570 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretHendelser.tsx @@ -0,0 +1,32 @@ +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import { createOptions } from '@/pages/tenorSoek/utils' +import React, { SyntheticEvent } from 'react' + +export const FolkeregisteretHendelser = ({ formikBag, handleChange, getValue }: any) => { + const { domain: hendelseOptions } = useTenorDomain('Hendelse') + + return ( + <SoekKategori> + <FormikSelect + name="hendelser.hendelse" + options={createOptions(hendelseOptions?.data)} + size="xlarge" + label="Har hatt hendelse" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'hendelser.hendelse')} + value={getValue('hendelser.hendelse')} + /> + <FormikSelect + name="hendelser.sisteHendelse" + options={createOptions(hendelseOptions?.data)} + size="xlarge" + label="Siste hendelse" + onChange={(val: SyntheticEvent) => + handleChange(val?.value || null, 'hendelser.sisteHendelse') + } + value={getValue('hendelser.sisteHendelse')} + /> + </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 new file mode 100644 index 00000000000..808158b5065 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus.tsx @@ -0,0 +1,176 @@ +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' +import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import React, { SyntheticEvent } from 'react' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import { createOptions } from '@/pages/tenorSoek/utils' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormikDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' +import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' + +export const FolkeregisteretIdentifikasjonStatus = ({ + formikBag, + handleChange, + handleChangeList, + handleChangeBoolean, + getValue, +}: 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: identitetsgrunnlagStatusOptions } = useTenorDomain('IdentitetsgrunnlagStatus') + const { domain: adressebeskyttelseOptions } = useTenorDomain('Adressebeskyttelse') + + return ( + <SoekKategori> + <FormikTextInput + name="identifikator" + label="Fødselsnummer / D-nummer" + onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'identifikator')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikSelect + name="identifikatorType" + options={createOptions(identifikatorTypeOptions?.data)} + // size="medium" + label="Identifikatortype" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'identifikatorType')} + value={getValue('identifikatorType')} + /> + <FormikDatepicker + name="foedselsdato.fraOgMed" + label="Fødselsdato f.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.fraOgMed')} + date={getValue('foedselsdato.fraOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikDatepicker + name="foedselsdato.tilOgMed" + label="Fødselsdato t.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.tilOgMed')} + date={getValue('foedselsdato.tilOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikDatepicker + name="doedsdato.fraOgMed" + label="Dødsdato f.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.fraOgMed')} + date={getValue('doedsdato.fraOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikDatepicker + name="doedsdato.tilOgMed" + label="Dødsdato t.o.m." + onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.tilOgMed')} + date={getValue('doedsdato.tilOgMed')} + visHvisAvhuket={false} + fastfield={false} + /> + <FormikSelect + name="kjoenn" + options={createOptions(kjoennOptions?.data)} + // size="medium" + label="Kjønn" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'kjoenn')} + value={getValue('kjoenn')} + /> + <FormikSelect + name="personstatus" + options={createOptions(personstatusOptions?.data)} + // size="medium" + label="Personstatus" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'personstatus')} + value={getValue('personstatus')} + /> + <FormikSelect + name="sivilstand" + options={createOptions(sivilstatusOptions?.data)} + // size="medium" + label="Sivilstand" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'sivilstand')} + value={getValue('sivilstand')} + /> + <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> + <FormikSelect + name="utenlandskPersonIdentifikasjon" + options={createOptions(utenlandskPersonIdentifikasjonOptions?.data)} + isMulti={true} + size="grow" + label="Utenlandsk identifikasjonsnummertype" + onChange={(val: SyntheticEvent) => + handleChangeList(val || null, 'utenlandskPersonIdentifikasjon') + } + value={getValue('utenlandskPersonIdentifikasjon')} + /> + </div> + <FormikSelect + name="identitetsgrunnlagStatus" + options={createOptions(identitetsgrunnlagStatusOptions?.data)} + // size="medium" + label="Identitetsgrunnlagsstatus" + onChange={(val: SyntheticEvent) => + handleChange(val?.value || null, 'identitetsgrunnlagStatus') + } + value={getValue('identitetsgrunnlagStatus')} + /> + <FormikSelect + name="adressebeskyttelse" + options={createOptions(adressebeskyttelseOptions?.data)} + // size="medium" + label="Adressebeskyttelse" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'adressebeskyttelse')} + value={getValue('adressebeskyttelse')} + /> + {/*<FormikCheckbox*/} + {/* name="harLegitimasjonsdokument"*/} + {/* label="Har legitimasjonsdokument"*/} + {/* onChange={(val: SyntheticEvent) =>*/} + {/* handleChangeBoolean(val?.target?.checked, 'harLegitimasjonsdokument')*/} + {/* }*/} + {/* value={getValue('harLegitimasjonsdokument')}*/} + {/*/>*/} + {/*TODO: checkbox???*/} + <FormikSelect + name="harLegitimasjonsdokument" + options={Options('boolean')} + size="small" + label="Har legitimasjonsdokument" + onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harLegitimasjonsdokument')} + value={getValue('harLegitimasjonsdokument')} + /> + {/*<FormikCheckbox*/} + {/* name="harFalskIdentitet"*/} + {/* label="Har falsk identitet"*/} + {/* onChange={(val: SyntheticEvent) =>*/} + {/* handleChangeBoolean(val?.target?.checked, 'harFalskIdentitet')*/} + {/* }*/} + {/* value={getValue('harFalskIdentitet')}*/} + {/*/>*/} + <FormikSelect + name="harFalskIdentitet" + options={Options('boolean')} + size="small" + label="Har falsk identitet" + onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harFalskIdentitet')} + value={getValue('harFalskIdentitet')} + /> + {/*<FormikCheckbox*/} + {/* name="harNorskStatsborgerskap"*/} + {/* label="Har norsk statsborgerskap"*/} + {/* onChange={(val: SyntheticEvent) =>*/} + {/* handleChangeBoolean(val?.target?.checked, 'harNorskStatsborgerskap')*/} + {/* }*/} + {/* value={getValue('harNorskStatsborgerskap')}*/} + {/*/>*/} + </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 new file mode 100644 index 00000000000..0f7932d6d2a --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretNavn.tsx @@ -0,0 +1,61 @@ +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import React, { SyntheticEvent } from 'react' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' + +export const FolkeregisteretNavn = ({ + formikBag, + handleChange, + handleChangeBoolean, + getValue, +}: any) => { + return ( + <SoekKategori> + <FormikTextInput + name="navn.navnLengde.fraOgMed" + label="Lengde på navn f.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'navn.navnLengde.fraOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikTextInput + name="navn.navnLengde.tilOgMed" + label="Lengde på navn t.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'navn.navnLengde.tilOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikSelect + name="navn.harFlereFornavn" + options={Options('boolean')} + size="small" + label="Har flere fornnavn" + onChange={(val: boolean) => handleChangeBoolean(val?.value, 'navn.harFlereFornavn')} + value={getValue('navn.harFlereFornavn')} + /> + <FormikSelect + name="navn.harMellomnavn" + options={Options('boolean')} + size="small" + label="Har mellomnavn" + onChange={(val: boolean) => handleChangeBoolean(val?.value, 'navn.harMellomnavn')} + value={getValue('navn.harMellomnavn')} + /> + <FormikSelect + name="navn.harNavnSpesialtegn" + options={Options('boolean')} + size="small" + label="Har spesialtegn i navn" + onChange={(val: boolean) => handleChangeBoolean(val?.value, 'navn.harNavnSpesialtegn')} + value={getValue('navn.harNavnSpesialtegn')} + /> + </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 new file mode 100644 index 00000000000..b35abc8efaf --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretRelasjoner.tsx @@ -0,0 +1,126 @@ +import { useTenorDomain } from '@/utils/hooks/useTenorSoek' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import { createOptions } from '@/pages/tenorSoek/utils' +import React, { SyntheticEvent } from 'react' +import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' +import { SelectOptionsManager as Options } from '@/service/SelectOptions' + +export const FolkeregisteretRelasjoner = ({ + formikBag, + handleChange, + handleChangeBoolean, + getValue, +}: any) => { + const { domain: relasjonOptions } = useTenorDomain('Relasjon') + + return ( + <SoekKategori> + <FormikSelect + name="relasjoner.relasjon" + options={createOptions(relasjonOptions?.data)} + // size="medium" + label="Relasjon" + onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'relasjoner.relasjon')} + value={getValue('relasjoner.relasjon')} + /> + <FormikTextInput + name="relasjoner.antallBarn.fraOgMed" + label="Antall barn f.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikTextInput + name="relasjoner.antallBarn.tilOgMed" + label="Antall barn t.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikCheckbox + name="relasjoner.harForeldreAnsvar" + label="Har foreldreansvar" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'relasjoner.harForeldreAnsvar') + } + value={getValue('relasjoner.harForeldreAnsvar')} + /> + <FormikTextInput + name="relasjoner.relasjonMedFoedselsaar.fraOgMed" + label="Relasjon med fødselsår f.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikTextInput + name="relasjoner.relasjonMedFoedselsaar.tilOgMed" + label="Relasjon med fødselsår t.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikCheckbox + name="relasjoner.harDeltBosted" + label="Har delt bosted" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'relasjoner.harDeltBosted') + } + value={getValue('relasjoner.harDeltBosted')} + /> + <FormikCheckbox + name="relasjoner.harVergemaalEllerFremtidsfullmakt" + label="Har vergemål eller fremtidsfullmakt" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'relasjoner.harVergemaalEllerFremtidsfullmakt') + } + value={getValue('relasjoner.harVergemaalEllerFremtidsfullmakt')} + /> + <FormikCheckbox + name="relasjoner.borMedMor" + label="Bor med mor" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'relasjoner.borMedMor') + } + value={getValue('relasjoner.borMedMor')} + /> + <FormikCheckbox + name="relasjoner.borMedFar" + label="Bor med far" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'relasjoner.borMedFar') + } + value={getValue('relasjoner.borMedFar')} + /> + <FormikCheckbox + name="relasjoner.borMedMedmor" + label="Bor med medmor" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'relasjoner.borMedMedmor') + } + value={getValue('relasjoner.borMedMedmor')} + /> + <FormikCheckbox + name="relasjoner.foreldreHarSammeAdresse" + label="Foleldre har samme adresse" + onChange={(val: SyntheticEvent) => + handleChangeBoolean(val?.target?.checked, 'relasjoner.foreldreHarSammeAdresse') + } + value={getValue('relasjoner.foreldreHarSammeAdresse')} + /> + </SoekKategori> + ) +} 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 new file mode 100644 index 00000000000..304ecc4e1a8 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/soekFormPartials/FolkeregisteretStatsborgerskap.tsx @@ -0,0 +1,31 @@ +import { SelectOptionsManager as Options } from '@/service/SelectOptions' +import { FormikSelect } from '@/components/ui/form/inputs/select/Select' +import React from 'react' +import { SoekKategori } from '@/components/ui/soekForm/SoekForm' + +export const FolkeregisteretStatsborgerskap = ({ + formikBag, + handleChangeBoolean, + getValue, +}: any) => { + return ( + <SoekKategori> + <FormikSelect + name="harNorskStatsborgerskap" + options={Options('boolean')} + size="small" + label="Har norsk statsborgerskap" + onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harNorskStatsborgerskap')} + value={getValue('harNorskStatsborgerskap')} + /> + <FormikSelect + name="harFlereStatsborgerskap" + options={Options('boolean')} + size="small" + label="Har flere statsborgerskap" + onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harFlereStatsborgerskap')} + value={getValue('harFlereStatsborgerskap')} + /> + </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 5c4ed750e04..dc82d458674 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 @@ -14,7 +14,7 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g const { domain: inntektstypeOptions } = useTenorDomain('Inntektstype') const { domain: beskrivelseOptions } = useTenorDomain('AOrdningBeskrivelse') const { domain: forskuddstrekkOptions } = useTenorDomain('Forskuddstrekk') - console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG + // console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG return ( <SoekKategori> <Monthpicker From 78c8c1248f6b4531fadfcce69b5f97d46b5a9bc2 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 12 Feb 2024 18:25:40 +0100 Subject: [PATCH 13/50] Ekspanderbar visning og paabegynt antall i request --- .../subOverskrift/SubOverskriftExpandable.tsx | 53 ++++++++++ .../main/js/src/pages/tenorSoek/SoekForm.tsx | 19 +++- ...etsregisteretForetaksregisteretVisning.tsx | 98 ++++++++++--------- .../FolkeregisteretVisning.tsx | 8 +- .../resultatVisning/InntektVisning.tsx | 45 +++++---- .../tenorSoek/resultatVisning/TreffListe.tsx | 1 + 6 files changed, 152 insertions(+), 72 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/components/ui/subOverskrift/SubOverskriftExpandable.tsx diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/subOverskrift/SubOverskriftExpandable.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/subOverskrift/SubOverskriftExpandable.tsx new file mode 100644 index 00000000000..135f7937425 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/ui/subOverskrift/SubOverskriftExpandable.tsx @@ -0,0 +1,53 @@ +import Icon from '@/components/ui/icon/Icon' +import useBoolean from '@/utils/hooks/useBoolean' +import styled from 'styled-components' + +type Props = { + iconKind?: string + label?: string + isExpanded?: boolean + children?: any +} + +const Overskrift = styled.div` + background-color: #d3dee3; + margin: 5px 0 15px; + display: flex; + align-items: center; + padding: 4px; + cursor: pointer; + + h3 { + font-size: 1em; + margin: 0; + width: 100%; + } + + svg { + margin-right: 5px; + } +` + +export default function SubOverskriftExpandable({ + iconKind, + label, + isExpanded = false, + children, +}: Props) { + if (!label) { + return null + } + + const [expanded, setExpanded, setCollapsed] = useBoolean(isExpanded) + + return ( + <> + <Overskrift onClick={expanded ? setCollapsed : setExpanded}> + {iconKind && <Icon fontSize={'1.5rem'} kind={iconKind} />} + <h3>{label}</h3> + <Icon fontSize={'1.5rem'} kind={expanded ? 'chevron-up' : 'chevron-down'} /> + </Overskrift> + {expanded && children} + </> + ) +} 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 a05fea4bfb9..61d4e5170f1 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 @@ -91,6 +91,17 @@ export const SoekForm = ({ request, setRequest, mutate }) => { return _.get(formikBag.values, path) } + const getAntallRequest = (liste: Array<string>) => { + let antall = 0 + liste.forEach((item) => { + const attr = _.get(formikBag.values, item) + if (attr || attr === false) { + antall++ + } + }) + return antall + } + const devEnabled = window.location.hostname.includes('localhost') || window.location.hostname.includes('dolly-frontend-dev') @@ -115,7 +126,13 @@ export const SoekForm = ({ request, setRequest, mutate }) => { </Accordion.Item> <Accordion.Item> <Accordion.Header> - <Header title="Folkeregisteret - statsborgerskap" antall={0} /> + <Header + title="Folkeregisteret - statsborgerskap" + antall={getAntallRequest([ + 'harNorskStatsborgerskap', + 'harFlereStatsborgerskap', + ])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <FolkeregisteretStatsborgerskap diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx index f7073d37d2e..5dc04ac832b 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx @@ -1,9 +1,9 @@ -import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' import { TitleValue } from '@/components/ui/titleValue/TitleValue' import { arrayToString } from '@/utils/DataFormatter' import React from 'react' +import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' export const EnhetsregisteretForetaksregisteretVisning = ({ data }) => { if (!data || data.length < 1) { @@ -12,54 +12,58 @@ export const EnhetsregisteretForetaksregisteretVisning = ({ data }) => { return ( <> - <SubOverskrift + <SubOverskriftExpandable label={`Enhetsregisteret og Foretaksregisteret (${data.length})`} iconKind="brreg" - /> - <div> - <DollyFieldArray data={data} header="" nested> - {(organisasjon, idx: number) => { - return ( - <TabsVisning kildedata={organisasjon.tenorMetadata?.kildedata}> - <TitleValue title="Organisasjonsnummer" value={organisasjon.organisasjonsnummer} /> - <TitleValue - title="Organisasjonsform" - value={organisasjon.organisasjonsform?.kode} - /> - <TitleValue - title="Beskrivelse" - value={organisasjon.organisasjonsform?.beskrivelse} - /> - <TitleValue title="Navn" value={organisasjon.navn} /> - <TitleValue - title="Adresse" - value={arrayToString(organisasjon.forretningsadresse?.adresse)} - /> - <TitleValue - title="Postnummer" - value={organisasjon.forretningsadresse?.postnummer} - /> - <TitleValue title="Poststed" value={organisasjon.forretningsadresse?.poststed} /> - <TitleValue - title="Kommunenummer" - value={organisasjon.forretningsadresse?.kommunenummer} - /> - <TitleValue title="Kommune" value={organisasjon.forretningsadresse?.kommune} /> - <TitleValue - title="Reg. i Enhetsregisteret" - value={organisasjon.registreringsdatoEnhetsregisteret} - /> - <TitleValue title="Næringskode" value={arrayToString(organisasjon.naeringKode)} /> - <TitleValue - title="Næringsbeskrivelse" - value={arrayToString(organisasjon.naeringBeskrivelse)} - /> - {/* Relasjoner:*/} - </TabsVisning> - ) - }} - </DollyFieldArray> - </div> + > + <div> + <DollyFieldArray data={data} header="" nested> + {(organisasjon, idx: number) => { + return ( + <TabsVisning kildedata={organisasjon.tenorMetadata?.kildedata}> + <TitleValue + title="Organisasjonsnummer" + value={organisasjon.organisasjonsnummer} + /> + <TitleValue + title="Organisasjonsform" + value={organisasjon.organisasjonsform?.kode} + /> + <TitleValue + title="Beskrivelse" + value={organisasjon.organisasjonsform?.beskrivelse} + /> + <TitleValue title="Navn" value={organisasjon.navn} /> + <TitleValue + title="Adresse" + value={arrayToString(organisasjon.forretningsadresse?.adresse)} + /> + <TitleValue + title="Postnummer" + value={organisasjon.forretningsadresse?.postnummer} + /> + <TitleValue title="Poststed" value={organisasjon.forretningsadresse?.poststed} /> + <TitleValue + title="Kommunenummer" + value={organisasjon.forretningsadresse?.kommunenummer} + /> + <TitleValue title="Kommune" value={organisasjon.forretningsadresse?.kommune} /> + <TitleValue + title="Reg. i Enhetsregisteret" + value={organisasjon.registreringsdatoEnhetsregisteret} + /> + <TitleValue title="Næringskode" value={arrayToString(organisasjon.naeringKode)} /> + <TitleValue + title="Næringsbeskrivelse" + value={arrayToString(organisasjon.naeringBeskrivelse)} + /> + {/* Relasjoner:*/} + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </SubOverskriftExpandable> </> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index a46748b10c7..fbbcdb4efe7 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -1,18 +1,16 @@ -import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' import { TitleValue } from '@/components/ui/titleValue/TitleValue' import React from 'react' import { formatDate, showLabel } from '@/utils/DataFormatter' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' +import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' export const FolkeregisteretVisning = ({ data }) => { - // console.log('data: ', data) //TODO - SLETT MEG if (!data) { return null } return ( - <> - <SubOverskrift label="Folkeregisteret" iconKind="personinformasjon" /> + <SubOverskriftExpandable label="Folkeregisteret" iconKind="personinformasjon" isExpanded={true}> <TabsVisning kildedata={data.tenorMetadata?.kildedata}> <TitleValue title="Identifikator" value={data.identifikator} /> <TitleValue title="Navn" value={data.visningnavn} /> @@ -28,6 +26,6 @@ export const FolkeregisteretVisning = ({ data }) => { <TitleValue title="Siste hendelse" value={data.sisteHendelse} /> {/*// Relasjoner:*/} </TabsVisning> - </> + </SubOverskriftExpandable> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx index 9f874b65790..c42375ac53d 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx @@ -1,9 +1,9 @@ -import SubOverskrift from '@/components/ui/subOverskrift/SubOverskrift' import { TitleValue } from '@/components/ui/titleValue/TitleValue' import { arrayToString, oversettBoolean } from '@/utils/DataFormatter' import React from 'react' import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' +import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' export const InntektVisning = ({ data }) => { if (!data || data.length < 1) { @@ -12,24 +12,31 @@ export const InntektVisning = ({ data }) => { return ( <> - <SubOverskrift label={`Inntekt A-ordningen (${data.length})`} iconKind="inntektstub" /> - <div> - <DollyFieldArray data={data} header="" nested> - {(inntekt, idx: number) => { - return ( - <TabsVisning kildedata={inntekt.tenorMetadata?.kildedata}> - <TitleValue title="Periode" value={inntekt.periode} /> - <TitleValue title="Opplysningspliktig" value={inntekt.opplysningspliktig} /> - <TitleValue title="Inntektstype" value={arrayToString(inntekt.inntektstype)} /> - <TitleValue title="Beskrivelse" value={arrayToString(inntekt.beskrivelse)} /> - <TitleValue title="Forskuddstrekk" value={arrayToString(inntekt.forskuddstrekk)} /> - <TitleValue title="Har historikk" value={oversettBoolean(inntekt.harHistorikk)} /> - {/* Relasjoner:*/} - </TabsVisning> - ) - }} - </DollyFieldArray> - </div> + <SubOverskriftExpandable + label={`Inntekt A-ordningen (${data.length})`} + iconKind="inntektstub" + > + <div> + <DollyFieldArray data={data} header="" nested> + {(inntekt, idx: number) => { + return ( + <TabsVisning kildedata={inntekt.tenorMetadata?.kildedata}> + <TitleValue title="Periode" value={inntekt.periode} /> + <TitleValue title="Opplysningspliktig" value={inntekt.opplysningspliktig} /> + <TitleValue title="Inntektstype" value={arrayToString(inntekt.inntektstype)} /> + <TitleValue title="Beskrivelse" value={arrayToString(inntekt.beskrivelse)} /> + <TitleValue + title="Forskuddstrekk" + value={arrayToString(inntekt.forskuddstrekk)} + /> + <TitleValue title="Har historikk" value={oversettBoolean(inntekt.harHistorikk)} /> + {/* Relasjoner:*/} + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </SubOverskriftExpandable> </> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 1d822aef4f0..9a8fd04a6a6 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -54,6 +54,7 @@ export const TreffListe = ({ response, loading, error }: any) => { } // background={'surface-alt-3-subtle'} onClick={() => setValgtPerson(person)} + style={{ cursor: 'pointer' }} > {/*<h3>{person.visningnavn}</h3>*/} <h3> From eac257eacda5d31ac4c9adf8096fe561d7b44978 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 13 Feb 2024 11:30:55 +0100 Subject: [PATCH 14/50] Visning av relasjoner --- .../FolkeregisteretVisning.tsx | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index fbbcdb4efe7..b92365a6d39 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -3,12 +3,21 @@ import React from 'react' import { formatDate, showLabel } from '@/utils/DataFormatter' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' +import styled from 'styled-components' +const RelasjonerTittel = styled.h3` + width: 100%; + border-top: 1px solid #ccc; + margin-top: 5px; + padding-top: 15px; +` export const FolkeregisteretVisning = ({ data }) => { if (!data) { return null } + const relasjoner = data.tenorRelasjoner?.freg + return ( <SubOverskriftExpandable label="Folkeregisteret" iconKind="personinformasjon" isExpanded={true}> <TabsVisning kildedata={data.tenorMetadata?.kildedata}> @@ -24,7 +33,18 @@ export const FolkeregisteretVisning = ({ data }) => { /> <TitleValue title="Bostedsadresse" value={data.bostedsadresse} /> <TitleValue title="Siste hendelse" value={data.sisteHendelse} /> - {/*// Relasjoner:*/} + {relasjoner?.length > 0 && ( + <> + <RelasjonerTittel>Relasjoner</RelasjonerTittel> + {relasjoner.map((relasjon) => ( + <div className="title-value title-value_small"> + <h4>{relasjon.tenorRelasjonsnavn}</h4> + <div>{`${relasjon.identifikator} -`}</div> + <div>{relasjon.visningnavn}</div> + </div> + ))} + </> + )} </TabsVisning> </SubOverskriftExpandable> ) From 394b2ba84ff0f1fb1d6e8cfe4d54330c83c5fb7f Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Wed, 14 Feb 2024 18:19:01 +0100 Subject: [PATCH 15/50] Nytt utkast changehandling --- .../fagsystem/pdlf/form/partials/utils.tsx | 1 + .../main/js/src/pages/tenorSoek/SoekForm.tsx | 90 +++++++++++++++++-- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 2 +- .../FolkeregisteretVisning.tsx | 4 +- .../FolkeregisteretIdentifikasjonStatus.tsx | 2 +- .../soekFormPartials/FolkeregisteretNavn.tsx | 4 +- 6 files changed, 92 insertions(+), 11 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx index ae16f56c36f..8a453dee9b1 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx @@ -48,6 +48,7 @@ export const isEmpty = (attributt, excludeList = []) => { } return result } + // console.log('flattenData(): ', flattenData(attributt)) //TODO - SLETT MEG return ( attributt?.empty || Object.values(flattenData(attributt)).every((x) => x === null || x === '' || x === false) 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 61d4e5170f1..188cd64b9cd 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 @@ -17,6 +17,7 @@ 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 { isEmpty } from '@/components/fagsystem/pdlf/form/partials/utils' const SoekefeltWrapper = styled.div` display: flex; @@ -37,6 +38,53 @@ export const SoekForm = ({ request, setRequest, mutate }) => { // mutate() // } + // const getUpdatedRequest = (request: any) => { + // let updatedRequest = {} + // for (const i in request) { + // if ( + // typeof request[i] === 'object' && + // !(request[i] instanceof Date) && + // !Array.isArray(request[i]) + // ) { + // const temp = getUpdatedRequest(request[i]) + // for (const j in temp) { + // updatedRequest[i + '.' + j] = temp[j] + // } + // } else { + // updatedRequest[i] = request[i] + // } + // } + // return updatedRequest + // } + + // const getUpdatedRequest = (request: any) => { + // for (const i in request) { + // if (!request[i] || typeof request[i] !== 'object') { + // continue + // } + // getUpdatedRequest(request[i]) + // if ( + // Object.keys(request[i]).length === 0 || + // Object.values(request[i]).every((x) => x === null || x === '') + // ) { + // delete request[i] + // } + // } + // return request + // } + + function getUpdatedRequest(request: any) { + for (let key of Object.keys(request)) { + if (request[key] === '' || request[key] === null) { + 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] + } + } + return Array.isArray(request) ? request.filter((val) => val) : request + } + return ( <SoekefeltWrapper> <Soekefelt> @@ -44,15 +92,35 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <Formik initialValues={{}} onSubmit={() => console.log('submit...')}> {(formikBag) => { const handleChange = (value: any, path: string) => { - console.log('value: ', value === '') //TODO - SLETT MEG + // const kategori = path.split('.')[0] + const request = _.set(formikBag.values, path, value) + getUpdatedRequest(request) + setRequest(request) + formikBag.setValues(request) + mutate() + } + + const handleChangeGammel = (value: any, path: string) => { + // console.log('value: ', value) //TODO - SLETT MEG + const testitest = getUpdatedRequest(formikBag.values) + console.log('testitest: ', testitest) //TODO - SLETT MEG + const kategori = path.split('.')[0] const updatedRequest = value !== null && value !== '' ? _.set(formikBag.values, path, value) : _.omit(formikBag.values, path) - if (Object.keys(_.get(updatedRequest, kategori))?.length === 0) { + const kategoriData = _.get(updatedRequest, kategori) + // console.log('isEmpty(updatedRequest): ', isEmpty(updatedRequest)) //TODO - SLETT MEG + if (isEmpty(updatedRequest)) { + setRequest({}) + formikBag.setValues({}) + } else if (kategoriData && Object.keys(kategoriData)?.length === 0) { + // if (isEmpty(updatedRequest)) { setRequest(_.omit(updatedRequest, kategori)) + // setRequest(_.omit(updatedRequest, path)) formikBag.setFieldValue(kategori, undefined) + // formikBag.setFieldValue(path, undefined) } else { setRequest(updatedRequest) if (value !== null && value !== '') { @@ -61,8 +129,11 @@ export const SoekForm = ({ request, setRequest, mutate }) => { formikBag.setFieldValue(path, undefined) } } - console.log('updatedRequest: ', updatedRequest) //TODO - SLETT MEG - console.log('formikBag.values: ', formikBag.values) //TODO - SLETT MEG + //TODO: Funker ish, men om vi har objekt på flere nivåer + ande kategorier så blir det feil + //TODO: Lag en slags findEmptyObjects, som går igjennom hele requesten? + // console.log('isEmpty(updatedRequest): ', isEmpty(updatedRequest)) //TODO - SLETT MEG + // console.log('updatedRequest: ', updatedRequest) //TODO - SLETT MEG + // console.log('formikBag.values: ', formikBag.values) //TODO - SLETT MEG mutate() // TODO: sjekk om alle verdier OG underkategorier er tomme } @@ -70,11 +141,20 @@ export const SoekForm = ({ request, setRequest, mutate }) => { const handleChangeList = (value: any, path: string) => { // console.log('value: ', value) //TODO - SLETT MEG const list = value.map((item: any) => item.value) - const updatedRequest = _.set(formikBag.values, path, list) + console.log('list: ', list) //TODO - SLETT MEG + const updatedRequest = + list?.length > 0 + ? _.set(formikBag.values, path, list) + : _.omit(formikBag.values, path) // if (requestIsEmpty(updatedRequest)) { // setRequest(null) // } else { setRequest(updatedRequest) + if (list?.length > 0) { + formikBag.setFieldValue(path, list) + } else { + formikBag.setFieldValue(path, undefined) + } // } mutate() // TODO: tilpass denne også diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index c8587d4df67..8b7fc6cceb7 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -9,7 +9,7 @@ import { useState } from 'react' export default () => { const [request, setRequest] = useState({}) // Evt. bruk null for aa ikke hente data ved oppstart const { response, loading, error, mutate } = useTenorOversikt(request) - console.log('request: ', request) //TODO - SLETT MEG + // console.log('request: ', request) //TODO - SLETT MEG return ( <div> <div className="flexbox--align-center--justify-start"> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index b92365a6d39..d85621efbde 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -36,8 +36,8 @@ export const FolkeregisteretVisning = ({ data }) => { {relasjoner?.length > 0 && ( <> <RelasjonerTittel>Relasjoner</RelasjonerTittel> - {relasjoner.map((relasjon) => ( - <div className="title-value title-value_small"> + {relasjoner.map((relasjon, idx) => ( + <div className="title-value title-value_small" key={idx}> <h4>{relasjon.tenorRelasjonsnavn}</h4> <div>{`${relasjon.identifikator} -`}</div> <div>{relasjon.visningnavn}</div> 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 808158b5065..fa4afa91384 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 @@ -33,7 +33,7 @@ export const FolkeregisteretIdentifikasjonStatus = ({ label="Fødselsnummer / D-nummer" onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'identifikator')} visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> <FormikSelect name="identifikatorType" 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 0f7932d6d2a..7f94ea4052a 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 @@ -20,7 +20,7 @@ export const FolkeregisteretNavn = ({ handleChange(val?.target?.value || null, 'navn.navnLengde.fraOgMed') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> <FormikTextInput name="navn.navnLengde.tilOgMed" @@ -30,7 +30,7 @@ export const FolkeregisteretNavn = ({ handleChange(val?.target?.value || null, 'navn.navnLengde.tilOgMed') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> <FormikSelect name="navn.harFlereFornavn" From 1fc198a88ab7d53d9dfb1b243ad023bf526b18d5 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Wed, 14 Feb 2024 19:48:07 +0100 Subject: [PATCH 16/50] Change handling funker perfekt --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 116 ++---------------- .../FolkeregisteretAdresse.tsx | 21 ++-- .../FolkeregisteretIdentifikasjonStatus.tsx | 5 +- .../soekFormPartials/FolkeregisteretNavn.tsx | 13 +- .../FolkeregisteretRelasjoner.tsx | 21 ++-- .../FolkeregisteretStatsborgerskap.tsx | 10 +- 6 files changed, 31 insertions(+), 155 deletions(-) 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 188cd64b9cd..650457d5ef4 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 @@ -33,49 +33,10 @@ const Soekefelt = styled.div` ` export const SoekForm = ({ request, setRequest, mutate }) => { - // const handleSubmit = (request: SoekRequest) => { - // setRequest(request) - // mutate() - // } - - // const getUpdatedRequest = (request: any) => { - // let updatedRequest = {} - // for (const i in request) { - // if ( - // typeof request[i] === 'object' && - // !(request[i] instanceof Date) && - // !Array.isArray(request[i]) - // ) { - // const temp = getUpdatedRequest(request[i]) - // for (const j in temp) { - // updatedRequest[i + '.' + j] = temp[j] - // } - // } else { - // updatedRequest[i] = request[i] - // } - // } - // return updatedRequest - // } - - // const getUpdatedRequest = (request: any) => { - // for (const i in request) { - // if (!request[i] || typeof request[i] !== 'object') { - // continue - // } - // getUpdatedRequest(request[i]) - // if ( - // Object.keys(request[i]).length === 0 || - // Object.values(request[i]).every((x) => x === null || x === '') - // ) { - // delete request[i] - // } - // } - // return request - // } - function getUpdatedRequest(request: any) { + console.log('request: ', request) //TODO - SLETT MEG for (let key of Object.keys(request)) { - if (request[key] === '' || request[key] === null) { + 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]) @@ -92,7 +53,6 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <Formik initialValues={{}} onSubmit={() => console.log('submit...')}> {(formikBag) => { const handleChange = (value: any, path: string) => { - // const kategori = path.split('.')[0] const request = _.set(formikBag.values, path, value) getUpdatedRequest(request) setRequest(request) @@ -100,70 +60,12 @@ export const SoekForm = ({ request, setRequest, mutate }) => { mutate() } - const handleChangeGammel = (value: any, path: string) => { - // console.log('value: ', value) //TODO - SLETT MEG - const testitest = getUpdatedRequest(formikBag.values) - console.log('testitest: ', testitest) //TODO - SLETT MEG - - const kategori = path.split('.')[0] - const updatedRequest = - value !== null && value !== '' - ? _.set(formikBag.values, path, value) - : _.omit(formikBag.values, path) - const kategoriData = _.get(updatedRequest, kategori) - // console.log('isEmpty(updatedRequest): ', isEmpty(updatedRequest)) //TODO - SLETT MEG - if (isEmpty(updatedRequest)) { - setRequest({}) - formikBag.setValues({}) - } else if (kategoriData && Object.keys(kategoriData)?.length === 0) { - // if (isEmpty(updatedRequest)) { - setRequest(_.omit(updatedRequest, kategori)) - // setRequest(_.omit(updatedRequest, path)) - formikBag.setFieldValue(kategori, undefined) - // formikBag.setFieldValue(path, undefined) - } else { - setRequest(updatedRequest) - if (value !== null && value !== '') { - formikBag.setFieldValue(path, value) - } else { - formikBag.setFieldValue(path, undefined) - } - } - //TODO: Funker ish, men om vi har objekt på flere nivåer + ande kategorier så blir det feil - //TODO: Lag en slags findEmptyObjects, som går igjennom hele requesten? - // console.log('isEmpty(updatedRequest): ', isEmpty(updatedRequest)) //TODO - SLETT MEG - // console.log('updatedRequest: ', updatedRequest) //TODO - SLETT MEG - // console.log('formikBag.values: ', formikBag.values) //TODO - SLETT MEG - mutate() - // TODO: sjekk om alle verdier OG underkategorier er tomme - } - const handleChangeList = (value: any, path: string) => { - // console.log('value: ', value) //TODO - SLETT MEG const list = value.map((item: any) => item.value) - console.log('list: ', list) //TODO - SLETT MEG - const updatedRequest = - list?.length > 0 - ? _.set(formikBag.values, path, list) - : _.omit(formikBag.values, path) - // if (requestIsEmpty(updatedRequest)) { - // setRequest(null) - // } else { - setRequest(updatedRequest) - if (list?.length > 0) { - formikBag.setFieldValue(path, list) - } else { - formikBag.setFieldValue(path, undefined) - } - // } - mutate() - // TODO: tilpass denne også - } - - const handleChangeBoolean = (value: boolean, path: string) => { - const updatedRequest = _.set(formikBag.values, path, value) - setRequest(updatedRequest) - formikBag.setFieldValue(path, value) + const request = _.set(formikBag.values, path, list) + getUpdatedRequest(request) + setRequest(request) + formikBag.setValues(request) mutate() } @@ -199,7 +101,6 @@ export const SoekForm = ({ request, setRequest, mutate }) => { formikBag={formikBag} handleChange={handleChange} handleChangeList={handleChangeList} - handleChangeBoolean={handleChangeBoolean} getValue={getValue} /> </Accordion.Content> @@ -217,7 +118,7 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <Accordion.Content style={{ paddingRight: '0' }}> <FolkeregisteretStatsborgerskap formikBag={formikBag} - handleChangeBoolean={handleChangeBoolean} + handleChange={handleChange} getValue={getValue} /> </Accordion.Content> @@ -230,7 +131,6 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <FolkeregisteretNavn formikBag={formikBag} handleChange={handleChange} - handleChangeBoolean={handleChangeBoolean} getValue={getValue} /> </Accordion.Content> @@ -243,7 +143,6 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <FolkeregisteretAdresse formikBag={formikBag} handleChange={handleChange} - handleChangeBoolean={handleChangeBoolean} getValue={getValue} /> </Accordion.Content> @@ -256,7 +155,6 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <FolkeregisteretRelasjoner formikBag={formikBag} handleChange={handleChange} - handleChangeBoolean={handleChangeBoolean} getValue={getValue} /> </Accordion.Content> 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 e11a27c79a4..02a4c344f6d 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,12 +7,7 @@ import { useTenorDomain } from '@/utils/hooks/useTenorSoek' import { createOptions } from '@/pages/tenorSoek/utils' import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' -export const FolkeregisteretAdresse = ({ - formikBag, - handleChange, - handleChangeBoolean, - getValue, -}: any) => { +export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: any) => { const { domain: adresseGraderingOptions } = useTenorDomain('AdresseGradering') return ( @@ -41,7 +36,7 @@ export const FolkeregisteretAdresse = ({ name="adresser.harBostedsadresse" label="Har bostedsadresse" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'adresser.harBostedsadresse') + handleChange(val?.target?.checked, 'adresser.harBostedsadresse') } value={getValue('adresser.harBostedsadresse')} /> @@ -49,7 +44,7 @@ export const FolkeregisteretAdresse = ({ name="adresser.harOppholdAnnetSted" label="Har opphold annet sted" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'adresser.harOppholdAnnetSted') + handleChange(val?.target?.checked, 'adresser.harOppholdAnnetSted') } value={getValue('adresser.harOppholdAnnetSted')} /> @@ -57,7 +52,7 @@ export const FolkeregisteretAdresse = ({ name="adresser.harPostadresseNorge" label="Har postadresse i Norge" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'adresser.harPostadresseNorge') + handleChange(val?.target?.checked, 'adresser.harPostadresseNorge') } value={getValue('adresser.harPostadresseNorge')} /> @@ -65,7 +60,7 @@ export const FolkeregisteretAdresse = ({ name="adresser.harPostadresseUtland" label="Har postadresse i utlandet" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'adresser.harPostadresseUtland') + handleChange(val?.target?.checked, 'adresser.harPostadresseUtland') } value={getValue('adresser.harPostadresseUtland')} /> @@ -73,7 +68,7 @@ export const FolkeregisteretAdresse = ({ name="adresser.harKontaktadresseDoedsbo" label="Har kontaktadresse for dødsbo" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'adresser.harKontaktadresseDoedsbo') + handleChange(val?.target?.checked, 'adresser.harKontaktadresseDoedsbo') } value={getValue('adresser.harKontaktadresseDoedsbo')} /> @@ -82,9 +77,7 @@ export const FolkeregisteretAdresse = ({ options={Options('boolean')} size="small" label="Har spesialtegn i adresse" - onChange={(val: boolean) => - handleChangeBoolean(val?.value, 'adresser.harAdresseSpesialtegn') - } + onChange={(val: boolean) => handleChange(val?.value, 'adresser.harAdresseSpesialtegn')} value={getValue('adresser.harAdresseSpesialtegn')} /> </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 fa4afa91384..2ff6e14428d 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 @@ -13,7 +13,6 @@ export const FolkeregisteretIdentifikasjonStatus = ({ formikBag, handleChange, handleChangeList, - handleChangeBoolean, getValue, }: any) => { const { domain: identifikatorTypeOptions } = useTenorDomain('IdentifikatorType') @@ -144,7 +143,7 @@ export const FolkeregisteretIdentifikasjonStatus = ({ options={Options('boolean')} size="small" label="Har legitimasjonsdokument" - onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harLegitimasjonsdokument')} + onChange={(val: boolean) => handleChange(val?.value, 'harLegitimasjonsdokument')} value={getValue('harLegitimasjonsdokument')} /> {/*<FormikCheckbox*/} @@ -160,7 +159,7 @@ export const FolkeregisteretIdentifikasjonStatus = ({ options={Options('boolean')} size="small" label="Har falsk identitet" - onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harFalskIdentitet')} + onChange={(val: boolean) => handleChange(val?.value, 'harFalskIdentitet')} value={getValue('harFalskIdentitet')} /> {/*<FormikCheckbox*/} 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 7f94ea4052a..d8b5d416327 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,12 +4,7 @@ import React, { SyntheticEvent } from 'react' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' -export const FolkeregisteretNavn = ({ - formikBag, - handleChange, - handleChangeBoolean, - getValue, -}: any) => { +export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) => { return ( <SoekKategori> <FormikTextInput @@ -37,7 +32,7 @@ export const FolkeregisteretNavn = ({ options={Options('boolean')} size="small" label="Har flere fornnavn" - onChange={(val: boolean) => handleChangeBoolean(val?.value, 'navn.harFlereFornavn')} + onChange={(val: boolean) => handleChange(val?.value, 'navn.harFlereFornavn')} value={getValue('navn.harFlereFornavn')} /> <FormikSelect @@ -45,7 +40,7 @@ export const FolkeregisteretNavn = ({ options={Options('boolean')} size="small" label="Har mellomnavn" - onChange={(val: boolean) => handleChangeBoolean(val?.value, 'navn.harMellomnavn')} + onChange={(val: boolean) => handleChange(val?.value, 'navn.harMellomnavn')} value={getValue('navn.harMellomnavn')} /> <FormikSelect @@ -53,7 +48,7 @@ export const FolkeregisteretNavn = ({ options={Options('boolean')} size="small" label="Har spesialtegn i navn" - onChange={(val: boolean) => handleChangeBoolean(val?.value, 'navn.harNavnSpesialtegn')} + onChange={(val: boolean) => handleChange(val?.value, 'navn.harNavnSpesialtegn')} value={getValue('navn.harNavnSpesialtegn')} /> </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 b35abc8efaf..1d92b820df2 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,12 +7,7 @@ import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import { SelectOptionsManager as Options } from '@/service/SelectOptions' -export const FolkeregisteretRelasjoner = ({ - formikBag, - handleChange, - handleChangeBoolean, - getValue, -}: any) => { +export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: any) => { const { domain: relasjonOptions } = useTenorDomain('Relasjon') return ( @@ -49,7 +44,7 @@ export const FolkeregisteretRelasjoner = ({ name="relasjoner.harForeldreAnsvar" label="Har foreldreansvar" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'relasjoner.harForeldreAnsvar') + handleChange(val?.target?.checked, 'relasjoner.harForeldreAnsvar') } value={getValue('relasjoner.harForeldreAnsvar')} /> @@ -77,7 +72,7 @@ export const FolkeregisteretRelasjoner = ({ name="relasjoner.harDeltBosted" label="Har delt bosted" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'relasjoner.harDeltBosted') + handleChange(val?.target?.checked, 'relasjoner.harDeltBosted') } value={getValue('relasjoner.harDeltBosted')} /> @@ -85,7 +80,7 @@ export const FolkeregisteretRelasjoner = ({ name="relasjoner.harVergemaalEllerFremtidsfullmakt" label="Har vergemål eller fremtidsfullmakt" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'relasjoner.harVergemaalEllerFremtidsfullmakt') + handleChange(val?.target?.checked, 'relasjoner.harVergemaalEllerFremtidsfullmakt') } value={getValue('relasjoner.harVergemaalEllerFremtidsfullmakt')} /> @@ -93,7 +88,7 @@ export const FolkeregisteretRelasjoner = ({ name="relasjoner.borMedMor" label="Bor med mor" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'relasjoner.borMedMor') + handleChange(val?.target?.checked, 'relasjoner.borMedMor') } value={getValue('relasjoner.borMedMor')} /> @@ -101,7 +96,7 @@ export const FolkeregisteretRelasjoner = ({ name="relasjoner.borMedFar" label="Bor med far" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'relasjoner.borMedFar') + handleChange(val?.target?.checked, 'relasjoner.borMedFar') } value={getValue('relasjoner.borMedFar')} /> @@ -109,7 +104,7 @@ export const FolkeregisteretRelasjoner = ({ name="relasjoner.borMedMedmor" label="Bor med medmor" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'relasjoner.borMedMedmor') + handleChange(val?.target?.checked, 'relasjoner.borMedMedmor') } value={getValue('relasjoner.borMedMedmor')} /> @@ -117,7 +112,7 @@ export const FolkeregisteretRelasjoner = ({ name="relasjoner.foreldreHarSammeAdresse" label="Foleldre har samme adresse" onChange={(val: SyntheticEvent) => - handleChangeBoolean(val?.target?.checked, 'relasjoner.foreldreHarSammeAdresse') + handleChange(val?.target?.checked, 'relasjoner.foreldreHarSammeAdresse') } value={getValue('relasjoner.foreldreHarSammeAdresse')} /> 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 304ecc4e1a8..d28aa599b11 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 @@ -3,11 +3,7 @@ import { FormikSelect } from '@/components/ui/form/inputs/select/Select' import React from 'react' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' -export const FolkeregisteretStatsborgerskap = ({ - formikBag, - handleChangeBoolean, - getValue, -}: any) => { +export const FolkeregisteretStatsborgerskap = ({ formikBag, handleChange, getValue }: any) => { return ( <SoekKategori> <FormikSelect @@ -15,7 +11,7 @@ export const FolkeregisteretStatsborgerskap = ({ options={Options('boolean')} size="small" label="Har norsk statsborgerskap" - onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harNorskStatsborgerskap')} + onChange={(val: boolean) => handleChange(val?.value, 'harNorskStatsborgerskap')} value={getValue('harNorskStatsborgerskap')} /> <FormikSelect @@ -23,7 +19,7 @@ export const FolkeregisteretStatsborgerskap = ({ options={Options('boolean')} size="small" label="Har flere statsborgerskap" - onChange={(val: boolean) => handleChangeBoolean(val?.value, 'harFlereStatsborgerskap')} + onChange={(val: boolean) => handleChange(val?.value, 'harFlereStatsborgerskap')} value={getValue('harFlereStatsborgerskap')} /> </SoekKategori> From 43afe0e069be66d792042344b5a0da2974237f05 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 15 Feb 2024 17:19:18 +0100 Subject: [PATCH 17/50] Tilpasninger i form --- .../FolkeregisteretAdresse.tsx | 82 +++---- .../FolkeregisteretIdentifikasjonStatus.tsx | 67 ++---- .../soekFormPartials/FolkeregisteretNavn.tsx | 19 +- .../FolkeregisteretRelasjoner.tsx | 201 +++++++++--------- .../soekFormPartials/InntektAordningen.tsx | 13 +- 5 files changed, 179 insertions(+), 203 deletions(-) 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 02a4c344f6d..6d09d2552c0 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 @@ -32,46 +32,6 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an visHvisAvhuket={false} fastfield={false} /> - <FormikCheckbox - name="adresser.harBostedsadresse" - label="Har bostedsadresse" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'adresser.harBostedsadresse') - } - value={getValue('adresser.harBostedsadresse')} - /> - <FormikCheckbox - name="adresser.harOppholdAnnetSted" - label="Har opphold annet sted" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'adresser.harOppholdAnnetSted') - } - value={getValue('adresser.harOppholdAnnetSted')} - /> - <FormikCheckbox - name="adresser.harPostadresseNorge" - label="Har postadresse i Norge" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'adresser.harPostadresseNorge') - } - value={getValue('adresser.harPostadresseNorge')} - /> - <FormikCheckbox - name="adresser.harPostadresseUtland" - label="Har postadresse i utlandet" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'adresser.harPostadresseUtland') - } - value={getValue('adresser.harPostadresseUtland')} - /> - <FormikCheckbox - name="adresser.harKontaktadresseDoedsbo" - label="Har kontaktadresse for dødsbo" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'adresser.harKontaktadresseDoedsbo') - } - value={getValue('adresser.harKontaktadresseDoedsbo')} - /> <FormikSelect name="adresser.harAdresseSpesialtegn" options={Options('boolean')} @@ -80,6 +40,48 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an onChange={(val: boolean) => handleChange(val?.value, 'adresser.harAdresseSpesialtegn')} value={getValue('adresser.harAdresseSpesialtegn')} /> + <div className="flexbox--flex-wrap"> + <FormikCheckbox + name="adresser.harBostedsadresse" + label="Har bostedsadresse" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'adresser.harBostedsadresse') + } + value={getValue('adresser.harBostedsadresse')} + /> + <FormikCheckbox + name="adresser.harOppholdAnnetSted" + label="Har opphold annet sted" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'adresser.harOppholdAnnetSted') + } + value={getValue('adresser.harOppholdAnnetSted')} + /> + <FormikCheckbox + name="adresser.harPostadresseNorge" + label="Har postadresse i Norge" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseNorge') + } + value={getValue('adresser.harPostadresseNorge')} + /> + <FormikCheckbox + name="adresser.harPostadresseUtland" + label="Har postadresse i utlandet" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseUtland') + } + value={getValue('adresser.harPostadresseUtland')} + /> + <FormikCheckbox + name="adresser.harKontaktadresseDoedsbo" + label="Har kontaktadresse for dødsbo" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'adresser.harKontaktadresseDoedsbo') + } + value={getValue('adresser.harKontaktadresseDoedsbo')} + /> + </div> </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 2ff6e14428d..2ffe9b91925 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 @@ -98,19 +98,6 @@ export const FolkeregisteretIdentifikasjonStatus = ({ onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'sivilstand')} value={getValue('sivilstand')} /> - <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> - <FormikSelect - name="utenlandskPersonIdentifikasjon" - options={createOptions(utenlandskPersonIdentifikasjonOptions?.data)} - isMulti={true} - size="grow" - label="Utenlandsk identifikasjonsnummertype" - onChange={(val: SyntheticEvent) => - handleChangeList(val || null, 'utenlandskPersonIdentifikasjon') - } - value={getValue('utenlandskPersonIdentifikasjon')} - /> - </div> <FormikSelect name="identitetsgrunnlagStatus" options={createOptions(identitetsgrunnlagStatusOptions?.data)} @@ -129,31 +116,6 @@ export const FolkeregisteretIdentifikasjonStatus = ({ onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'adressebeskyttelse')} value={getValue('adressebeskyttelse')} /> - {/*<FormikCheckbox*/} - {/* name="harLegitimasjonsdokument"*/} - {/* label="Har legitimasjonsdokument"*/} - {/* onChange={(val: SyntheticEvent) =>*/} - {/* handleChangeBoolean(val?.target?.checked, 'harLegitimasjonsdokument')*/} - {/* }*/} - {/* value={getValue('harLegitimasjonsdokument')}*/} - {/*/>*/} - {/*TODO: checkbox???*/} - <FormikSelect - name="harLegitimasjonsdokument" - options={Options('boolean')} - size="small" - label="Har legitimasjonsdokument" - onChange={(val: boolean) => handleChange(val?.value, 'harLegitimasjonsdokument')} - value={getValue('harLegitimasjonsdokument')} - /> - {/*<FormikCheckbox*/} - {/* name="harFalskIdentitet"*/} - {/* label="Har falsk identitet"*/} - {/* onChange={(val: SyntheticEvent) =>*/} - {/* handleChangeBoolean(val?.target?.checked, 'harFalskIdentitet')*/} - {/* }*/} - {/* value={getValue('harFalskIdentitet')}*/} - {/*/>*/} <FormikSelect name="harFalskIdentitet" options={Options('boolean')} @@ -162,14 +124,27 @@ export const FolkeregisteretIdentifikasjonStatus = ({ onChange={(val: boolean) => handleChange(val?.value, 'harFalskIdentitet')} value={getValue('harFalskIdentitet')} /> - {/*<FormikCheckbox*/} - {/* name="harNorskStatsborgerskap"*/} - {/* label="Har norsk statsborgerskap"*/} - {/* onChange={(val: SyntheticEvent) =>*/} - {/* handleChangeBoolean(val?.target?.checked, 'harNorskStatsborgerskap')*/} - {/* }*/} - {/* value={getValue('harNorskStatsborgerskap')}*/} - {/*/>*/} + <div className="flexbox--full-width"> + <FormikSelect + name="utenlandskPersonIdentifikasjon" + options={createOptions(utenlandskPersonIdentifikasjonOptions?.data)} + isMulti={true} + size="grow" + label="Utenlandsk identifikasjonsnummertype" + onChange={(val: SyntheticEvent) => + handleChangeList(val || null, 'utenlandskPersonIdentifikasjon') + } + value={getValue('utenlandskPersonIdentifikasjon')} + /> + </div> + <FormikCheckbox + name="harLegitimasjonsdokument" + label="Har legitimasjonsdokument" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'harLegitimasjonsdokument') + } + value={getValue('harLegitimasjonsdokument')} + /> </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 d8b5d416327..550740e83e7 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 @@ -3,6 +3,7 @@ import { FormikSelect } from '@/components/ui/form/inputs/select/Select' import React, { SyntheticEvent } from 'react' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) => { return ( @@ -15,7 +16,6 @@ export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) handleChange(val?.target?.value || null, 'navn.navnLengde.fraOgMed') } visHvisAvhuket={false} - // fastfield={false} /> <FormikTextInput name="navn.navnLengde.tilOgMed" @@ -25,7 +25,6 @@ export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) handleChange(val?.target?.value || null, 'navn.navnLengde.tilOgMed') } visHvisAvhuket={false} - // fastfield={false} /> <FormikSelect name="navn.harFlereFornavn" @@ -35,14 +34,6 @@ export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) onChange={(val: boolean) => handleChange(val?.value, 'navn.harFlereFornavn')} value={getValue('navn.harFlereFornavn')} /> - <FormikSelect - name="navn.harMellomnavn" - options={Options('boolean')} - size="small" - label="Har mellomnavn" - onChange={(val: boolean) => handleChange(val?.value, 'navn.harMellomnavn')} - value={getValue('navn.harMellomnavn')} - /> <FormikSelect name="navn.harNavnSpesialtegn" options={Options('boolean')} @@ -51,6 +42,14 @@ export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) onChange={(val: boolean) => handleChange(val?.value, 'navn.harNavnSpesialtegn')} value={getValue('navn.harNavnSpesialtegn')} /> + <FormikCheckbox + name="navn.harMellomnavn" + label="Har mellomnavn" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'navn.harMellomnavn') + } + value={getValue('navn.harMellomnavn')} + /> </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 1d92b820df2..917671cf0d0 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 @@ -20,102 +20,111 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'relasjoner.relasjon')} value={getValue('relasjoner.relasjon')} /> - <FormikTextInput - name="relasjoner.antallBarn.fraOgMed" - label="Antall barn f.o.m." - type="number" - onBlur={(val: SyntheticEvent) => - handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') - } - visHvisAvhuket={false} - fastfield={false} - /> - <FormikTextInput - name="relasjoner.antallBarn.tilOgMed" - label="Antall barn t.o.m." - type="number" - onBlur={(val: SyntheticEvent) => - handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') - } - visHvisAvhuket={false} - fastfield={false} - /> - <FormikCheckbox - name="relasjoner.harForeldreAnsvar" - label="Har foreldreansvar" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'relasjoner.harForeldreAnsvar') - } - value={getValue('relasjoner.harForeldreAnsvar')} - /> - <FormikTextInput - name="relasjoner.relasjonMedFoedselsaar.fraOgMed" - label="Relasjon med fødselsår f.o.m." - type="number" - onBlur={(val: SyntheticEvent) => - handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') - } - visHvisAvhuket={false} - fastfield={false} - /> - <FormikTextInput - name="relasjoner.relasjonMedFoedselsaar.tilOgMed" - label="Relasjon med fødselsår t.o.m." - type="number" - onBlur={(val: SyntheticEvent) => - handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') - } - visHvisAvhuket={false} - fastfield={false} - /> - <FormikCheckbox - name="relasjoner.harDeltBosted" - label="Har delt bosted" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'relasjoner.harDeltBosted') - } - value={getValue('relasjoner.harDeltBosted')} - /> - <FormikCheckbox - name="relasjoner.harVergemaalEllerFremtidsfullmakt" - label="Har vergemål eller fremtidsfullmakt" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'relasjoner.harVergemaalEllerFremtidsfullmakt') - } - value={getValue('relasjoner.harVergemaalEllerFremtidsfullmakt')} - /> - <FormikCheckbox - name="relasjoner.borMedMor" - label="Bor med mor" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'relasjoner.borMedMor') - } - value={getValue('relasjoner.borMedMor')} - /> - <FormikCheckbox - name="relasjoner.borMedFar" - label="Bor med far" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'relasjoner.borMedFar') - } - value={getValue('relasjoner.borMedFar')} - /> - <FormikCheckbox - name="relasjoner.borMedMedmor" - label="Bor med medmor" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'relasjoner.borMedMedmor') - } - value={getValue('relasjoner.borMedMedmor')} - /> - <FormikCheckbox - name="relasjoner.foreldreHarSammeAdresse" - label="Foleldre har samme adresse" - onChange={(val: SyntheticEvent) => - handleChange(val?.target?.checked, 'relasjoner.foreldreHarSammeAdresse') - } - value={getValue('relasjoner.foreldreHarSammeAdresse')} - /> + <div className="flexbox--flex-wrap"> + <FormikTextInput + name="relasjoner.antallBarn.fraOgMed" + label="Antall barn f.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikTextInput + name="relasjoner.antallBarn.tilOgMed" + label="Antall barn t.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + </div> + <div className="flexbox--flex-wrap"> + <FormikTextInput + name="relasjoner.relasjonMedFoedselsaar.fraOgMed" + label="Relasjon med fødselsår f.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + <FormikTextInput + name="relasjoner.relasjonMedFoedselsaar.tilOgMed" + label="Relasjon med fødselsår t.o.m." + type="number" + onBlur={(val: SyntheticEvent) => + handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') + } + visHvisAvhuket={false} + fastfield={false} + /> + </div> + <div className="flexbox--flex-wrap"> + <FormikCheckbox + name="relasjoner.harForeldreAnsvar" + label="Har foreldreansvar" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'relasjoner.harForeldreAnsvar') + } + value={getValue('relasjoner.harForeldreAnsvar')} + /> + <FormikCheckbox + name="relasjoner.harDeltBosted" + label="Har delt bosted" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'relasjoner.harDeltBosted') + } + value={getValue('relasjoner.harDeltBosted')} + /> + <FormikCheckbox + name="relasjoner.harVergemaalEllerFremtidsfullmakt" + label="Har vergemål eller fremtidsfullmakt" + onChange={(val: SyntheticEvent) => + handleChange( + val?.target?.checked || undefined, + 'relasjoner.harVergemaalEllerFremtidsfullmakt', + ) + } + value={getValue('relasjoner.harVergemaalEllerFremtidsfullmakt')} + /> + <FormikCheckbox + name="relasjoner.borMedMor" + label="Bor med mor" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMor') + } + value={getValue('relasjoner.borMedMor')} + /> + <FormikCheckbox + name="relasjoner.borMedFar" + label="Bor med far" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedFar') + } + value={getValue('relasjoner.borMedFar')} + /> + <FormikCheckbox + name="relasjoner.borMedMedmor" + label="Bor med medmor" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMedmor') + } + value={getValue('relasjoner.borMedMedmor')} + /> + <FormikCheckbox + name="relasjoner.foreldreHarSammeAdresse" + label="Foleldre har samme adresse" + onChange={(val: SyntheticEvent) => + handleChange(val?.target?.checked || undefined, 'relasjoner.foreldreHarSammeAdresse') + } + value={getValue('relasjoner.foreldreHarSammeAdresse')} + /> + </div> </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 dc82d458674..9c992f1e019 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 @@ -14,7 +14,7 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g const { domain: inntektstypeOptions } = useTenorDomain('Inntektstype') const { domain: beskrivelseOptions } = useTenorDomain('AOrdningBeskrivelse') const { domain: forskuddstrekkOptions } = useTenorDomain('Forskuddstrekk') - // console.log('formikBag: ', formikBag.values) //TODO - SLETT MEG + return ( <SoekKategori> <Monthpicker @@ -43,7 +43,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'inntekt.opplysningspliktig') } - // value={getValue('inntekt.opplysningspliktig')} visHvisAvhuket={false} fastfield={false} /> @@ -54,7 +53,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g isMulti={true} size="grow" label="Inntektstyper" - // placeholder="Velg beskrivelse ..." onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'inntekt.inntektstyper')} value={getValue('inntekt.inntektstyper')} /> @@ -64,7 +62,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g isMulti={true} size="grow" label="Forskuddstrekk" - // placeholder="Velg beskrivelse ..." onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'inntekt.forskuddstrekk') } @@ -74,22 +71,16 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g <FormikSelect name="inntekt.beskrivelse" options={createOptions(beskrivelseOptions?.data)} - size="large" + size="xlarge" label="Beskrivelse" - // placeholder="Velg beskrivelse ..." - // onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'inntekt.beskrivelse')} onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'inntekt.beskrivelse')} value={getValue('inntekt.beskrivelse')} /> - {/*<div className="flexbox--full-width" style={{ fontSize: 'medium' }}>*/} - {/* */} - {/*</div>*/} <FormikSelect name="inntekt.harHistorikk" options={Options('boolean')} size="small" label="Har historikk" - // placeholder="Velg beskrivelse ..." onChange={(val: boolean) => handleChange(val?.value, 'inntekt.harHistorikk')} value={getValue('inntekt.harHistorikk')} /> From 9429e54cf67fc372245e4c7d330e11f0ee0c1f17 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 15 Feb 2024 17:29:44 +0100 Subject: [PATCH 18/50] Fix visning lange navn --- .../js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx | 2 ++ .../main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 660b6ce3c42..f14e4a32392 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -9,6 +9,8 @@ import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/res const NavnHeader = styled.h2` margin: 5px 0 15px 0; + word-break: break-word; + hyphens: auto; ` export const PersonVisning = ({ person, loading, error }) => { // console.log('person: ', person) //TODO - SLETT MEG diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 9a8fd04a6a6..14d1e3beb3d 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -57,7 +57,7 @@ export const TreffListe = ({ response, loading, error }: any) => { style={{ cursor: 'pointer' }} > {/*<h3>{person.visningnavn}</h3>*/} - <h3> + <h3 style={{ wordBreak: 'break-word', hyphens: 'auto' }}> {person.fornavn} {person.etternavn} </h3> <p>{person.identifikator}</p> From 41ff9cdd9c442714c05248539ca13f8f20920ec8 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 16 Feb 2024 12:11:49 +0100 Subject: [PATCH 19/50] Vis antall verdier i request + smaafix --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 93 +++++++++++++++++-- .../FolkeregisteretAdresse.tsx | 2 +- .../FolkeregisteretRelasjoner.tsx | 8 +- .../soekFormPartials/InntektAordningen.tsx | 2 +- 4 files changed, 91 insertions(+), 14 deletions(-) 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 650457d5ef4..1c8d597daab 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 @@ -77,7 +77,9 @@ export const SoekForm = ({ request, setRequest, mutate }) => { let antall = 0 liste.forEach((item) => { const attr = _.get(formikBag.values, item) - if (attr || attr === false) { + if (Array.isArray(attr)) { + antall += attr.length + } else if (attr || attr === false) { antall++ } }) @@ -94,7 +96,25 @@ export const SoekForm = ({ request, setRequest, mutate }) => { <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> <Accordion.Item defaultOpen={true}> <Accordion.Header> - <Header title="Folkeregisteret - identifikasjon og status" antall={0} /> + <Header + title="Folkeregisteret - identifikasjon og status" + antall={getAntallRequest([ + 'identifikator', + 'identifikatorType', + 'foedselsdato.fraOgMed', + 'foedselsdato.tilOgMed', + 'doedsdato.fraOgMed', + 'doedsdato.tilOgMed', + 'kjoenn', + 'personstatus', + 'sivilstand', + 'identitetsgrunnlagStatus', + 'adressebeskyttelse', + 'harFalskIdentitet', + 'utenlandskPersonIdentifikasjon', + 'harLegitimasjonsdokument', + ])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <FolkeregisteretIdentifikasjonStatus @@ -125,7 +145,16 @@ export const SoekForm = ({ request, setRequest, mutate }) => { </Accordion.Item> <Accordion.Item> <Accordion.Header> - <Header title="Folkeregisteret - navn" antall={0} /> + <Header + title="Folkeregisteret - navn" + antall={getAntallRequest([ + 'navn.navnLengde.fraOgMed', + 'navn.navnLengde.tilOgMed', + 'navn.harFlereFornavn', + 'navn.harNavnSpesialtegn', + 'navn.harMellomnavn', + ])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <FolkeregisteretNavn @@ -137,7 +166,19 @@ export const SoekForm = ({ request, setRequest, mutate }) => { </Accordion.Item> <Accordion.Item> <Accordion.Header> - <Header title="Folkeregisteret - adresser" antall={0} /> + <Header + title="Folkeregisteret - adresser" + antall={getAntallRequest([ + 'adresser.adresseGradering', + 'adresser.kommunenummer', + 'adresser.harAdresseSpesialtegn', + 'adresser.harBostedsadresse', + 'adresser.harOppholdAnnetSted', + 'adresser.harPostadresseNorge', + 'adresser.harPostadresseUtland', + 'adresser.harKontaktadresseDoedsbo', + ])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <FolkeregisteretAdresse @@ -149,7 +190,23 @@ export const SoekForm = ({ request, setRequest, mutate }) => { </Accordion.Item> <Accordion.Item> <Accordion.Header> - <Header title="Folkeregisteret - relasjoner" antall={0} /> + <Header + title="Folkeregisteret - relasjoner" + antall={getAntallRequest([ + 'relasjoner.relasjon', + 'relasjoner.antallBarn.fraOgMed', + 'relasjoner.antallBarn.tilOgMed', + 'relasjoner.relasjonMedFoedselsaar.fraOgMed', + 'relasjoner.relasjonMedFoedselsaar.tilOgMed', + 'relasjoner.harForeldreAnsvar', + 'relasjoner.harDeltBosted', + 'relasjoner.harVergemaalEllerFremtidsfullmakt', + 'relasjoner.borMedMor', + 'relasjoner.borMedFar', + 'relasjoner.borMedMedmor', + 'relasjoner.foreldreHarSammeAdresse', + ])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <FolkeregisteretRelasjoner @@ -161,7 +218,13 @@ export const SoekForm = ({ request, setRequest, mutate }) => { </Accordion.Item> <Accordion.Item> <Accordion.Header> - <Header title="Folkeregisteret - hendelser" antall={0} /> + <Header + title="Folkeregisteret - hendelser" + antall={getAntallRequest([ + 'hendelser.hendelse', + 'hendelser.sisteHendelse', + ])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <FolkeregisteretHendelser @@ -173,7 +236,18 @@ export const SoekForm = ({ request, setRequest, mutate }) => { </Accordion.Item> <Accordion.Item> <Accordion.Header> - <Header title="Inntekt A-ordningen" antall={0} /> + <Header + title="Inntekt A-ordningen" + antall={getAntallRequest([ + 'inntekt.periode.fraOgMed', + 'inntekt.periode.tilOgMed', + 'inntekt.opplysningspliktig', + 'inntekt.inntektstyper', + 'inntekt.forskuddstrekk', + 'inntekt.beskrivelse', + 'inntekt.harHistorikk', + ])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <InntektAordningen @@ -186,7 +260,10 @@ export const SoekForm = ({ request, setRequest, mutate }) => { </Accordion.Item> <Accordion.Item> <Accordion.Header> - <Header title="Enhetsregisteret og Foretaksregisteret" antall={0} /> + <Header + title="Enhetsregisteret og Foretaksregisteret" + antall={getAntallRequest(['roller'])} + /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> <EnhetsregisteretForetaksregisteret 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 6d09d2552c0..c79ef5206a2 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 @@ -30,7 +30,7 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an handleChange(val?.target?.value || null, 'adresser.kommunenummer') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> <FormikSelect name="adresser.harAdresseSpesialtegn" 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 917671cf0d0..262986ad432 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 @@ -29,7 +29,7 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> <FormikTextInput name="relasjoner.antallBarn.tilOgMed" @@ -39,7 +39,7 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> </div> <div className="flexbox--flex-wrap"> @@ -51,7 +51,7 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> <FormikTextInput name="relasjoner.relasjonMedFoedselsaar.tilOgMed" @@ -61,7 +61,7 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> </div> <div className="flexbox--flex-wrap"> 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 9c992f1e019..c426971482d 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 @@ -44,7 +44,7 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g handleChange(val?.target?.value || null, 'inntekt.opplysningspliktig') } visHvisAvhuket={false} - fastfield={false} + // fastfield={false} /> <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> <FormikSelect From d829bc3000c8a1203325f73079d60a934823dfce Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 16 Feb 2024 15:28:58 +0100 Subject: [PATCH 20/50] CSS-fix --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 2 +- .../resultatVisning/PersonVisning.tsx | 2 +- .../tenorSoek/resultatVisning/TreffListe.tsx | 31 ++++++++++--------- 3 files changed, 19 insertions(+), 16 deletions(-) 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 1c8d597daab..0c19eeac61e 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 @@ -29,7 +29,7 @@ const SoekefeltWrapper = styled.div` ` const Soekefelt = styled.div` - padding: 20px 15px 5px 15px; + padding: 20px 15px; ` export const SoekForm = ({ request, setRequest, mutate }) => { diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index f14e4a32392..31fc949484a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -30,7 +30,7 @@ export const PersonVisning = ({ person, loading, error }) => { // TODO maa kanskje ta med flere personer hvis lista er lengre? return ( - <Box background="surface-default" padding="3"> + <Box background="surface-default" padding="3" borderRadius="medium"> <NavnHeader>{personData?.visningnavn}</NavnHeader> <FolkeregisteretVisning data={personData} /> <EnhetsregisteretForetaksregisteretVisning diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 14d1e3beb3d..073ea5b8c4a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -3,6 +3,17 @@ import React, { useEffect, useState } from 'react' import { useTenorIdent } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' import Loading from '@/components/ui/loading/Loading' +import styled from 'styled-components' + +const PersonNavn = styled.h3` + word-break: break-word; + hyphens: auto; + margin: 5px 0; +` + +const PersonIdent = styled.p` + margin: 5px 0 15px 0; +` export const TreffListe = ({ response, loading, error }: any) => { if (loading) { return <Loading label="Laster treff ..." /> @@ -19,31 +30,27 @@ export const TreffListe = ({ response, loading, error }: any) => { if (!response) { return null } - // console.log('response: ', response?.data?.personer) //TODO - SLETT MEG const [valgtPerson, setValgtPerson] = useState(null) + const { person: valgtPersonData, loading: valgtPersonLoading, error: valgtPersonError, } = useTenorIdent(valgtPerson?.identifikator) - // console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG - // console.log('person: ', valgtPersonData) //TODO - SLETT MEG - useEffect(() => { setValgtPerson(response?.data?.personer?.[0] || null) }, [response]) const antallTreff = response?.data?.treff + return ( <div className="flexbox--flex-wrap"> <div style={{ width: '30%' }}> <h2>{antallTreff} treff</h2> - {/*<p>{response}</p>*/} <VStack gap="4"> {response?.data?.personer?.map((person: any) => ( - // <Box key={person.identifikator} padding="2" border="1" borderColor="navds-color-gray-20"> <Box key={person.identifikator} padding="2" @@ -52,15 +59,14 @@ export const TreffListe = ({ response, loading, error }: any) => { ? 'surface-alt-3-moderate' : 'surface-alt-3-subtle' } - // background={'surface-alt-3-subtle'} + borderRadius="medium" onClick={() => setValgtPerson(person)} style={{ cursor: 'pointer' }} > - {/*<h3>{person.visningnavn}</h3>*/} - <h3 style={{ wordBreak: 'break-word', hyphens: 'auto' }}> + <PersonNavn> {person.fornavn} {person.etternavn} - </h3> - <p>{person.identifikator}</p> + </PersonNavn> + <PersonIdent>{person.identifikator}</PersonIdent> {person.tenorRelasjoner?.map((relasjon: any, idx: number) => ( <Tag size="small" @@ -82,9 +88,6 @@ export const TreffListe = ({ response, loading, error }: any) => { loading={valgtPersonLoading} error={valgtPersonError} /> - // <div className="dolly-panel-content"> - - // </div> )} </div> </div> From b274f9f869a2f009aaa0d3d56e5743bf8e85146f Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Wed, 21 Feb 2024 16:07:13 +0100 Subject: [PATCH 21/50] Infinite scroll foerste utkast --- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 95 ++++++++++++++++++- .../tenorSoek/resultatVisning/TreffListe.tsx | 93 +++++++++++++----- .../main/js/src/utils/hooks/useTenorSoek.tsx | 9 +- 3 files changed, 168 insertions(+), 29 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index 8b7fc6cceb7..c33606dc85b 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -4,20 +4,107 @@ import { bottom } from '@popperjs/core' import { useTenorOversikt } from '@/utils/hooks/useTenorSoek' import { SoekForm } from '@/pages/tenorSoek/SoekForm' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' -import { useState } from 'react' +import { useEffect, useState } from 'react' export default () => { const [request, setRequest] = useState({}) // Evt. bruk null for aa ikke hente data ved oppstart - const { response, loading, error, mutate } = useTenorOversikt(request) + const [antall, setAntall] = useState(10) + const [side, setSide] = useState(0) + const [seed, setSeed] = useState(null) + const { response, loading, error, mutate } = useTenorOversikt(request, antall, side, seed) + + // const [tmpPersoner, setTmpPersoner] = useState(response?.data?.data?.personer || null) + const [personListe, setPersonListe] = useState([]) + + //TODO lag personliste-hook og slå sammen lister i treffliste + + // const [responseListe, setResponseListe] = useState([response?.data]) // console.log('request: ', request) //TODO - SLETT MEG + + // const personListe = response?.data?.data?.personer || [] + // console.log('response xxx: ', response) //TODO - SLETT MEG + // console.log('personListe: ', personListe) //TODO - SLETT MEG + // console.log('seed: ', seed) //TODO - SLETT MEG + + useEffect(() => { + if (response && personListe?.length === 0) { + console.log('Set personliste 1') //TODO - SLETT MEG + setPersonListe(response?.data?.data?.personer) + setSeed(response?.data?.data?.seed) + setSide((side) => side + 1) + } + }, [response]) + + // useEffect(() => { + // setTmpPersoner(response?.data?.data?.personer) + // }, [side]) + + useEffect(() => { + if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { + // setPersonListe([...personListe, ...tmpPersoner]) + console.log('Set personliste 2') //TODO - SLETT MEG + setPersonListe([...personListe, ...response?.data?.data?.personer]) + mutate() + } + }, [response]) + + // useEffect(() => { + // if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { + // setPersonListe([...personListe, ...response?.data?.data?.personer]) + // mutate() + // } + // }, [tmpPersoner]) + + useEffect(() => { + window.addEventListener('scroll', handleScroll) + return () => window.removeEventListener('scroll', handleScroll) + }, []) + + const handleScroll = () => { + if ( + window.innerHeight + document.documentElement.scrollTop !== + document.documentElement.offsetHeight + ) { + return + } + // setSide(response?.data?.data?.nesteSide) + // const test = (side) => side + // console.log('test: ', test) //TODO - SLETT MEG + // if (side < 4) { + setSide((side) => { + console.log('side: ', side) //TODO - SLETT MEG + if (side < 19) { + return side + 1 + } + return side + }) + // console.log('side: ', side) //TODO - SLETT MEG + console.log('laster flere...: ') //TODO - SLETT MEG + // } + // setSeed(seed || response?.data?.data?.seed) + // console.log('seed: ', seed) //TODO - SLETT MEG + // console.log('side: ', side) //TODO - SLETT MEG + // mutate() + } + //TODO: Naa faar vi bare en liste med 110 personer fordi endepunktet blir kalt 2 ganger pr side? + console.log('personListe: ', personListe) //TODO - SLETT MEG return ( <div> <div className="flexbox--align-center--justify-start"> <Title title="Søk etter personer i Tenor" /> - <Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst> + {/*<Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst>*/} </div> <SoekForm request={request} setRequest={setRequest} mutate={mutate} /> - <TreffListe response={response?.data} loading={loading} error={error} /> + <TreffListe + response={response?.data} + side={side} + setSide={setSide} + setSeed={setSeed} + personListe={personListe} + setPersonListe={setPersonListe} + loading={loading} + error={error} + /> </div> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 073ea5b8c4a..0dd469a3561 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -1,6 +1,6 @@ -import { Box, VStack, Tag, Alert } from '@navikt/ds-react' +import { Box, VStack, Tag, Alert, Button } from '@navikt/ds-react' import React, { useEffect, useState } from 'react' -import { useTenorIdent } from '@/utils/hooks/useTenorSoek' +import { useTenorIdent, useTenorOversikt } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' import Loading from '@/components/ui/loading/Loading' import styled from 'styled-components' @@ -14,10 +14,32 @@ const PersonNavn = styled.h3` const PersonIdent = styled.p` margin: 5px 0 15px 0; ` -export const TreffListe = ({ response, loading, error }: any) => { - if (loading) { - return <Loading label="Laster treff ..." /> - } + +const PersonVisningWrapper = styled.div` + position: sticky; + top: 10px; + max-height: 96vh; + overflow: auto; + + //::-webkit-scrollbar-track { + // background-color: white; + // right: 5px; + //} +` + +export const TreffListe = ({ + response, + side, + setSide, + setSeed, + personListe, + setPersonListe, + loading, + error, +}: any) => { + // if (loading) { + // return <Loading label="Laster treff ..." /> + // } if (error || response?.error) { return ( @@ -27,12 +49,16 @@ export const TreffListe = ({ response, loading, error }: any) => { ) } - if (!response) { + // if (!response) { + // return null + // } + + if (!personListe || personListe?.length === 0) { return null } const [valgtPerson, setValgtPerson] = useState(null) - + // console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG const { person: valgtPersonData, loading: valgtPersonLoading, @@ -40,22 +66,33 @@ export const TreffListe = ({ response, loading, error }: any) => { } = useTenorIdent(valgtPerson?.identifikator) useEffect(() => { - setValgtPerson(response?.data?.personer?.[0] || null) - }, [response]) + if (!valgtPerson) { + setValgtPerson(personListe?.[0] || null) + } + }, [personListe?.[0]]) const antallTreff = response?.data?.treff + // const updatePersonListe = () => { + // if (personListe && personListe?.length > 0) { + // setSeed(response?.data?.seed) + // setSide(side + 1) + // setPersonListe([...personListe, ...response?.data?.personer]) + // } + // } + return ( <div className="flexbox--flex-wrap"> <div style={{ width: '30%' }}> <h2>{antallTreff} treff</h2> <VStack gap="4"> - {response?.data?.personer?.map((person: any) => ( + {/*{response?.data?.personer?.map((person: any) => (*/} + {personListe?.map((person: any) => ( <Box - key={person.identifikator} + key={person?.identifikator} padding="2" background={ - person.identifikator === valgtPerson?.identifikator + person?.identifikator === valgtPerson?.identifikator ? 'surface-alt-3-moderate' : 'surface-alt-3-subtle' } @@ -64,14 +101,14 @@ export const TreffListe = ({ response, loading, error }: any) => { style={{ cursor: 'pointer' }} > <PersonNavn> - {person.fornavn} {person.etternavn} + {person?.fornavn} {person?.etternavn} </PersonNavn> - <PersonIdent>{person.identifikator}</PersonIdent> - {person.tenorRelasjoner?.map((relasjon: any, idx: number) => ( + <PersonIdent>{person?.identifikator}</PersonIdent> + {person?.tenorRelasjoner?.map((relasjon: any, idx: number) => ( <Tag size="small" variant="neutral" - key={person.identifikator + idx} + key={person?.identifikator + idx} style={{ margin: '0 5px 5px 0' }} > {relasjon} @@ -80,14 +117,24 @@ export const TreffListe = ({ response, loading, error }: any) => { </Box> ))} </VStack> + {loading && <Loading label="Laster treff ..." />} + {/*<Button onClick={updatePersonListe} on>Last flere ...</Button>*/} </div> - <div style={{ width: '68%', marginLeft: '2%', marginTop: '68px' }}> + <div + style={{ + width: '68%', + marginLeft: '2%', + marginTop: '68px', + }} + > {valgtPerson && ( - <PersonVisning - person={valgtPersonData?.data} - loading={valgtPersonLoading} - error={valgtPersonError} - /> + <PersonVisningWrapper> + <PersonVisning + person={valgtPersonData?.data} + loading={valgtPersonLoading} + error={valgtPersonError} + /> + </PersonVisningWrapper> )} </div> </div> diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx index d419fed58d7..348b79f5deb 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx @@ -44,9 +44,14 @@ export const useTenorIdent = (ident: string) => { } } -export const useTenorOversikt = (request: any, antall?: number, side?: number, seed?: number) => { +export const useTenorOversikt = (request: any, antall = 10, side = 0, seed?: number | null) => { const { data, isLoading, error, mutate } = useSWR( - request ? [`${tenorSearchUrl}/oversikt`, request] : null, + request + ? [ + `${tenorSearchUrl}/oversikt?antall=${antall}&side=${side}${seed ? '&seed=' + seed : ''}`, + request, + ] + : null, ([url, headers]) => Request.post(url, headers), ) From 3ff13bcdae63459ea422b71ffbacf4d1988a3d1f Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 22 Feb 2024 13:52:13 +0100 Subject: [PATCH 22/50] Smaafix --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 13 ++--- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 53 +++---------------- .../tenorSoek/resultatVisning/TreffListe.tsx | 51 +++++------------- 3 files changed, 22 insertions(+), 95 deletions(-) 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 0c19eeac61e..b28ba52af5c 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,14 +1,10 @@ import { Form, Formik } from 'formik' -import { initialValues } from '@/pages/tenorSoek/InitialValues' import styled from 'styled-components' import { Accordion } from '@navikt/ds-react' import { InntektAordningen } from '@/pages/tenorSoek/soekFormPartials/InntektAordningen' -import React, { useState } from 'react' -import { useTenorIdent, useTenorOversikt, useTenorSoek } from '@/utils/hooks/useTenorSoek' -import { SoekRequest } from '@/pages/dollySoek/DollySoekTypes' +import React from 'react' import * as _ from 'lodash-es' -import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' -import { Header, requestIsEmpty } from '@/components/ui/soekForm/SoekForm' +import { Header } from '@/components/ui/soekForm/SoekForm' import DisplayFormikState from '@/utils/DisplayFormikState' import { EnhetsregisteretForetaksregisteret } from '@/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret' import { FolkeregisteretIdentifikasjonStatus } from '@/pages/tenorSoek/soekFormPartials/FolkeregisteretIdentifikasjonStatus' @@ -17,7 +13,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 { isEmpty } from '@/components/fagsystem/pdlf/form/partials/utils' const SoekefeltWrapper = styled.div` display: flex; @@ -34,7 +29,6 @@ const Soekefelt = styled.div` export const SoekForm = ({ request, setRequest, mutate }) => { function getUpdatedRequest(request: any) { - console.log('request: ', request) //TODO - SLETT MEG for (let key of Object.keys(request)) { if (request[key] === '' || request[key] === null || request[key] === undefined) { delete request[key] @@ -49,8 +43,7 @@ export const SoekForm = ({ request, setRequest, mutate }) => { return ( <SoekefeltWrapper> <Soekefelt> - {/*<Formik initialValues={initialValues} onSubmit={(request) => handleSubmit(request)}>*/} - <Formik initialValues={{}} onSubmit={() => console.log('submit...')}> + <Formik initialValues={{}} onSubmit={() => console.log('submit ...')}> {(formikBag) => { const handleChange = (value: any, path: string) => { const request = _.set(formikBag.values, path, value) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index c33606dc85b..18a5888ff68 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -1,60 +1,33 @@ import Title from '@/components/Title' import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' -import { bottom } from '@popperjs/core' import { useTenorOversikt } from '@/utils/hooks/useTenorSoek' import { SoekForm } from '@/pages/tenorSoek/SoekForm' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' import { useEffect, useState } from 'react' export default () => { - const [request, setRequest] = useState({}) // Evt. bruk null for aa ikke hente data ved oppstart - const [antall, setAntall] = useState(10) + const [request, setRequest] = useState({}) const [side, setSide] = useState(0) const [seed, setSeed] = useState(null) - const { response, loading, error, mutate } = useTenorOversikt(request, antall, side, seed) - // const [tmpPersoner, setTmpPersoner] = useState(response?.data?.data?.personer || null) + const { response, loading, error, mutate } = useTenorOversikt(request, 10, side, seed) const [personListe, setPersonListe] = useState([]) - //TODO lag personliste-hook og slå sammen lister i treffliste - - // const [responseListe, setResponseListe] = useState([response?.data]) - // console.log('request: ', request) //TODO - SLETT MEG - - // const personListe = response?.data?.data?.personer || [] - // console.log('response xxx: ', response) //TODO - SLETT MEG - // console.log('personListe: ', personListe) //TODO - SLETT MEG - // console.log('seed: ', seed) //TODO - SLETT MEG - useEffect(() => { if (response && personListe?.length === 0) { - console.log('Set personliste 1') //TODO - SLETT MEG setPersonListe(response?.data?.data?.personer) setSeed(response?.data?.data?.seed) setSide((side) => side + 1) } }, [response]) - // useEffect(() => { - // setTmpPersoner(response?.data?.data?.personer) - // }, [side]) - useEffect(() => { if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { - // setPersonListe([...personListe, ...tmpPersoner]) - console.log('Set personliste 2') //TODO - SLETT MEG setPersonListe([...personListe, ...response?.data?.data?.personer]) mutate() } }, [response]) - // useEffect(() => { - // if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { - // setPersonListe([...personListe, ...response?.data?.data?.personer]) - // mutate() - // } - // }, [tmpPersoner]) - useEffect(() => { window.addEventListener('scroll', handleScroll) return () => window.removeEventListener('scroll', handleScroll) @@ -67,27 +40,17 @@ export default () => { ) { return } - // setSide(response?.data?.data?.nesteSide) - // const test = (side) => side - // console.log('test: ', test) //TODO - SLETT MEG - // if (side < 4) { setSide((side) => { - console.log('side: ', side) //TODO - SLETT MEG if (side < 19) { return side + 1 } return side }) - // console.log('side: ', side) //TODO - SLETT MEG - console.log('laster flere...: ') //TODO - SLETT MEG - // } - // setSeed(seed || response?.data?.data?.seed) - // console.log('seed: ', seed) //TODO - SLETT MEG - // console.log('side: ', side) //TODO - SLETT MEG - // mutate() } - //TODO: Naa faar vi bare en liste med 110 personer fordi endepunktet blir kalt 2 ganger pr side? - console.log('personListe: ', personListe) //TODO - SLETT MEG + + console.log('window: ', window.innerHeight) //TODO - SLETT MEG + console.log('document: ', document.documentElement.offsetHeight) //TODO - SLETT MEG + return ( <div> <div className="flexbox--align-center--justify-start"> @@ -97,11 +60,7 @@ export default () => { <SoekForm request={request} setRequest={setRequest} mutate={mutate} /> <TreffListe response={response?.data} - side={side} - setSide={setSide} - setSeed={setSeed} personListe={personListe} - setPersonListe={setPersonListe} loading={loading} error={error} /> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 0dd469a3561..cb17e9969eb 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -1,6 +1,6 @@ -import { Box, VStack, Tag, Alert, Button } from '@navikt/ds-react' +import { Box, VStack, Tag, Alert } from '@navikt/ds-react' import React, { useEffect, useState } from 'react' -import { useTenorIdent, useTenorOversikt } from '@/utils/hooks/useTenorSoek' +import { useTenorIdent } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' import Loading from '@/components/ui/loading/Loading' import styled from 'styled-components' @@ -20,26 +20,13 @@ const PersonVisningWrapper = styled.div` top: 10px; max-height: 96vh; overflow: auto; - - //::-webkit-scrollbar-track { - // background-color: white; - // right: 5px; - //} + scrollbar-width: none; ` -export const TreffListe = ({ - response, - side, - setSide, - setSeed, - personListe, - setPersonListe, - loading, - error, -}: any) => { - // if (loading) { - // return <Loading label="Laster treff ..." /> - // } +export const TreffListe = ({ response, personListe, loading, error }: any) => { + if ((!personListe || personListe?.length === 0) && loading) { + return <Loading label="Laster treff ..." /> + } if (error || response?.error) { return ( @@ -49,21 +36,18 @@ export const TreffListe = ({ ) } - // if (!response) { - // return null - // } - if (!personListe || personListe?.length === 0) { return null } const [valgtPerson, setValgtPerson] = useState(null) - // console.log('valgtPerson: ', valgtPerson) //TODO - SLETT MEG + const { person: valgtPersonData, loading: valgtPersonLoading, error: valgtPersonError, - } = useTenorIdent(valgtPerson?.identifikator) + } = useTenorIdent(valgtPerson?.identifikator?.[0]) + //TODO endres tilbake når vi faar ident som ikke er array useEffect(() => { if (!valgtPerson) { @@ -73,20 +57,13 @@ export const TreffListe = ({ const antallTreff = response?.data?.treff - // const updatePersonListe = () => { - // if (personListe && personListe?.length > 0) { - // setSeed(response?.data?.seed) - // setSide(side + 1) - // setPersonListe([...personListe, ...response?.data?.personer]) - // } - // } - return ( <div className="flexbox--flex-wrap"> + <div className="flexbox--full-width"> + {antallTreff && <h2 style={{ marginTop: '5px' }}>{antallTreff} treff</h2>} + </div> <div style={{ width: '30%' }}> - <h2>{antallTreff} treff</h2> <VStack gap="4"> - {/*{response?.data?.personer?.map((person: any) => (*/} {personListe?.map((person: any) => ( <Box key={person?.identifikator} @@ -118,13 +95,11 @@ export const TreffListe = ({ ))} </VStack> {loading && <Loading label="Laster treff ..." />} - {/*<Button onClick={updatePersonListe} on>Last flere ...</Button>*/} </div> <div style={{ width: '68%', marginLeft: '2%', - marginTop: '68px', }} > {valgtPerson && ( From ed9184ecc2cae757ef5b313d7f2369f91cbc9a4a Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 23 Feb 2024 18:41:54 +0100 Subject: [PATCH 23/50] Oppdatering av treffliste funker nesten --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 15 ++- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 122 ++++++++++++++---- .../FolkeregisteretVisning.tsx | 3 +- .../tenorSoek/resultatVisning/TreffListe.tsx | 18 +-- 4 files changed, 123 insertions(+), 35 deletions(-) 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 b28ba52af5c..0da20c24e15 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 @@ -27,7 +27,7 @@ const Soekefelt = styled.div` padding: 20px 15px; ` -export const SoekForm = ({ request, setRequest, mutate }) => { +export const SoekForm = ({ request, setRequest, setPersonListe, setSeed, setSide, mutate }) => { function getUpdatedRequest(request: any) { for (let key of Object.keys(request)) { if (request[key] === '' || request[key] === null || request[key] === undefined) { @@ -48,7 +48,13 @@ export const SoekForm = ({ request, setRequest, mutate }) => { const handleChange = (value: any, path: string) => { const request = _.set(formikBag.values, path, value) getUpdatedRequest(request) - setRequest(request) + // setPersonListe([]) + // setSeed(null) + // setSide(0) + // const test = { ...request } + // console.log('request: ', request) //TODO - SLETT MEG + // console.log('test: ', test) //TODO - SLETT MEG + setRequest({ ...request }) formikBag.setValues(request) mutate() } @@ -57,7 +63,10 @@ export const SoekForm = ({ request, setRequest, mutate }) => { const list = value.map((item: any) => item.value) const request = _.set(formikBag.values, path, list) getUpdatedRequest(request) - setRequest(request) + // setPersonListe([]) + // setSeed(null) + // setSide(0) + setRequest({ ...request }) formikBag.setValues(request) mutate() } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index 18a5888ff68..f71c17abfc2 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -5,62 +5,138 @@ import { SoekForm } from '@/pages/tenorSoek/SoekForm' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' import { useEffect, useState } from 'react' +const initialState = { + // request: {}, + personListe: [], + side: 0, + seed: null, +} + export default () => { const [request, setRequest] = useState({}) - const [side, setSide] = useState(0) - const [seed, setSeed] = useState(null) + // const [side, setSide] = useState(0) + // const [seed, setSeed] = useState(null) - const { response, loading, error, mutate } = useTenorOversikt(request, 10, side, seed) + const [state, setState] = useState(initialState) + + // const { response, loading, error, mutate } = useTenorOversikt(request, 10, side, seed) + const { response, loading, error, mutate } = useTenorOversikt(request, 10, state.side, state.seed) const [personListe, setPersonListe] = useState([]) + console.log('state: ', state) //TODO - SLETT MEG + // console.log('personListe: ', personListe) //TODO - SLETT MEG + // console.log('seed: ', seed) //TODO - SLETT MEG + // console.log('side: ', side) //TODO - SLETT MEG + console.log('request: ', request) //TODO - SLETT MEG + // console.log('response: ', response) //TODO - SLETT MEG + + // "kjoenn": "Mann" + // "sivilstand": "EnkeEllerEnkemann" + useEffect(() => { - if (response && personListe?.length === 0) { - setPersonListe(response?.data?.data?.personer) - setSeed(response?.data?.data?.seed) - setSide((side) => side + 1) - } - }, [response]) + setState(initialState) + }, [request]) + + // useEffect(() => { + // setPersonListe([]) + // setSeed(null) + // setSide(0) + // // mutate() + // }, [request]) useEffect(() => { - if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { - setPersonListe([...personListe, ...response?.data?.data?.personer]) - mutate() + if (response && state.personListe?.length === 0) { + // console.log('response 1: ', response) //TODO - SLETT MEG + setState({ + ...state, + personListe: response?.data?.data?.personer, + seed: response?.data?.data?.seed, + }) + } else if ( + state.personListe?.length > 0 && + response?.data?.data?.personer?.length > 0 && + state.side > 0 + ) { + // console.log('response 2: ', response) //TODO - SLETT MEG + setState({ ...state, personListe: [...state.personListe, ...response?.data?.data?.personer] }) } }, [response]) + // useEffect(() => { + // if (response && personListe?.length === 0) { + // // console.log('response 1: ', response) //TODO - SLETT MEG + // setPersonListe(response?.data?.data?.personer) + // setSeed(response?.data?.data?.seed) + // } else if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0 && state.side > 0) { + // // console.log('response 2: ', response) //TODO - SLETT MEG + // setPersonListe([...personListe, ...response?.data?.data?.personer]) + // } + // }, [response]) + + // useEffect(() => { + // if (response && personListe?.length === 0) { + // console.log('useeffect 1') //TODO - SLETT MEG + // setPersonListe(response?.data?.data?.personer) + // setSeed(response?.data?.data?.seed) + // setSide((side) => side + 1) + // } + // }, [response]) + + // useEffect(() => { + // if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { + // console.log('useeffect 2') //TODO - SLETT MEG + // setPersonListe([...personListe, ...response?.data?.data?.personer]) + // // mutate() + // } + // }, [response]) + useEffect(() => { + // console.log('personListe?.length: ', personListe?.length) //TODO - SLETT MEG + // console.log('response?.data?.data?.treff: ', response?.data?.data?.treff) //TODO - SLETT MEG window.addEventListener('scroll', handleScroll) return () => window.removeEventListener('scroll', handleScroll) }, []) const handleScroll = () => { if ( - window.innerHeight + document.documentElement.scrollTop !== - document.documentElement.offsetHeight + document.documentElement.scrollHeight - document.documentElement.scrollTop > + document.documentElement.clientHeight ) { return } - setSide((side) => { - if (side < 19) { - return side + 1 + setState((state) => { + // if (state.personListe?.length < response?.data?.data?.treff) { + if (state.side < 19) { + return { ...state, side: state.side + 1 } } - return side + return state }) + // setSide((side) => { + // if (side < 19) { + // return side + 1 + // } + // return side + // }) } - console.log('window: ', window.innerHeight) //TODO - SLETT MEG - console.log('document: ', document.documentElement.offsetHeight) //TODO - SLETT MEG - return ( <div> <div className="flexbox--align-center--justify-start"> <Title title="Søk etter personer i Tenor" /> {/*<Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst>*/} </div> - <SoekForm request={request} setRequest={setRequest} mutate={mutate} /> + <SoekForm + request={request} + setRequest={setRequest} + // setPersonListe={setPersonListe} + // setSeed={setSeed} + // setSide={setSide} + mutate={mutate} + /> <TreffListe response={response?.data} - personListe={personListe} + // personListe={personListe} + personListe={state.personListe} loading={loading} error={error} /> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index d85621efbde..15dbb254b8d 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -4,6 +4,7 @@ import { formatDate, showLabel } from '@/utils/DataFormatter' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' import styled from 'styled-components' +import { arrayToString } from '@/utils/DataFormatter' const RelasjonerTittel = styled.h3` width: 100%; @@ -21,7 +22,7 @@ export const FolkeregisteretVisning = ({ data }) => { return ( <SubOverskriftExpandable label="Folkeregisteret" iconKind="personinformasjon" isExpanded={true}> <TabsVisning kildedata={data.tenorMetadata?.kildedata}> - <TitleValue title="Identifikator" value={data.identifikator} /> + <TitleValue title="Identifikator" value={arrayToString(data.identifikator, ', ')} /> <TitleValue title="Navn" value={data.visningnavn} /> <TitleValue title="Fødselsdato" value={formatDate(data.foedselsdato)} /> <TitleValue title="Kjønn" value={showLabel('kjoenn', data.kjoenn)} /> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index cb17e9969eb..f1d3bbbef12 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -46,7 +46,7 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { person: valgtPersonData, loading: valgtPersonLoading, error: valgtPersonError, - } = useTenorIdent(valgtPerson?.identifikator?.[0]) + } = useTenorIdent(valgtPerson?.id) //TODO endres tilbake når vi faar ident som ikke er array useEffect(() => { @@ -66,12 +66,10 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { <VStack gap="4"> {personListe?.map((person: any) => ( <Box - key={person?.identifikator} + key={person?.id} padding="2" background={ - person?.identifikator === valgtPerson?.identifikator - ? 'surface-alt-3-moderate' - : 'surface-alt-3-subtle' + person?.id === valgtPerson?.id ? 'surface-alt-3-moderate' : 'surface-alt-3-subtle' } borderRadius="medium" onClick={() => setValgtPerson(person)} @@ -80,12 +78,12 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { <PersonNavn> {person?.fornavn} {person?.etternavn} </PersonNavn> - <PersonIdent>{person?.identifikator}</PersonIdent> + <PersonIdent>{person?.id}</PersonIdent> {person?.tenorRelasjoner?.map((relasjon: any, idx: number) => ( <Tag size="small" variant="neutral" - key={person?.identifikator + idx} + key={person?.id + idx} style={{ margin: '0 5px 5px 0' }} > {relasjon} @@ -94,7 +92,11 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { </Box> ))} </VStack> - {loading && <Loading label="Laster treff ..." />} + {loading && ( + <div style={{ margin: '10px 0' }}> + <Loading label="Laster treff ..." /> + </div> + )} </div> <div style={{ From 86f3f0ebbc28a48b0103e0e1da9f4ccb336dd470 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 26 Feb 2024 17:51:53 +0100 Subject: [PATCH 24/50] Uendelig scroll div bugfix --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 11 +-- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 85 +++---------------- .../tenorSoek/resultatVisning/TreffListe.tsx | 9 +- 3 files changed, 14 insertions(+), 91 deletions(-) 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 0da20c24e15..967ae5128ca 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 @@ -27,7 +27,7 @@ const Soekefelt = styled.div` padding: 20px 15px; ` -export const SoekForm = ({ request, setRequest, setPersonListe, setSeed, setSide, mutate }) => { +export const SoekForm = ({ setRequest, mutate }) => { function getUpdatedRequest(request: any) { for (let key of Object.keys(request)) { if (request[key] === '' || request[key] === null || request[key] === undefined) { @@ -48,12 +48,6 @@ export const SoekForm = ({ request, setRequest, setPersonListe, setSeed, setSide const handleChange = (value: any, path: string) => { const request = _.set(formikBag.values, path, value) getUpdatedRequest(request) - // setPersonListe([]) - // setSeed(null) - // setSide(0) - // const test = { ...request } - // console.log('request: ', request) //TODO - SLETT MEG - // console.log('test: ', test) //TODO - SLETT MEG setRequest({ ...request }) formikBag.setValues(request) mutate() @@ -63,9 +57,6 @@ export const SoekForm = ({ request, setRequest, setPersonListe, setSeed, setSide const list = value.map((item: any) => item.value) const request = _.set(formikBag.values, path, list) getUpdatedRequest(request) - // setPersonListe([]) - // setSeed(null) - // setSide(0) setRequest({ ...request }) formikBag.setValues(request) mutate() diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index f71c17abfc2..cd11f533361 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -6,93 +6,43 @@ import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' import { useEffect, useState } from 'react' const initialState = { - // request: {}, personListe: [], side: 0, seed: null, + nesteSide: null, } export default () => { const [request, setRequest] = useState({}) - // const [side, setSide] = useState(0) - // const [seed, setSeed] = useState(null) - const [state, setState] = useState(initialState) - - // const { response, loading, error, mutate } = useTenorOversikt(request, 10, side, seed) const { response, loading, error, mutate } = useTenorOversikt(request, 10, state.side, state.seed) - const [personListe, setPersonListe] = useState([]) - - console.log('state: ', state) //TODO - SLETT MEG - // console.log('personListe: ', personListe) //TODO - SLETT MEG - // console.log('seed: ', seed) //TODO - SLETT MEG - // console.log('side: ', side) //TODO - SLETT MEG - console.log('request: ', request) //TODO - SLETT MEG - // console.log('response: ', response) //TODO - SLETT MEG - - // "kjoenn": "Mann" - // "sivilstand": "EnkeEllerEnkemann" useEffect(() => { setState(initialState) }, [request]) - // useEffect(() => { - // setPersonListe([]) - // setSeed(null) - // setSide(0) - // // mutate() - // }, [request]) - useEffect(() => { if (response && state.personListe?.length === 0) { - // console.log('response 1: ', response) //TODO - SLETT MEG setState({ ...state, personListe: response?.data?.data?.personer, seed: response?.data?.data?.seed, + nesteSide: response?.data?.data?.nesteSide, }) } else if ( state.personListe?.length > 0 && response?.data?.data?.personer?.length > 0 && state.side > 0 ) { - // console.log('response 2: ', response) //TODO - SLETT MEG - setState({ ...state, personListe: [...state.personListe, ...response?.data?.data?.personer] }) + setState({ + ...state, + personListe: [...state.personListe, ...response?.data?.data?.personer], + nesteSide: response?.data?.data?.nesteSide, + }) } }, [response]) - // useEffect(() => { - // if (response && personListe?.length === 0) { - // // console.log('response 1: ', response) //TODO - SLETT MEG - // setPersonListe(response?.data?.data?.personer) - // setSeed(response?.data?.data?.seed) - // } else if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0 && state.side > 0) { - // // console.log('response 2: ', response) //TODO - SLETT MEG - // setPersonListe([...personListe, ...response?.data?.data?.personer]) - // } - // }, [response]) - - // useEffect(() => { - // if (response && personListe?.length === 0) { - // console.log('useeffect 1') //TODO - SLETT MEG - // setPersonListe(response?.data?.data?.personer) - // setSeed(response?.data?.data?.seed) - // setSide((side) => side + 1) - // } - // }, [response]) - - // useEffect(() => { - // if (personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { - // console.log('useeffect 2') //TODO - SLETT MEG - // setPersonListe([...personListe, ...response?.data?.data?.personer]) - // // mutate() - // } - // }, [response]) - useEffect(() => { - // console.log('personListe?.length: ', personListe?.length) //TODO - SLETT MEG - // console.log('response?.data?.data?.treff: ', response?.data?.data?.treff) //TODO - SLETT MEG window.addEventListener('scroll', handleScroll) return () => window.removeEventListener('scroll', handleScroll) }, []) @@ -105,18 +55,11 @@ export default () => { return } setState((state) => { - // if (state.personListe?.length < response?.data?.data?.treff) { - if (state.side < 19) { - return { ...state, side: state.side + 1 } + if (state.side < 19 && state.nesteSide) { + return { ...state, side: state.nesteSide } } return state }) - // setSide((side) => { - // if (side < 19) { - // return side + 1 - // } - // return side - // }) } return ( @@ -125,17 +68,9 @@ export default () => { <Title title="Søk etter personer i Tenor" /> {/*<Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst>*/} </div> - <SoekForm - request={request} - setRequest={setRequest} - // setPersonListe={setPersonListe} - // setSeed={setSeed} - // setSide={setSide} - mutate={mutate} - /> + <SoekForm setRequest={setRequest} mutate={mutate} /> <TreffListe response={response?.data} - // personListe={personListe} personListe={state.personListe} loading={loading} error={error} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index f1d3bbbef12..cf5dc1cd0a2 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -36,10 +36,6 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { ) } - if (!personListe || personListe?.length === 0) { - return null - } - const [valgtPerson, setValgtPerson] = useState(null) const { @@ -47,7 +43,6 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { loading: valgtPersonLoading, error: valgtPersonError, } = useTenorIdent(valgtPerson?.id) - //TODO endres tilbake når vi faar ident som ikke er array useEffect(() => { if (!valgtPerson) { @@ -60,7 +55,9 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { return ( <div className="flexbox--flex-wrap"> <div className="flexbox--full-width"> - {antallTreff && <h2 style={{ marginTop: '5px' }}>{antallTreff} treff</h2>} + <h2 style={{ marginTop: '5px' }}> + {antallTreff || antallTreff === 0 ? `${antallTreff} treff` : ''} + </h2> </div> <div style={{ width: '30%' }}> <VStack gap="4"> From e2c42b4909d8e9799d2975da7b5fc9a3644a59fe Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Wed, 28 Feb 2024 19:28:04 +0100 Subject: [PATCH 25/50] Tilpasninger for react hook form --- .../src/components/ui/soekForm/SoekForm.tsx | 5 - .../main/js/src/pages/dollySoek/SoekForm.tsx | 1 - .../main/js/src/pages/tenorSoek/SoekForm.tsx | 429 ++++++++---------- .../FolkeregisteretVisning.tsx | 2 +- .../EnhetsregisteretForetaksregisteret.tsx | 7 +- .../FolkeregisteretAdresse.tsx | 14 +- .../FolkeregisteretHendelser.tsx | 4 +- .../FolkeregisteretIdentifikasjonStatus.tsx | 32 +- .../soekFormPartials/FolkeregisteretNavn.tsx | 7 +- .../FolkeregisteretRelasjoner.tsx | 15 +- .../FolkeregisteretStatsborgerskap.tsx | 6 +- .../soekFormPartials/InntektAordningen.tsx | 11 +- 12 files changed, 207 insertions(+), 326 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx index 4058fa54769..ed38229dde3 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx @@ -25,11 +25,6 @@ export const SoekKategori = styled.div` flex-grow: 0; } } - && { - .navds-checkbox__icon { - margin-top: -4px; - } - } ` export const Buttons = styled.div` 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 65d0377172e..54ef0a46eac 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 @@ -1,5 +1,4 @@ import '@/styles/variables.less' -import styled from 'styled-components' import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import React, { SyntheticEvent, useState } from 'react' import { FormikSelect } from '@/components/ui/form/inputs/select/Select' 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 08b94a9052f..ca714a7ed25 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,9 +1,8 @@ -// import { Form, Formik } from 'formik' +import { Form, FormProvider, useForm } from 'react-hook-form' import styled from 'styled-components' import { Accordion } from '@navikt/ds-react' import { InntektAordningen } from '@/pages/tenorSoek/soekFormPartials/InntektAordningen' import React from 'react' -import _ from 'lodash' import { Header } from '@/components/ui/soekForm/SoekForm' import DisplayFormikState from '@/utils/DisplayFormikState' import { EnhetsregisteretForetaksregisteret } from '@/pages/tenorSoek/soekFormPartials/EnhetsregisteretForetaksregisteret' @@ -28,6 +27,12 @@ const Soekefelt = styled.div` ` export const SoekForm = ({ setRequest, mutate }) => { + const formMethods = useForm({ + mode: 'onChange', + defaultValues: {}, + }) + const { getValues, control, setValue, watch } = formMethods + function getUpdatedRequest(request: any) { for (let key of Object.keys(request)) { if (request[key] === '' || request[key] === null || request[key] === undefined) { @@ -40,240 +45,200 @@ export const SoekForm = ({ setRequest, mutate }) => { return Array.isArray(request) ? request.filter((val) => val) : request } - return ( - <SoekefeltWrapper> - <Soekefelt> - {/*<Formik initialValues={{}} onSubmit={() => console.log('submit ...')}>*/} - {/* {(formikBag) => {*/} - {/* const handleChange = (value: any, path: string) => {*/} - {/* const request = _.set(formikBag.values, path, value)*/} - {/* getUpdatedRequest(request)*/} - {/* setRequest({ ...request })*/} - {/* formikBag.setValues(request)*/} - {/* mutate()*/} - {/* }*/} - - {/* const handleChangeList = (value: any, path: string) => {*/} - {/* const list = value.map((item: any) => item.value)*/} - {/* const request = _.set(formikBag.values, path, list)*/} - {/* getUpdatedRequest(request)*/} - {/* setRequest({ ...request })*/} - {/* formikBag.setValues(request)*/} - {/* mutate()*/} - {/* }*/} + const handleChange = (value: any, path: string) => { + setValue(path, value) + const request = getUpdatedRequest(watch()) + setRequest({ ...request }) + mutate() + } - {/* const getValue = (path: string) => {*/} - {/* return _.get(formikBag.values, path)*/} - {/* }*/} + const handleChangeList = (value: any, path: string) => { + const list = value.map((item: any) => item.value) + setValue(path, list) + const request = getUpdatedRequest(watch()) + setRequest({ ...request }) + mutate() + } - {/* const getAntallRequest = (liste: Array<string>) => {*/} - {/* let antall = 0*/} - {/* liste.forEach((item) => {*/} - {/* const attr = _.get(formikBag.values, item)*/} - {/* if (Array.isArray(attr)) {*/} - {/* antall += attr.length*/} - {/* } else if (attr || attr === false) {*/} - {/* antall++*/} - {/* }*/} - {/* })*/} - {/* return antall*/} - {/* }*/} + const getAntallRequest = (liste: Array<string>) => { + let antall = 0 + liste.forEach((item) => { + const attr = getValues(item) + if (Array.isArray(attr)) { + antall += attr.length + } else if (attr || attr === false) { + antall++ + } + }) + return antall + } - {/* const devEnabled =*/} - {/* window.location.hostname.includes('localhost') ||*/} - {/* window.location.hostname.includes('dolly-frontend-dev')*/} + const devEnabled = + window.location.hostname.includes('localhost') || + window.location.hostname.includes('dolly-frontend-dev') - {/* return (*/} - {/* <>*/} - {/* <Form className="flexbox--flex-wrap" autoComplete="off">*/} - {/* <Accordion size="small" headingSize="xsmall" className="flexbox--full-width">*/} - {/* <Accordion.Item defaultOpen={true}>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Folkeregisteret - identifikasjon og status"*/} - {/* antall={getAntallRequest([*/} - {/* 'identifikator',*/} - {/* 'identifikatorType',*/} - {/* 'foedselsdato.fraOgMed',*/} - {/* 'foedselsdato.tilOgMed',*/} - {/* 'doedsdato.fraOgMed',*/} - {/* 'doedsdato.tilOgMed',*/} - {/* 'kjoenn',*/} - {/* 'personstatus',*/} - {/* 'sivilstand',*/} - {/* 'identitetsgrunnlagStatus',*/} - {/* 'adressebeskyttelse',*/} - {/* 'harFalskIdentitet',*/} - {/* 'utenlandskPersonIdentifikasjon',*/} - {/* 'harLegitimasjonsdokument',*/} - {/* ])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <FolkeregisteretIdentifikasjonStatus*/} - {/* formikBag={formikBag}*/} - {/* handleChange={handleChange}*/} - {/* handleChangeList={handleChangeList}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* <Accordion.Item>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Folkeregisteret - statsborgerskap"*/} - {/* antall={getAntallRequest([*/} - {/* 'harNorskStatsborgerskap',*/} - {/* 'harFlereStatsborgerskap',*/} - {/* ])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <FolkeregisteretStatsborgerskap*/} - {/* formikBag={formikBag}*/} - {/* handleChange={handleChange}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* <Accordion.Item>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Folkeregisteret - navn"*/} - {/* antall={getAntallRequest([*/} - {/* 'navn.navnLengde.fraOgMed',*/} - {/* 'navn.navnLengde.tilOgMed',*/} - {/* 'navn.harFlereFornavn',*/} - {/* 'navn.harNavnSpesialtegn',*/} - {/* 'navn.harMellomnavn',*/} - {/* ])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <FolkeregisteretNavn*/} - {/* formikBag={formikBag}*/} - {/* handleChange={handleChange}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* <Accordion.Item>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Folkeregisteret - adresser"*/} - {/* antall={getAntallRequest([*/} - {/* 'adresser.adresseGradering',*/} - {/* 'adresser.kommunenummer',*/} - {/* 'adresser.harAdresseSpesialtegn',*/} - {/* 'adresser.harBostedsadresse',*/} - {/* 'adresser.harOppholdAnnetSted',*/} - {/* 'adresser.harPostadresseNorge',*/} - {/* 'adresser.harPostadresseUtland',*/} - {/* 'adresser.harKontaktadresseDoedsbo',*/} - {/* ])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <FolkeregisteretAdresse*/} - {/* formikBag={formikBag}*/} - {/* handleChange={handleChange}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* <Accordion.Item>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Folkeregisteret - relasjoner"*/} - {/* antall={getAntallRequest([*/} - {/* 'relasjoner.relasjon',*/} - {/* 'relasjoner.antallBarn.fraOgMed',*/} - {/* 'relasjoner.antallBarn.tilOgMed',*/} - {/* 'relasjoner.relasjonMedFoedselsaar.fraOgMed',*/} - {/* 'relasjoner.relasjonMedFoedselsaar.tilOgMed',*/} - {/* 'relasjoner.harForeldreAnsvar',*/} - {/* 'relasjoner.harDeltBosted',*/} - {/* 'relasjoner.harVergemaalEllerFremtidsfullmakt',*/} - {/* 'relasjoner.borMedMor',*/} - {/* 'relasjoner.borMedFar',*/} - {/* 'relasjoner.borMedMedmor',*/} - {/* 'relasjoner.foreldreHarSammeAdresse',*/} - {/* ])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <FolkeregisteretRelasjoner*/} - {/* formikBag={formikBag}*/} - {/* handleChange={handleChange}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* <Accordion.Item>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Folkeregisteret - hendelser"*/} - {/* antall={getAntallRequest([*/} - {/* 'hendelser.hendelse',*/} - {/* 'hendelser.sisteHendelse',*/} - {/* ])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <FolkeregisteretHendelser*/} - {/* formikBag={formikBag}*/} - {/* handleChange={handleChange}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* <Accordion.Item>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Inntekt A-ordningen"*/} - {/* antall={getAntallRequest([*/} - {/* 'inntekt.periode.fraOgMed',*/} - {/* 'inntekt.periode.tilOgMed',*/} - {/* 'inntekt.opplysningspliktig',*/} - {/* 'inntekt.inntektstyper',*/} - {/* 'inntekt.forskuddstrekk',*/} - {/* 'inntekt.beskrivelse',*/} - {/* 'inntekt.harHistorikk',*/} - {/* ])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <InntektAordningen*/} - {/* formikBag={formikBag}*/} - {/* handleChange={handleChange}*/} - {/* handleChangeList={handleChangeList}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* <Accordion.Item>*/} - {/* <Accordion.Header>*/} - {/* <Header*/} - {/* title="Enhetsregisteret og Foretaksregisteret"*/} - {/* antall={getAntallRequest(['roller'])}*/} - {/* />*/} - {/* </Accordion.Header>*/} - {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} - {/* <EnhetsregisteretForetaksregisteret*/} - {/* formikBag={formikBag}*/} - {/* handleChangeList={handleChangeList}*/} - {/* getValue={getValue}*/} - {/* />*/} - {/* </Accordion.Content>*/} - {/* </Accordion.Item>*/} - {/* </Accordion>*/} - {/* </Form>*/} - {/* {devEnabled && <DisplayFormikState {...formikBag} />}*/} - {/* </>*/} - {/* // TODO sett inn chips her?*/} - {/* )*/} - {/* }}*/} - {/*</Formik>*/} + return ( + <SoekefeltWrapper> + <Soekefelt> + <FormProvider {...formMethods}> + <> + <Form control={control} className="flexbox--flex-wrap"> + <Accordion size="small" headingSize="xsmall" className="flexbox--full-width"> + <Accordion.Item defaultOpen={true}> + <Accordion.Header> + <Header + title="Folkeregisteret - identifikasjon og status" + antall={getAntallRequest([ + 'identifikator', + 'identifikatorType', + 'foedselsdato.fraOgMed', + 'foedselsdato.tilOgMed', + 'doedsdato.fraOgMed', + 'doedsdato.tilOgMed', + 'kjoenn', + 'personstatus', + 'sivilstand', + 'identitetsgrunnlagStatus', + 'adressebeskyttelse', + 'harFalskIdentitet', + 'utenlandskPersonIdentifikasjon', + 'harLegitimasjonsdokument', + ])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretIdentifikasjonStatus + handleChange={handleChange} + handleChangeList={handleChangeList} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header + title="Folkeregisteret - statsborgerskap" + antall={getAntallRequest([ + 'harNorskStatsborgerskap', + 'harFlereStatsborgerskap', + ])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretStatsborgerskap handleChange={handleChange} /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header + title="Folkeregisteret - navn" + antall={getAntallRequest([ + 'navn.navnLengde.fraOgMed', + 'navn.navnLengde.tilOgMed', + 'navn.harFlereFornavn', + 'navn.harNavnSpesialtegn', + 'navn.harMellomnavn', + ])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretNavn handleChange={handleChange} /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header + title="Folkeregisteret - adresser" + antall={getAntallRequest([ + 'adresser.adresseGradering', + 'adresser.kommunenummer', + 'adresser.harAdresseSpesialtegn', + 'adresser.harBostedsadresse', + 'adresser.harOppholdAnnetSted', + 'adresser.harPostadresseNorge', + 'adresser.harPostadresseUtland', + 'adresser.harKontaktadresseDoedsbo', + ])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretAdresse handleChange={handleChange} /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header + title="Folkeregisteret - relasjoner" + antall={getAntallRequest([ + 'relasjoner.relasjon', + 'relasjoner.antallBarn.fraOgMed', + 'relasjoner.antallBarn.tilOgMed', + 'relasjoner.relasjonMedFoedselsaar.fraOgMed', + 'relasjoner.relasjonMedFoedselsaar.tilOgMed', + 'relasjoner.harForeldreAnsvar', + 'relasjoner.harDeltBosted', + 'relasjoner.harVergemaalEllerFremtidsfullmakt', + 'relasjoner.borMedMor', + 'relasjoner.borMedFar', + 'relasjoner.borMedMedmor', + 'relasjoner.foreldreHarSammeAdresse', + ])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretRelasjoner handleChange={handleChange} /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header + title="Folkeregisteret - hendelser" + antall={getAntallRequest(['hendelser.hendelse', 'hendelser.sisteHendelse'])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <FolkeregisteretHendelser handleChange={handleChange} /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header + title="Inntekt A-ordningen" + antall={getAntallRequest([ + 'inntekt.periode.fraOgMed', + 'inntekt.periode.tilOgMed', + 'inntekt.opplysningspliktig', + 'inntekt.inntektstyper', + 'inntekt.forskuddstrekk', + 'inntekt.beskrivelse', + 'inntekt.harHistorikk', + ])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <InntektAordningen + handleChange={handleChange} + handleChangeList={handleChangeList} + getValue={watch} + /> + </Accordion.Content> + </Accordion.Item> + <Accordion.Item> + <Accordion.Header> + <Header + title="Enhetsregisteret og Foretaksregisteret" + antall={getAntallRequest(['roller'])} + /> + </Accordion.Header> + <Accordion.Content style={{ paddingRight: '0' }}> + <EnhetsregisteretForetaksregisteret handleChangeList={handleChangeList} /> + </Accordion.Content> + </Accordion.Item> + </Accordion> + </Form> + {devEnabled && <DisplayFormikState />} + </> + {/*// TODO sett inn chips her?*/} + </FormProvider> </Soekefelt> </SoekefeltWrapper> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index 15dbb254b8d..2b571afe222 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -40,7 +40,7 @@ export const FolkeregisteretVisning = ({ data }) => { {relasjoner.map((relasjon, idx) => ( <div className="title-value title-value_small" key={idx}> <h4>{relasjon.tenorRelasjonsnavn}</h4> - <div>{`${relasjon.identifikator} -`}</div> + <div>{`${arrayToString(relasjon.identifikator, ', ')} -`}</div> <div>{relasjon.visningnavn}</div> </div> ))} 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 445c25d7a8f..9301c64f8bb 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 @@ -4,11 +4,7 @@ import { createOptions } from '@/pages/tenorSoek/utils' import { FormikSelect } from '@/components/ui/form/inputs/select/Select' import { useTenorDomain } from '@/utils/hooks/useTenorSoek' -export const EnhetsregisteretForetaksregisteret = ({ - formikBag, - handleChangeList, - getValue, -}: any) => { +export const EnhetsregisteretForetaksregisteret = ({ handleChangeList }: any) => { const { domain: rollerOptions } = useTenorDomain('Roller') return ( <SoekKategori> @@ -20,7 +16,6 @@ export const EnhetsregisteretForetaksregisteret = ({ size="grow" label="Roller" onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'roller')} - value={getValue('roller')} /> </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 c79ef5206a2..56173cacfc7 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 @@ -1,5 +1,5 @@ import { SoekKategori } from '@/components/ui/soekForm/SoekForm' -import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' +import { DollyTextInput, FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import React, { SyntheticEvent } from 'react' import { FormikSelect } from '@/components/ui/form/inputs/select/Select' import { SelectOptionsManager as Options } from '@/service/SelectOptions' @@ -7,7 +7,7 @@ import { useTenorDomain } from '@/utils/hooks/useTenorSoek' import { createOptions } from '@/pages/tenorSoek/utils' import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' -export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: any) => { +export const FolkeregisteretAdresse = ({ handleChange }: any) => { const { domain: adresseGraderingOptions } = useTenorDomain('AdresseGradering') return ( @@ -15,12 +15,10 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an <FormikSelect name="adresser.adresseGradering" options={createOptions(adresseGraderingOptions?.data)} - // size="medium" label="Adressegradering" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'adresser.adresseGradering') } - value={getValue('adresser.adresseGradering')} /> <FormikTextInput name="adresser.kommunenummer" @@ -30,15 +28,12 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an handleChange(val?.target?.value || null, 'adresser.kommunenummer') } visHvisAvhuket={false} - // fastfield={false} /> <FormikSelect name="adresser.harAdresseSpesialtegn" options={Options('boolean')} - size="small" label="Har spesialtegn i adresse" onChange={(val: boolean) => handleChange(val?.value, 'adresser.harAdresseSpesialtegn')} - value={getValue('adresser.harAdresseSpesialtegn')} /> <div className="flexbox--flex-wrap"> <FormikCheckbox @@ -47,7 +42,6 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'adresser.harBostedsadresse') } - value={getValue('adresser.harBostedsadresse')} /> <FormikCheckbox name="adresser.harOppholdAnnetSted" @@ -55,7 +49,6 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'adresser.harOppholdAnnetSted') } - value={getValue('adresser.harOppholdAnnetSted')} /> <FormikCheckbox name="adresser.harPostadresseNorge" @@ -63,7 +56,6 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseNorge') } - value={getValue('adresser.harPostadresseNorge')} /> <FormikCheckbox name="adresser.harPostadresseUtland" @@ -71,7 +63,6 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseUtland') } - value={getValue('adresser.harPostadresseUtland')} /> <FormikCheckbox name="adresser.harKontaktadresseDoedsbo" @@ -79,7 +70,6 @@ export const FolkeregisteretAdresse = ({ formikBag, handleChange, getValue }: an onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'adresser.harKontaktadresseDoedsbo') } - value={getValue('adresser.harKontaktadresseDoedsbo')} /> </div> </SoekKategori> 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 7f9be038570..89d38e81fa3 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 @@ -4,7 +4,7 @@ import { FormikSelect } from '@/components/ui/form/inputs/select/Select' import { createOptions } from '@/pages/tenorSoek/utils' import React, { SyntheticEvent } from 'react' -export const FolkeregisteretHendelser = ({ formikBag, handleChange, getValue }: any) => { +export const FolkeregisteretHendelser = ({ handleChange }: any) => { const { domain: hendelseOptions } = useTenorDomain('Hendelse') return ( @@ -15,7 +15,6 @@ export const FolkeregisteretHendelser = ({ formikBag, handleChange, getValue }: size="xlarge" label="Har hatt hendelse" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'hendelser.hendelse')} - value={getValue('hendelser.hendelse')} /> <FormikSelect name="hendelser.sisteHendelse" @@ -25,7 +24,6 @@ export const FolkeregisteretHendelser = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'hendelser.sisteHendelse') } - value={getValue('hendelser.sisteHendelse')} /> </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 2ffe9b91925..ff9ba545e59 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 @@ -9,12 +9,7 @@ import { SelectOptionsManager as Options } from '@/service/SelectOptions' import { FormikDatepicker } from '@/components/ui/form/inputs/datepicker/Datepicker' import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' -export const FolkeregisteretIdentifikasjonStatus = ({ - formikBag, - handleChange, - handleChangeList, - getValue, -}: any) => { +export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChangeList }: any) => { const { domain: identifikatorTypeOptions } = useTenorDomain('IdentifikatorType') const { domain: kjoennOptions } = useTenorDomain('Kjoenn') const { domain: personstatusOptions } = useTenorDomain('Personstatus') @@ -32,97 +27,74 @@ export const FolkeregisteretIdentifikasjonStatus = ({ label="Fødselsnummer / D-nummer" onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'identifikator')} visHvisAvhuket={false} - // fastfield={false} /> <FormikSelect name="identifikatorType" options={createOptions(identifikatorTypeOptions?.data)} - // size="medium" label="Identifikatortype" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'identifikatorType')} - value={getValue('identifikatorType')} /> <FormikDatepicker name="foedselsdato.fraOgMed" label="Fødselsdato f.o.m." onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.fraOgMed')} - date={getValue('foedselsdato.fraOgMed')} visHvisAvhuket={false} - fastfield={false} /> <FormikDatepicker name="foedselsdato.tilOgMed" label="Fødselsdato t.o.m." onChange={(val: SyntheticEvent) => handleChange(val || null, 'foedselsdato.tilOgMed')} - date={getValue('foedselsdato.tilOgMed')} visHvisAvhuket={false} - fastfield={false} /> <FormikDatepicker name="doedsdato.fraOgMed" label="Dødsdato f.o.m." onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.fraOgMed')} - date={getValue('doedsdato.fraOgMed')} visHvisAvhuket={false} - fastfield={false} /> <FormikDatepicker name="doedsdato.tilOgMed" label="Dødsdato t.o.m." onChange={(val: SyntheticEvent) => handleChange(val || null, 'doedsdato.tilOgMed')} - date={getValue('doedsdato.tilOgMed')} visHvisAvhuket={false} - fastfield={false} /> <FormikSelect name="kjoenn" options={createOptions(kjoennOptions?.data)} - // size="medium" label="Kjønn" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'kjoenn')} - value={getValue('kjoenn')} /> <FormikSelect name="personstatus" options={createOptions(personstatusOptions?.data)} - // size="medium" label="Personstatus" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'personstatus')} - value={getValue('personstatus')} /> <FormikSelect name="sivilstand" options={createOptions(sivilstatusOptions?.data)} - // size="medium" label="Sivilstand" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'sivilstand')} - value={getValue('sivilstand')} /> <FormikSelect name="identitetsgrunnlagStatus" options={createOptions(identitetsgrunnlagStatusOptions?.data)} - // size="medium" label="Identitetsgrunnlagsstatus" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'identitetsgrunnlagStatus') } - value={getValue('identitetsgrunnlagStatus')} /> <FormikSelect name="adressebeskyttelse" options={createOptions(adressebeskyttelseOptions?.data)} - // size="medium" label="Adressebeskyttelse" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'adressebeskyttelse')} - value={getValue('adressebeskyttelse')} /> <FormikSelect name="harFalskIdentitet" options={Options('boolean')} - size="small" label="Har falsk identitet" onChange={(val: boolean) => handleChange(val?.value, 'harFalskIdentitet')} - value={getValue('harFalskIdentitet')} /> <div className="flexbox--full-width"> <FormikSelect @@ -134,7 +106,6 @@ export const FolkeregisteretIdentifikasjonStatus = ({ onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'utenlandskPersonIdentifikasjon') } - value={getValue('utenlandskPersonIdentifikasjon')} /> </div> <FormikCheckbox @@ -143,7 +114,6 @@ export const FolkeregisteretIdentifikasjonStatus = ({ onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'harLegitimasjonsdokument') } - value={getValue('harLegitimasjonsdokument')} /> </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 550740e83e7..6cff2d2663d 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 @@ -5,7 +5,7 @@ import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' -export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) => { +export const FolkeregisteretNavn = ({ handleChange }: any) => { return ( <SoekKategori> <FormikTextInput @@ -29,18 +29,14 @@ export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) <FormikSelect name="navn.harFlereFornavn" options={Options('boolean')} - size="small" label="Har flere fornnavn" onChange={(val: boolean) => handleChange(val?.value, 'navn.harFlereFornavn')} - value={getValue('navn.harFlereFornavn')} /> <FormikSelect name="navn.harNavnSpesialtegn" options={Options('boolean')} - size="small" label="Har spesialtegn i navn" onChange={(val: boolean) => handleChange(val?.value, 'navn.harNavnSpesialtegn')} - value={getValue('navn.harNavnSpesialtegn')} /> <FormikCheckbox name="navn.harMellomnavn" @@ -48,7 +44,6 @@ export const FolkeregisteretNavn = ({ formikBag, handleChange, getValue }: any) onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'navn.harMellomnavn') } - value={getValue('navn.harMellomnavn')} /> </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 262986ad432..7f52cabf9ef 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 { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' import { SelectOptionsManager as Options } from '@/service/SelectOptions' -export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: any) => { +export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { const { domain: relasjonOptions } = useTenorDomain('Relasjon') return ( @@ -15,10 +15,8 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: <FormikSelect name="relasjoner.relasjon" options={createOptions(relasjonOptions?.data)} - // size="medium" label="Relasjon" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'relasjoner.relasjon')} - value={getValue('relasjoner.relasjon')} /> <div className="flexbox--flex-wrap"> <FormikTextInput @@ -29,7 +27,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') } visHvisAvhuket={false} - // fastfield={false} /> <FormikTextInput name="relasjoner.antallBarn.tilOgMed" @@ -39,7 +36,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') } visHvisAvhuket={false} - // fastfield={false} /> </div> <div className="flexbox--flex-wrap"> @@ -51,7 +47,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') } visHvisAvhuket={false} - // fastfield={false} /> <FormikTextInput name="relasjoner.relasjonMedFoedselsaar.tilOgMed" @@ -61,7 +56,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') } visHvisAvhuket={false} - // fastfield={false} /> </div> <div className="flexbox--flex-wrap"> @@ -71,7 +65,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'relasjoner.harForeldreAnsvar') } - value={getValue('relasjoner.harForeldreAnsvar')} /> <FormikCheckbox name="relasjoner.harDeltBosted" @@ -79,7 +72,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'relasjoner.harDeltBosted') } - value={getValue('relasjoner.harDeltBosted')} /> <FormikCheckbox name="relasjoner.harVergemaalEllerFremtidsfullmakt" @@ -90,7 +82,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: 'relasjoner.harVergemaalEllerFremtidsfullmakt', ) } - value={getValue('relasjoner.harVergemaalEllerFremtidsfullmakt')} /> <FormikCheckbox name="relasjoner.borMedMor" @@ -98,7 +89,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMor') } - value={getValue('relasjoner.borMedMor')} /> <FormikCheckbox name="relasjoner.borMedFar" @@ -106,7 +96,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'relasjoner.borMedFar') } - value={getValue('relasjoner.borMedFar')} /> <FormikCheckbox name="relasjoner.borMedMedmor" @@ -114,7 +103,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMedmor') } - value={getValue('relasjoner.borMedMedmor')} /> <FormikCheckbox name="relasjoner.foreldreHarSammeAdresse" @@ -122,7 +110,6 @@ export const FolkeregisteretRelasjoner = ({ formikBag, handleChange, getValue }: onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'relasjoner.foreldreHarSammeAdresse') } - value={getValue('relasjoner.foreldreHarSammeAdresse')} /> </div> </SoekKategori> 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 d28aa599b11..070fd8ead1e 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 @@ -3,24 +3,20 @@ import { FormikSelect } from '@/components/ui/form/inputs/select/Select' import React from 'react' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' -export const FolkeregisteretStatsborgerskap = ({ formikBag, handleChange, getValue }: any) => { +export const FolkeregisteretStatsborgerskap = ({ handleChange }: any) => { return ( <SoekKategori> <FormikSelect name="harNorskStatsborgerskap" options={Options('boolean')} - size="small" label="Har norsk statsborgerskap" onChange={(val: boolean) => handleChange(val?.value, 'harNorskStatsborgerskap')} - value={getValue('harNorskStatsborgerskap')} /> <FormikSelect name="harFlereStatsborgerskap" options={Options('boolean')} - size="small" label="Har flere statsborgerskap" onChange={(val: boolean) => handleChange(val?.value, 'harFlereStatsborgerskap')} - value={getValue('harFlereStatsborgerskap')} /> </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 c426971482d..1e4b7d61764 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 @@ -10,7 +10,7 @@ import { FormikDatepicker } from '@/components/ui/form/inputs/datepicker/Datepic import { Monthpicker } from '@/components/ui/form/inputs/monthpicker/Monthpicker' import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' -export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, getValue }: any) => { +export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: any) => { const { domain: inntektstypeOptions } = useTenorDomain('Inntektstype') const { domain: beskrivelseOptions } = useTenorDomain('AOrdningBeskrivelse') const { domain: forskuddstrekkOptions } = useTenorDomain('Forskuddstrekk') @@ -24,8 +24,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g handleChange(val ? val.toISOString().substr(0, 7) : '', 'inntekt.periode.fraOgMed') }} date={getValue('inntekt.periode.fraOgMed')} - visHvisAvhuket={false} - fastfield={false} /> <Monthpicker name="inntekt.periode.tilOgMed" @@ -34,8 +32,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g handleChange(val ? val.toISOString().substr(0, 7) : '', 'inntekt.periode.tilOgMed') }} date={getValue('inntekt.periode.tilOgMed')} - visHvisAvhuket={false} - fastfield={false} /> <FormikTextInput name="inntekt.opplysningspliktig" @@ -44,7 +40,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g handleChange(val?.target?.value || null, 'inntekt.opplysningspliktig') } visHvisAvhuket={false} - // fastfield={false} /> <div className="flexbox--full-width" style={{ fontSize: 'medium' }}> <FormikSelect @@ -54,7 +49,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g size="grow" label="Inntektstyper" onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'inntekt.inntektstyper')} - value={getValue('inntekt.inntektstyper')} /> <FormikSelect name="inntekt.forskuddstrekk" @@ -65,7 +59,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g onChange={(val: SyntheticEvent) => handleChangeList(val || null, 'inntekt.forskuddstrekk') } - value={getValue('inntekt.forskuddstrekk')} /> </div> <FormikSelect @@ -74,7 +67,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g size="xlarge" label="Beskrivelse" onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'inntekt.beskrivelse')} - value={getValue('inntekt.beskrivelse')} /> <FormikSelect name="inntekt.harHistorikk" @@ -82,7 +74,6 @@ export const InntektAordningen = ({ formikBag, handleChange, handleChangeList, g size="small" label="Har historikk" onChange={(val: boolean) => handleChange(val?.value, 'inntekt.harHistorikk')} - value={getValue('inntekt.harHistorikk')} /> </SoekKategori> ) From c84169254fb2d25ca4f413dfed7b8831ba162678 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 29 Feb 2024 13:59:27 +0100 Subject: [PATCH 26/50] Naviger til person i Dolly --- .../resultatVisning/NavigerTilPerson.tsx | 46 +++++++++++++++++++ .../resultatVisning/PersonVisning.tsx | 10 ++-- .../tenorSoek/resultatVisning/TreffListe.tsx | 3 ++ 3 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx new file mode 100644 index 00000000000..2edf3e4fce5 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -0,0 +1,46 @@ +import { useNavigate } from 'react-router-dom' +import { useNaviger } from '@/utils/hooks/useNaviger' +import { Button } from '@navikt/ds-react' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' +import { ArrowRightIcon } from '@navikt/aksel-icons' + +export const NavigerTilPerson = ({ ident }) => { + const navigate = useNavigate() + const { result, loading } = useNaviger(ident) + + if (!result) { + return null + } + + const handleClick = (event) => { + event.stopPropagation() + // setValgtIdent(ident) + if (result?.gruppe?.id && !window.location.pathname.includes(`/${result?.gruppe?.id}`)) { + navigate(`/gruppe/${result?.gruppe?.id}`, { + replace: true, + state: { + hovedperson: result.identHovedperson, + visPerson: result.identNavigerTil, + sidetall: result.sidetall, + }, + }) + } + } + // + // if (linkTekst) { + // return <StyledButton onClick={handleClick}>{linkTekst}</StyledButton> + // } + + return ( + <Button + data-cy={CypressSelector.BUTTON_VIS_I_GRUPPE} + variant="tertiary" + size="xsmall" + icon={<ArrowRightIcon />} + loading={loading} + onClick={handleClick} + > + Vis i gruppe + </Button> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 349e0e19f6f..648760cc954 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -6,14 +6,14 @@ import styled from 'styled-components' import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning' import Loading from '@/components/ui/loading/Loading' import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning' +import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' const NavnHeader = styled.h2` margin: 5px 0 15px 0; word-break: break-word; hyphens: auto; ` -export const PersonVisning = ({ person, loading, error }) => { - // console.log('person: ', person) //TODO - SLETT MEG +export const PersonVisning = ({ person, ident, loading, error }) => { if (loading) { return <Loading label="Laster person ..." /> } @@ -27,11 +27,13 @@ export const PersonVisning = ({ person, loading, error }) => { } const personData = person.data?.dokumentListe?.[0] - // TODO maa kanskje ta med flere personer hvis lista er lengre? return ( <Box background="surface-default" padding="3" borderRadius="medium"> - <NavnHeader>{personData?.visningnavn}</NavnHeader> + <div className="flexbox--space"> + <NavnHeader>{personData?.visningnavn}</NavnHeader> + <NavigerTilPerson ident={ident} /> + </div> <FolkeregisteretVisning data={personData} /> <EnhetsregisteretForetaksregisteretVisning data={_.get(personData, 'tenorRelasjoner.brreg-er-fr')} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index cf5dc1cd0a2..856fe8d3472 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -4,6 +4,7 @@ import { useTenorIdent } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' import Loading from '@/components/ui/loading/Loading' import styled from 'styled-components' +import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' const PersonNavn = styled.h3` word-break: break-word; @@ -86,6 +87,7 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { {relasjon} </Tag> ))} + {/*<NavigerTilPerson ident={person?.id} />*/} </Box> ))} </VStack> @@ -105,6 +107,7 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { <PersonVisningWrapper> <PersonVisning person={valgtPersonData?.data} + ident={valgtPerson?.id} loading={valgtPersonLoading} error={valgtPersonError} /> From 2c25b3d0c83961049f6272afce71f425d3361604 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 1 Mar 2024 10:29:30 +0100 Subject: [PATCH 27/50] Import paabegynt --- .../resultatVisning/ImporterPerson.tsx | 39 +++++++++++++++++++ .../resultatVisning/NavigerTilPerson.tsx | 1 + .../resultatVisning/PersonVisning.tsx | 2 + .../pages/testnorgePage/search/SearchView.tsx | 2 + 4 files changed, 44 insertions(+) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx new file mode 100644 index 00000000000..feea075693c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx @@ -0,0 +1,39 @@ +import { useNavigate } from 'react-router-dom' +import { useNaviger } from '@/utils/hooks/useNaviger' +import { Button } from '@navikt/ds-react' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' +import { ArrowRightIcon } from '@navikt/aksel-icons' + +export const ImporterPerson = ({ valgtPerson }) => { + const navigate = useNavigate() + const { result, loading } = useNaviger(valgtPerson) + + // TODO vis loading? + if (result) { + return null + } + + const handleClick = (event) => { + event.stopPropagation() + navigate(`/importer`, { + state: { + importPersoner: [valgtPerson], + // mal: mal, + // gruppe: gruppe, + }, + }) + } + + return ( + <Button + data-cy={CypressSelector.BUTTON_VIS_I_GRUPPE} + variant="tertiary" + size="xsmall" + icon={<ArrowRightIcon />} + loading={loading} + onClick={handleClick} + > + Importer til gruppe + </Button> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx index 2edf3e4fce5..9300594352e 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -8,6 +8,7 @@ export const NavigerTilPerson = ({ ident }) => { const navigate = useNavigate() const { result, loading } = useNaviger(ident) + // TODO vis loading? if (!result) { return null } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 648760cc954..97450271c15 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -7,6 +7,7 @@ import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning import Loading from '@/components/ui/loading/Loading' import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning' import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' +import { ImporterPerson } from '@/pages/tenorSoek/resultatVisning/ImporterPerson' const NavnHeader = styled.h2` margin: 5px 0 15px 0; @@ -33,6 +34,7 @@ export const PersonVisning = ({ person, ident, loading, error }) => { <div className="flexbox--space"> <NavnHeader>{personData?.visningnavn}</NavnHeader> <NavigerTilPerson ident={ident} /> + <ImporterPerson valgtPerson={ident} /> </div> <FolkeregisteretVisning data={personData} /> <EnhetsregisteretForetaksregisteretVisning diff --git a/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx b/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx index fe85236c92a..2fabd3f8408 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx @@ -81,6 +81,8 @@ export default ({ </ContentContainer> ) } + console.log('valgtePersoner: ', valgtePersoner) //TODO - SLETT MEG + //TODO se paa denne!! const columns = [ { From 32b46e593b96d3b96d196704008aa32b7f4d54b0 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 4 Mar 2024 14:59:45 +0100 Subject: [PATCH 28/50] Fix import med attributter --- .../resultatVisning/ImporterPerson.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx index feea075693c..7c0abee9eb3 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx @@ -3,10 +3,12 @@ import { useNaviger } from '@/utils/hooks/useNaviger' import { Button } from '@navikt/ds-react' import { CypressSelector } from '../../../../cypress/mocks/Selectors' import { ArrowRightIcon } from '@navikt/aksel-icons' +import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' export const ImporterPerson = ({ valgtPerson }) => { const navigate = useNavigate() const { result, loading } = useNaviger(valgtPerson) + const { pdlPersoner, loading: loadingPdl, error: errorPdl } = usePdlPersonbolk(valgtPerson) // TODO vis loading? if (result) { @@ -14,10 +16,19 @@ export const ImporterPerson = ({ valgtPerson }) => { } const handleClick = (event) => { - event.stopPropagation() + // event.stopPropagation() navigate(`/importer`, { state: { - importPersoner: [valgtPerson], + importPersoner: [ + { + ident: valgtPerson, + data: { + hentPerson: pdlPersoner?.hentPersonBolk?.find((p) => p.ident === valgtPerson)?.person, + hentIdenter: pdlPersoner?.hentIdenterBolk?.find((p) => p.ident === valgtPerson) + ?.identer, + }, + }, + ], // mal: mal, // gruppe: gruppe, }, @@ -30,8 +41,9 @@ export const ImporterPerson = ({ valgtPerson }) => { variant="tertiary" size="xsmall" icon={<ArrowRightIcon />} - loading={loading} + loading={loading || loadingPdl} onClick={handleClick} + style={{ minWidth: '150px' }} > Importer til gruppe </Button> From d1a91604e2c225b5fdb3263b08873a75ef2650ef Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 5 Mar 2024 17:16:46 +0100 Subject: [PATCH 29/50] Importer flere personer forste utkast --- .../resultatVisning/ImporterPerson.tsx | 24 ++--- .../ImporterValgtePersoner.tsx | 43 +++++++++ .../tenorSoek/resultatVisning/ListeValg.tsx | 27 ++++++ .../resultatVisning/NavigerTilPerson.tsx | 1 + .../resultatVisning/PersonVisning.tsx | 6 +- .../tenorSoek/resultatVisning/TreffListe.tsx | 96 ++++++++++++------- .../src/main/js/src/utils/hooks/useIdent.tsx | 15 +++ 7 files changed, 164 insertions(+), 48 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx create mode 100644 apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx index 7c0abee9eb3..5d5d477b998 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx @@ -5,27 +5,27 @@ import { CypressSelector } from '../../../../cypress/mocks/Selectors' import { ArrowRightIcon } from '@navikt/aksel-icons' import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' -export const ImporterPerson = ({ valgtPerson }) => { +export const ImporterPerson = ({ ident }) => { const navigate = useNavigate() - const { result, loading } = useNaviger(valgtPerson) - const { pdlPersoner, loading: loadingPdl, error: errorPdl } = usePdlPersonbolk(valgtPerson) + // const { result, loading } = useNaviger(ident) + const { pdlPersoner, loading, error } = usePdlPersonbolk(ident) // TODO vis loading? - if (result) { - return null - } - + // if (result) { + // return null + // } + // console.log('ident: ', ident) //TODO - SLETT MEG + // console.log('pdlPersoner: ', pdlPersoner) //TODO - SLETT MEG const handleClick = (event) => { // event.stopPropagation() navigate(`/importer`, { state: { importPersoner: [ { - ident: valgtPerson, + ident: ident, data: { - hentPerson: pdlPersoner?.hentPersonBolk?.find((p) => p.ident === valgtPerson)?.person, - hentIdenter: pdlPersoner?.hentIdenterBolk?.find((p) => p.ident === valgtPerson) - ?.identer, + hentPerson: pdlPersoner?.hentPersonBolk?.find((p) => p.ident === ident)?.person, + hentIdenter: pdlPersoner?.hentIdenterBolk?.find((p) => p.ident === ident)?.identer, }, }, ], @@ -41,7 +41,7 @@ export const ImporterPerson = ({ valgtPerson }) => { variant="tertiary" size="xsmall" icon={<ArrowRightIcon />} - loading={loading || loadingPdl} + loading={loading} onClick={handleClick} style={{ minWidth: '150px' }} > diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx new file mode 100644 index 00000000000..17d93b794f6 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -0,0 +1,43 @@ +import { useNavigate } from 'react-router-dom' +import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' +import { Button } from '@navikt/ds-react' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' +import { ArrowRightIcon } from '@navikt/aksel-icons' +import React from 'react' + +export const ImporterValgtePersoner = ({ identer }) => { + const navigate = useNavigate() + const { pdlPersoner, loading, error } = usePdlPersonbolk(identer) + + // TODO vis loading? + const handleClick = (event) => { + // event.stopPropagation() + navigate(`/importer`, { + state: { + importPersoner: identer.map((ident) => { + return { + ident: ident, + data: { + hentPerson: pdlPersoner?.hentPersonBolk?.find((p) => p.ident === ident)?.person, + hentIdenter: pdlPersoner?.hentIdenterBolk?.find((p) => p.ident === ident)?.identer, + }, + } + }), + // mal: mal, + // gruppe: gruppe, + }, + }) + } + + return ( + <Button + variant="primary" + size="small" + disabled={identer?.length < 1} + loading={loading} + onClick={handleClick} + > + Importer {identer?.length} valgte personer + </Button> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx new file mode 100644 index 00000000000..d77cc8f0906 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx @@ -0,0 +1,27 @@ +import { useFinnesIDolly } from '@/utils/hooks/useIdent' +import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' +import { ImporterPerson } from '@/pages/tenorSoek/resultatVisning/ImporterPerson' +import { Checkbox } from '@navikt/ds-react' + +export const ListeValg = ({ ident, isMultiple = false, markertePersoner, setMarkertePersoner }) => { + const { finnesIDolly, loading: loadingFinnes, error: errorFinnes } = useFinnesIDolly(ident) + // console.log('finnesIDolly: ', finnesIDolly) //TODO - SLETT MEG + + const handleChangeCheckbox = (val: any[]) => { + if (val?.target?.checked) { + setMarkertePersoner([...markertePersoner, val?.target?.value]) + } else { + setMarkertePersoner(markertePersoner.filter((ident) => ident !== val?.target?.value)) + } + } + + return finnesIDolly ? ( + <NavigerTilPerson ident={ident} /> + ) : isMultiple ? ( + <Checkbox value={ident} size="small" onChange={(val: any) => handleChangeCheckbox(val)}> + Importer til gruppe + </Checkbox> + ) : ( + <ImporterPerson ident={ident} /> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx index 9300594352e..a601fb2c269 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -3,6 +3,7 @@ import { useNaviger } from '@/utils/hooks/useNaviger' import { Button } from '@navikt/ds-react' import { CypressSelector } from '../../../../cypress/mocks/Selectors' import { ArrowRightIcon } from '@navikt/aksel-icons' +import { useFinnesIDolly } from '@/utils/hooks/useIdent' export const NavigerTilPerson = ({ ident }) => { const navigate = useNavigate() diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 97450271c15..4e4ac405369 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -8,6 +8,7 @@ import Loading from '@/components/ui/loading/Loading' import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning' import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' import { ImporterPerson } from '@/pages/tenorSoek/resultatVisning/ImporterPerson' +import { ListeValg } from '@/pages/tenorSoek/resultatVisning/ListeValg' const NavnHeader = styled.h2` margin: 5px 0 15px 0; @@ -33,8 +34,9 @@ export const PersonVisning = ({ person, ident, loading, error }) => { <Box background="surface-default" padding="3" borderRadius="medium"> <div className="flexbox--space"> <NavnHeader>{personData?.visningnavn}</NavnHeader> - <NavigerTilPerson ident={ident} /> - <ImporterPerson valgtPerson={ident} /> + <ListeValg ident={ident} /> + {/*<NavigerTilPerson ident={ident} />*/} + {/*<ImporterPerson ident={ident} />*/} </div> <FolkeregisteretVisning data={personData} /> <EnhetsregisteretForetaksregisteretVisning diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 856fe8d3472..c951f90ea49 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -1,10 +1,13 @@ -import { Box, VStack, Tag, Alert } from '@navikt/ds-react' +import { Box, VStack, Tag, Alert, Button } from '@navikt/ds-react' import React, { useEffect, useState } from 'react' import { useTenorIdent } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' import Loading from '@/components/ui/loading/Loading' import styled from 'styled-components' import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' +import { useFinnesIDolly } from '@/utils/hooks/useIdent' +import { ListeValg } from '@/pages/tenorSoek/resultatVisning/ListeValg' +import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' const PersonNavn = styled.h3` word-break: break-word; @@ -18,7 +21,7 @@ const PersonIdent = styled.p` const PersonVisningWrapper = styled.div` position: sticky; - top: 10px; + top: 80px; max-height: 96vh; overflow: auto; scrollbar-width: none; @@ -53,43 +56,68 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { const antallTreff = response?.data?.treff + const [markertePersoner, setMarkertePersoner] = useState([]) + return ( <div className="flexbox--flex-wrap"> - <div className="flexbox--full-width"> - <h2 style={{ marginTop: '5px' }}> - {antallTreff || antallTreff === 0 ? `${antallTreff} treff` : ''} - </h2> + <div + className="flexbox--full-width" + style={{ marginBottom: '20px', position: 'sticky', top: '10px' }} + > + <Box background="surface-default" padding="3" borderRadius="medium"> + <div className="flexbox--space"> + <h2 style={{ margin: '0', alignSelf: 'center' }}> + {antallTreff || antallTreff === 0 ? `${antallTreff} treff` : ''} + </h2> + <ImporterValgtePersoner identer={markertePersoner} /> + {/*<Button*/} + {/* variant="primary"*/} + {/* size="small"*/} + {/* disabled={markertePersoner?.length < 1}*/} + {/* onClick={() => console.log('Importerer personer', markertePersoner)}*/} + {/*>*/} + {/* Importer {markertePersoner?.length} valgte personer*/} + {/*</Button>*/} + </div> + </Box> </div> <div style={{ width: '30%' }}> <VStack gap="4"> - {personListe?.map((person: any) => ( - <Box - key={person?.id} - padding="2" - background={ - person?.id === valgtPerson?.id ? 'surface-alt-3-moderate' : 'surface-alt-3-subtle' - } - borderRadius="medium" - onClick={() => setValgtPerson(person)} - style={{ cursor: 'pointer' }} - > - <PersonNavn> - {person?.fornavn} {person?.etternavn} - </PersonNavn> - <PersonIdent>{person?.id}</PersonIdent> - {person?.tenorRelasjoner?.map((relasjon: any, idx: number) => ( - <Tag - size="small" - variant="neutral" - key={person?.id + idx} - style={{ margin: '0 5px 5px 0' }} - > - {relasjon} - </Tag> - ))} - {/*<NavigerTilPerson ident={person?.id} />*/} - </Box> - ))} + {personListe?.map((person: any) => { + return ( + <Box + key={person?.id} + padding="2" + background={ + person?.id === valgtPerson?.id ? 'surface-alt-3-moderate' : 'surface-alt-3-subtle' + } + borderRadius="medium" + onClick={() => setValgtPerson(person)} + style={{ cursor: 'pointer' }} + > + <PersonNavn> + {person?.fornavn} {person?.etternavn} + </PersonNavn> + <PersonIdent>{person?.id}</PersonIdent> + {person?.tenorRelasjoner?.map((relasjon: any, idx: number) => ( + <Tag + size="small" + variant="neutral" + key={person?.id + idx} + style={{ margin: '0 5px 5px 0' }} + > + {relasjon} + </Tag> + ))} + <ListeValg + ident={person?.id} + isMultiple={true} + markertePersoner={markertePersoner} + setMarkertePersoner={setMarkertePersoner} + /> + </Box> + ) + })} </VStack> {loading && ( <div style={{ margin: '10px 0' }}> diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx new file mode 100644 index 00000000000..40230004a4f --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx @@ -0,0 +1,15 @@ +import useSWR from 'swr' +import { fetcher } from '@/api' + +export const useFinnesIDolly = (ident: string) => { + const { data, error, isLoading } = useSWR<boolean, Error>( + `dolly-backend/api/v1/ident/finnes/${ident}`, + fetcher, + ) + + return { + finnesIDolly: data, + loading: isLoading, + error: error, + } +} From 220832fc24d683fe1a4b43f218bab4c21335aee6 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 7 Mar 2024 13:31:44 +0100 Subject: [PATCH 30/50] Div styling-fix --- .../resultatVisning/ImporterPerson.tsx | 6 ++-- .../tenorSoek/resultatVisning/ListeValg.tsx | 19 ++++++++--- .../resultatVisning/PersonVisning.tsx | 2 +- .../tenorSoek/resultatVisning/TabsVisning.tsx | 13 ++++++-- .../tenorSoek/resultatVisning/TreffListe.tsx | 32 ++++++++++++------- 5 files changed, 50 insertions(+), 22 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx index 5d5d477b998..1a21817e4b8 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx @@ -2,7 +2,7 @@ import { useNavigate } from 'react-router-dom' import { useNaviger } from '@/utils/hooks/useNaviger' import { Button } from '@navikt/ds-react' import { CypressSelector } from '../../../../cypress/mocks/Selectors' -import { ArrowRightIcon } from '@navikt/aksel-icons' +import { ArrowRightIcon, EnterIcon } from '@navikt/aksel-icons' import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' export const ImporterPerson = ({ ident }) => { @@ -37,10 +37,10 @@ export const ImporterPerson = ({ ident }) => { return ( <Button - data-cy={CypressSelector.BUTTON_VIS_I_GRUPPE} + // data-cy={CypressSelector.BUTTON_VIS_I_GRUPPE} variant="tertiary" size="xsmall" - icon={<ArrowRightIcon />} + icon={<EnterIcon />} loading={loading} onClick={handleClick} style={{ minWidth: '150px' }} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx index d77cc8f0906..b138f354a17 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx @@ -2,12 +2,13 @@ import { useFinnesIDolly } from '@/utils/hooks/useIdent' import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' import { ImporterPerson } from '@/pages/tenorSoek/resultatVisning/ImporterPerson' import { Checkbox } from '@navikt/ds-react' +import { DollyCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' export const ListeValg = ({ ident, isMultiple = false, markertePersoner, setMarkertePersoner }) => { const { finnesIDolly, loading: loadingFinnes, error: errorFinnes } = useFinnesIDolly(ident) // console.log('finnesIDolly: ', finnesIDolly) //TODO - SLETT MEG - const handleChangeCheckbox = (val: any[]) => { + const handleChangeCheckbox = (val: any) => { if (val?.target?.checked) { setMarkertePersoner([...markertePersoner, val?.target?.value]) } else { @@ -18,9 +19,19 @@ export const ListeValg = ({ ident, isMultiple = false, markertePersoner, setMark return finnesIDolly ? ( <NavigerTilPerson ident={ident} /> ) : isMultiple ? ( - <Checkbox value={ident} size="small" onChange={(val: any) => handleChangeCheckbox(val)}> - Importer til gruppe - </Checkbox> + // <DollyCheckbox value={ident} size="small" onChange={(val: any) => handleChangeCheckbox(val)}> + // Importer til gruppe + // </DollyCheckbox> + <div style={{ margin: '-8px 0' }}> + <Checkbox + value={ident} + size="small" + onChange={(val: any) => handleChangeCheckbox(val)} + onClick={(e) => e.stopPropagation()} + > + Importer til gruppe + </Checkbox> + </div> ) : ( <ImporterPerson ident={ident} /> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 4e4ac405369..73854f2c923 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -11,7 +11,7 @@ import { ImporterPerson } from '@/pages/tenorSoek/resultatVisning/ImporterPerson import { ListeValg } from '@/pages/tenorSoek/resultatVisning/ListeValg' const NavnHeader = styled.h2` - margin: 5px 0 15px 0; + margin: 10px 0 15px 0; word-break: break-word; hyphens: auto; ` diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx index 14ff8942f67..cff12acedda 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx @@ -2,6 +2,7 @@ import { Tabs } from '@navikt/ds-react' import { CodeView } from '@/components/codeView' import React from 'react' import styled from 'styled-components' +import { FileCodeIcon, KeyVerticalIcon } from '@navikt/aksel-icons' const TabsVisningFormatter = styled.div` width: 100%; @@ -24,8 +25,16 @@ export const TabsVisning = ({ children, kildedata }: any) => { <TabsVisningFormatter> <Tabs defaultValue="nokkelinfo" size="small"> <Tabs.List> - <Tabs.Tab value="nokkelinfo" label="NØKKELINFORMASJON" /> - <Tabs.Tab value="kildedata" label="KILDEDATA" /> + <Tabs.Tab + value="nokkelinfo" + label="Nøkkelinformasjon" + icon={<KeyVerticalIcon title="a11y-title" fontSize="1.5rem" />} + /> + <Tabs.Tab + value="kildedata" + label="Kildedata" + icon={<FileCodeIcon title="a11y-title" fontSize="1.5rem" />} + /> </Tabs.List> <Tabs.Panel value="nokkelinfo"> <div className="person-visning_content">{children}</div> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index c951f90ea49..81f3a4bfbeb 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -16,7 +16,13 @@ const PersonNavn = styled.h3` ` const PersonIdent = styled.p` - margin: 5px 0 15px 0; + margin: 5px 0 0 0; + //margin: 5px 0 10px 0; + //margin-top: 5px; +` + +const TagsWrapper = styled.div` + margin: 10px 0; ` const PersonVisningWrapper = styled.div` @@ -62,7 +68,7 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { <div className="flexbox--flex-wrap"> <div className="flexbox--full-width" - style={{ marginBottom: '20px', position: 'sticky', top: '10px' }} + style={{ marginBottom: '20px', position: 'sticky', top: '10px', zIndex: 1 }} > <Box background="surface-default" padding="3" borderRadius="medium"> <div className="flexbox--space"> @@ -99,16 +105,18 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { {person?.fornavn} {person?.etternavn} </PersonNavn> <PersonIdent>{person?.id}</PersonIdent> - {person?.tenorRelasjoner?.map((relasjon: any, idx: number) => ( - <Tag - size="small" - variant="neutral" - key={person?.id + idx} - style={{ margin: '0 5px 5px 0' }} - > - {relasjon} - </Tag> - ))} + <TagsWrapper> + {person?.tenorRelasjoner?.map((relasjon: any, idx: number) => ( + <Tag + size="small" + variant="neutral" + key={person?.id + idx} + style={{ margin: '0 5px 5px 0' }} + > + {relasjon} + </Tag> + ))} + </TagsWrapper> <ListeValg ident={person?.id} isMultiple={true} From f31a26e6e0ed69af61cff4852053525399d8c8bb Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 11 Mar 2024 15:42:59 +0100 Subject: [PATCH 31/50] Importer med mal --- .../ui/form/inputs/select/Select.tsx | 10 ++- .../ImporterValgtePersoner.tsx | 50 ++++++++----- .../tenorSoek/resultatVisning/MalValg.tsx | 74 +++++++++++++++++++ .../pages/testnorgePage/search/SearchView.tsx | 1 + 4 files changed, 117 insertions(+), 18 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx 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 53d0ebfb39a..a6a2a413597 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 @@ -42,6 +42,7 @@ type SelectProps = { info?: any visHvisAvhuket?: any afterChange?: any + isInDialog?: boolean } export const Select = ({ @@ -59,6 +60,7 @@ export const Select = ({ isMulti = false, styles, onChange, + isInDialog = false, ...rest }: SelectProps) => { const formMethods = useFormContext() @@ -103,7 +105,13 @@ export const Select = ({ isMulti={isMulti} onChange={onChange} styles={styles ? styles : { menuPortal: (base) => ({ ...base, zIndex: 99999 }) }} - menuPortalTarget={document.getElementById('react-select-root')} + // Naar vi bruker modal fra Aksel maa vi referere til modalens className for at dropdowns ikke skal forsvinne bak modalen + menuPortalTarget={ + isInDialog + ? (document.getElementsByClassName('navds-modal')[0] as HTMLElement) + : document.getElementById('react-select-root') + } + menuPosition={isInDialog ? 'fixed' : undefined} {...rest} /> ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index 17d93b794f6..e37252d12aa 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -1,17 +1,17 @@ import { useNavigate } from 'react-router-dom' import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' -import { Button } from '@navikt/ds-react' -import { CypressSelector } from '../../../../cypress/mocks/Selectors' -import { ArrowRightIcon } from '@navikt/aksel-icons' -import React from 'react' +import { Button, Checkbox, Modal } from '@navikt/ds-react' +import React, { useRef, useState } from 'react' +import { MalValg } from '@/pages/tenorSoek/resultatVisning/MalValg' export const ImporterValgtePersoner = ({ identer }) => { const navigate = useNavigate() const { pdlPersoner, loading, error } = usePdlPersonbolk(identer) - // TODO vis loading? - const handleClick = (event) => { - // event.stopPropagation() + const ref = useRef<HTMLDialogElement>(null) + const [valgtMal, setValgtMal] = useState(null) + + const handleClick = () => { navigate(`/importer`, { state: { importPersoner: identer.map((ident) => { @@ -23,21 +23,37 @@ export const ImporterValgtePersoner = ({ identer }) => { }, } }), - // mal: mal, + mal: valgtMal, // gruppe: gruppe, }, }) } return ( - <Button - variant="primary" - size="small" - disabled={identer?.length < 1} - loading={loading} - onClick={handleClick} - > - Importer {identer?.length} valgte personer - </Button> + <> + <Button + variant="primary" + size="small" + disabled={identer?.length < 1} + loading={loading} + onClick={() => ref.current?.showModal()} + > + {identer?.length === 1 + ? 'Importer 1 valgt person' + : `Importer ${identer?.length} valgte personer`} + </Button> + <Modal ref={ref} header={{ heading: 'Importer personer' }} width={750} closeOnBackdropClick> + <Modal.Body> + <Checkbox>Inkluder partnere</Checkbox> + <MalValg setValgtMal={setValgtMal} /> + </Modal.Body> + <Modal.Footer> + <Button onClick={() => handleClick()}>Importer</Button> + <Button variant="secondary" onClick={() => ref.current?.close()}> + Avbryt + </Button> + </Modal.Footer> + </Modal> + </> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx new file mode 100644 index 00000000000..ff804741b66 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx @@ -0,0 +1,74 @@ +import React, { useState } from 'react' +import { useDollyMaler } from '@/utils/hooks/useMaler' +import { useBrukerProfil } from '@/utils/hooks/useBruker' +import { DollySelect } from '@/components/ui/form/inputs/select/Select' +import { Switch } from '@navikt/ds-react' +import { useBoolean } from 'react-use' + +const getBrukerOptions = (malbestillinger: any) => + Object.keys(malbestillinger).map((ident) => ({ + value: ident, + label: ident, + })) + +const getMalOptions = (malbestillinger: any, bruker: any) => { + if (!malbestillinger || !malbestillinger[bruker]) { + return [] + } + return malbestillinger[bruker].map((mal: any) => ({ + value: mal.id, + label: mal.malNavn, + data: { bestilling: mal.bestilling, malNavn: mal.malNavn }, + })) +} + +export const MalValg = ({ setValgtMal }) => { + const [benyttMal, setBenyttMal] = useBoolean(false) + const [malValue, setMalValue] = useState(null) + + const { maler, loading } = useDollyMaler() + const { brukerProfil } = useBrukerProfil() + + const [malBruker, setMalBruker] = useState(brukerProfil?.visningsNavn) + + const brukerOptions = maler ? getBrukerOptions(maler) : [] + const malOptions = maler && malBruker ? getMalOptions(maler, malBruker) : [] + + return ( + <> + <Switch checked={benyttMal} onChange={() => setBenyttMal()}> + Benytt mal + </Switch> + <div className="flexbox--align-center--justify-start"> + <DollySelect + name="zIdent" + label="Bruker" + isLoading={loading} + options={brukerOptions} + size="large" + onChange={(e: any) => { + setMalBruker(e.value) + }} + value={malBruker} + isDisabled={!benyttMal} + isClearable={false} + isInDialog={true} + /> + <DollySelect + name="mal" + label="Maler" + isLoading={loading} + options={malOptions} + size="grow" + onChange={(e: any) => { + setValgtMal(e.data) + setMalValue(e.value) + }} + isDisabled={!benyttMal} + value={malValue} + isInDialog={true} + /> + </div> + </> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx b/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx index 2fabd3f8408..140bceab370 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx @@ -83,6 +83,7 @@ export default ({ } console.log('valgtePersoner: ', valgtePersoner) //TODO - SLETT MEG //TODO se paa denne!! + console.log('importerPersoner: ', importerPersoner) //TODO - SLETT MEG const columns = [ { From ce24cde4166b974417d18786141411f496543a3e Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 12 Mar 2024 15:22:11 +0100 Subject: [PATCH 32/50] Fix import fra personvisning og endret modal --- .../resultatVisning/ImporterPerson.tsx | 51 -------------- .../ImporterValgtePersoner.tsx | 70 ++++++++++++------- .../tenorSoek/resultatVisning/ListeValg.tsx | 21 +++--- .../tenorSoek/resultatVisning/MalValg.tsx | 20 +++--- .../resultatVisning/PersonVisning.tsx | 16 +++-- .../tenorSoek/resultatVisning/TreffListe.tsx | 15 +--- .../pages/testnorgePage/search/SearchView.tsx | 3 - 7 files changed, 75 insertions(+), 121 deletions(-) delete mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx deleted file mode 100644 index 1a21817e4b8..00000000000 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterPerson.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import { useNavigate } from 'react-router-dom' -import { useNaviger } from '@/utils/hooks/useNaviger' -import { Button } from '@navikt/ds-react' -import { CypressSelector } from '../../../../cypress/mocks/Selectors' -import { ArrowRightIcon, EnterIcon } from '@navikt/aksel-icons' -import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' - -export const ImporterPerson = ({ ident }) => { - const navigate = useNavigate() - // const { result, loading } = useNaviger(ident) - const { pdlPersoner, loading, error } = usePdlPersonbolk(ident) - - // TODO vis loading? - // if (result) { - // return null - // } - // console.log('ident: ', ident) //TODO - SLETT MEG - // console.log('pdlPersoner: ', pdlPersoner) //TODO - SLETT MEG - const handleClick = (event) => { - // event.stopPropagation() - navigate(`/importer`, { - state: { - importPersoner: [ - { - ident: ident, - data: { - hentPerson: pdlPersoner?.hentPersonBolk?.find((p) => p.ident === ident)?.person, - hentIdenter: pdlPersoner?.hentIdenterBolk?.find((p) => p.ident === ident)?.identer, - }, - }, - ], - // mal: mal, - // gruppe: gruppe, - }, - }) - } - - return ( - <Button - // data-cy={CypressSelector.BUTTON_VIS_I_GRUPPE} - variant="tertiary" - size="xsmall" - icon={<EnterIcon />} - loading={loading} - onClick={handleClick} - style={{ minWidth: '150px' }} - > - Importer til gruppe - </Button> - ) -} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index e37252d12aa..bfcdba0a457 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -1,14 +1,16 @@ import { useNavigate } from 'react-router-dom' import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' import { Button, Checkbox, Modal } from '@navikt/ds-react' -import React, { useRef, useState } from 'react' +import React, { useState } from 'react' import { MalValg } from '@/pages/tenorSoek/resultatVisning/MalValg' +import { EnterIcon } from '@navikt/aksel-icons' +import useBoolean from '@/utils/hooks/useBoolean' +import DollyModal from '@/components/ui/modal/DollyModal' -export const ImporterValgtePersoner = ({ identer }) => { +export const ImporterValgtePersoner = ({ identer, isMultiple }) => { const navigate = useNavigate() const { pdlPersoner, loading, error } = usePdlPersonbolk(identer) - - const ref = useRef<HTMLDialogElement>(null) + const [modalIsOpen, openModal, closeModal] = useBoolean(false) const [valgtMal, setValgtMal] = useState(null) const handleClick = () => { @@ -31,29 +33,45 @@ export const ImporterValgtePersoner = ({ identer }) => { return ( <> - <Button - variant="primary" - size="small" - disabled={identer?.length < 1} - loading={loading} - onClick={() => ref.current?.showModal()} - > - {identer?.length === 1 - ? 'Importer 1 valgt person' - : `Importer ${identer?.length} valgte personer`} - </Button> - <Modal ref={ref} header={{ heading: 'Importer personer' }} width={750} closeOnBackdropClick> - <Modal.Body> - <Checkbox>Inkluder partnere</Checkbox> + {isMultiple ? ( + <Button + variant="primary" + size="small" + disabled={identer?.length < 1} + loading={loading} + onClick={openModal} + > + {identer?.length === 1 + ? 'Importer 1 valgt person' + : `Importer ${identer?.length} valgte personer`} + </Button> + ) : ( + <Button + variant="tertiary" + size="xsmall" + icon={<EnterIcon />} + loading={loading} + onClick={openModal} + style={{ minWidth: '150px' }} + > + Importer person + </Button> + )} + <DollyModal isOpen={modalIsOpen} closeModal={closeModal} width="60%" overflow="auto"> + <div> + <h1>{identer?.length === 1 ? 'Importer person' : 'Importer personer'}</h1> + <div style={{ margin: '20px 0' }}> + <Checkbox size="small">Inkluder partnere</Checkbox> + </div> <MalValg setValgtMal={setValgtMal} /> - </Modal.Body> - <Modal.Footer> - <Button onClick={() => handleClick()}>Importer</Button> - <Button variant="secondary" onClick={() => ref.current?.close()}> - Avbryt - </Button> - </Modal.Footer> - </Modal> + <div className="dollymodal_buttons dollymodal_buttons--center"> + <Button onClick={() => handleClick()}>Importer</Button> + <Button variant="secondary" onClick={closeModal}> + Avbryt + </Button> + </div> + </div> + </DollyModal> </> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx index b138f354a17..f2c04419eca 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx @@ -1,12 +1,14 @@ import { useFinnesIDolly } from '@/utils/hooks/useIdent' import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' -import { ImporterPerson } from '@/pages/tenorSoek/resultatVisning/ImporterPerson' import { Checkbox } from '@navikt/ds-react' -import { DollyCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' +import Loading from '@/components/ui/loading/Loading' +import React from 'react' +export const ListeValg = ({ ident, markertePersoner, setMarkertePersoner }) => { + const { finnesIDolly, loading: loadingFinnes } = useFinnesIDolly(ident) -export const ListeValg = ({ ident, isMultiple = false, markertePersoner, setMarkertePersoner }) => { - const { finnesIDolly, loading: loadingFinnes, error: errorFinnes } = useFinnesIDolly(ident) - // console.log('finnesIDolly: ', finnesIDolly) //TODO - SLETT MEG + if (loadingFinnes) { + return <Loading onlySpinner /> + } const handleChangeCheckbox = (val: any) => { if (val?.target?.checked) { @@ -18,10 +20,7 @@ export const ListeValg = ({ ident, isMultiple = false, markertePersoner, setMark return finnesIDolly ? ( <NavigerTilPerson ident={ident} /> - ) : isMultiple ? ( - // <DollyCheckbox value={ident} size="small" onChange={(val: any) => handleChangeCheckbox(val)}> - // Importer til gruppe - // </DollyCheckbox> + ) : ( <div style={{ margin: '-8px 0' }}> <Checkbox value={ident} @@ -29,10 +28,8 @@ export const ListeValg = ({ ident, isMultiple = false, markertePersoner, setMark onChange={(val: any) => handleChangeCheckbox(val)} onClick={(e) => e.stopPropagation()} > - Importer til gruppe + Importer person </Checkbox> </div> - ) : ( - <ImporterPerson ident={ident} /> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx index ff804741b66..9968cead09d 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx @@ -26,8 +26,8 @@ export const MalValg = ({ setValgtMal }) => { const [benyttMal, setBenyttMal] = useBoolean(false) const [malValue, setMalValue] = useState(null) - const { maler, loading } = useDollyMaler() - const { brukerProfil } = useBrukerProfil() + const { maler, loading: loadingMaler } = useDollyMaler() + const { brukerProfil, loading: loadingBruker } = useBrukerProfil() const [malBruker, setMalBruker] = useState(brukerProfil?.visningsNavn) @@ -36,37 +36,35 @@ export const MalValg = ({ setValgtMal }) => { return ( <> - <Switch checked={benyttMal} onChange={() => setBenyttMal()}> + <Switch size="small" checked={benyttMal} onChange={() => setBenyttMal()}> Benytt mal </Switch> - <div className="flexbox--align-center--justify-start"> + <div className="flexbox--align-center--justify-start" style={{ marginTop: '5px' }}> <DollySelect name="zIdent" label="Bruker" - isLoading={loading} + isLoading={loadingBruker} options={brukerOptions} - size="large" + size="medium" onChange={(e: any) => { setMalBruker(e.value) }} value={malBruker} isDisabled={!benyttMal} isClearable={false} - isInDialog={true} /> <DollySelect name="mal" label="Maler" - isLoading={loading} + isLoading={loadingMaler} options={malOptions} size="grow" onChange={(e: any) => { - setValgtMal(e.data) - setMalValue(e.value) + setValgtMal(e?.data || null) + setMalValue(e?.value || null) }} isDisabled={!benyttMal} value={malValue} - isInDialog={true} /> </div> </> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 73854f2c923..b19045ba494 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -7,8 +7,8 @@ import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning import Loading from '@/components/ui/loading/Loading' import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning' import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' -import { ImporterPerson } from '@/pages/tenorSoek/resultatVisning/ImporterPerson' -import { ListeValg } from '@/pages/tenorSoek/resultatVisning/ListeValg' +import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' +import { useFinnesIDolly } from '@/utils/hooks/useIdent' const NavnHeader = styled.h2` margin: 10px 0 15px 0; @@ -16,6 +16,8 @@ const NavnHeader = styled.h2` hyphens: auto; ` export const PersonVisning = ({ person, ident, loading, error }) => { + const { finnesIDolly, loading: loadingFinnes } = useFinnesIDolly(ident) + if (loading) { return <Loading label="Laster person ..." /> } @@ -34,9 +36,13 @@ export const PersonVisning = ({ person, ident, loading, error }) => { <Box background="surface-default" padding="3" borderRadius="medium"> <div className="flexbox--space"> <NavnHeader>{personData?.visningnavn}</NavnHeader> - <ListeValg ident={ident} /> - {/*<NavigerTilPerson ident={ident} />*/} - {/*<ImporterPerson ident={ident} />*/} + {loadingFinnes && <Loading onlySpinner />} + {!loadingFinnes && + (finnesIDolly ? ( + <NavigerTilPerson ident={ident} /> + ) : ( + <ImporterValgtePersoner identer={[ident]} isMultiple={false} /> + ))} </div> <FolkeregisteretVisning data={personData} /> <EnhetsregisteretForetaksregisteretVisning diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 81f3a4bfbeb..cc2b805c6b9 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -1,11 +1,9 @@ -import { Box, VStack, Tag, Alert, Button } from '@navikt/ds-react' +import { Box, VStack, Tag, Alert } from '@navikt/ds-react' import React, { useEffect, useState } from 'react' import { useTenorIdent } from '@/utils/hooks/useTenorSoek' import { PersonVisning } from '@/pages/tenorSoek/resultatVisning/PersonVisning' import Loading from '@/components/ui/loading/Loading' import styled from 'styled-components' -import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' -import { useFinnesIDolly } from '@/utils/hooks/useIdent' import { ListeValg } from '@/pages/tenorSoek/resultatVisning/ListeValg' import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' @@ -75,15 +73,7 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { <h2 style={{ margin: '0', alignSelf: 'center' }}> {antallTreff || antallTreff === 0 ? `${antallTreff} treff` : ''} </h2> - <ImporterValgtePersoner identer={markertePersoner} /> - {/*<Button*/} - {/* variant="primary"*/} - {/* size="small"*/} - {/* disabled={markertePersoner?.length < 1}*/} - {/* onClick={() => console.log('Importerer personer', markertePersoner)}*/} - {/*>*/} - {/* Importer {markertePersoner?.length} valgte personer*/} - {/*</Button>*/} + <ImporterValgtePersoner identer={markertePersoner} isMultiple={true} /> </div> </Box> </div> @@ -119,7 +109,6 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { </TagsWrapper> <ListeValg ident={person?.id} - isMultiple={true} markertePersoner={markertePersoner} setMarkertePersoner={setMarkertePersoner} /> diff --git a/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx b/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx index 140bceab370..fe85236c92a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/testnorgePage/search/SearchView.tsx @@ -81,9 +81,6 @@ export default ({ </ContentContainer> ) } - console.log('valgtePersoner: ', valgtePersoner) //TODO - SLETT MEG - //TODO se paa denne!! - console.log('importerPersoner: ', importerPersoner) //TODO - SLETT MEG const columns = [ { From 334bfcb634e0340a6652d39d0e76fd7903912f52 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Wed, 13 Mar 2024 19:13:24 +0100 Subject: [PATCH 33/50] Import med partnere --- .../ImporterValgtePersoner.tsx | 68 +++++++++++++++++-- .../tenorSoek/resultatVisning/MalValg.tsx | 9 ++- 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index bfcdba0a457..0f57ff05183 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -1,11 +1,28 @@ import { useNavigate } from 'react-router-dom' import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' -import { Button, Checkbox, Modal } from '@navikt/ds-react' -import React, { useState } from 'react' +import { Button, Checkbox } from '@navikt/ds-react' +import React, { useEffect, useState } from 'react' import { MalValg } from '@/pages/tenorSoek/resultatVisning/MalValg' import { EnterIcon } from '@navikt/aksel-icons' import useBoolean from '@/utils/hooks/useBoolean' import DollyModal from '@/components/ui/modal/DollyModal' +import { top } from '@popperjs/core' +import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' +import styled from 'styled-components' + +const CheckboxWrapper = styled.div` + display: flex; + flex-wrap: wrap; + align-items: baseline; + margin-top: 20px; + border-bottom: 1px solid #ccc; + + && { + .navds-checkbox { + margin-bottom: 20px; + } + } +` export const ImporterValgtePersoner = ({ identer, isMultiple }) => { const navigate = useNavigate() @@ -13,10 +30,29 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { const [modalIsOpen, openModal, closeModal] = useBoolean(false) const [valgtMal, setValgtMal] = useState(null) + const [partnere, setPartnere] = useState([]) + const [valgtePartnere, setValgtePartnere] = useState([]) + + const partnerSivilstander = ['GIFT', 'REGISTRERT_PARTNER', 'SEPARERT', 'SEPARERT_PARTNER'] + + useEffect(() => { + const partnerListe = [] + pdlPersoner?.hentPersonBolk?.map((ident) => { + const partner = ident.person?.sivilstand?.filter( + (sivilstand) => + !sivilstand?.metadata?.historisk && partnerSivilstander.includes(sivilstand?.type), + )?.[0]?.relatertVedSivilstand + if (partner) { + partnerListe.push(partner) + } + }) + setPartnere(partnerListe) + }, [pdlPersoner]) + const handleClick = () => { navigate(`/importer`, { state: { - importPersoner: identer.map((ident) => { + importPersoner: identer.concat(valgtePartnere).map((ident) => { return { ident: ident, data: { @@ -31,6 +67,14 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { }) } + const handleClickPartnere = (event) => { + if (event.target.checked) { + setValgtePartnere(partnere) + } else { + setValgtePartnere([]) + } + } + return ( <> {isMultiple ? ( @@ -60,9 +104,21 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { <DollyModal isOpen={modalIsOpen} closeModal={closeModal} width="60%" overflow="auto"> <div> <h1>{identer?.length === 1 ? 'Importer person' : 'Importer personer'}</h1> - <div style={{ margin: '20px 0' }}> - <Checkbox size="small">Inkluder partnere</Checkbox> - </div> + {partnere.length > 0 && ( + <CheckboxWrapper> + <Checkbox + size="small" + onChange={(event) => handleClickPartnere(event)} + style={{ marginBottom: '20px' }} + > + Inkluder partner + </Checkbox> + <Hjelpetekst placement={top}> + En eller flere av de valgte personene har en partner. <br /> Vil du inkludere + partner(e) i importen? + </Hjelpetekst> + </CheckboxWrapper> + )} <MalValg setValgtMal={setValgtMal} /> <div className="dollymodal_buttons dollymodal_buttons--center"> <Button onClick={() => handleClick()}>Importer</Button> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx index 9968cead09d..8277f9afb74 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx @@ -4,6 +4,11 @@ import { useBrukerProfil } from '@/utils/hooks/useBruker' import { DollySelect } from '@/components/ui/form/inputs/select/Select' import { Switch } from '@navikt/ds-react' import { useBoolean } from 'react-use' +import styled from 'styled-components' + +const MalValgWrapper = styled.div` + margin-top: 20px; +` const getBrukerOptions = (malbestillinger: any) => Object.keys(malbestillinger).map((ident) => ({ @@ -35,7 +40,7 @@ export const MalValg = ({ setValgtMal }) => { const malOptions = maler && malBruker ? getMalOptions(maler, malBruker) : [] return ( - <> + <MalValgWrapper> <Switch size="small" checked={benyttMal} onChange={() => setBenyttMal()}> Benytt mal </Switch> @@ -67,6 +72,6 @@ export const MalValg = ({ setValgtMal }) => { value={malValue} /> </div> - </> + </MalValgWrapper> ) } From 75e1d454e24a9791479eae9169a6ea39c733534f Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 14 Mar 2024 14:47:41 +0100 Subject: [PATCH 34/50] Visning av daglig leder-rolle --- .../js/src/assets/icons/custom/TenorLogo.svg | 17 +++++++++++ .../visning/SkatteetatenVisning.tsx | 30 +++++++++++++++++++ .../main/js/src/components/ui/icon/Icon.tsx | 3 ++ .../gruppe/PersonVisning/PersonVisning.tsx | 15 ++++++++-- 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/src/assets/icons/custom/TenorLogo.svg create mode 100644 apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx diff --git a/apps/dolly-frontend/src/main/js/src/assets/icons/custom/TenorLogo.svg b/apps/dolly-frontend/src/main/js/src/assets/icons/custom/TenorLogo.svg new file mode 100644 index 00000000000..b490296398c --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/assets/icons/custom/TenorLogo.svg @@ -0,0 +1,17 @@ +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1728 1296" role="img"> + <g fill="white"> + <circle className="circle" cx="603.23" cy="843.82" r="250.5"/> + <path className="path" d="M336.17,843.82c0-22.29,2.75-43.93,7.89-64.62l-183.94-59.76c-29.2,93.03-29.2,180.12,0,273.15l190.5-61.9 + C341.26,903.45,336.17,874.23,336.17,843.82z"/> + <path className="path" d="M419.47,650.04L236.12,397.68c-95.84,70.85-158.33,156.86-196.09,269.9l307.26,99.83 + C360.8,722.06,386.03,681.77,419.47,650.04z"/> + <path className="path" d="M548.01,582.49l-1.45-408.32c-139.37,1.48-257.34,40.28-370.39,121.8L429.02,641.4 + C462.49,612.58,503.18,591.91,548.01,582.49z"/> + <path className="path" d="M603.23,576.76c37.75,0,73.66,7.85,106.22,21.98L988,215.34c-131.06-94-267.64-138.37-428.92-139.36v504.43 + C573.45,578.02,588.19,576.76,603.23,576.76z"/> + <path className="path" d="M856.89,760.09l569.12-184.92c-65.36-197.96-174.33-347.93-342.4-471.27L720.42,603.79 + C784.55,635.16,834.25,691.47,856.89,760.09z"/> + <path className="path" d="M1634.26,519.65L860.28,771.14c6.52,23.11,10.02,47.49,10.02,72.69c0,27.78-4.25,54.57-12.12,79.76 + l776.08,252.16C1705.88,952.1,1705.88,743.29,1634.26,519.65z"/> + </g> +</svg> diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx new file mode 100644 index 00000000000..d84e5f2a662 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx @@ -0,0 +1,30 @@ +import React from 'react' +import Loading from '@/components/ui/loading/Loading' +import Icon from '@/components/ui/icon/Icon' +import { TitleValue } from '@/components/ui/titleValue/TitleValue' + +// Midlertidig visning av daglig leder-rolle fra Tenor. Skrives om naar det er behov for aa vise flere Tenor-data. +export const SkatteetatenVisning = ({ data, loading }) => { + if (loading) { + return <Loading label="Laster Tenor-data ..." /> + } + + const harDagligLederRolle = data?.tenorRelasjoner?.includes('BrregErFr') + + if (!data || !harDagligLederRolle) { + return null + } + + return ( + <div style={{ marginTop: '15px' }}> + <div className="sub-overskrift" style={{ backgroundColor: '#4B797A', color: '#fff' }}> + <Icon fontSize={'1.5rem'} kind="tenor" /> + <h3>Data fra Tenor</h3> + </div> + <h4 style={{ margin: '10px 0' }}>Enhetsregisteret og Foretaksregisteret</h4> + <div className="person-visning_content"> + <TitleValue title="Roller" value="Daglig leder" /> + </div> + </div> + ) +} diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx index c1a588d2963..24266da02d0 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/icon/Icon.tsx @@ -66,6 +66,7 @@ import ReportProblemCircle from '@/assets/icons/custom/ProblemCircle.svg?raw' import CheckCircle from '@/assets/icons/custom/CheckCircle.svg?raw' import Dolly from '@/assets/icons/custom/Dolly.svg?raw' import DollyPanic from '@/assets/icons/custom/DollyPanic.svg?raw' +import TenorLogo from '@/assets/icons/custom/TenorLogo.svg?raw' import Cypress from '@/assets/img/cypress.png' import './Icon.less' @@ -79,6 +80,7 @@ export const icons = { dolly: Dolly, dollyPanic: DollyPanic, cypress: Cypress, + tenor: TenorLogo, trashcan: TrashIcon, 'add-circle': PlusCircleIcon, @@ -191,6 +193,7 @@ const Icon = ({ 'dolly', 'dollyPanic', 'cypress', + 'tenor', ] if (halvannenRemIkoner.includes(kind)) { diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx index 7a807b097fe..3d4645e530b 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx @@ -86,6 +86,8 @@ import { import { usePensjonEnvironments } from '@/utils/hooks/useEnvironments' import { SigrunstubPensjonsgivendeVisning } from '@/components/fagsystem/sigrunstubPensjonsgivende/visning/Visning' import { useUdistub } from '@/utils/hooks/useUdistub' +import { useTenorOversikt } from '@/utils/hooks/useTenorSoek' +import { SkatteetatenVisning } from '@/components/fagsystem/skatteetaten/visning/SkatteetatenVisning' const getIdenttype = (ident) => { if (parseInt(ident.charAt(0)) > 3) { @@ -227,6 +229,11 @@ export default ({ ident.ident, ) + const { response: tenorData, loading: loadingTenorData } = useTenorOversikt( + ident?.master === 'PDL' ? { identifikator: ident.ident } : null, + 1, + ) + const getGruppeIdenter = () => { return useAsync(async () => DollyApi.getGruppeById(gruppeId), [DollyApi.getGruppeById]) } @@ -333,8 +340,8 @@ export default ({ const relatertePersoner = pdlRelatertPerson()?.filter((ident) => ident.id) const harPdlRelatertPerson = relatertePersoner?.length > 0 - const importerteRelatertePersoner = relatertePersoner?.filter( - (ident) => gruppeIdenter?.includes(ident.id), + const importerteRelatertePersoner = relatertePersoner?.filter((ident) => + gruppeIdenter?.includes(ident.id), ) const getArbeidsplassencvHjemmel = () => { @@ -508,6 +515,10 @@ export default ({ tilgjengeligMiljoe={tilgjengeligMiljoe} /> <HistarkVisning data={histarkData} loading={loadingHistarkData} /> + <SkatteetatenVisning + data={tenorData?.data?.data?.personer?.find((person) => person?.id === ident.ident)} + loading={loadingTenorData} + /> <PersonMiljoeinfo bankIdBruker={brukertype === 'BANKID'} ident={ident.ident} From 49d2486f127b32780c16dad6045d535fa3aa83d2 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 15 Mar 2024 11:47:20 +0100 Subject: [PATCH 35/50] Fix naviger til person --- .../resultatVisning/NavigerTilPerson.tsx | 39 +++++++++---------- .../tenorSoek/resultatVisning/TreffListe.tsx | 2 +- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx index a601fb2c269..a6bc2beb1b7 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -3,35 +3,32 @@ import { useNaviger } from '@/utils/hooks/useNaviger' import { Button } from '@navikt/ds-react' import { CypressSelector } from '../../../../cypress/mocks/Selectors' import { ArrowRightIcon } from '@navikt/aksel-icons' -import { useFinnesIDolly } from '@/utils/hooks/useIdent' +import { useEffect, useState } from 'react' export const NavigerTilPerson = ({ ident }) => { const navigate = useNavigate() - const { result, loading } = useNaviger(ident) + const [navigateIdent, setNavigateIdent] = useState(null) + const { result, loading, mutate } = useNaviger(navigateIdent) - // TODO vis loading? - if (!result) { - return null - } + useEffect(() => { + mutate().then((result) => { + if (result?.gruppe?.id && !window.location.pathname.includes(`/${result?.gruppe?.id}`)) { + navigate(`/gruppe/${result?.gruppe?.id}`, { + replace: true, + state: { + hovedperson: result.identHovedperson, + visPerson: result.identNavigerTil, + sidetall: result.sidetall, + }, + }) + } + }) + }, [navigateIdent]) const handleClick = (event) => { event.stopPropagation() - // setValgtIdent(ident) - if (result?.gruppe?.id && !window.location.pathname.includes(`/${result?.gruppe?.id}`)) { - navigate(`/gruppe/${result?.gruppe?.id}`, { - replace: true, - state: { - hovedperson: result.identHovedperson, - visPerson: result.identNavigerTil, - sidetall: result.sidetall, - }, - }) - } + setNavigateIdent(ident) } - // - // if (linkTekst) { - // return <StyledButton onClick={handleClick}>{linkTekst}</StyledButton> - // } return ( <Button diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index cc2b805c6b9..b5ffbf2aa2d 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -26,7 +26,7 @@ const TagsWrapper = styled.div` const PersonVisningWrapper = styled.div` position: sticky; top: 80px; - max-height: 96vh; + max-height: 92vh; overflow: auto; scrollbar-width: none; ` From 5ee68292419a10578a4a08fde4792cc9523a3b53 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 19 Mar 2024 09:17:29 +0100 Subject: [PATCH 36/50] Div fix --- .../fagsystem/alderspensjon/form/Form.tsx | 2 +- .../src/main/js/src/pages/tenorSoek/SoekForm.tsx | 16 +++++++++++++++- .../tenorSoek/resultatVisning/TreffListe.tsx | 4 +--- .../soekFormPartials/FolkeregisteretNavn.tsx | 2 +- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx index 688297b5a6a..6a418d8bfab 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/alderspensjon/form/Form.tsx @@ -98,7 +98,7 @@ export const AlderspensjonForm = () => { const foedselListe = opts?.importPersoner?.flatMap( (person) => person?.data?.hentPerson?.foedsel, ) - if (foedselListe?.some((f) => f.foedselsaar < 1944 && !f.metadata?.historisk)) { + if (foedselListe?.some((f) => f?.foedselsaar < 1944 && !f?.metadata?.historisk)) { ugyldigFoedselsaar = true } } 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 ca714a7ed25..02c02922166 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 @@ -46,10 +46,21 @@ export const SoekForm = ({ setRequest, mutate }) => { } const handleChange = (value: any, path: string) => { + // if (watch(path) === value) { + // return + // } else { setValue(path, value) const request = getUpdatedRequest(watch()) setRequest({ ...request }) mutate() + // } + } + + const handleChangeTextInput = (value: any, path: string) => { + setValue(path, value) + const request = getUpdatedRequest(watch()) + setRequest(request) + mutate() } const handleChangeList = (value: any, path: string) => { @@ -141,7 +152,10 @@ export const SoekForm = ({ setRequest, mutate }) => { /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> - <FolkeregisteretNavn handleChange={handleChange} /> + <FolkeregisteretNavn + handleChange={handleChange} + // handleChangeTextInput={handleChangeTextInput} + /> </Accordion.Content> </Accordion.Item> <Accordion.Item> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index b5ffbf2aa2d..deb4f79879d 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -53,9 +53,7 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { } = useTenorIdent(valgtPerson?.id) useEffect(() => { - if (!valgtPerson) { - setValgtPerson(personListe?.[0] || null) - } + setValgtPerson(personListe?.[0] || null) }, [personListe?.[0]]) const antallTreff = response?.data?.treff 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 6cff2d2663d..914603c6c69 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 @@ -5,7 +5,7 @@ import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormikTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import { FormikCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' -export const FolkeregisteretNavn = ({ handleChange }: any) => { +export const FolkeregisteretNavn = ({ handleChange, handleChangeTextInput }: any) => { return ( <SoekKategori> <FormikTextInput From 90243d42848d6f868e04843983450c8d3c126666 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 19 Mar 2024 11:31:45 +0100 Subject: [PATCH 37/50] Fix datovelger --- .../src/main/js/src/pages/tenorSoek/SoekForm.tsx | 5 +++++ 1 file changed, 5 insertions(+) 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 c24cdd14a8f..9f062fac817 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 @@ -12,6 +12,8 @@ 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' const SoekefeltWrapper = styled.div` display: flex; @@ -49,6 +51,9 @@ export const SoekForm = ({ setRequest, mutate }) => { // if (watch(path) === value) { // return // } else { + if (isDate(value)) { + value = fixTimezone(value) + } setValue(path, value) const request = getUpdatedRequest(watch()) setRequest({ ...request }) From c911bca38369c468d309de1eb065d0c732eca0bf Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 19 Mar 2024 12:48:38 +0100 Subject: [PATCH 38/50] =?UTF-8?q?Infoboks=20p=C3=A5=20slutten=20av=20treff?= =?UTF-8?q?liste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index deb4f79879d..f70af845adc 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -119,6 +119,11 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { <Loading label="Laster treff ..." /> </div> )} + {personListe?.length === 200 && antallTreff > 200 && ( + <Alert variant="info" size="small" inline style={{ marginTop: '20px' }}> + Viser kun de 200 første treffene. <br /> Gjør et nytt søk for å se andre treff. + </Alert> + )} </div> <div style={{ From c01598af0a1be5e4f92048510cf69b1494eb6ced Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 19 Mar 2024 16:51:29 +0100 Subject: [PATCH 39/50] Div css --- .../ImporterValgtePersoner.tsx | 2 +- .../resultatVisning/NavigerTilPerson.tsx | 1 + .../resultatVisning/PersonVisning.tsx | 44 ++++++++++++------- .../tenorSoek/resultatVisning/TreffListe.tsx | 22 +++------- 4 files changed, 35 insertions(+), 34 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index 0f57ff05183..99f13681fd0 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -96,7 +96,7 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { icon={<EnterIcon />} loading={loading} onClick={openModal} - style={{ minWidth: '150px' }} + style={{ minWidth: '155px', height: '24px', marginTop: '10px' }} > Importer person </Button> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx index a6bc2beb1b7..ed4216d7547 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -38,6 +38,7 @@ export const NavigerTilPerson = ({ ident }) => { icon={<ArrowRightIcon />} loading={loading} onClick={handleClick} + style={{ minWidth: '118px' }} > Vis i gruppe </Button> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index b19045ba494..5ccd7ef80d8 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -10,6 +10,14 @@ import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPe import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' import { useFinnesIDolly } from '@/utils/hooks/useIdent' +const PersonVisningWrapper = styled.div` + position: sticky; + top: 80px; + max-height: 92vh; + overflow: auto; + scrollbar-width: thin; +` + const NavnHeader = styled.h2` margin: 10px 0 15px 0; word-break: break-word; @@ -33,22 +41,24 @@ export const PersonVisning = ({ person, ident, loading, error }) => { const personData = person.data?.dokumentListe?.[0] return ( - <Box background="surface-default" padding="3" borderRadius="medium"> - <div className="flexbox--space"> - <NavnHeader>{personData?.visningnavn}</NavnHeader> - {loadingFinnes && <Loading onlySpinner />} - {!loadingFinnes && - (finnesIDolly ? ( - <NavigerTilPerson ident={ident} /> - ) : ( - <ImporterValgtePersoner identer={[ident]} isMultiple={false} /> - ))} - </div> - <FolkeregisteretVisning data={personData} /> - <EnhetsregisteretForetaksregisteretVisning - data={_.get(personData, 'tenorRelasjoner.brreg-er-fr')} - /> - <InntektVisning data={personData?.tenorRelasjoner?.inntekt} /> - </Box> + <PersonVisningWrapper> + <Box background="surface-default" padding="3" borderRadius="medium"> + <div className="flexbox--space"> + <NavnHeader>{personData?.visningnavn}</NavnHeader> + {loadingFinnes && <Loading onlySpinner />} + {!loadingFinnes && + (finnesIDolly ? ( + <NavigerTilPerson ident={ident} /> + ) : ( + <ImporterValgtePersoner identer={[ident]} isMultiple={false} /> + ))} + </div> + <FolkeregisteretVisning data={personData} /> + <EnhetsregisteretForetaksregisteretVisning + data={_.get(personData, 'tenorRelasjoner.brreg-er-fr')} + /> + <InntektVisning data={personData?.tenorRelasjoner?.inntekt} /> + </Box> + </PersonVisningWrapper> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index f70af845adc..c5eedbe6cbe 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -23,14 +23,6 @@ const TagsWrapper = styled.div` margin: 10px 0; ` -const PersonVisningWrapper = styled.div` - position: sticky; - top: 80px; - max-height: 92vh; - overflow: auto; - scrollbar-width: none; -` - export const TreffListe = ({ response, personListe, loading, error }: any) => { if ((!personListe || personListe?.length === 0) && loading) { return <Loading label="Laster treff ..." /> @@ -132,14 +124,12 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { }} > {valgtPerson && ( - <PersonVisningWrapper> - <PersonVisning - person={valgtPersonData?.data} - ident={valgtPerson?.id} - loading={valgtPersonLoading} - error={valgtPersonError} - /> - </PersonVisningWrapper> + <PersonVisning + person={valgtPersonData?.data} + ident={valgtPerson?.id} + loading={valgtPersonLoading} + error={valgtPersonError} + /> )} </div> </div> From 429831434c411975ebcc0e1b2f2cce5efab7bb99 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Wed, 20 Mar 2024 14:54:28 +0100 Subject: [PATCH 40/50] Fix visning --- .../pages/tenorSoek/resultatVisning/TabsVisning.tsx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx index cff12acedda..b5181aecc03 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TabsVisning.tsx @@ -1,8 +1,8 @@ import { Tabs } from '@navikt/ds-react' -import { CodeView } from '@/components/codeView' import React from 'react' import styled from 'styled-components' import { FileCodeIcon, KeyVerticalIcon } from '@navikt/aksel-icons' +import SyntaxHighlighter from 'react-syntax-highlighter' const TabsVisningFormatter = styled.div` width: 100%; @@ -17,6 +17,13 @@ const TabsVisningFormatter = styled.div` } } ` + +const StyledCodeView = styled(SyntaxHighlighter)` + font-size: 0.9em; + max-width: 820px; + margin: 0; +` + export const TabsVisning = ({ children, kildedata }: any) => { const kildedataJson = JSON.parse(kildedata) const kildedataPretty = JSON.stringify(kildedataJson, null, 2) @@ -42,14 +49,14 @@ export const TabsVisning = ({ children, kildedata }: any) => { <Tabs.Panel value="kildedata" style={{ - display: 'inline-grid', width: '100%', maxHeight: '600px', overflowX: 'auto', + scrollbarWidth: 'thin', marginBottom: '15px', }} > - <CodeView code={kildedataPretty} language="json" /> + <StyledCodeView language="json">{kildedataPretty}</StyledCodeView> </Tabs.Panel> </Tabs> </TabsVisningFormatter> From f9b7d712a595d5f48401c7296eddcfeac6402eb4 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 2 Apr 2024 17:04:21 +0200 Subject: [PATCH 41/50] Tester og div fix --- .../src/main/js/cypress/e2e/TenorSoek.cy.ts | 54 +++++++++++++++ .../src/main/js/cypress/mocks/BasicMocks.tsx | 69 +++++++++++++++++++ .../src/main/js/cypress/mocks/Selectors.tsx | 7 ++ .../layout/header/FinnPersonDropdown.tsx | 2 +- .../ui/button/AvbrytButton/AvbrytButton.tsx | 4 +- .../ImporterValgtePersoner.tsx | 6 +- .../resultatVisning/PersonVisning.tsx | 4 +- .../tenorSoek/resultatVisning/TreffListe.tsx | 2 + .../FolkeregisteretIdentifikasjonStatus.tsx | 3 + 9 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts diff --git a/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts b/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts new file mode 100644 index 00000000000..3408ff70854 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts @@ -0,0 +1,54 @@ +import { CypressSelector } from '../mocks/Selectors' +import { + responseFalse, + responseTrue, + tenorSoekOversiktMock, + tenorSoekTestdataMock, +} from '../mocks/BasicMocks' + +describe('Tenor-søk testing', () => { + const tenorSoekOversikt = new RegExp( + /testnav-tenor-search-service\/api\/v1\/tenor\/testdata\/oversikt\?antall=10&side=0/, + ) + const tenorSoekTestdata = new RegExp( + /testnav-tenor-search-service\/api\/v1\/tenor\/testdata\?kilde=FREG&type=AlleFelter/, + ) + const dollyBackendFinnesTrue = new RegExp(/dolly-backend\/api\/v1\/ident\/finnes\/12345678912/) + const dollyBackendFinnesFalse = new RegExp(/dolly-backend\/api\/v1\/ident\/finnes\/98765432198/) + + it('passes', () => { + cy.visit('') + + cy.intercept({ method: 'POST', url: tenorSoekOversikt }, tenorSoekOversiktMock) + cy.intercept({ method: 'POST', url: tenorSoekTestdata }, tenorSoekTestdataMock) + cy.intercept({ method: 'GET', url: dollyBackendFinnesTrue }, responseTrue) + cy.intercept({ method: 'GET', url: dollyBackendFinnesFalse }, responseFalse) + + // Naviger til Tenor-soek og gjoer et soek + cy.dollyGet(CypressSelector.BUTTON_HEADER_FINNPERSON).click() + cy.dollyGet(CypressSelector.BUTTON_HEADER_TENOR).click() + cy.get('h1').contains('Søk etter personer i Tenor').should('exist') + cy.dollyGet(CypressSelector.CHECKBOX_TENORSOEK).click() + cy.wait(1000) + + // Velg person som ikke ligger i Dolly og start import av personen + cy.get('div').contains('TIGER ULV').click() + cy.get('h2').contains('TIGER ULV').should('exist') + cy.dollyGet(CypressSelector.BUTTON_IMPORTER_PERSONER).click() + cy.wait(500) + cy.get('h1').contains('Importer person').should('exist') + cy.dollyGet(CypressSelector.BUTTON_IMPORTER).click() + cy.wait(500) + cy.get('.bestillingsveileder').should('exist') + cy.dollyGet(CypressSelector.BUTTON_AVBRYT).click() + cy.wait(500) + cy.dollyGet(CypressSelector.BUTTON_BEKREFT).click() + cy.wait(1000) + cy.get('h1').contains('Søk etter personer i Tenor').should('exist') + + // Naviger til foerste person som ligger i Dolly + cy.dollyGet(CypressSelector.BUTTON_VIS_I_GRUPPE).first().click() + cy.wait(500) + cy.get('h1').contains('Testytest').should('exist') + }) +}) diff --git a/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx b/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx index edcbf1ffa56..1fc226842bf 100644 --- a/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx +++ b/apps/dolly-frontend/src/main/js/cypress/mocks/BasicMocks.tsx @@ -1882,3 +1882,72 @@ export const bestillingFragmentNavigerMock = { bestillingNavigerTil: 1, sidetall: 0, } + +export const tenorSoekOversiktMock = { + status: 'OK', + data: { + treff: 2, + rader: 2, + offset: 0, + nesteSide: null, + seed: 1111, + personer: [ + { + id: '12345678912', + fornavn: 'TESTYTEST', + etternavn: 'CAFE', + tenorRelasjoner: ['Freg'], + }, + { + id: '98765432198', + fornavn: 'TIGER', + etternavn: 'ULV', + tenorRelasjoner: ['Freg'], + }, + ], + }, + query: 'legitimasjonsdokument:*', + error: null, +} + +export const tenorSoekTestdataMock = { + status: 'OK', + data: { + treff: 2, + rader: 2, + offset: 0, + nesteSide: null, + seed: 1111, + dokumentListe: [ + { + foedselsdato: '1992-06-04', + identifikator: ['12345678912'], + kjoenn: 'kvinne', + personstatus: 'midlertidig', + sivilstand: 'gift', + tenorMetadata: { + kildedata: '{}', + }, + visningnavn: 'TESTYTEST CAFE', + }, + { + foedselsdato: '1974-02-02', + identifikator: ['98765432198'], + kjoenn: 'kvinne', + personstatus: 'bosatt', + sivilstand: 'ugift', + tenorMetadata: { + kildedata: '{}', + }, + visningnavn: 'TIGER ULV', + }, + ], + fasetter: {}, + }, + query: '', + error: null, +} + +export const responseTrue = { body: true } + +export const responseFalse = { body: false } diff --git a/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx b/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx index 93441179b1a..e84eb12d154 100644 --- a/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx +++ b/apps/dolly-frontend/src/main/js/cypress/mocks/Selectors.tsx @@ -2,6 +2,7 @@ export enum CypressSelector { INPUT_MINSIDE_SOEK_MAL = 'input-minside-mal', INPUT_DOLLY_SOEK = 'input-dolly-soek', INPUT_TESTNORGE_FNR = 'input-testnorge-fnr', + INPUT_TENORSOEK_FNR = 'input-tenorsoek-fnr', INPUT_NAVN = 'input-navn', INPUT_NY_GRUPPE_NAVN = 'input-ny-gruppe-navn', INPUT_NY_GRUPPE_HENSIKT = 'input-ny-gruppe-hensikt', @@ -44,6 +45,8 @@ export enum CypressSelector { BUTTON_FJERN_ALLE = 'button-fjern-alle', BUTTON_VIDERE = 'button-videre', BUTTON_TILBAKE = 'button-tilbake', + BUTTON_AVBRYT = 'button-avbryt', + BUTTON_BEKREFT = 'button-bekreft', BUTTON_FLYTT_PERSONER = 'button-flytt-personer', BUTTON_FLYTT_PERSONER_AVBRYT = 'button-flytt-personer-avbryt', BUTTON_VARSLING_LUKK = 'button-varsling-lukk', @@ -55,6 +58,7 @@ export enum CypressSelector { BUTTON_HEADER_FINNPERSON = 'button-header-finnperson', BUTTON_HEADER_DOLLYSOEK = 'button-header-dollysoek', BUTTON_HEADER_TESTNORGE = 'button-header-testnorge', + BUTTON_HEADER_TENOR = 'button-header-tenor', BUTTON_HEADER_ENDRINGSMELDING = 'button-header-endringsmelding', BUTTON_PROFIL = 'button-minside', BUTTON_PROFIL_MINSIDE = 'button-profil-minside', @@ -62,6 +66,7 @@ export enum CypressSelector { BUTTON_FULLFOER_BESTILLING = 'button-fullfoer-bestilling', BUTTON_AVBRYT_BESTILLING = 'button-avbryt-bestilling', BUTTON_IMPORTER_PERSONER = 'button-importer-personer', + BUTTON_IMPORTER = 'button-importer', BUTTON_MINSIDE_ENDRE_MALNAVN = 'button-minside-endre-malnavn', BUTTON_MINSIDE_LAGRE_MALNAVN = 'button-minside-lagre-malnavn', BUTTON_LUKK_BESTILLING_RESULTAT = 'button-lukk-bestilling-resultat', @@ -82,10 +87,12 @@ export enum CypressSelector { BUTTON_GJENOPPRETT_GRUPPE = 'button-gjenopprett-gruppe', BUTTON_REDIGER_GRUPPE = 'button-rediger-gruppe', BUTTON_TIDLIGEREBESTILLINGER_NAVIGER = 'button-tidligerebestillinger-naviger', + BUTTON_PERSON_TENORSOEK = 'button-person-tenorsoek', SELECT_PERSON_SEARCH = 'select-person-search', SELECT_TAGS = 'select-tags', HOVER_MILJOE = 'hover-miljoe', CHECKBOX_FORBEDRING_ANONYM = 'checkbox-forbedring-anonym', + CHECKBOX_TENORSOEK = 'checkbox-tenorsoek', ERROR_MESSAGE_NAVIGERING = 'error-message-navigering', EXPANDABLE_PERSONINFORMASJON = 'expandable-personinformasjon', CONTAINER_VALGTE_PERSONER = 'container-valgte-personer', diff --git a/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx b/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx index 4481d559065..d65b9543e8b 100644 --- a/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/layout/header/FinnPersonDropdown.tsx @@ -46,7 +46,7 @@ export const FinnPersonDropdown = () => { Søk i Test-Norge </Dropdown.Menu.List.Item> <Dropdown.Menu.List.Item - data-cy={CypressSelector.BUTTON_HEADER_TESTNORGE} + data-cy={CypressSelector.BUTTON_HEADER_TENOR} onClick={() => navigate('/tenor')} style={{ color: '#212529' }} > diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx index 484c64e394b..dff3cd62c9d 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/button/AvbrytButton/AvbrytButton.tsx @@ -5,6 +5,7 @@ import DollyModal from '@/components/ui/modal/DollyModal' import Icon from '@/components/ui/icon/Icon' import './AvbrytModal.less' +import { CypressSelector } from '../../../../../cypress/mocks/Selectors' type Props = { action: Function @@ -16,7 +17,7 @@ export const AvbrytButton = ({ action, children }: Props) => { return ( <React.Fragment> - <NavButton variant={'danger'} onClick={openModal}> + <NavButton data-cy={CypressSelector.BUTTON_AVBRYT} variant={'danger'} onClick={openModal}> Avbryt </NavButton> <DollyModal isOpen={modalIsOpen} closeModal={closeModal} width="fit-content" overflow="auto"> @@ -31,6 +32,7 @@ export const AvbrytButton = ({ action, children }: Props) => { Nei </NavButton> <NavButton + data-cy={CypressSelector.BUTTON_BEKREFT} onClick={() => { closeModal() return action() diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index 99f13681fd0..ccea79d467a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -9,6 +9,7 @@ import DollyModal from '@/components/ui/modal/DollyModal' import { top } from '@popperjs/core' import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import styled from 'styled-components' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' const CheckboxWrapper = styled.div` display: flex; @@ -91,6 +92,7 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { </Button> ) : ( <Button + data-cy={CypressSelector.BUTTON_IMPORTER_PERSONER} variant="tertiary" size="xsmall" icon={<EnterIcon />} @@ -121,7 +123,9 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { )} <MalValg setValgtMal={setValgtMal} /> <div className="dollymodal_buttons dollymodal_buttons--center"> - <Button onClick={() => handleClick()}>Importer</Button> + <Button data-cy={CypressSelector.BUTTON_IMPORTER} onClick={() => handleClick()}> + Importer + </Button> <Button variant="secondary" onClick={closeModal}> Avbryt </Button> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 5ccd7ef80d8..8e570dcd8f9 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -38,7 +38,9 @@ export const PersonVisning = ({ person, ident, loading, error }) => { return null } - const personData = person.data?.dokumentListe?.[0] + const personData = person.data?.dokumentListe?.find((dokument) => + dokument.identifikator?.includes(ident), + ) return ( <PersonVisningWrapper> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index c5eedbe6cbe..ce8b39be188 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -6,6 +6,7 @@ import Loading from '@/components/ui/loading/Loading' import styled from 'styled-components' import { ListeValg } from '@/pages/tenorSoek/resultatVisning/ListeValg' import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' +import { CypressSelector } from '../../../../cypress/mocks/Selectors' const PersonNavn = styled.h3` word-break: break-word; @@ -73,6 +74,7 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { return ( <Box key={person?.id} + data-cy={CypressSelector.BUTTON_PERSON_TENORSOEK} padding="2" background={ person?.id === valgtPerson?.id ? 'surface-alt-3-moderate' : 'surface-alt-3-subtle' 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 9e0ade0af7d..1e70bdcff81 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 @@ -7,6 +7,7 @@ import { createOptions } from '@/pages/tenorSoek/utils' 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 { CypressSelector } from '../../../../cypress/mocks/Selectors' export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChangeList }: any) => { const { domain: identifikatorTypeOptions } = useTenorDomain('IdentifikatorType') @@ -23,6 +24,7 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange <SoekKategori> <FormTextInput name="identifikator" + data-cy={CypressSelector.INPUT_TENORSOEK_FNR} label="Fødselsnummer / D-nummer" onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'identifikator')} visHvisAvhuket={false} @@ -109,6 +111,7 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange </div> <FormCheckbox name="harLegitimasjonsdokument" + data-cy={CypressSelector.CHECKBOX_TENORSOEK} label="Har legitimasjonsdokument" onChange={(val: SyntheticEvent) => handleChange(val?.target?.checked || undefined, 'harLegitimasjonsdokument') From adb31add665be88209541a824c0a15cd674ba333 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 4 Apr 2024 14:09:29 +0200 Subject: [PATCH 42/50] Liten fix paa stort problem --- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index cd11f533361..d2915b5f2a9 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -22,23 +22,33 @@ export default () => { }, [request]) useEffect(() => { - if (response && state.personListe?.length === 0) { + if (response?.data?.data?.personer?.length === 0) { setState({ ...state, - personListe: response?.data?.data?.personer, - seed: response?.data?.data?.seed, + personListe: [], nesteSide: response?.data?.data?.nesteSide, }) - } else if ( - state.personListe?.length > 0 && - response?.data?.data?.personer?.length > 0 && - state.side > 0 - ) { + } else if (response && state.personListe?.length === 0) { setState({ ...state, - personListe: [...state.personListe, ...response?.data?.data?.personer], + personListe: response?.data?.data?.personer, + seed: response?.data?.data?.seed, nesteSide: response?.data?.data?.nesteSide, }) + } else if (state.personListe?.length > 0 && response?.data?.data?.personer?.length > 0) { + if (state.side > 0) { + setState({ + ...state, + personListe: [...state.personListe, ...response?.data?.data?.personer], + nesteSide: response?.data?.data?.nesteSide, + }) + } else { + setState({ + ...state, + personListe: response?.data?.data?.personer, + nesteSide: response?.data?.data?.nesteSide, + }) + } } }, [response]) From e68aa827dbc22aa53f5080ecbb0191571de6dd5a Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Thu, 4 Apr 2024 15:16:25 +0200 Subject: [PATCH 43/50] Fikset sonar-issues --- .../fagsystem/pdlf/form/partials/utils.tsx | 2 +- .../src/components/ui/soekForm/SoekForm.tsx | 4 --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 12 -------- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 2 -- .../FolkeregisteretVisning.tsx | 5 ++-- .../ImporterValgtePersoner.tsx | 2 +- .../resultatVisning/NavigerTilPerson.tsx | 2 +- .../tenorSoek/resultatVisning/TreffListe.tsx | 30 +++++++++---------- .../soekFormPartials/InntektAordningen.tsx | 4 +-- .../main/js/src/utils/hooks/useTenorSoek.tsx | 21 ------------- 10 files changed, 21 insertions(+), 63 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx index 684df06b92f..e5a10293f79 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/pdlf/form/partials/utils.tsx @@ -44,7 +44,7 @@ export const isEmpty = (attributt, excludeList = []) => { } return result } - // console.log('flattenData(): ', flattenData(attributt)) //TODO - SLETT MEG + return ( attributt?.empty || Object.values(flattenData(attributt)).every((x) => x === null || x === '' || x === false) diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx index ed38229dde3..557a044679b 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx @@ -91,7 +91,3 @@ export const requestIsEmpty = (updatedRequest) => { flatten(updatedRequest) return isEmpty } - -// export const objectIsEmpty = (obj) => { -// return Object.keys(obj).length === 0 -// } 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 9f062fac817..e3736904f6c 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 @@ -48,9 +48,6 @@ export const SoekForm = ({ setRequest, mutate }) => { } const handleChange = (value: any, path: string) => { - // if (watch(path) === value) { - // return - // } else { if (isDate(value)) { value = fixTimezone(value) } @@ -58,14 +55,6 @@ export const SoekForm = ({ setRequest, mutate }) => { const request = getUpdatedRequest(watch()) setRequest({ ...request }) mutate() - // } - } - - const handleChangeTextInput = (value: any, path: string) => { - setValue(path, value) - const request = getUpdatedRequest(watch()) - setRequest(request) - mutate() } const handleChangeList = (value: any, path: string) => { @@ -256,7 +245,6 @@ export const SoekForm = ({ setRequest, mutate }) => { </Form> {devEnabled && <DisplayFormState />} </> - {/*// TODO sett inn chips her?*/} </FormProvider> </Soekefelt> </SoekefeltWrapper> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index d2915b5f2a9..078fa32bbb0 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -1,5 +1,4 @@ import Title from '@/components/Title' -import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import { useTenorOversikt } from '@/utils/hooks/useTenorSoek' import { SoekForm } from '@/pages/tenorSoek/SoekForm' import { TreffListe } from '@/pages/tenorSoek/resultatVisning/TreffListe' @@ -76,7 +75,6 @@ export default () => { <div> <div className="flexbox--align-center--justify-start"> <Title title="Søk etter personer i Tenor" /> - {/*<Hjelpetekst placement={bottom}>Blablablah</Hjelpetekst>*/} </div> <SoekForm setRequest={setRequest} mutate={mutate} /> <TreffListe diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index 2b571afe222..7f38a2e3471 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -1,10 +1,9 @@ import { TitleValue } from '@/components/ui/titleValue/TitleValue' import React from 'react' -import { formatDate, showLabel } from '@/utils/DataFormatter' +import { formatDate, showLabel, arrayToString } from '@/utils/DataFormatter' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' import styled from 'styled-components' -import { arrayToString } from '@/utils/DataFormatter' const RelasjonerTittel = styled.h3` width: 100%; @@ -38,7 +37,7 @@ export const FolkeregisteretVisning = ({ data }) => { <> <RelasjonerTittel>Relasjoner</RelasjonerTittel> {relasjoner.map((relasjon, idx) => ( - <div className="title-value title-value_small" key={idx}> + <div className="title-value title-value_small" key={idx + relasjon.identifikator}> <h4>{relasjon.tenorRelasjonsnavn}</h4> <div>{`${arrayToString(relasjon.identifikator, ', ')} -`}</div> <div>{relasjon.visningnavn}</div> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index ccea79d467a..5d717a5d18c 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -27,7 +27,7 @@ const CheckboxWrapper = styled.div` export const ImporterValgtePersoner = ({ identer, isMultiple }) => { const navigate = useNavigate() - const { pdlPersoner, loading, error } = usePdlPersonbolk(identer) + const { pdlPersoner, loading } = usePdlPersonbolk(identer) const [modalIsOpen, openModal, closeModal] = useBoolean(false) const [valgtMal, setValgtMal] = useState(null) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx index ed4216d7547..566e63289fe 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -8,7 +8,7 @@ import { useEffect, useState } from 'react' export const NavigerTilPerson = ({ ident }) => { const navigate = useNavigate() const [navigateIdent, setNavigateIdent] = useState(null) - const { result, loading, mutate } = useNaviger(navigateIdent) + const { loading, mutate } = useNaviger(navigateIdent) useEffect(() => { mutate().then((result) => { diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index ce8b39be188..4ec6e918f21 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -16,8 +16,6 @@ const PersonNavn = styled.h3` const PersonIdent = styled.p` margin: 5px 0 0 0; - //margin: 5px 0 10px 0; - //margin-top: 5px; ` const TagsWrapper = styled.div` @@ -25,18 +23,6 @@ const TagsWrapper = styled.div` ` export const TreffListe = ({ response, personListe, loading, error }: any) => { - if ((!personListe || personListe?.length === 0) && loading) { - return <Loading label="Laster treff ..." /> - } - - if (error || response?.error) { - return ( - <Alert variant="error" size="small">{`Feil ved henting av personer: ${ - error || response?.error - }`}</Alert> - ) - } - const [valgtPerson, setValgtPerson] = useState(null) const { @@ -49,10 +35,22 @@ export const TreffListe = ({ response, personListe, loading, error }: any) => { setValgtPerson(personListe?.[0] || null) }, [personListe?.[0]]) - const antallTreff = response?.data?.treff - const [markertePersoner, setMarkertePersoner] = useState([]) + if ((!personListe || personListe?.length === 0) && loading) { + return <Loading label="Laster treff ..." /> + } + + if (error || response?.error) { + return ( + <Alert variant="error" size="small">{`Feil ved henting av personer: ${ + error || response?.error + }`}</Alert> + ) + } + + const antallTreff = response?.data?.treff + return ( <div className="flexbox--flex-wrap"> <div 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 6e83267c3ff..b34f4345fd3 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 @@ -18,7 +18,7 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: name="inntekt.periode.fraOgMed" label="Periode f.o.m. dato" handleDateChange={(val: Date) => { - handleChange(val ? val.toISOString().substr(0, 7) : '', 'inntekt.periode.fraOgMed') + handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.fraOgMed') }} date={getValue('inntekt.periode.fraOgMed')} /> @@ -26,7 +26,7 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: name="inntekt.periode.tilOgMed" label="Periode t.o.m. dato" handleDateChange={(val: Date) => { - handleChange(val ? val.toISOString().substr(0, 7) : '', 'inntekt.periode.tilOgMed') + handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.tilOgMed') }} date={getValue('inntekt.periode.tilOgMed')} /> diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx index 348b79f5deb..934a0f599be 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useTenorSoek.tsx @@ -3,26 +3,6 @@ import Request from '@/service/services/Request' const tenorSearchUrl = '/testnav-tenor-search-service/api/v1/tenor/testdata' -export const useTenorSoek = ( - type: string, - request: any, - kilde?: string, - fields?: string, - seed?: number, -) => { - const { data, isLoading, error, mutate } = useSWR( - request ? [`${tenorSearchUrl}?type=${type}`, request] : null, - ([url, headers]) => Request.post(url, headers), - ) - - return { - response: data, - loading: isLoading, - error: error, - mutate: mutate, - } -} - export const useTenorIdent = (ident: string) => { const { data, isLoading, error, mutate } = useSWR( ident @@ -68,7 +48,6 @@ export const useTenorDomain = (lookup: string) => { lookup ? `${tenorSearchUrl}/domain?lookup=${lookup}` : null, (url) => Request.get(url), ) - // console.log('data: ', data) //TODO - SLETT MEG return { domain: data, From 39acaa8a8d6856e8f8d37ccd99f1c2b6753f6610 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Fri, 5 Apr 2024 17:47:45 +0200 Subject: [PATCH 44/50] Opprydning #deploy-test-frontend --- .../visning/SkatteetatenVisning.tsx | 9 +- .../src/components/ui/soekForm/SoekForm.tsx | 11 +- .../PersonMiljoeinfo/PdlDataTyper.tsx | 8 + .../gruppe/PersonVisning/PersonVisning.tsx | 2 +- .../js/src/pages/tenorSoek/InitialValues.tsx | 144 ------------------ .../main/js/src/pages/tenorSoek/SoekForm.tsx | 9 +- .../js/src/pages/tenorSoek/TenorSoekPage.tsx | 4 +- ...etsregisteretForetaksregisteretVisning.tsx | 7 +- .../FolkeregisteretVisning.tsx | 4 +- .../ImporterValgtePersoner.tsx | 14 +- .../resultatVisning/InntektVisning.tsx | 7 +- .../tenorSoek/resultatVisning/ListeValg.tsx | 9 +- .../tenorSoek/resultatVisning/MalValg.tsx | 6 +- .../resultatVisning/NavigerTilPerson.tsx | 10 +- .../resultatVisning/PersonVisning.tsx | 11 +- .../tenorSoek/resultatVisning/TreffListe.tsx | 2 +- .../FolkeregisteretAdresse.tsx | 23 ++- .../FolkeregisteretHendelser.tsx | 8 +- .../FolkeregisteretIdentifikasjonStatus.tsx | 21 ++- .../soekFormPartials/FolkeregisteretNavn.tsx | 20 ++- .../FolkeregisteretRelasjoner.tsx | 30 ++-- .../FolkeregisteretStatsborgerskap.tsx | 4 +- .../soekFormPartials/InntektAordningen.tsx | 9 +- .../src/main/js/src/utils/hooks/useIdent.tsx | 1 + .../main/js/src/utils/hooks/usePdlPerson.tsx | 12 +- 25 files changed, 144 insertions(+), 241 deletions(-) delete mode 100644 apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx index d84e5f2a662..778b59e2200 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/skatteetaten/visning/SkatteetatenVisning.tsx @@ -3,8 +3,15 @@ import Loading from '@/components/ui/loading/Loading' import Icon from '@/components/ui/icon/Icon' import { TitleValue } from '@/components/ui/titleValue/TitleValue' +type SkatteetatenVisningProps = { + data: { + tenorRelasjoner: string[] + } + loading: boolean +} + // Midlertidig visning av daglig leder-rolle fra Tenor. Skrives om naar det er behov for aa vise flere Tenor-data. -export const SkatteetatenVisning = ({ data, loading }) => { +export const SkatteetatenVisning = ({ data, loading }: SkatteetatenVisningProps) => { if (loading) { return <Loading label="Laster Tenor-data ..." /> } diff --git a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx index 557a044679b..e4e26d1697b 100644 --- a/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/ui/soekForm/SoekForm.tsx @@ -1,6 +1,11 @@ import styled from 'styled-components' import React from 'react' +type HeaderProps = { + title: string + antall: number +} + export const SoekefeltWrapper = styled.div` display: flex; flex-direction: column; @@ -60,7 +65,7 @@ const KategoriCircle = styled.div` } ` -export const Header = ({ title, antall }) => ( +export const Header = ({ title, antall }: HeaderProps) => ( <KategoriHeader> <span>{title}</span> {antall > 0 && ( @@ -71,9 +76,9 @@ export const Header = ({ title, antall }) => ( </KategoriHeader> ) -export const requestIsEmpty = (updatedRequest) => { +export const requestIsEmpty = (updatedRequest: any) => { let isEmpty = true - const flatten = (obj) => { + const flatten = (obj: any) => { for (const i in obj) { if (typeof obj[i] === 'object' && !Array.isArray(obj[i])) { flatten(obj[i]) diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx index 11f47d257c0..1ee4089fe22 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper.tsx @@ -15,6 +15,14 @@ export type PdlDataWrapper = { } } +export type PdlDataBolk = { + errors: any + data: { + hentPersonBolk: Array<{ person: HentPerson; ident: string }> + hentIdenterBolk: Array<{ identer: Array<Ident>; ident: string }> + } +} + export type PdlData = { hentIdenter: { identer: [Ident] } hentPerson: HentPerson diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx index 3d4645e530b..be1e792ae3f 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/PersonVisning/PersonVisning.tsx @@ -516,7 +516,7 @@ export default ({ /> <HistarkVisning data={histarkData} loading={loadingHistarkData} /> <SkatteetatenVisning - data={tenorData?.data?.data?.personer?.find((person) => person?.id === ident.ident)} + data={tenorData?.data?.data?.personer?.find((person: any) => person?.id === ident.ident)} loading={loadingTenorData} /> <PersonMiljoeinfo diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx deleted file mode 100644 index ca6d433fc3f..00000000000 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/InitialValues.tsx +++ /dev/null @@ -1,144 +0,0 @@ -export const initialValues = { - // identifikator: null, - // identifikatorType: null, - // foedselsdato: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // doedsdato: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // kjoenn: null, - // personstatus: null, - // sivilstatus: null, - // utenlandskPersonIdentifikasjon: [null], - // identitetsgrunnlagStatus: null, - // adressebeskyttelse: null, - // harLegitimasjonsdokument: false, - // harFalskIdentitet: false, - // harNorskStatsborgerskap: false, - // harFlereStatsborgerskap: false, - // navn: { - // navnLengde: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // harFlereFornavn: false, - // harMellomnavn: false, - // harNavnSpesialtegn: false, - // }, - // adresser: { - // adresseGradering: null, - // kommunenummer: null, - // harBostedsadresse: false, - // harOppholdAnnetSted: false, - // harPostadresseNorge: false, - // harPostadresseUtland: false, - // harKontaktadresseDoedsbo: false, - // harAdresseSpesialtegn: false, - // }, - // relasjoner: { - // relasjon: null, - // antallBarn: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // harForeldreAnsvar: false, - // relasjonMedFoedselsaar: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // harDeltBosted: false, - // harVergemaalEllerFremtidsfullmakt: false, - // borMedMor: false, - // borMedFar: false, - // borMedMedmor: false, - // foreldreHarSammeAdresse: false, - // }, - // hendelser: { - // hendelse: null, - // sisteHendelse: null, - // }, - // roller: [null], - // tjenestepensjonsavtale: { - // pensjonsinnretningOrgnr: null, - // periode: null, - // }, - // skattemelding: { - // inntektsaar: null, - // skattemeldingstype: null, - // }, - inntektAordningen: { - // periode: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // opplysningspliktig: null, - // inntektstyper: [null], - beskrivelse: null, - // forskuddstrekk: [null], - // harHistorikk: false, - }, - // skatteplikt: { - // inntektsaar: null, - // skattepliktstyper: [null], - // saerskiltSkatteplikt: null, - // }, - // tilleggsskatt: { - // inntektsaar: null, - // tilleggsskattTyper: [null], - // }, - // arbeidsforhold: { - // startDatoPeriode: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // sluttDatoPeriode: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // harPermisjoner: false, - // harPermitteringer: false, - // harArbeidsgiver: false, - // harTimerMedTimeloenn: false, - // harUtenlandsopphold: false, - // harHistorikk: false, - // arbeidsforholdstype: null, - // }, - // beregnetSkatt: { - // inntektsaar: null, - // oppgjoerstype: null, - // pensjonsgivendeInntekt: false, - // }, - // opplysningerFraSkatteetatensInnsendingsmiljoe: { - // inntektsaar: null, - // harSkattemeldingUtkast: false, - // harSkattemeldingFastsatt: false, - // }, - // samletReskontroInnsyn: { - // harKrav: false, - // harInnbetaling: false, - // }, - // summertSkattegrunnlag: { - // inntektsaar: null, - // stadietype: null, - // oppgjoerstype: null, - // tekniskNavn: null, - // alminneligInntektFoerSaerfradragBeloep: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // }, - // spesisfisertSummertSkattegrunnlag: { - // inntektsaar: null, - // stadietype: null, - // oppgjoerstype: null, - // tekniskNavn: null, - // spesifiseringstype: null, - // alminneligInntektFoerSaerfradragBeloep: { - // fraOgMed: null, - // tilOgMed: null, - // }, - // }, -} 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 e3736904f6c..d8286ff592d 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 @@ -28,12 +28,12 @@ const Soekefelt = styled.div` padding: 20px 15px; ` -export const SoekForm = ({ setRequest, mutate }) => { +export const SoekForm = ({ setRequest, mutate }: any) => { const formMethods = useForm({ mode: 'onChange', defaultValues: {}, }) - const { getValues, control, setValue, watch } = formMethods + const { getValues, control, setValue, watch }: any = formMethods function getUpdatedRequest(request: any) { for (let key of Object.keys(request)) { @@ -146,10 +146,7 @@ export const SoekForm = ({ setRequest, mutate }) => { /> </Accordion.Header> <Accordion.Content style={{ paddingRight: '0' }}> - <FolkeregisteretNavn - handleChange={handleChange} - // handleChangeTextInput={handleChangeTextInput} - /> + <FolkeregisteretNavn handleChange={handleChange} /> </Accordion.Content> </Accordion.Item> <Accordion.Item> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx index 078fa32bbb0..b1078ffa61a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/TenorSoekPage.tsx @@ -13,7 +13,7 @@ const initialState = { export default () => { const [request, setRequest] = useState({}) - const [state, setState] = useState(initialState) + const [state, setState] = useState<any>(initialState) const { response, loading, error, mutate } = useTenorOversikt(request, 10, state.side, state.seed) useEffect(() => { @@ -63,7 +63,7 @@ export default () => { ) { return } - setState((state) => { + setState((state: any) => { if (state.side < 19 && state.nesteSide) { return { ...state, side: state.nesteSide } } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx index 5dc04ac832b..16ed66b70df 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx @@ -5,7 +5,7 @@ import { arrayToString } from '@/utils/DataFormatter' import React from 'react' import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' -export const EnhetsregisteretForetaksregisteretVisning = ({ data }) => { +export const EnhetsregisteretForetaksregisteretVisning = ({ data }: any) => { if (!data || data.length < 1) { return null } @@ -17,8 +17,8 @@ export const EnhetsregisteretForetaksregisteretVisning = ({ data }) => { iconKind="brreg" > <div> - <DollyFieldArray data={data} header="" nested> - {(organisasjon, idx: number) => { + <DollyFieldArray data={data} header={null} nested> + {(organisasjon: any) => { return ( <TabsVisning kildedata={organisasjon.tenorMetadata?.kildedata}> <TitleValue @@ -57,7 +57,6 @@ export const EnhetsregisteretForetaksregisteretVisning = ({ data }) => { title="Næringsbeskrivelse" value={arrayToString(organisasjon.naeringBeskrivelse)} /> - {/* Relasjoner:*/} </TabsVisning> ) }} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index 7f38a2e3471..b0731f54166 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -11,7 +11,7 @@ const RelasjonerTittel = styled.h3` margin-top: 5px; padding-top: 15px; ` -export const FolkeregisteretVisning = ({ data }) => { +export const FolkeregisteretVisning = ({ data }: any) => { if (!data) { return null } @@ -36,7 +36,7 @@ export const FolkeregisteretVisning = ({ data }) => { {relasjoner?.length > 0 && ( <> <RelasjonerTittel>Relasjoner</RelasjonerTittel> - {relasjoner.map((relasjon, idx) => ( + {relasjoner.map((relasjon: any, idx: number) => ( <div className="title-value title-value_small" key={idx + relasjon.identifikator}> <h4>{relasjon.tenorRelasjonsnavn}</h4> <div>{`${arrayToString(relasjon.identifikator, ', ')} -`}</div> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index 5d717a5d18c..466e182f0e8 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -11,6 +11,11 @@ import { Hjelpetekst } from '@/components/hjelpetekst/Hjelpetekst' import styled from 'styled-components' import { CypressSelector } from '../../../../cypress/mocks/Selectors' +type ImporterValgtePersonerProps = { + identer: Array<string> + isMultiple: boolean +} + const CheckboxWrapper = styled.div` display: flex; flex-wrap: wrap; @@ -25,7 +30,7 @@ const CheckboxWrapper = styled.div` } ` -export const ImporterValgtePersoner = ({ identer, isMultiple }) => { +export const ImporterValgtePersoner = ({ identer, isMultiple }: ImporterValgtePersonerProps) => { const navigate = useNavigate() const { pdlPersoner, loading } = usePdlPersonbolk(identer) const [modalIsOpen, openModal, closeModal] = useBoolean(false) @@ -37,7 +42,7 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { const partnerSivilstander = ['GIFT', 'REGISTRERT_PARTNER', 'SEPARERT', 'SEPARERT_PARTNER'] useEffect(() => { - const partnerListe = [] + const partnerListe: Array<any> = [] pdlPersoner?.hentPersonBolk?.map((ident) => { const partner = ident.person?.sivilstand?.filter( (sivilstand) => @@ -47,6 +52,7 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { partnerListe.push(partner) } }) + // @ts-ignore setPartnere(partnerListe) }, [pdlPersoner]) @@ -63,12 +69,11 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { } }), mal: valgtMal, - // gruppe: gruppe, }, }) } - const handleClickPartnere = (event) => { + const handleClickPartnere = (event: any) => { if (event.target.checked) { setValgtePartnere(partnere) } else { @@ -103,6 +108,7 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }) => { Importer person </Button> )} + {/*// @ts-ignore*/} <DollyModal isOpen={modalIsOpen} closeModal={closeModal} width="60%" overflow="auto"> <div> <h1>{identer?.length === 1 ? 'Importer person' : 'Importer personer'}</h1> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx index c42375ac53d..11769271eed 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx @@ -5,7 +5,7 @@ import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' -export const InntektVisning = ({ data }) => { +export const InntektVisning = ({ data }: any) => { if (!data || data.length < 1) { return null } @@ -17,8 +17,8 @@ export const InntektVisning = ({ data }) => { iconKind="inntektstub" > <div> - <DollyFieldArray data={data} header="" nested> - {(inntekt, idx: number) => { + <DollyFieldArray data={data} header={null} nested> + {(inntekt: any) => { return ( <TabsVisning kildedata={inntekt.tenorMetadata?.kildedata}> <TitleValue title="Periode" value={inntekt.periode} /> @@ -30,7 +30,6 @@ export const InntektVisning = ({ data }) => { value={arrayToString(inntekt.forskuddstrekk)} /> <TitleValue title="Har historikk" value={oversettBoolean(inntekt.harHistorikk)} /> - {/* Relasjoner:*/} </TabsVisning> ) }} diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx index f2c04419eca..593f23505f6 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ListeValg.tsx @@ -3,7 +3,14 @@ import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPe import { Checkbox } from '@navikt/ds-react' import Loading from '@/components/ui/loading/Loading' import React from 'react' -export const ListeValg = ({ ident, markertePersoner, setMarkertePersoner }) => { + +type ListeValgProps = { + ident: string + markertePersoner: Array<string> + setMarkertePersoner: Function +} + +export const ListeValg = ({ ident, markertePersoner, setMarkertePersoner }: ListeValgProps) => { const { finnesIDolly, loading: loadingFinnes } = useFinnesIDolly(ident) if (loadingFinnes) { diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx index 8277f9afb74..b783e47e505 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/MalValg.tsx @@ -6,6 +6,10 @@ import { Switch } from '@navikt/ds-react' import { useBoolean } from 'react-use' import styled from 'styled-components' +type MalValgProps = { + setValgtMal: Function +} + const MalValgWrapper = styled.div` margin-top: 20px; ` @@ -27,7 +31,7 @@ const getMalOptions = (malbestillinger: any, bruker: any) => { })) } -export const MalValg = ({ setValgtMal }) => { +export const MalValg = ({ setValgtMal }: MalValgProps) => { const [benyttMal, setBenyttMal] = useBoolean(false) const [malValue, setMalValue] = useState(null) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx index 566e63289fe..0cc16920931 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/NavigerTilPerson.tsx @@ -5,9 +5,13 @@ import { CypressSelector } from '../../../../cypress/mocks/Selectors' import { ArrowRightIcon } from '@navikt/aksel-icons' import { useEffect, useState } from 'react' -export const NavigerTilPerson = ({ ident }) => { +type NavigerTilPersonProps = { + ident: string +} + +export const NavigerTilPerson = ({ ident }: NavigerTilPersonProps) => { const navigate = useNavigate() - const [navigateIdent, setNavigateIdent] = useState(null) + const [navigateIdent, setNavigateIdent] = useState<string | null>(null) const { loading, mutate } = useNaviger(navigateIdent) useEffect(() => { @@ -25,7 +29,7 @@ export const NavigerTilPerson = ({ ident }) => { }) }, [navigateIdent]) - const handleClick = (event) => { + const handleClick = (event: any) => { event.stopPropagation() setNavigateIdent(ident) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 8e570dcd8f9..29fe7b2bc05 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -10,6 +10,13 @@ import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPe import { ImporterValgtePersoner } from '@/pages/tenorSoek/resultatVisning/ImporterValgtePersoner' import { useFinnesIDolly } from '@/utils/hooks/useIdent' +type PersonVisningProps = { + person: any + ident: string + loading: boolean + error: any +} + const PersonVisningWrapper = styled.div` position: sticky; top: 80px; @@ -23,7 +30,7 @@ const NavnHeader = styled.h2` word-break: break-word; hyphens: auto; ` -export const PersonVisning = ({ person, ident, loading, error }) => { +export const PersonVisning = ({ person, ident, loading, error }: PersonVisningProps) => { const { finnesIDolly, loading: loadingFinnes } = useFinnesIDolly(ident) if (loading) { @@ -38,7 +45,7 @@ export const PersonVisning = ({ person, ident, loading, error }) => { return null } - const personData = person.data?.dokumentListe?.find((dokument) => + const personData = person.data?.dokumentListe?.find((dokument: any) => dokument.identifikator?.includes(ident), ) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx index 4ec6e918f21..813510cdf94 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/TreffListe.tsx @@ -23,7 +23,7 @@ const TagsWrapper = styled.div` ` export const TreffListe = ({ response, personListe, loading, error }: any) => { - const [valgtPerson, setValgtPerson] = useState(null) + const [valgtPerson, setValgtPerson] = useState<any>(null) const { person: valgtPersonData, 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 5fbc63f33e3..105e712c98d 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 @@ -1,6 +1,6 @@ import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' -import React, { SyntheticEvent } from 'react' +import React from 'react' import { FormSelect } from '@/components/ui/form/inputs/select/Select' import { SelectOptionsManager as Options } from '@/service/SelectOptions' import { useTenorDomain } from '@/utils/hooks/useTenorSoek' @@ -16,58 +16,55 @@ export const FolkeregisteretAdresse = ({ handleChange }: any) => { name="adresser.adresseGradering" options={createOptions(adresseGraderingOptions?.data)} label="Adressegradering" - onChange={(val: SyntheticEvent) => - handleChange(val?.value || null, 'adresser.adresseGradering') - } + onChange={(val: any) => handleChange(val?.value || null, 'adresser.adresseGradering')} /> <FormTextInput name="adresser.kommunenummer" label="Kommunenummer" type="number" - onBlur={(val: SyntheticEvent) => - handleChange(val?.target?.value || null, 'adresser.kommunenummer') - } + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'adresser.kommunenummer')} visHvisAvhuket={false} /> <FormSelect name="adresser.harAdresseSpesialtegn" options={Options('boolean')} label="Har spesialtegn i adresse" - onChange={(val: boolean) => handleChange(val?.value, 'adresser.harAdresseSpesialtegn')} + onChange={(val: any) => handleChange(val?.value, 'adresser.harAdresseSpesialtegn')} /> <div className="flexbox--flex-wrap"> <FormCheckbox name="adresser.harBostedsadresse" label="Har bostedsadresse" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'adresser.harBostedsadresse') } /> <FormCheckbox name="adresser.harOppholdAnnetSted" label="Har opphold annet sted" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'adresser.harOppholdAnnetSted') } /> <FormCheckbox name="adresser.harPostadresseNorge" label="Har postadresse i Norge" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseNorge') } /> <FormCheckbox name="adresser.harPostadresseUtland" label="Har postadresse i utlandet" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'adresser.harPostadresseUtland') } /> <FormCheckbox name="adresser.harKontaktadresseDoedsbo" label="Har kontaktadresse for dødsbo" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'adresser.harKontaktadresseDoedsbo') } /> 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 7ce4f0318d1..cf6cecabcca 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 @@ -2,7 +2,7 @@ import { useTenorDomain } from '@/utils/hooks/useTenorSoek' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormSelect } from '@/components/ui/form/inputs/select/Select' import { createOptions } from '@/pages/tenorSoek/utils' -import React, { SyntheticEvent } from 'react' +import React from 'react' export const FolkeregisteretHendelser = ({ handleChange }: any) => { const { domain: hendelseOptions } = useTenorDomain('Hendelse') @@ -14,16 +14,14 @@ export const FolkeregisteretHendelser = ({ handleChange }: any) => { options={createOptions(hendelseOptions?.data)} size="xlarge" label="Har hatt hendelse" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'hendelser.hendelse')} + onChange={(val: any) => handleChange(val?.value || null, 'hendelser.hendelse')} /> <FormSelect name="hendelser.sisteHendelse" options={createOptions(hendelseOptions?.data)} size="xlarge" label="Siste hendelse" - onChange={(val: SyntheticEvent) => - handleChange(val?.value || null, 'hendelser.sisteHendelse') - } + onChange={(val: any) => handleChange(val?.value || null, 'hendelser.sisteHendelse')} /> </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 1e70bdcff81..9ed1f7cf007 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 @@ -26,14 +26,15 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange name="identifikator" data-cy={CypressSelector.INPUT_TENORSOEK_FNR} label="Fødselsnummer / D-nummer" - onBlur={(val: SyntheticEvent) => handleChange(val?.target?.value || null, 'identifikator')} + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'identifikator')} visHvisAvhuket={false} /> <FormSelect name="identifikatorType" options={createOptions(identifikatorTypeOptions?.data)} label="Identifikatortype" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'identifikatorType')} + onChange={(val: any) => handleChange(val?.value || null, 'identifikatorType')} /> <FormDatepicker name="foedselsdato.fraOgMed" @@ -63,39 +64,37 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange name="kjoenn" options={createOptions(kjoennOptions?.data)} label="Kjønn" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'kjoenn')} + onChange={(val: any) => handleChange(val?.value || null, 'kjoenn')} /> <FormSelect name="personstatus" options={createOptions(personstatusOptions?.data)} label="Personstatus" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'personstatus')} + onChange={(val: any) => handleChange(val?.value || null, 'personstatus')} /> <FormSelect name="sivilstand" options={createOptions(sivilstatusOptions?.data)} label="Sivilstand" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'sivilstand')} + onChange={(val: any) => handleChange(val?.value || null, 'sivilstand')} /> <FormSelect name="identitetsgrunnlagStatus" options={createOptions(identitetsgrunnlagStatusOptions?.data)} label="Identitetsgrunnlagsstatus" - onChange={(val: SyntheticEvent) => - handleChange(val?.value || null, 'identitetsgrunnlagStatus') - } + onChange={(val: any) => handleChange(val?.value || null, 'identitetsgrunnlagStatus')} /> <FormSelect name="adressebeskyttelse" options={createOptions(adressebeskyttelseOptions?.data)} label="Adressebeskyttelse" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'adressebeskyttelse')} + onChange={(val: any) => handleChange(val?.value || null, 'adressebeskyttelse')} /> <FormSelect name="harFalskIdentitet" options={Options('boolean')} label="Har falsk identitet" - onChange={(val: boolean) => handleChange(val?.value, 'harFalskIdentitet')} + onChange={(val: any) => handleChange(val?.value, 'harFalskIdentitet')} /> <div className="flexbox--full-width"> <FormSelect @@ -113,7 +112,7 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange name="harLegitimasjonsdokument" data-cy={CypressSelector.CHECKBOX_TENORSOEK} label="Har legitimasjonsdokument" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'harLegitimasjonsdokument') } /> 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 756be3d31d5..7e05d0a5002 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 @@ -1,47 +1,45 @@ import { SelectOptionsManager as Options } from '@/service/SelectOptions' import { FormSelect } from '@/components/ui/form/inputs/select/Select' -import React, { SyntheticEvent } from 'react' +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' -export const FolkeregisteretNavn = ({ handleChange, handleChangeTextInput }: any) => { +export const FolkeregisteretNavn = ({ handleChange }: any) => { return ( <SoekKategori> <FormTextInput name="navn.navnLengde.fraOgMed" label="Lengde på navn f.o.m." type="number" - onBlur={(val: SyntheticEvent) => - handleChange(val?.target?.value || null, 'navn.navnLengde.fraOgMed') - } + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'navn.navnLengde.fraOgMed')} visHvisAvhuket={false} /> <FormTextInput name="navn.navnLengde.tilOgMed" label="Lengde på navn t.o.m." type="number" - onBlur={(val: SyntheticEvent) => - handleChange(val?.target?.value || null, 'navn.navnLengde.tilOgMed') - } + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'navn.navnLengde.tilOgMed')} visHvisAvhuket={false} /> <FormSelect name="navn.harFlereFornavn" options={Options('boolean')} label="Har flere fornnavn" - onChange={(val: boolean) => handleChange(val?.value, 'navn.harFlereFornavn')} + onChange={(val: any) => handleChange(val?.value, 'navn.harFlereFornavn')} /> <FormSelect name="navn.harNavnSpesialtegn" options={Options('boolean')} label="Har spesialtegn i navn" - onChange={(val: boolean) => handleChange(val?.value, 'navn.harNavnSpesialtegn')} + onChange={(val: any) => handleChange(val?.value, 'navn.harNavnSpesialtegn')} /> <FormCheckbox name="navn.harMellomnavn" label="Har mellomnavn" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'navn.harMellomnavn') } /> 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 1b8477e9dac..a62a2efbadd 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 @@ -2,7 +2,7 @@ import { useTenorDomain } from '@/utils/hooks/useTenorSoek' import { SoekKategori } from '@/components/ui/soekForm/SoekForm' import { FormSelect } from '@/components/ui/form/inputs/select/Select' import { createOptions } from '@/pages/tenorSoek/utils' -import React, { SyntheticEvent } from 'react' +import React from 'react' import { FormTextInput } from '@/components/ui/form/inputs/textInput/TextInput' import { FormCheckbox } from '@/components/ui/form/inputs/checbox/Checkbox' @@ -15,14 +15,15 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { name="relasjoner.relasjon" options={createOptions(relasjonOptions?.data)} label="Relasjon" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'relasjoner.relasjon')} + onChange={(val: any) => handleChange(val?.value || null, 'relasjoner.relasjon')} /> <div className="flexbox--flex-wrap"> <FormTextInput name="relasjoner.antallBarn.fraOgMed" label="Antall barn f.o.m." type="number" - onBlur={(val: SyntheticEvent) => + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'relasjoner.antallBarn.fraOgMed') } visHvisAvhuket={false} @@ -31,7 +32,8 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { name="relasjoner.antallBarn.tilOgMed" label="Antall barn t.o.m." type="number" - onBlur={(val: SyntheticEvent) => + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'relasjoner.antallBarn.tilOgMed') } visHvisAvhuket={false} @@ -42,7 +44,8 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { name="relasjoner.relasjonMedFoedselsaar.fraOgMed" label="Relasjon med fødselsår f.o.m." type="number" - onBlur={(val: SyntheticEvent) => + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.fraOgMed') } visHvisAvhuket={false} @@ -51,7 +54,8 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { name="relasjoner.relasjonMedFoedselsaar.tilOgMed" label="Relasjon med fødselsår t.o.m." type="number" - onBlur={(val: SyntheticEvent) => + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'relasjoner.relasjonMedFoedselsaar.tilOgMed') } visHvisAvhuket={false} @@ -61,21 +65,21 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { <FormCheckbox name="relasjoner.harForeldreAnsvar" label="Har foreldreansvar" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'relasjoner.harForeldreAnsvar') } /> <FormCheckbox name="relasjoner.harDeltBosted" label="Har delt bosted" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'relasjoner.harDeltBosted') } /> <FormCheckbox name="relasjoner.harVergemaalEllerFremtidsfullmakt" label="Har vergemål eller fremtidsfullmakt" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange( val?.target?.checked || undefined, 'relasjoner.harVergemaalEllerFremtidsfullmakt', @@ -85,28 +89,28 @@ export const FolkeregisteretRelasjoner = ({ handleChange }: any) => { <FormCheckbox name="relasjoner.borMedMor" label="Bor med mor" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMor') } /> <FormCheckbox name="relasjoner.borMedFar" label="Bor med far" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'relasjoner.borMedFar') } /> <FormCheckbox name="relasjoner.borMedMedmor" label="Bor med medmor" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'relasjoner.borMedMedmor') } /> <FormCheckbox name="relasjoner.foreldreHarSammeAdresse" label="Foleldre har samme adresse" - onChange={(val: SyntheticEvent) => + onChange={(val: any) => handleChange(val?.target?.checked || undefined, 'relasjoner.foreldreHarSammeAdresse') } /> 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 b2eef1358eb..66e36739aa1 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 @@ -10,13 +10,13 @@ export const FolkeregisteretStatsborgerskap = ({ handleChange }: any) => { name="harNorskStatsborgerskap" options={Options('boolean')} label="Har norsk statsborgerskap" - onChange={(val: boolean) => handleChange(val?.value, 'harNorskStatsborgerskap')} + onChange={(val: any) => handleChange(val?.value, 'harNorskStatsborgerskap')} /> <FormSelect name="harFlereStatsborgerskap" options={Options('boolean')} label="Har flere statsborgerskap" - onChange={(val: boolean) => handleChange(val?.value, 'harFlereStatsborgerskap')} + onChange={(val: any) => handleChange(val?.value, 'harFlereStatsborgerskap')} /> </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 b34f4345fd3..de0c786da9c 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 @@ -17,6 +17,7 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: <Monthpicker name="inntekt.periode.fraOgMed" label="Periode f.o.m. dato" + // @ts-ignore handleDateChange={(val: Date) => { handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.fraOgMed') }} @@ -25,6 +26,7 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: <Monthpicker name="inntekt.periode.tilOgMed" label="Periode t.o.m. dato" + // @ts-ignore handleDateChange={(val: Date) => { handleChange(val ? val.toISOString().substring(0, 7) : '', 'inntekt.periode.tilOgMed') }} @@ -33,7 +35,8 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: <FormTextInput name="inntekt.opplysningspliktig" label="Opplysningspliktig org.nr." - onBlur={(val: SyntheticEvent) => + // @ts-ignore + onBlur={(val: any) => handleChange(val?.target?.value || null, 'inntekt.opplysningspliktig') } visHvisAvhuket={false} @@ -63,14 +66,14 @@ export const InntektAordningen = ({ handleChange, handleChangeList, getValue }: options={createOptions(beskrivelseOptions?.data)} size="xlarge" label="Beskrivelse" - onChange={(val: SyntheticEvent) => handleChange(val?.value || null, 'inntekt.beskrivelse')} + onChange={(val: any) => handleChange(val?.value || null, 'inntekt.beskrivelse')} /> <FormSelect name="inntekt.harHistorikk" options={Options('boolean')} size="small" label="Har historikk" - onChange={(val: boolean) => handleChange(val?.value, 'inntekt.harHistorikk')} + onChange={(val: any) => handleChange(val?.value, 'inntekt.harHistorikk')} /> </SoekKategori> ) diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx index 40230004a4f..7787a67fb43 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/useIdent.tsx @@ -4,6 +4,7 @@ import { fetcher } from '@/api' export const useFinnesIDolly = (ident: string) => { const { data, error, isLoading } = useSWR<boolean, Error>( `dolly-backend/api/v1/ident/finnes/${ident}`, + // @ts-ignore fetcher, ) diff --git a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx index c7fb411f77c..64637de2f9d 100644 --- a/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx +++ b/apps/dolly-frontend/src/main/js/src/utils/hooks/usePdlPerson.tsx @@ -1,11 +1,15 @@ import useSWR from 'swr' -import { PdlDataWrapper } from '@/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper' +import { + PdlDataBolk, + PdlDataWrapper, +} from '@/pages/gruppe/PersonVisning/PersonMiljoeinfo/PdlDataTyper' import { fetcher } from '@/api' const personServiceUrl = '/person-service/api/v2/personer/' const getPersonoppslagUrl = (ident: string, miljoe: string | null) => `${personServiceUrl}ident/${ident}${miljoe ? '?pdlMiljoe=' + miljoe : ''}` -const getPersonoppslagBolkUrl = (ident) => `${personServiceUrl}identer?identer=${ident}` +const getPersonoppslagBolkUrl = (identer: Array<string>) => + `${personServiceUrl}identer?identer=${identer}` export const usePdlMiljoeinfo = (ident: string, hentQ1 = false) => { const { data, error, isLoading } = useSWR<PdlDataWrapper, Error>( @@ -22,8 +26,8 @@ export const usePdlMiljoeinfo = (ident: string, hentQ1 = false) => { } } -export const usePdlPersonbolk = (identer: string) => { - const { data, error, isLoading } = useSWR<PdlDataWrapper, Error>( +export const usePdlPersonbolk = (identer: Array<string>) => { + const { data, error, isLoading } = useSWR<PdlDataBolk, Error>( getPersonoppslagBolkUrl(identer), fetcher, ) From d34bb8bb3377812c23fddecbffec012c3a33b3e8 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 8 Apr 2024 11:34:53 +0200 Subject: [PATCH 45/50] Route-fix --- .../dolly/web/provider/web/ForwardAndRedirectController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java index 24c04fe82a4..b82a5fef45f 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/provider/web/ForwardAndRedirectController.java @@ -29,6 +29,7 @@ public RouterFunction<ServerResponse> htmlRouter(@Value("classpath:/static/index .andRoute(RequestPredicates.GET("/login/**"), indexHandler) .andRoute(RequestPredicates.GET("/bruker/**"), indexHandler) .andRoute(RequestPredicates.GET("/team/**"), indexHandler) - .andRoute(RequestPredicates.GET("/dollysoek/**"), indexHandler); + .andRoute(RequestPredicates.GET("/dollysoek/**"), indexHandler) + .andRoute(RequestPredicates.GET("/tenor/**"), indexHandler); } } From 60159a60dd9a84f0e249b5e0e8a2d012b3cad273 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 8 Apr 2024 14:28:51 +0200 Subject: [PATCH 46/50] Skjul visning av inntekt --- .../main/js/src/pages/tenorSoek/SoekForm.tsx | 47 ++++++++++--------- .../resultatVisning/InntektVisning.tsx | 44 +++++++---------- .../resultatVisning/PersonVisning.tsx | 3 +- 3 files changed, 44 insertions(+), 50 deletions(-) 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 d8286ff592d..4e0bd4f91cf 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 @@ -204,29 +204,30 @@ export const SoekForm = ({ setRequest, mutate }: any) => { <FolkeregisteretHendelser handleChange={handleChange} /> </Accordion.Content> </Accordion.Item> - <Accordion.Item> - <Accordion.Header> - <Header - title="Inntekt A-ordningen" - antall={getAntallRequest([ - 'inntekt.periode.fraOgMed', - 'inntekt.periode.tilOgMed', - 'inntekt.opplysningspliktig', - 'inntekt.inntektstyper', - 'inntekt.forskuddstrekk', - 'inntekt.beskrivelse', - 'inntekt.harHistorikk', - ])} - /> - </Accordion.Header> - <Accordion.Content style={{ paddingRight: '0' }}> - <InntektAordningen - handleChange={handleChange} - handleChangeList={handleChangeList} - getValue={watch} - /> - </Accordion.Content> - </Accordion.Item> + {/*TODO: Vis denne naar det er mulig aa importere og vise inntekt i Dolly*/} + {/*<Accordion.Item>*/} + {/* <Accordion.Header>*/} + {/* <Header*/} + {/* title="Inntekt A-ordningen"*/} + {/* antall={getAntallRequest([*/} + {/* 'inntekt.periode.fraOgMed',*/} + {/* 'inntekt.periode.tilOgMed',*/} + {/* 'inntekt.opplysningspliktig',*/} + {/* 'inntekt.inntektstyper',*/} + {/* 'inntekt.forskuddstrekk',*/} + {/* 'inntekt.beskrivelse',*/} + {/* 'inntekt.harHistorikk',*/} + {/* ])}*/} + {/* />*/} + {/* </Accordion.Header>*/} + {/* <Accordion.Content style={{ paddingRight: '0' }}>*/} + {/* <InntektAordningen*/} + {/* handleChange={handleChange}*/} + {/* handleChangeList={handleChangeList}*/} + {/* getValue={watch}*/} + {/* />*/} + {/* </Accordion.Content>*/} + {/*</Accordion.Item>*/} <Accordion.Item> <Accordion.Header> <Header diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx index 11769271eed..b9c320c636c 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/InntektVisning.tsx @@ -11,31 +11,23 @@ export const InntektVisning = ({ data }: any) => { } return ( - <> - <SubOverskriftExpandable - label={`Inntekt A-ordningen (${data.length})`} - iconKind="inntektstub" - > - <div> - <DollyFieldArray data={data} header={null} nested> - {(inntekt: any) => { - return ( - <TabsVisning kildedata={inntekt.tenorMetadata?.kildedata}> - <TitleValue title="Periode" value={inntekt.periode} /> - <TitleValue title="Opplysningspliktig" value={inntekt.opplysningspliktig} /> - <TitleValue title="Inntektstype" value={arrayToString(inntekt.inntektstype)} /> - <TitleValue title="Beskrivelse" value={arrayToString(inntekt.beskrivelse)} /> - <TitleValue - title="Forskuddstrekk" - value={arrayToString(inntekt.forskuddstrekk)} - /> - <TitleValue title="Har historikk" value={oversettBoolean(inntekt.harHistorikk)} /> - </TabsVisning> - ) - }} - </DollyFieldArray> - </div> - </SubOverskriftExpandable> - </> + <SubOverskriftExpandable label={`Inntekt A-ordningen (${data.length})`} iconKind="inntektstub"> + <div> + <DollyFieldArray data={data} header={null} nested> + {(inntekt: any) => { + return ( + <TabsVisning kildedata={inntekt.tenorMetadata?.kildedata}> + <TitleValue title="Periode" value={inntekt.periode} /> + <TitleValue title="Opplysningspliktig" value={inntekt.opplysningspliktig} /> + <TitleValue title="Inntektstype" value={arrayToString(inntekt.inntektstype)} /> + <TitleValue title="Beskrivelse" value={arrayToString(inntekt.beskrivelse)} /> + <TitleValue title="Forskuddstrekk" value={arrayToString(inntekt.forskuddstrekk)} /> + <TitleValue title="Har historikk" value={oversettBoolean(inntekt.harHistorikk)} /> + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </SubOverskriftExpandable> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 29fe7b2bc05..00f4684ae51 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -66,7 +66,8 @@ export const PersonVisning = ({ person, ident, loading, error }: PersonVisningPr <EnhetsregisteretForetaksregisteretVisning data={_.get(personData, 'tenorRelasjoner.brreg-er-fr')} /> - <InntektVisning data={personData?.tenorRelasjoner?.inntekt} /> + {/*TODO: Vis denne naar det er mulig aa importere og vise inntekt i Dolly*/} + {/*<InntektVisning data={personData?.tenorRelasjoner?.inntekt} />*/} </Box> </PersonVisningWrapper> ) From fc57a83960e9e8decbe494536a522e8468f72884 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Mon, 8 Apr 2024 18:23:07 +0200 Subject: [PATCH 47/50] Mapping av stygge koder --- ...etsregisteretForetaksregisteretVisning.tsx | 101 +++++++++--------- .../FolkeregisteretVisning.tsx | 17 +-- .../resultatVisning/PersonVisning.tsx | 3 +- .../FolkeregisteretHendelser.tsx | 4 +- .../FolkeregisteretIdentifikasjonStatus.tsx | 2 +- .../src/main/js/src/pages/tenorSoek/utils.tsx | 21 +++- 6 files changed, 81 insertions(+), 67 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx index 16ed66b70df..fd7e42a2f7a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning.tsx @@ -11,58 +11,53 @@ export const EnhetsregisteretForetaksregisteretVisning = ({ data }: any) => { } return ( - <> - <SubOverskriftExpandable - label={`Enhetsregisteret og Foretaksregisteret (${data.length})`} - iconKind="brreg" - > - <div> - <DollyFieldArray data={data} header={null} nested> - {(organisasjon: any) => { - return ( - <TabsVisning kildedata={organisasjon.tenorMetadata?.kildedata}> - <TitleValue - title="Organisasjonsnummer" - value={organisasjon.organisasjonsnummer} - /> - <TitleValue - title="Organisasjonsform" - value={organisasjon.organisasjonsform?.kode} - /> - <TitleValue - title="Beskrivelse" - value={organisasjon.organisasjonsform?.beskrivelse} - /> - <TitleValue title="Navn" value={organisasjon.navn} /> - <TitleValue - title="Adresse" - value={arrayToString(organisasjon.forretningsadresse?.adresse)} - /> - <TitleValue - title="Postnummer" - value={organisasjon.forretningsadresse?.postnummer} - /> - <TitleValue title="Poststed" value={organisasjon.forretningsadresse?.poststed} /> - <TitleValue - title="Kommunenummer" - value={organisasjon.forretningsadresse?.kommunenummer} - /> - <TitleValue title="Kommune" value={organisasjon.forretningsadresse?.kommune} /> - <TitleValue - title="Reg. i Enhetsregisteret" - value={organisasjon.registreringsdatoEnhetsregisteret} - /> - <TitleValue title="Næringskode" value={arrayToString(organisasjon.naeringKode)} /> - <TitleValue - title="Næringsbeskrivelse" - value={arrayToString(organisasjon.naeringBeskrivelse)} - /> - </TabsVisning> - ) - }} - </DollyFieldArray> - </div> - </SubOverskriftExpandable> - </> + <SubOverskriftExpandable + label={`Enhetsregisteret og Foretaksregisteret (${data.length})`} + iconKind="brreg" + > + <div> + <DollyFieldArray data={data} header={null} nested> + {(organisasjon: any) => { + return ( + <TabsVisning kildedata={organisasjon.tenorMetadata?.kildedata}> + <TitleValue title="Organisasjonsnummer" value={organisasjon.organisasjonsnummer} /> + <TitleValue + title="Organisasjonsform" + value={organisasjon.organisasjonsform?.kode} + /> + <TitleValue + title="Beskrivelse" + value={organisasjon.organisasjonsform?.beskrivelse} + /> + <TitleValue title="Navn" value={organisasjon.navn} /> + <TitleValue + title="Adresse" + value={arrayToString(organisasjon.forretningsadresse?.adresse)} + /> + <TitleValue + title="Postnummer" + value={organisasjon.forretningsadresse?.postnummer} + /> + <TitleValue title="Poststed" value={organisasjon.forretningsadresse?.poststed} /> + <TitleValue + title="Kommunenummer" + value={organisasjon.forretningsadresse?.kommunenummer} + /> + <TitleValue title="Kommune" value={organisasjon.forretningsadresse?.kommune} /> + <TitleValue + title="Reg. i Enhetsregisteret" + value={organisasjon.registreringsdatoEnhetsregisteret} + /> + <TitleValue title="Næringskode" value={arrayToString(organisasjon.naeringKode)} /> + <TitleValue + title="Næringsbeskrivelse" + value={arrayToString(organisasjon.naeringBeskrivelse)} + /> + </TabsVisning> + ) + }} + </DollyFieldArray> + </div> + </SubOverskriftExpandable> ) } diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx index b0731f54166..bda387c6d6a 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/FolkeregisteretVisning.tsx @@ -1,9 +1,10 @@ import { TitleValue } from '@/components/ui/titleValue/TitleValue' import React from 'react' -import { formatDate, showLabel, arrayToString } from '@/utils/DataFormatter' +import { formatDate, arrayToString, codeToNorskLabel } from '@/utils/DataFormatter' import { TabsVisning } from '@/pages/tenorSoek/resultatVisning/TabsVisning' import SubOverskriftExpandable from '@/components/ui/subOverskrift/SubOverskriftExpandable' import styled from 'styled-components' +import { manualOptions } from '@/pages/tenorSoek/utils' const RelasjonerTittel = styled.h3` width: 100%; @@ -24,15 +25,15 @@ export const FolkeregisteretVisning = ({ data }: any) => { <TitleValue title="Identifikator" value={arrayToString(data.identifikator, ', ')} /> <TitleValue title="Navn" value={data.visningnavn} /> <TitleValue title="Fødselsdato" value={formatDate(data.foedselsdato)} /> - <TitleValue title="Kjønn" value={showLabel('kjoenn', data.kjoenn)} /> - <TitleValue title="Personstatus" value={showLabel('personstatus', data.personstatus)} /> - <TitleValue title="Sivilstand" value={showLabel('sivilstandType', data.sivilstand)} /> + <TitleValue title="Kjønn" value={codeToNorskLabel(data.kjoenn)} /> + <TitleValue title="Personstatus" value={codeToNorskLabel(data.personstatus)} /> + <TitleValue title="Sivilstand" value={codeToNorskLabel(data.sivilstand)} /> + <TitleValue title="Adressebeskyttelse" value={codeToNorskLabel(data.adresseBeskyttelse)} /> + <TitleValue title="Bostedsadresse" value={data.bostedsadresse} /> <TitleValue - title="Adressebeskyttelse" - value={showLabel('gradering', data.adresseBeskyttelse)} + title="Siste hendelse" + value={manualOptions[data.sisteHendelse] || codeToNorskLabel(data.sisteHendelse)} /> - <TitleValue title="Bostedsadresse" value={data.bostedsadresse} /> - <TitleValue title="Siste hendelse" value={data.sisteHendelse} /> {relasjoner?.length > 0 && ( <> <RelasjonerTittel>Relasjoner</RelasjonerTittel> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx index 00f4684ae51..366bc1b8446 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/PersonVisning.tsx @@ -3,7 +3,8 @@ import React from 'react' import _ from 'lodash' import { FolkeregisteretVisning } from '@/pages/tenorSoek/resultatVisning/FolkeregisteretVisning' import styled from 'styled-components' -import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning' +// TODO: Importer denne naar det er mulig aa importere og vise inntekt i Dolly +// import { InntektVisning } from '@/pages/tenorSoek/resultatVisning/InntektVisning' import Loading from '@/components/ui/loading/Loading' import { EnhetsregisteretForetaksregisteretVisning } from '@/pages/tenorSoek/resultatVisning/EnhetsregisteretForetaksregisteretVisning' import { NavigerTilPerson } from '@/pages/tenorSoek/resultatVisning/NavigerTilPerson' 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 cf6cecabcca..d0be257d0f2 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 @@ -11,14 +11,14 @@ export const FolkeregisteretHendelser = ({ handleChange }: any) => { <SoekKategori> <FormSelect name="hendelser.hendelse" - options={createOptions(hendelseOptions?.data)} + options={createOptions(hendelseOptions?.data, true)} size="xlarge" label="Har hatt hendelse" onChange={(val: any) => handleChange(val?.value || null, 'hendelser.hendelse')} /> <FormSelect name="hendelser.sisteHendelse" - options={createOptions(hendelseOptions?.data)} + options={createOptions(hendelseOptions?.data, true)} size="xlarge" label="Siste hendelse" onChange={(val: any) => handleChange(val?.value || null, 'hendelser.sisteHendelse')} 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 9ed1f7cf007..9a248c50ef7 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 @@ -32,7 +32,7 @@ export const FolkeregisteretIdentifikasjonStatus = ({ handleChange, handleChange /> <FormSelect name="identifikatorType" - options={createOptions(identifikatorTypeOptions?.data)} + options={createOptions(identifikatorTypeOptions?.data, true)} label="Identifikatortype" onChange={(val: any) => handleChange(val?.value || null, 'identifikatorType')} /> diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx index e1c0caa7448..2316db49eac 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/utils.tsx @@ -1,9 +1,26 @@ -export const createOptions = (optionsList: Array<string>) => { +import { codeToNorskLabel } from '@/utils/DataFormatter' + +export const manualOptions = { + DNummer: 'D-nummer', + DNummerOgFoedselsnr: 'D-nummer og fødselsnummer', + EndringIFoedselINorge: 'Endring i fødsel i Norge', + endringIFoedselINorge: 'Endring i fødsel i Norge', + EndringIOppholdPaaSvalbard: 'Endring i opphold på Svalbard', + endringIOppholdPaaSvalbard: 'Endring i opphold på Svalbard', +} + +export const createOptions = (optionsList: Array<string>, hasManualOptions = false) => { if (!optionsList || optionsList.length === 0) { return [] } + if (hasManualOptions) { + return optionsList.map((option) => ({ + value: option, + label: manualOptions[option] || codeToNorskLabel(option), + })) + } return optionsList.map((option) => ({ value: option, - label: option, + label: codeToNorskLabel(option), })) } From 4d652a270f018b24f9aee8edded6200ade0eb78c Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 9 Apr 2024 11:34:45 +0200 Subject: [PATCH 48/50] Import fra gruppe --- .../bestillingsveileder/BestillingsveilederHeader.tsx | 2 +- apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx | 2 +- .../tenorSoek/resultatVisning/ImporterValgtePersoner.tsx | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx index 9499f2f71b7..c0ef33d8aa8 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/BestillingsveilederHeader.tsx @@ -9,7 +9,7 @@ export const BestillingsveilederHeader = () => { const opts = useContext(BestillingsveilederContext) const ident = getLeggTilIdent(opts.personFoerLeggTil, opts.identMaster) const importFra = opts.is.leggTil && opts.identMaster === 'PDL' ? 'Test-Norge' : undefined - const { gruppe } = useGruppeById(opts?.gruppeId) + const { gruppe } = useGruppeById(opts?.gruppeId || opts?.gruppe?.id) if (opts.is.nyOrganisasjon || opts.is.nyStandardOrganisasjon || opts.is.nyOrganisasjonFraMal) { const titleValue = opts.is.nyStandardOrganisasjon ? 'Standard organisasjon' : 'Organisasjon' diff --git a/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx b/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx index 03fe2083614..6aee5502b19 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/gruppe/Gruppe.tsx @@ -135,7 +135,7 @@ export default ({ data-cy={CypressSelector.BUTTON_IMPORTER_PERSONER} variant={bankIdBruker ? 'primary' : 'secondary'} onClick={() => - navigate(`/testnorge`, { + navigate(`/tenor`, { state: { gruppe: gruppe, }, diff --git a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx index 466e182f0e8..db7d72a454f 100644 --- a/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx +++ b/apps/dolly-frontend/src/main/js/src/pages/tenorSoek/resultatVisning/ImporterValgtePersoner.tsx @@ -1,4 +1,4 @@ -import { useNavigate } from 'react-router-dom' +import { useLocation, useNavigate } from 'react-router-dom' import { usePdlPersonbolk } from '@/utils/hooks/usePdlPerson' import { Button, Checkbox } from '@navikt/ds-react' import React, { useEffect, useState } from 'react' @@ -32,6 +32,7 @@ const CheckboxWrapper = styled.div` export const ImporterValgtePersoner = ({ identer, isMultiple }: ImporterValgtePersonerProps) => { const navigate = useNavigate() + const location = useLocation() const { pdlPersoner, loading } = usePdlPersonbolk(identer) const [modalIsOpen, openModal, closeModal] = useBoolean(false) const [valgtMal, setValgtMal] = useState(null) @@ -69,6 +70,7 @@ export const ImporterValgtePersoner = ({ identer, isMultiple }: ImporterValgtePe } }), mal: valgtMal, + gruppe: location?.state?.gruppe, }, }) } From ef5c3252bf5e9ec80e117196a08cdb74c7436d1b Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 9 Apr 2024 17:01:08 +0200 Subject: [PATCH 49/50] Cypress-fix --- apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts | 4 ++++ .../dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts | 6 ------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts b/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts index 3408ff70854..f25a8cc059f 100644 --- a/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts +++ b/apps/dolly-frontend/src/main/js/cypress/e2e/TenorSoek.cy.ts @@ -50,5 +50,9 @@ describe('Tenor-søk testing', () => { cy.dollyGet(CypressSelector.BUTTON_VIS_I_GRUPPE).first().click() cy.wait(500) cy.get('h1').contains('Testytest').should('exist') + + // Gaa til soek fra gruppe + cy.dollyGet(CypressSelector.BUTTON_IMPORTER_PERSONER).click() + cy.get('h1').contains('Søk etter personer i Tenor').should('exist') }) }) diff --git a/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts b/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts index 3095b01ddeb..9ba32b566ec 100644 --- a/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts +++ b/apps/dolly-frontend/src/main/js/cypress/e2e/Test-Norge.cy.ts @@ -17,11 +17,5 @@ describe('Test-Norge søk testing', () => { cy.wait(200) cy.get('.skjemaelement__feilmelding').should('not.exist') - - cy.dollyGet(CypressSelector.BUTTON_HEADER_PERSONER).click() - cy.get('div').contains('Testytest').click() - cy.dollyGet(CypressSelector.BUTTON_IMPORTER_PERSONER).click() - - cy.dollyGet(CypressSelector.TITLE_TESTNORGE).should('exist') }) }) From 95bc9099b9c98412825b7d2d5b9b42353878ec41 Mon Sep 17 00:00:00 2001 From: Betsy Carina Traran <betsy.carina.traran@nav.no> Date: Tue, 9 Apr 2024 17:10:48 +0200 Subject: [PATCH 50/50] test #deploy-test-frontend --- apps/dolly-frontend/src/main/js/src/pages/tenorSoek/SoekForm.tsx | 1 + 1 file changed, 1 insertion(+) 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 4e0bd4f91cf..3b7e25e1b9c 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 @@ -33,6 +33,7 @@ export const SoekForm = ({ setRequest, mutate }: any) => { mode: 'onChange', defaultValues: {}, }) + const { getValues, control, setValue, watch }: any = formMethods function getUpdatedRequest(request: any) {