Skip to content

Commit

Permalink
Fikser språk i FormProgress (#1321)
Browse files Browse the repository at this point in the history
* Endrer 'Steg X av X', 'Vis alle steg' og 'Skjul alle steg' slik at de fungerer på NN og EN i tillegg til NB

* Legger til steg tittel tekster

* Flytter formProgressSteps ut av StegContext

* Legger til tittel til formProgressSteps

* Fikser visning av tittel

* Legger til tittelBlock og tittelFlettefeltVerider

* Bytter til bruk av useEffect for reaktiv og riktig oppdaterting av formProgressSteps

* Legger til console.log for testing

* Fjerner bruk av useEffect

* Bytter til bruk av barnForSteg istedenfor barnInkludertISøknaden ettersom barnForSteg og steg alltid er i sync mtp hvor mange barn som eksisterer

* Legger til tittel uten flettefelt for Om Barnet

* Flytter formProgressSteps ut i egen hook for bedre separasjon av kode

* Endrer navn på formProgressSteps til norsk: formProgressSteg

* Fikser API-navn for eoesForSoekerTittel

* Legger til tekst for eoesForBarnTittelUtenFlettefelt og fikser flettefelt

* Endrer individuelle teller variabler til å være del av ett enkelt objekt

* Bytter fra objekt til variabler for antallBarnTeller
  • Loading branch information
ole-kristian-rudjord authored Aug 9, 2024
1 parent 24dff4c commit ac47c6f
Show file tree
Hide file tree
Showing 16 changed files with 144 additions and 25 deletions.
27 changes: 22 additions & 5 deletions src/frontend/components/Felleskomponenter/Steg/Steg.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import useModal from '../SkjemaModal/useModal';
import ModellVersjonModal from './ModellVersjonModal';
import Navigeringspanel from './Navigeringspanel';
import { ScrollHandler } from './ScrollHandler';
import { useFormProgressSteg } from './useFormProgressSteg';

interface ISteg {
tittel: ReactNode;
Expand Down Expand Up @@ -87,7 +88,6 @@ const Steg: React.FC<ISteg> = ({ tittel, guide, skjema, gåVidereCallback, child
plainTekst,
} = useApp();
const {
formProgressSteps,
hentNesteSteg,
hentForrigeSteg,
hentNåværendeSteg,
Expand All @@ -99,6 +99,7 @@ const Steg: React.FC<ISteg> = ({ tittel, guide, skjema, gåVidereCallback, child
const nesteRoute = hentNesteSteg();
const forrigeRoute = hentForrigeSteg();
const nåværendeStegIndex = hentNåværendeStegIndex();
const formProgressSteg = useFormProgressSteg();

const nyesteNåværendeRoute: RouteEnum = hentNåværendeSteg().route;
useFørsteRender(() => logSidevisningBarnetrygd(nyesteNåværendeRoute, søknad.søknadstype));
Expand Down Expand Up @@ -158,12 +159,23 @@ const Steg: React.FC<ISteg> = ({ tittel, guide, skjema, gåVidereCallback, child
};

const håndterGåTilSteg = (stegIndex: number) => {
const steg = formProgressSteps[stegIndex];
const steg = formProgressSteg[stegIndex];
navigate(steg.path);
};

const { tilbakeKnapp } = tekster().FELLES.navigasjon;

const frittståendeOrdTekster = tekster().FELLES.frittståendeOrd;

const formProgressStegTekst =
plainTekst(frittståendeOrdTekster.steg) +
' ' +
hentNåværendeStegIndex() +
' ' +
plainTekst(frittståendeOrdTekster.av) +
' ' +
formProgressSteg.length;

return (
<>
<ScrollHandler />
Expand All @@ -186,17 +198,22 @@ const Steg: React.FC<ISteg> = ({ tittel, guide, skjema, gåVidereCallback, child
</Link>
</div>
<FormProgress
totalSteps={formProgressSteps.length}
translations={{
step: formProgressStegTekst,
showAllSteps: plainTekst(frittståendeOrdTekster.visAlleSteg),
hideAllSteps: plainTekst(frittståendeOrdTekster.skjulAlleSteg),
}}
totalSteps={formProgressSteg.length}
activeStep={hentNåværendeStegIndex()}
onStepChange={stegIndex => håndterGåTilSteg(stegIndex - 1)}
>
{formProgressSteps.map((value, index) => (
{formProgressSteg.map((value, index) => (
<FormProgress.Step
key={index}
completed={index + 1 < hentNåværendeStegIndex()}
interactive={index + 1 < hentNåværendeStegIndex()}
>
{value.label}
{value.tittel}
</FormProgress.Step>
))}
</FormProgress>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
import { useApp } from '../../../context/AppContext';
import { useSteg } from '../../../context/StegContext';
import { ISteg, RouteEnum } from '../../../typer/routes';
import { FlettefeltVerdier, LocaleRecordBlock } from '../../../typer/sanity/sanity';

interface IStegMedTittel extends ISteg {
tittel: string;
}

export const useFormProgressSteg = (): IStegMedTittel[] => {
const { tekster, plainTekst } = useApp();
const { steg, barnForSteg } = useSteg();

const {
FORSIDE,
OM_DEG,
DIN_LIVSSITUASJON,
VELG_BARN,
OM_BARNA,
OM_BARNET,
OPPSUMMERING,
DOKUMENTASJON,
EØS_FOR_BARN,
EØS_FOR_SØKER,
KVITTERING,
} = tekster();

let antallBarnTellerOmBarnet = 0;
let antallBarnTellerEøsForBarnet = 0;

return steg
.map(steg => {
let tittelBlock: LocaleRecordBlock;
let tittelFlettefeltVerider: FlettefeltVerdier | undefined = undefined;

switch (steg.route) {
case RouteEnum.Forside:
tittelBlock = FORSIDE.soeknadstittelBarnetrygd;
break;
case RouteEnum.OmDeg:
tittelBlock = OM_DEG.omDegTittel;
break;
case RouteEnum.DinLivssituasjon:
tittelBlock = DIN_LIVSSITUASJON.dinLivssituasjonTittel;
break;
case RouteEnum.VelgBarn:
tittelBlock = VELG_BARN.velgBarnTittel;
break;
case RouteEnum.OmBarna:
tittelBlock = OM_BARNA.omBarnaTittel;
break;
case RouteEnum.OmBarnet:
if (barnForSteg.length === 0) {
tittelBlock = OM_BARNET.omBarnetTittelUtenFlettefelt;
} else {
tittelBlock = OM_BARNET.omBarnetTittel;
tittelFlettefeltVerider = {
barnetsNavn: barnForSteg[antallBarnTellerOmBarnet].navn,
};
antallBarnTellerOmBarnet++;
}
break;
case RouteEnum.EøsForSøker:
tittelBlock = EØS_FOR_SØKER.eoesForSoekerTittel;
break;
case RouteEnum.EøsForBarn:
if (barnForSteg.length === 0) {
tittelBlock = EØS_FOR_BARN.eoesForBarnTittelUtenFlettefelt;
} else {
tittelBlock = EØS_FOR_BARN.eoesForBarnTittel;
tittelFlettefeltVerider = {
barnetsNavn: barnForSteg[antallBarnTellerEøsForBarnet].navn,
};
antallBarnTellerEøsForBarnet++;
}
break;
case RouteEnum.Oppsummering:
tittelBlock = OPPSUMMERING.oppsummeringTittel;
break;
case RouteEnum.Dokumentasjon:
tittelBlock = DOKUMENTASJON.dokumentasjonTittel;
break;
case RouteEnum.Kvittering:
tittelBlock = KVITTERING.kvitteringTittel;
break;
default:
// Alle routes i RouteEnum må gjennomgås i switch(), ellers feiler _exhaustiveCheck
const _exhaustiveCheck: never = steg.route;
return _exhaustiveCheck;
}

return {
...steg,
tittel: plainTekst(tittelBlock, tittelFlettefeltVerider),
};
})
.filter(steg => steg.route !== RouteEnum.Forside && steg.route !== RouteEnum.Kvittering);
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export interface IDinLivssituasjonTekstinnhold {
dinLivssituasjonTittel: LocaleRecordBlock;
dinLivssituasjonGuide: LocaleRecordBlock;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { BeskrivelseSanityApiNavn } from '../../../typer/dokumentasjon';
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export type IDokumentasjonTekstinnhold = {
dokumentasjonTittel: LocaleRecordBlock;
dokumentasjonGuide: LocaleRecordBlock;
} & {
[BeskrivelseSanityApiNavn.dokumentasjonPaaSeparasjonSkilsmisseEllerDoedsfall]: LocaleRecordBlock;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { LocaleRecordBlock } from '../../../../typer/sanity/sanity';

export interface IEøsForBarnTekstinnhold {
eoesForBarnTittel: LocaleRecordBlock;
eoesForBarnTittelUtenFlettefelt: LocaleRecordBlock;
eosForBarnGuide: LocaleRecordBlock;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { LocaleRecordBlock } from '../../../../typer/sanity/sanity';

export interface IEøsForSøkerTekstinnhold {
eoesForSoekerTittel: LocaleRecordBlock;
eosForSokerGuide: LocaleRecordBlock;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export type IKvitteringTekstinnhold = {
kvitteringTittel: LocaleRecordBlock;
};
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export interface IOmBarnaTekstinnhold {
omBarnaTittel: LocaleRecordBlock;
omBarnaGuide: LocaleRecordBlock;
}
2 changes: 2 additions & 0 deletions src/frontend/components/SøknadsSteg/OmBarnet/innholdTyper.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export interface IOmBarnetTekstinnhold {
omBarnetTittel: LocaleRecordBlock;
omBarnetTittelUtenFlettefelt: LocaleRecordBlock;
omBarnetGuide: LocaleRecordBlock;
}
1 change: 1 addition & 0 deletions src/frontend/components/SøknadsSteg/OmDeg/innholdTyper.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export interface IOmDegTekstinnhold {
omDegTittel: LocaleRecordBlock;
omDegGuide: LocaleRecordBlock;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export interface IOppsummeringTekstinnhold {
oppsummeringTittel: LocaleRecordBlock;
oppsummeringGuide: LocaleRecordBlock;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { LocaleRecordBlock } from '../../../typer/sanity/sanity';

export interface IVelgBarnTekstinnhold {
velgBarnTittel: LocaleRecordBlock;
velgBarnGuide: LocaleRecordBlock;
}
15 changes: 0 additions & 15 deletions src/frontend/context/Steg.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,21 +30,6 @@ describe('Steg', () => {
expect(result.current.steg.length).toEqual(9);
});

test(`formProgressSteps skal returnere en liste uten forside og kvittering`, () => {
spyOnUseApp({
barnInkludertISøknaden: [],
});
const wrapper = ({ children }) => (
<RoutesProvider>
<MemoryRouter initialEntries={['/om-barnet/barn/1']}>
<StegProvider>{children}</StegProvider>
</MemoryRouter>
</RoutesProvider>
);
const { result } = renderHook(() => useSteg(), { wrapper });
expect(result.current.formProgressSteps.length).toEqual(7);
});

test(`Kan hente neste steg fra forsiden`, () => {
spyOnUseApp({
barnInkludertISøknaden: [
Expand Down
6 changes: 1 addition & 5 deletions src/frontend/context/StegContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,6 @@ const [StegProvider, useSteg] = createUseContext(() => {
})
.flat();

const formProgressSteps: ISteg[] = steg.filter(
steg => steg.route !== RouteEnum.Forside && steg.route !== RouteEnum.Kvittering
);

const hentSteg = (pathname: string): ISteg => {
const index = steg.findIndex(steg => matchPath(steg.path, decodeURIComponent(pathname)));
return steg[index] ?? steg[0];
Expand Down Expand Up @@ -122,7 +118,7 @@ const [StegProvider, useSteg] = createUseContext(() => {

return {
steg,
formProgressSteps,
barnForSteg,
hentStegNummer,
hentStegObjektForBarn,
hentNesteSteg,
Expand Down
1 change: 1 addition & 0 deletions src/frontend/typer/sanity/sanity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export enum ESanitySteg {
EØS_FOR_BARN = 'EØS_FOR_BARN',
OPPSUMMERING = 'OPPSUMMERING',
DOKUMENTASJON = 'DOKUMENTASJON',
KVITTERING = 'KVITTERING',
FELLES = 'FELLES',
}

Expand Down
6 changes: 6 additions & 0 deletions src/frontend/typer/sanity/tekstInnhold.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { IDinLivssituasjonTekstinnhold } from '../../components/SøknadsSteg/Din
import { IDokumentasjonTekstinnhold } from '../../components/SøknadsSteg/Dokumentasjon/innholdTyper';
import { IEøsForBarnTekstinnhold } from '../../components/SøknadsSteg/EøsSteg/Barn/innholdTyper';
import { IEøsForSøkerTekstinnhold } from '../../components/SøknadsSteg/EøsSteg/Søker/innholdTyper';
import { IKvitteringTekstinnhold } from '../../components/SøknadsSteg/Kvittering/innholdTyper';
import { IOmBarnaTekstinnhold } from '../../components/SøknadsSteg/OmBarnaDine/innholdTyper';
import { IOmBarnetTekstinnhold } from '../../components/SøknadsSteg/OmBarnet/innholdTyper';
import { IOmDegTekstinnhold } from '../../components/SøknadsSteg/OmDeg/innholdTyper';
Expand Down Expand Up @@ -50,6 +51,7 @@ export interface ITekstinnhold {
[ESanitySteg.EØS_FOR_BARN]: IEøsForBarnTekstinnhold;
[ESanitySteg.OPPSUMMERING]: IOppsummeringTekstinnhold;
[ESanitySteg.DOKUMENTASJON]: IDokumentasjonTekstinnhold;
[ESanitySteg.KVITTERING]: IKvitteringTekstinnhold;
[ESanitySteg.FELLES]: IFellesTekstInnhold;
}

Expand All @@ -70,6 +72,10 @@ export interface IFrittståendeOrdTekstinnhold {
nei: LocaleRecordString;
barnetrygd: LocaleRecordString;
skjult: LocaleRecordString;
av: LocaleRecordString;
steg: LocaleRecordString;
visAlleSteg: LocaleRecordString;
skjulAlleSteg: LocaleRecordString;
}

export interface INavigasjonTekstinnhold {
Expand Down

0 comments on commit ac47c6f

Please sign in to comment.