From 45807fbf770cf6d3bce3a286b1f88dffa06295f5 Mon Sep 17 00:00:00 2001 From: "Anders.Vik.Lysne" Date: Fri, 27 Dec 2024 10:52:36 +0100 Subject: [PATCH 1/2] =?UTF-8?q?Legg=20til=20default-value=20handling=20p?= =?UTF-8?q?=C3=A5=20OrganisasjonerOgTilgangerProvider?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Pages/Banner.tsx | 6 +- .../Hovedside/BeOmTilgang/BeOmTilgang.tsx | 10 +-- src/Pages/Hovedside/InfoBokser.tsx | 4 +- src/Pages/Hovedside/SisteSaker.tsx | 4 +- src/Pages/OrganisasjonDetaljerProvider.tsx | 6 +- .../OrganisasjonerOgTilgangerProvider.tsx | 10 ++- src/Pages/Saksoversikt/FilterChips.tsx | 6 +- .../Saksoversikt/Saksfilter/Saksfilter.tsx | 65 +++++++++++-------- .../Virksomhetsmeny/Virksomhetsmeny.tsx | 6 +- src/Pages/Saksoversikt/Saksoversikt.tsx | 8 +-- src/Pages/Saksoversikt/useSaker.tsx | 4 +- src/tests/A11y.test.tsx | 4 +- 12 files changed, 75 insertions(+), 58 deletions(-) diff --git a/src/Pages/Banner.tsx b/src/Pages/Banner.tsx index 0d5e0d872..c40909216 100644 --- a/src/Pages/Banner.tsx +++ b/src/Pages/Banner.tsx @@ -1,8 +1,8 @@ -import React, { FunctionComponent, useContext, useEffect, useCallback } from 'react'; +import React, { FunctionComponent, useCallback, useContext, useEffect } from 'react'; import Bedriftsmeny from '@navikt/bedriftsmeny'; import '@navikt/bedriftsmeny/lib/bedriftsmeny.css'; import { OrganisasjonsDetaljerContext } from './OrganisasjonDetaljerProvider'; -import { OrganisasjonerOgTilgangerContext } from './OrganisasjonerOgTilgangerProvider'; +import { useOrganisasjonerOgTilgangerContext } from './OrganisasjonerOgTilgangerProvider'; import * as Record from '../utils/Record'; import { NotifikasjonWidget } from '@navikt/arbeidsgiver-notifikasjon-widget'; import { useSearchParams } from 'react-router-dom'; @@ -32,7 +32,7 @@ export const SaksoversiktBanner = () => ( ); export const BannerMedBedriftsmeny: FunctionComponent = ({ sidetittel }) => { - const { organisasjoner } = useContext(OrganisasjonerOgTilgangerContext); + const { organisasjoner } = useOrganisasjonerOgTilgangerContext(); const { endreOrganisasjon, valgtOrganisasjon } = useContext(OrganisasjonsDetaljerContext); const [params, setParams] = useSearchParams(); diff --git a/src/Pages/Hovedside/BeOmTilgang/BeOmTilgang.tsx b/src/Pages/Hovedside/BeOmTilgang/BeOmTilgang.tsx index f61105d94..f30c4b108 100644 --- a/src/Pages/Hovedside/BeOmTilgang/BeOmTilgang.tsx +++ b/src/Pages/Hovedside/BeOmTilgang/BeOmTilgang.tsx @@ -1,16 +1,12 @@ import React, { FC, FunctionComponent, MouseEventHandler, useContext } from 'react'; import { Ekspanderbartpanel } from '../../../GeneriskeElementer/Ekspanderbartpanel'; import { - OrganisasjonerOgTilgangerContext, OrganisasjonInfo, + useOrganisasjonerOgTilgangerContext, } from '../../OrganisasjonerOgTilgangerProvider'; import { OrganisasjonsDetaljerContext } from '../../OrganisasjonDetaljerProvider'; import Organisasjonsbeskrivelse from './Organisasjonsbeskrivelse'; -import { - AltinntilgangAlleredeSøkt, - BeOmTilgangBoks, - BeOmSyfotilgang, -} from './TjenesteInfo'; +import { AltinntilgangAlleredeSøkt, BeOmSyfotilgang, BeOmTilgangBoks } from './TjenesteInfo'; import './BeOmTilgang.css'; import { altinntjeneste, AltinntjenesteId } from '../../../altinn/tjenester'; import { opprettAltinnTilgangssøknad } from '../../../altinn/tilganger'; @@ -78,7 +74,7 @@ const opprettSøknad = ( const BeOmTilgang: FunctionComponent = () => { const { valgtOrganisasjon } = useContext(OrganisasjonsDetaljerContext); - const { altinnTilgangssøknad } = useContext(OrganisasjonerOgTilgangerContext); + const { altinnTilgangssøknad } = useOrganisasjonerOgTilgangerContext(); const tjenesteinfoBokser: JSX.Element[] = []; if (valgtOrganisasjon === undefined) { diff --git a/src/Pages/Hovedside/InfoBokser.tsx b/src/Pages/Hovedside/InfoBokser.tsx index b8d1a78e8..dd9304983 100644 --- a/src/Pages/Hovedside/InfoBokser.tsx +++ b/src/Pages/Hovedside/InfoBokser.tsx @@ -1,7 +1,7 @@ import React, { FC, useContext, useEffect } from 'react'; import * as Record from '../../utils/Record'; import './InfoBokser.css'; -import { OrganisasjonerOgTilgangerContext } from '../OrganisasjonerOgTilgangerProvider'; +import { useOrganisasjonerOgTilgangerContext } from '../OrganisasjonerOgTilgangerProvider'; import { gittMiljo } from '../../utils/environment'; import { shouldDisplay } from '../../GeneriskeElementer/DisplayBetween'; import { OrganisasjonsDetaljerContext } from '../OrganisasjonDetaljerProvider'; @@ -34,7 +34,7 @@ const infobokser: Array = [ visFra: new Date('2023-11-13T10:00:00+02:00'), visTil: new Date('2023-11-15T08:00:00+01:00'), Component: () => { - const { organisasjoner } = useContext(OrganisasjonerOgTilgangerContext); + const { organisasjoner } = useOrganisasjonerOgTilgangerContext(); const harSyfotilgangPåTvers = Record.values(organisasjoner).some( (org) => org.syfotilgang ); diff --git a/src/Pages/Hovedside/SisteSaker.tsx b/src/Pages/Hovedside/SisteSaker.tsx index d755739c7..abda8dbe7 100644 --- a/src/Pages/Hovedside/SisteSaker.tsx +++ b/src/Pages/Hovedside/SisteSaker.tsx @@ -7,7 +7,7 @@ import amplitude from '../../utils/amplitude'; import { Heading, Tag } from '@navikt/ds-react'; import { useSessionStateForside } from '../Saksoversikt/useOversiktSessionStorage'; import { SakSortering } from '../../api/graphql-types'; -import { OrganisasjonerOgTilgangerContext } from '../OrganisasjonerOgTilgangerProvider'; +import { useOrganisasjonerOgTilgangerContext } from '../OrganisasjonerOgTilgangerProvider'; import { Set } from 'immutable'; import { InternalLenkepanelMedLogging } from '../../GeneriskeElementer/LenkepanelMedLogging'; @@ -36,7 +36,7 @@ const SisteSaker = () => { const { valgtOrganisasjon, antallSakerForAlleBedrifter } = useContext( OrganisasjonsDetaljerContext ); - const { organisasjoner } = useContext(OrganisasjonerOgTilgangerContext); + const { organisasjoner } = useOrganisasjonerOgTilgangerContext(); const location = useLocation(); const { loading, data } = useSaker(0, { diff --git a/src/Pages/OrganisasjonDetaljerProvider.tsx b/src/Pages/OrganisasjonDetaljerProvider.tsx index 4e13c42ff..d8a509218 100644 --- a/src/Pages/OrganisasjonDetaljerProvider.tsx +++ b/src/Pages/OrganisasjonDetaljerProvider.tsx @@ -1,7 +1,7 @@ -import React, { FunctionComponent, useContext, useEffect, useState } from 'react'; +import React, { FunctionComponent, useEffect, useState } from 'react'; import { - OrganisasjonerOgTilgangerContext, OrganisasjonInfo, + useOrganisasjonerOgTilgangerContext, } from './OrganisasjonerOgTilgangerProvider'; import { useLoggBedriftValgtOgTilganger } from '../utils/funksjonerForAmplitudeLogging'; import { Organisasjon } from '../altinn/organisasjon'; @@ -22,7 +22,7 @@ export type Context = { export const OrganisasjonsDetaljerContext = React.createContext({} as Context); export const OrganisasjonsDetaljerProvider: FunctionComponent = ({ children }: Props) => { - const { organisasjoner } = useContext(OrganisasjonerOgTilgangerContext); + const { organisasjoner } = useOrganisasjonerOgTilgangerContext(); const [valgtOrganisasjon, setValgtOrganisasjon] = useState( organisasjoner[sessionStorage.getItem('bedrift') ?? ''] ); diff --git a/src/Pages/OrganisasjonerOgTilgangerProvider.tsx b/src/Pages/OrganisasjonerOgTilgangerProvider.tsx index a9259733d..61aabcb27 100644 --- a/src/Pages/OrganisasjonerOgTilgangerProvider.tsx +++ b/src/Pages/OrganisasjonerOgTilgangerProvider.tsx @@ -46,7 +46,15 @@ export type Context = { childrenMap: Map>; }; -export const OrganisasjonerOgTilgangerContext = React.createContext({} as Context); +const OrganisasjonerOgTilgangerContext = React.createContext(undefined); + +export const useOrganisasjonerOgTilgangerContext = () => { + const organisasjonerOgTilgangerContext = useContext(OrganisasjonerOgTilgangerContext); + if (organisasjonerOgTilgangerContext === undefined) { + throw new Error('OrganisasjonerOgTilgangerContext må brukes inne i en OrganisasjonerOgTilgangerProvider'); + } + return organisasjonerOgTilgangerContext; +} const useBeregnAltinnTilgangssøknad = (): | Record> diff --git a/src/Pages/Saksoversikt/FilterChips.tsx b/src/Pages/Saksoversikt/FilterChips.tsx index 12ffa273c..a3c86a938 100644 --- a/src/Pages/Saksoversikt/FilterChips.tsx +++ b/src/Pages/Saksoversikt/FilterChips.tsx @@ -7,7 +7,9 @@ import { amplitudeChipClick } from './Saksoversikt'; import { Organisasjon } from '../../altinn/organisasjon'; import { count } from '../../utils/util'; import { Filter, State } from './useOversiktStateTransitions'; -import { OrganisasjonerOgTilgangerContext } from '../OrganisasjonerOgTilgangerProvider'; +import { + useOrganisasjonerOgTilgangerContext, +} from '../OrganisasjonerOgTilgangerProvider'; import { Collapse, Expand } from '@navikt/ds-icons'; export type FilterChipsProps = { @@ -16,7 +18,7 @@ export type FilterChipsProps = { }; export const FilterChips = ({ state, byttFilter }: FilterChipsProps) => { - const { organisasjonstre, childrenMap } = useContext(OrganisasjonerOgTilgangerContext); + const { organisasjonstre, childrenMap } = useOrganisasjonerOgTilgangerContext(); const onTømAlleFilter = () => { byttFilter({ diff --git a/src/Pages/Saksoversikt/Saksfilter/Saksfilter.tsx b/src/Pages/Saksoversikt/Saksfilter/Saksfilter.tsx index 8a5767bd8..c0bcf7b51 100644 --- a/src/Pages/Saksoversikt/Saksfilter/Saksfilter.tsx +++ b/src/Pages/Saksoversikt/Saksfilter/Saksfilter.tsx @@ -1,4 +1,4 @@ -import React, { FC, useContext, useEffect, useRef, useState } from 'react'; +import React, { FC, useEffect, useRef, useState } from 'react'; import './Saksfilter.css'; import { Virksomhetsmeny } from './Virksomhetsmeny/Virksomhetsmeny'; import { Søkeboks } from './Søkeboks'; @@ -6,10 +6,15 @@ import { Filter } from '../useOversiktStateTransitions'; import { Ekspanderbartpanel } from '../../../GeneriskeElementer/Ekspanderbartpanel'; import { BodyShort, Checkbox, CheckboxGroup, Heading, Label } from '@navikt/ds-react'; import { Filter as FilterIkon } from '@navikt/ds-icons'; -import { OppgaveTilstand, OppgaveTilstandInfo, Sakstype, SakstypeOverordnet } from '../../../api/graphql-types'; +import { + OppgaveTilstand, + OppgaveTilstandInfo, + Sakstype, + SakstypeOverordnet, +} from '../../../api/graphql-types'; import { capitalize, sorted, splittListe } from '../../../utils/util'; import { Set } from 'immutable'; -import { OrganisasjonerOgTilgangerContext } from '../../OrganisasjonerOgTilgangerProvider'; +import { useOrganisasjonerOgTilgangerContext } from '../../OrganisasjonerOgTilgangerProvider'; import amplitude from '../../../utils/amplitude'; import { LenkeMedLogging } from '../../../GeneriskeElementer/LenkeMedLogging'; import { opprettInntektsmeldingURL } from '../../../lenker'; @@ -82,10 +87,12 @@ function sakstyperMedAntall( ?.antall ?? 0, })); - const [sakstyperMedInntektsmeldingSykepenger, sakstyperUtenInntektsmeldingSykepenger] = splittListe( - sakstyperForFilter, - (filter) => filter.navn === 'Inntektsmelding' || filter.navn === 'Inntektsmelding sykepenger' - ); + const [sakstyperMedInntektsmeldingSykepenger, sakstyperUtenInntektsmeldingSykepenger] = + splittListe( + sakstyperForFilter, + (filter) => + filter.navn === 'Inntektsmelding' || filter.navn === 'Inntektsmelding sykepenger' + ); const antallInntektsmeldingSykepenger = sakstyperForFilter .filter(({ navn }) => navn === 'Inntektsmelding' || navn === 'Inntektsmelding sykepenger') @@ -120,7 +127,6 @@ const InntektsmeldingGruppe = ( navn.includes('Inntektsmelding') ); - if (inntektsmeldingAlleValgtAvBruker) { valgteInntektsmeldingtyper = ['Inntektsmelding_gruppe']; } else if (andreInntektsmeldingerValgt) { @@ -214,7 +220,7 @@ export const Saksfilter = ({ alleSakstyper, }: SaksfilterProps) => { const [width, setWidth] = useState(window.innerWidth); - const { organisasjonstre } = useContext(OrganisasjonerOgTilgangerContext); + const { organisasjonstre } = useOrganisasjonerOgTilgangerContext(); useEffect(() => { const setSize = () => setWidth(window.innerWidth); @@ -231,7 +237,10 @@ export const Saksfilter = ({ const sakstyperForFilter = sakstyperMedAntall(alleSakstyper, sakstypeinfo); - const [inntektsmeldingSakstyper, sakstyperUtenInntektsmelding] = splittListe(sakstyperForFilter, (filter) => filter.navn.includes('Inntektsmelding')); + const [inntektsmeldingSakstyper, sakstyperUtenInntektsmelding] = splittListe( + sakstyperForFilter, + (filter) => filter.navn.includes('Inntektsmelding') + ); const sakstyper = [ ...sakstyperUtenInntektsmelding, @@ -316,7 +325,7 @@ export const Saksfilter = ({ }; const OpprettInntektsmelding = () => { - const { organisasjoner } = useContext(OrganisasjonerOgTilgangerContext); + const { organisasjoner } = useOrganisasjonerOgTilgangerContext(); const tilgangInntektsmelding = Object.values(organisasjoner).some( (org) => org.altinntilgang?.inntektsmelding === true ); @@ -333,23 +342,25 @@ const OpprettInntektsmelding = () => { }, []); if (tilgangInntektsmelding) { - return
-
+