From 3696b9f34fb1a70d056d4a5f4681d819e861e62a Mon Sep 17 00:00:00 2001 From: "Thomas H. Wiberg" Date: Fri, 30 Aug 2024 12:12:32 +0200 Subject: [PATCH] Update dev next1 from master (#6525) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Dev-next1 branch deployment til k9-next.dev.intern.nav.no (#6340) * nais deploy konfigurasjon for dev-next1 oppretta. name, ingress og replicas konfigurasjon for nais dev deploy trekt ut i separate filer. dev.yaml inneheld samme konfigurasjonsverdier som før var hardkoda i dev-fss-k9saksbehandling.yml, for normal utrulling til Q dev-next1.yaml inneheld konfigurasjonsverdier for utrulling til ny dev-next1 instans. * Build and deploy dev-next1 workflow oppretta. Denne vil ved push til dev-next1 branch bygge og rulle ut instans av k9-sak-web til k9.dev-next1.intern.navn.no, slik at meir eksperimentelle ting kan testast der før det går til master. * Fiks ingress url til gyldig verdi. * Bumper ft-pakke (#6346) * Fjerner gammal proxy referanse til diagnosekoder service. (#6351) Ikkje i bruk lenger. * Aktiverer det nye meldingspanelet i testmiljø. (#6336) * Fiks maks lengde på brevtekst. (#6354) Hadde brukt makslengde verdi frå FritekstbrevinnholdDto server har, men maks lengde er faktisk ulik alt etter om malen som er valgt er av type som større fritekst og tittel, eller berre fritekst. Endre til å bruke BestillBrevDto makslengde når mal ikkje støtter tittel,og FritekstbrevinnholdDto sin makslengde når mal støtter tittel. Endre også slik at fritekst prop ikkje blir satt (sendt til server) når det er brev med tittel og tekst, sidan den då vil kunne bli for lang. * Sjekker om exception er definert før bruk (#6355) * Bump @navikt/k9-sak-typescript-client (#6359) Bumps [@navikt/k9-sak-typescript-client](https://github.com/navikt/k9-sak) from 1.0.20240620093339 to 1.0.20240708134619. - [Commits](https://github.com/navikt/k9-sak/commits) --- updated-dependencies: - dependency-name: "@navikt/k9-sak-typescript-client" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump the patch group across 1 directory with 6 updates (#6350) Bumps the patch group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@playwright/test](https://github.com/microsoft/playwright) | `1.45.0` | `1.45.1` | | [postcss](https://github.com/postcss/postcss) | `8.4.38` | `8.4.39` | | [typescript](https://github.com/Microsoft/TypeScript) | `5.5.2` | `5.5.3` | | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `5.3.2` | `5.3.3` | | [@editorjs/header](https://github.com/editor-js/header) | `2.8.1` | `2.8.5` | | [@editorjs/paragraph](https://github.com/editor-js/paragraph) | `2.11.5` | `2.11.6` | Updates `@playwright/test` from 1.45.0 to 1.45.1 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.1) Updates `postcss` from 8.4.38 to 8.4.39 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.38...8.4.39) Updates `typescript` from 5.5.2 to 5.5.3 - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.2...v5.5.3) Updates `vite` from 5.3.2 to 5.3.3 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.3.3/packages/vite) Updates `@editorjs/header` from 2.8.1 to 2.8.5 - [Commits](https://github.com/editor-js/header/commits) Updates `@editorjs/paragraph` from 2.11.5 to 2.11.6 - [Commits](https://github.com/editor-js/paragraph/commits) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch - dependency-name: postcss dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch - dependency-name: "@editorjs/header" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: "@editorjs/paragraph" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jostein Stuhaug <135307852+josstn@users.noreply.github.com> * Advarsel om søker ikke er sammen med barnet i sykdomssteget. (#6360) * Setter bakgrunnsfarge for varsel i MedisinskVilkår. * Updated readme (#6367) * Oppdatert README.md Fjerna utdaterte ting, la inn litt ny nyttig info. * Oppdatert README.md Litt forbedring av teksten. * Oppdatert README.md Litt info om bygg og deploy av prosjektet. * Tsff 657 cleaning a bit (#6358) * Rydding i packages/form. Ingen funksjonell endring. - Fjern unødvendig prop-types dependency - Endre gjenverande jsx til tsx * Rydding i packages/prop-types. Ingen funksjonell endring. Fjern ubruk behandlingIListePropType.jsx * Rydding i packages/prop-types. Ingen funksjonell endring. Fjern ubrukt arbeidsforholdPropType.jsx og uttaksresultatPropType.jsx * Rydding i packages/prop-types. Ingen funksjonell endring. Fjern ubrukt beregningresultatMedUttaksplanPropType.jsx og fagsakPropType.jsx * Rydding i packages/prop-types. Ingen funksjonell endring. Fjern ubrukt navAnsattPropType.jsx, personopplysningPropType.jsx og rettighetPropType.jsx * Rydding i packages/prop-types. Ingen funksjonell endring. Fjern ubrukt stonadskontoPropType.jsx. * 10 dager ttl på dev-next1 branch deployment. (#6376) * 10 dager ttl på dev-next1 branch deployment. Sidan dev-next1 branch deployment kanskje ikkje blir brukt heile tida legger eg til "time to live" på ti dager på app spec. Det vil seie at app blir sletta etter 10 dager viss det ikkje har skjedd nokon ny bygg og deploy av dev-next1 branch på den tida. Så slepper vi å bruke ressurser på å ha den køyrande ubrukt. * Info om ttl på dev-next1 lagt til i README.md * bugfix inngang til saker fra salesforce * fikse story * Justert mellomrom i FormkravKlageForm.jsx skjema. (#6386) * Tsff 641/storbritannia skal ikke vises som eos land (#6389) * Storbritannia er ikke et EØS-land. Fikser visning av årsak for Sveits * Storbritannia er ikke et EØS-land. Fikser visning av årsak for Sveits * Lint fiks. * tester for utenlandsopphold-visning * kosovo fix --------- Co-authored-by: Jostein Stuhaug * Fiks v2/backend/README.md (#6391) Slik at den stemmer betre. * Aktiver nytt meldingspanel i prod. (#6396) Og dev. * Github pipeline workflow uten issue for deployment. (#6404) * Github pipeline workflow uten issue for deployment. Erstatter bruken av issue med kommentering for å styre utrulling av endringer med å køyre utrulling til Q direkte i workflow, og bruke environment klausul med godkjenning ved utrulling til prod. Legger og inn tagging av prodsatte commits, samme tag som docker image som blir rulla ut har. Legger og inn ein latest_prod tag som alltid peikar på den commit som sist vart rulla ut til prod. Med dette får vi og printa ut url for å enkelt sjå kva endringer som vil bli rulla ut, eller har blitt rulla ut på ei gitt workflow køyring. * Marker utrulling til dev med environment og. Slik at det kjem fram i deployments oversikt på repoet. * Oppdatering avhengigheter (#6406) * Div test/build dependencies oppdatert. * i18n-iso-countries oppdatert. * Fjerner webpack-merge avhengighet. Kan bruke standard object merge istadenfor. * Oppdatert uuid til versjon 10. * Oppdatert vitest til versjon 2. Einaste breaking change som vart vurdert til å kunne ha konsekvens for oss er https://github.com/vitest-dev/vitest/pull/5749, men fant ingen tilfeller i koden der mock results er sjekka. * Reduser oppdeling av dependabot PRs litt. (#6420) Lar patch og minor oppdateringer gå i samme gruppe. Legger og opp til ei gruppering for storybook major oppdateringer, men at vanlege går i hovedgruppa. * Dep adjust (#6423) * Juster namn på dependabot gruppe etter forrige justering. * Avgrens eslint-plugin-vitest versjoner til 0.4, versjon 0.5 krever oppdatering til eslint 9. * dev-next1 Application ttl må spesifiserast i timar. * Ekskluder eslint-plugin-vitest frå patch-and-minor dependabot grupper. Sidan versjon 0.5 krever eslint 9. * Bump the patch-and-minor group across 1 directory with 28 updates (#6426) Bumps the patch-and-minor group with 28 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@sentry/browser](https://github.com/getsentry/sentry-javascript) | `8.18.0` | `8.19.0` | | [@sentry/react](https://github.com/getsentry/sentry-javascript) | `8.18.0` | `8.19.0` | | [@playwright/test](https://github.com/microsoft/playwright) | `1.45.2` | `1.45.3` | | [@sentry/cli](https://github.com/getsentry/sentry-cli) | `2.32.2` | `2.33.0` | | [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `8.2.4` | `8.2.6` | | [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/actions) | `8.2.4` | `8.2.6` | | [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `8.2.4` | `8.2.6` | | [@storybook/addon-essentials](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials) | `8.2.4` | `8.2.6` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.2.4` | `8.2.6` | | [@storybook/cli](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.2.4` | `8.2.6` | | [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/code/renderers/react) | `8.2.4` | `8.2.6` | | [@storybook/react-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite) | `8.2.4` | `8.2.6` | | [@storybook/test](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/test) | `8.2.4` | `8.2.6` | | [@storybook/theming](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/theming) | `8.2.4` | `8.2.6` | | [@testing-library/dom](https://github.com/testing-library/dom-testing-library) | `10.3.2` | `10.4.0` | | [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) | `6.4.6` | `6.4.8` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.16.1` | `7.17.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `7.16.1` | `7.17.0` | | [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) | `7.34.4` | `7.35.0` | | [husky](https://github.com/typicode/husky) | `9.1.0` | `9.1.1` | | [jsdom](https://github.com/jsdom/jsdom) | `24.1.0` | `24.1.1` | | [msw](https://github.com/mswjs/msw) | `2.3.1` | `2.3.4` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.2.4` | `8.2.6` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss) | `3.4.4` | `3.4.6` | | [typescript](https://github.com/Microsoft/TypeScript) | `5.5.3` | `5.5.4` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `2.0.3` | `2.0.4` | | [dayjs](https://github.com/iamkun/dayjs) | `1.11.11` | `1.11.12` | | [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.51.8` | `5.51.11` | Updates `@sentry/browser` from 8.18.0 to 8.19.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.18.0...8.19.0) Updates `@sentry/react` from 8.18.0 to 8.19.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.18.0...8.19.0) Updates `@playwright/test` from 1.45.2 to 1.45.3 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.45.2...v1.45.3) Updates `@sentry/cli` from 2.32.2 to 2.33.0 - [Release notes](https://github.com/getsentry/sentry-cli/releases) - [Changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-cli/compare/2.32.2...2.33.0) Updates `@storybook/addon-a11y` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/addons/a11y) Updates `@storybook/addon-actions` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/addons/actions) Updates `@storybook/addon-docs` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/addons/docs) Updates `@storybook/addon-essentials` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/addons/essentials) Updates `@storybook/addon-interactions` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/addons/interactions) Updates `@storybook/cli` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/lib/cli) Updates `@storybook/react` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/renderers/react) Updates `@storybook/react-vite` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/frameworks/react-vite) Updates `@storybook/test` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/lib/test) Updates `@storybook/theming` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/lib/theming) Updates `@testing-library/dom` from 10.3.2 to 10.4.0 - [Release notes](https://github.com/testing-library/dom-testing-library/releases) - [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/dom-testing-library/compare/v10.3.2...v10.4.0) Updates `@testing-library/jest-dom` from 6.4.6 to 6.4.8 - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v6.4.6...v6.4.8) Updates `@typescript-eslint/eslint-plugin` from 7.16.1 to 7.17.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.17.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 7.16.1 to 7.17.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.17.0/packages/parser) Updates `eslint-plugin-react` from 7.34.4 to 7.35.0 - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.4...v7.35.0) Updates `husky` from 9.1.0 to 9.1.1 - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v9.1.0...v9.1.1) Updates `jsdom` from 24.1.0 to 24.1.1 - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/24.1.0...24.1.1) Updates `msw` from 2.3.1 to 2.3.4 - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v2.3.1...v2.3.4) Updates `storybook` from 8.2.4 to 8.2.6 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.6/code/lib/cli) Updates `tailwindcss` from 3.4.4 to 3.4.6 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/v3.4.6/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.4...v3.4.6) Updates `typescript` from 5.5.3 to 5.5.4 - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.3...v5.5.4) Updates `vitest` from 2.0.3 to 2.0.4 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v2.0.4/packages/vitest) Updates `dayjs` from 1.11.11 to 1.11.12 - [Release notes](https://github.com/iamkun/dayjs/releases) - [Changelog](https://github.com/iamkun/dayjs/blob/dev/CHANGELOG.md) - [Commits](https://github.com/iamkun/dayjs/compare/v1.11.11...v1.11.12) Updates `@tanstack/react-query` from 5.51.8 to 5.51.11 - [Release notes](https://github.com/TanStack/query/releases) - [Commits](https://github.com/TanStack/query/commits/v5.51.11/packages/react-query) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: "@sentry/react" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: "@playwright/test" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@sentry/cli" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: "@storybook/addon-a11y" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-actions" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-docs" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-essentials" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-interactions" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/cli" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/react" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/react-vite" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/test" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/theming" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@testing-library/dom" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: husky dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: jsdom dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: msw dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: storybook dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: tailwindcss dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: vitest dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: dayjs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@tanstack/react-query" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump uuid from 9.0.1 to 10.0.0 (#6241) Bumps [uuid](https://github.com/uuidjs/uuid) from 9.0.1 to 10.0.0. - [Changelog](https://github.com/uuidjs/uuid/blob/main/CHANGELOG.md) - [Commits](https://github.com/uuidjs/uuid/compare/v9.0.1...v10.0.0) --- updated-dependencies: - dependency-name: uuid dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jostein Stuhaug <135307852+josstn@users.noreply.github.com> * Unngå CORS feil i utviklingsmiljø. (#6435) Når server som er proxied for frontend returnere redirect i location header inneheld den av og til server adressa til proxied server. Dermed sende frontend forespørsel direkte til denne utan å gå via devserver proxy. Dette førte til CORS feil. Fikser dette ved å i vite dev server omskrive header location returnert frå proxied backend server til å ikkje innehalde server adressa. * Bump the patch-and-minor group across 1 directory with 24 updates (#6443) * Bump the patch-and-minor group across 1 directory with 24 updates Bumps the patch-and-minor group with 24 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@sentry/browser](https://github.com/getsentry/sentry-javascript) | `8.19.0` | `8.22.0` | | [@sentry/react](https://github.com/getsentry/sentry-javascript) | `8.19.0` | `8.22.0` | | [axios](https://github.com/axios/axios) | `1.7.2` | `1.7.3` | | [@sentry/cli](https://github.com/getsentry/sentry-cli) | `2.33.0` | `2.33.1` | | [@storybook/addon-a11y](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/a11y) | `8.2.6` | `8.2.7` | | [@storybook/addon-actions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/actions) | `8.2.6` | `8.2.7` | | [@storybook/addon-docs](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/docs) | `8.2.6` | `8.2.7` | | [@storybook/addon-essentials](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials) | `8.2.6` | `8.2.7` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.2.6` | `8.2.7` | | [@storybook/cli](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.2.6` | `8.2.7` | | [@storybook/react](https://github.com/storybookjs/storybook/tree/HEAD/code/renderers/react) | `8.2.6` | `8.2.7` | | [@storybook/react-vite](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-vite) | `8.2.6` | `8.2.7` | | [@storybook/test](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/test) | `8.2.6` | `8.2.7` | | [@storybook/theming](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/theming) | `8.2.6` | `8.2.7` | | [husky](https://github.com/typicode/husky) | `9.1.1` | `9.1.4` | | [msw](https://github.com/mswjs/msw) | `2.3.4` | `2.3.5` | | [postcss](https://github.com/postcss/postcss) | `8.4.39` | `8.4.40` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.2.6` | `8.2.7` | | [stylelint](https://github.com/stylelint/stylelint) | `16.7.0` | `16.8.1` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss) | `3.4.6` | `3.4.7` | | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `5.3.4` | `5.3.5` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `2.0.4` | `2.0.5` | | [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.51.11` | `5.51.18` | | [@editorjs/list](https://github.com/editor-js/list) | `1.9.0` | `1.10.0` | Updates `@sentry/browser` from 8.19.0 to 8.22.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.19.0...8.22.0) Updates `@sentry/react` from 8.19.0 to 8.22.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.19.0...8.22.0) Updates `axios` from 1.7.2 to 1.7.3 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.7.2...v1.7.3) Updates `@sentry/cli` from 2.33.0 to 2.33.1 - [Release notes](https://github.com/getsentry/sentry-cli/releases) - [Changelog](https://github.com/getsentry/sentry-cli/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-cli/compare/2.33.0...2.33.1) Updates `@storybook/addon-a11y` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/addons/a11y) Updates `@storybook/addon-actions` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/addons/actions) Updates `@storybook/addon-docs` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/addons/docs) Updates `@storybook/addon-essentials` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/addons/essentials) Updates `@storybook/addon-interactions` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/addons/interactions) Updates `@storybook/cli` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/lib/cli) Updates `@storybook/react` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/renderers/react) Updates `@storybook/react-vite` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/frameworks/react-vite) Updates `@storybook/test` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/lib/test) Updates `@storybook/theming` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/lib/theming) Updates `husky` from 9.1.1 to 9.1.4 - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v9.1.1...v9.1.4) Updates `msw` from 2.3.4 to 2.3.5 - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v2.3.4...v2.3.5) Updates `postcss` from 8.4.39 to 8.4.40 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.39...8.4.40) Updates `storybook` from 8.2.6 to 8.2.7 - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v8.2.7/code/lib/cli) Updates `stylelint` from 16.7.0 to 16.8.1 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/16.7.0...16.8.1) Updates `tailwindcss` from 3.4.6 to 3.4.7 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/v3.4.7/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.6...v3.4.7) Updates `vite` from 5.3.4 to 5.3.5 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.3.5/packages/vite) Updates `vitest` from 2.0.4 to 2.0.5 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v2.0.5/packages/vitest) Updates `@tanstack/react-query` from 5.51.11 to 5.51.18 - [Release notes](https://github.com/TanStack/query/releases) - [Commits](https://github.com/TanStack/query/commits/v5.51.18/packages/react-query) Updates `@editorjs/list` from 1.9.0 to 1.10.0 - [Commits](https://github.com/editor-js/list/commits) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: "@sentry/react" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@sentry/cli" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-a11y" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-actions" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-docs" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-essentials" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/addon-interactions" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/cli" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/react" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/react-vite" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/test" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@storybook/theming" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: husky dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: msw dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: postcss dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: storybook dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: tailwindcss dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: vitest dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@tanstack/react-query" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@editorjs/list" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: patch-and-minor ... Signed-off-by: dependabot[bot] * Nedgraderer @editorjs/list --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Hallvard Andreas Stark * Bumper pakker (#6445) * Tillat 12000 tegn i tilbakekrevingsform (#6450) * TSFF-644: Resultat settes for tidlig på behandlingene (#6444) * Bruk getStatusText i gammel visning, slik at "Ikke fastsatt" vises for pågående saker * Fiks test * Oppgraderer til eslint 9 (#6428) * Oppgraderer til eslint 9. Disse pakker/plugins blir fjerna som ein del av dette, fordi dei ikkje er kompatible med versjon 9, eller ikkje ser ut til å ha nytteverdi for oss: @typescript-eslint/eslint-plugin, @typescript-eslint/parser: Erstatta med typescript-eslint plugin. eslint-config-airbnb: Siste oppdatering var tre år sidan, og blir ikkje oppdatert med det første. eslint-plugin-import, eslint-import-resolver-typescript: Støtter ikkje versjon 9, og uvisst kor nyttig denne er for oss. Trur andre delar av build gjere nok sjekk på imports. eslint-plugin-jest-dom: Denne ser ikkje ut til å ha vore aktivert i gammal konfigurasjon. Fekk masse feil når den vart aktivert med recommended innstillinger, og fekk ikkje framprovosert feil i gammal konfigurasjon. eslint-plugin-storybook: Ikkje oppdatert til versjon 9, og ser ikkje ut til å ha vore aktivert i gammal konfigurasjon. Klarte ikkje framprovosere feil der ut frå anbefalt sjekk. Endre også tsconfig.json innstilling til react-jsx. Med dette slepp ein å importere React i alle filer som bruker jsx. Og unngår dermed eslint feil om unused-var frå importen av React. Den nye eslint.config.mjs prøver å forenkle i forhold til gammal konfigurasjon, den aktiverer i utgangspunktet recommended settings frå grunnkonfigurasjon og alle plugins, og så tilpasser den litt der det trengs for å unngå for mykje feil i eksisterande kodebase. Kan så skru denne meir strict etterkvart viss vi ser mulighet for det, feks for filer under packages/v2. * Diverse minimale endringer for kompatibilitet med eslint 9. Kun endringer i kommentarer og typescript/postcss konfigurasjon. Ingen endring i runtime javascript. * yarn.lock oppdatert etter fjerning av dayjs. * Tillat 12000 tegn i revurdering (#6456) * Tillat 12000 tegn i tilbakekrevingsform * Tillat 12000 tegn i flere situasjoner * Venter til etter første render, når behandlingId skal være satt, på å… (#6455) * Venter til etter første render, når behandlingId skal være satt, på å sjekke om den faktisk er satt. Hvis ikke er ingen behandlinger valgt og den evt åpne behandlingen skal vises * Forbedring av logikk * Unngå javascript feil pga undefined templates i MeldingerSakIndex.tsx. (#6459) Bakgrunn: Ved feil i bakenforliggande system kan det skje at kall til formidling server for å hente maler feiler (returnerer 500). Dette førte til javascript feil sidan MeldingIndex forventa at templates verdi alltid skulle vere eit objekt, og ikkje undefined som det vart viss serverkall feila. Løysing: Viser alert med informativ feilmelding istadenfor meldingspanel, viss kall for å hente maler har feila. Svakhet: Viss det finnast tilfeller der det er korrekt at det ikkje blir returnert maler for ei sak, så vil det framleis føre til feil. Antar at dette aldri skal skje. * Reverter til 1500 tegn (#6460) * Revert "Tillat 12000 tegn i revurdering (#6456)" This reverts commit c680b93f96067aa3693fe53e4bdd6683df26ae1d. * Revert "Tillat 12000 tegn i tilbakekrevingsform (#6450)" This reverts commit 5c4699c5ac68a91e536a9e15a1c734bd3b071451. * HistorikkEndretFeltType for opphør av refusjon (#6464) * Skriver fakta-medlemskap om til typescript (#6317) * Skriver medlemskap om til typescript Skriver bort redux-form i medlemskap * Rydder litt * Rydding og mer typing * Legger inn manglende verdier fra formState i OppholdINorge..... Bruker valideringsfunksjoner fra ft-frontend-saksbehandling * Tilpasser tester * Venter med å rendre panel til api-kall er ferdig * Forbedret visning av åpne perioder Fikset funksjonalitet for avbryt-knapp * Setter riktig versjon av pakke * Fjernet utkommentert kode * Fjerner bruk av react-intl, må beholde RawIntlProvider pga felleskomponenter som trenger * Fjerner eslint ignores * Legger på manglende typing * Forbedrer logikk som ikke ga mye mening * Legger til test * TSFF-289: Kunne avslå ekstra omsorgsdager for barn over 18 år (#6463) * Legg til aldersvilkår for kronisk syk * Legg til manglende komma * Bruk const, ikke var * Fiks brevpanel så valgt mottaker viser korrekt etter bytte av mal. (#6467) Før dette kunne tidlegare valgt mottaker vise som valgt etter at ein hadde bytte mal, sjølv om komponent state hadde resatt valgt mottaker til å vere første på valgte mal. * Bump paketer (#6470) * Editorjs fix (#6434) * Fjerner resolution på editorjs, oppgraderer til versjon 2.30.2. Fikser typescript problem med versjone 2.30.2. * Litt forbetring av EditorJSWrapper og FritekstEditor. Laga story som tester FritekstEditor komponent, og generelt forbetra EditorJSWrapper og FritekstEditor litt. * Fikser unødvendig re-initialisering av editorjs. La til useCallback med korrekte deps rundt litt funksjoner i FritekstRedigering.tsx og FritekstBrevPanel.tsx slik at vi unngår at callback funksjoner sendt som props ned til FritekstEditor endrer seg ved kvar re-render og dermed fører til re-initialisering av editorjs. * Fikser looping/feil ved innlasting av editorjs i FritekstEditor.tsx Virka som det var unødvendig å kalle lagre og oppdaterFormFelt etter kvar initialisering av editor. oppdaterFormFelt blir uansett kalla i handleSubmit i ovanliggande komponent, så formik verdi blir oppdatert der. Trur og dette forårsaka ein race condition eller noko anna rart som førte til feilmeldinger frå editorjs (Block has invalid content). Ville tru det gjerne kom i konflikt med at submithandler vart kalla ca samtidig. Med denne endring kan lastEditor køyre på kvar endring av redigerbartInnhold prop, slik at komponenten sin reaktivitet er inntakt. Ein kan dermed bruke den utan å unmounte + remounte som ein måtte gjere før for å få korrekt oppførsel viss redigerbartInnhold prop endra seg utanfrå. * Fiks FritekstEditor.stories.tsx etter forrige endring i FritekstEditor. * Fjerner ts-expect-error som visstnok ikkje var nødvendig likevel. --------- Co-authored-by: Thomas H. Wiberg * Update utenlandsoppholdMock.js * Update yarn.lock * lint fix * Kodeverk: Fiks testfeil i MedlemskapInfoPanel.spec.tsx * Kodeverk: Fiks feil i BehandlingPickerItem.spec.tsx * Sett ALDERSVILKAR_KRONISK_SYK til true i dev * Kodeverk: Fikse feil i fakta-medlemsskap * Legg til ALDERSVILKAR_KRONISK_SYK i featureToggles.json * Viser arbeidsgivernavn i historikk (#6476) * Kodeverk: (pakke) fakta-medlemsskap * Sjekk om aldersvilkår finnes på behandling før panel legges til (#6478) * Bump the patch-and-minor group across 1 directory with 8 updates (#6484) Bumps the patch-and-minor group with 8 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@sentry/browser](https://github.com/getsentry/sentry-javascript) | `8.25.0` | `8.26.0` | | [@sentry/react](https://github.com/getsentry/sentry-javascript) | `8.25.0` | `8.26.0` | | [axios](https://github.com/axios/axios) | `1.7.3` | `1.7.4` | | [postcss](https://github.com/postcss/postcss) | `8.4.40` | `8.4.41` | | [stylelint](https://github.com/stylelint/stylelint) | `16.8.1` | `16.8.2` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss) | `3.4.9` | `3.4.10` | | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `5.4.0` | `5.4.1` | | [@editorjs/editorjs](https://github.com/codex-team/editor.js) | `2.30.2` | `2.30.5` | Updates `@sentry/browser` from 8.25.0 to 8.26.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.25.0...8.26.0) Updates `@sentry/react` from 8.25.0 to 8.26.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.25.0...8.26.0) Updates `axios` from 1.7.3 to 1.7.4 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.7.3...v1.7.4) Updates `postcss` from 8.4.40 to 8.4.41 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.40...8.4.41) Updates `stylelint` from 16.8.1 to 16.8.2 - [Release notes](https://github.com/stylelint/stylelint/releases) - [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md) - [Commits](https://github.com/stylelint/stylelint/compare/16.8.1...16.8.2) Updates `tailwindcss` from 3.4.9 to 3.4.10 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/v3.4.10/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.9...v3.4.10) Updates `vite` from 5.4.0 to 5.4.1 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.4.1/packages/vite) Updates `@editorjs/editorjs` from 2.30.2 to 2.30.5 - [Release notes](https://github.com/codex-team/editor.js/releases) - [Changelog](https://github.com/codex-team/editor.js/blob/next/docs/CHANGELOG.md) - [Commits](https://github.com/codex-team/editor.js/compare/v2.30.2...v2.30.5) --- updated-dependencies: - dependency-name: "@sentry/browser" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: "@sentry/react" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: patch-and-minor - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: postcss dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: stylelint dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: tailwindcss dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-patch dependency-group: patch-and-minor - dependency-name: "@editorjs/editorjs" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch-and-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fjern unødvendige devDependencies i behandling-unntak. (#6488) * Juster lint-staged konfigurasjon. (#6483) Slik konfigurasjonen var kunne det ifølge dokumentasjonen (https://www.npmjs.com/package/lint-staged#configuration) oppstå race conditions fordi eslint --fix og prettier --write kunne ende opp med å endre samme fil samtidig. Går derfor over til "array syntax" for å køyre både eslint og prettier uten race condition. Justerer og slik at ein unngår å køyre fiks på genererte *.module.d.css.ts filer, sidan dette førte til feil i typed-css-modules sjekk etterpå (fjerna quotes som den krevde). * Modernisering feilmeldingskode (#6482) * Ny komponent for stor feilmelding på side. Bruker aksel komponenter og dropper intl støtte for å forenkle kodebasen. * Skriver om ForbiddenPage komponent til å bruke ny BigError komponent. Lager også separat, moderne storybook fil for den, og flytter test inn i storybook. * Skriver om NotFoundPage komponent til å bruke ny BigError komponent. Lager også separat, moderne storybook fil for den, og flytter test inn i storybook. * Skriver om UnauthorizedPage komponent til å bruke ny BigError komponent. Lager også separat, moderne storybook fil for den, og flytter test inn i storybook. * Skriver om IngenBehandlingValgtPanel komponent til å ikkje bruke intl lenger Lager også separat, moderne storybook fil for den, og flytter test inn i storybook. * Fjerna ubrukt textCode prop på ErrorBoundary, lagt til storybook test * Endra ErrorPage til å bruke BigError, fjerna ErrorPageWrapper. Lage samtidig story for ErrorPage og flytte test inn der. * Legg til standardfeilmelding og større margin på BigError. * Justert feilmelding som viser når ErrorBoundary blir utløst. Oppfordrer brukeren til å laste sida på nytt for å prøve igjen, og så melde frå viss det ikkje hjalp. * ErrorBoundary viser no referanse til sentry rapport. Slik at saksbehandler kan inkludere denne viss feil blir rapportert inn, og forenkle vår feilsøking. * Flytta sak-infosider til v2/gui/src/sak/feilmeldinger. Sletta gammal sak-infosider pakke. Gjere og nødvendige tilpassinger for at kode skal kompilere under v2/. Bytter og namn på ny v2 sak/infomeldinger til sak/feilmeldinger. Justerer title i tilhøyrande storybook filer for å matche ny filsti. * Fiks så CopyButton på ErrorPage blir inline i feilmelding. * typofix i BigError.tsx * NetworkErrorPage komponent for bruk ved nettverksfeil lagt til. Oppfordrer saksbehandler til å prøve igjen ved nettverksfeil, og inkludere litt feilsøkingsinfo ved innrapportering av feil som ikkje løyser seg ved retry. * Handter nettverksfeil i BehandlingTilbakekrevingIndex. Viser feilmelding istadenfor å prøve å køyre vidare med manglande data viss lasting av data frå server feiler. * Fjern utdatert referanse til sak-infosider, fiks ulovlig import path. * css module typegen * legg til "--allow-empty" på lint-staged hook. Ellers vart commit av generert typescript deklarasjon for css modul blokkert. * Behold quotes i modules.d.css.ts filer prettier fjerner disse, men då feila typed-css-modules sjekken etterpå, så må beholde disse quotes. * Revert "legg til "--allow-empty" på lint-staged hook." This reverts commit b0d6b3041c88747e747efe43ac601affa01f7313. * Bump axios-mock-adapter from 1.22.0 to 2.0.0 (#6449) Bumps [axios-mock-adapter](https://github.com/ctimmerm/axios-mock-adapter) from 1.22.0 to 2.0.0. - [Release notes](https://github.com/ctimmerm/axios-mock-adapter/releases) - [Changelog](https://github.com/ctimmerm/axios-mock-adapter/blob/master/CHANGELOG.md) - [Commits](https://github.com/ctimmerm/axios-mock-adapter/compare/v1.22.0...v2.0.0) --- updated-dependencies: - dependency-name: axios-mock-adapter dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump @navikt/familie-endringslogg from 12.0.2 to 13.1.1 (#6461) Bumps [@navikt/familie-endringslogg](https://github.com/navikt/familie-felles-frontend) from 12.0.2 to 13.1.1. - [Commits](https://github.com/navikt/familie-felles-frontend/compare/@navikt/familie-endringslogg@12.0.2...@navikt/familie-endringslogg@13.1.1) --- updated-dependencies: - dependency-name: "@navikt/familie-endringslogg" dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump elliptic from 6.5.5 to 6.5.7 (#6487) Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.5 to 6.5.7. - [Commits](https://github.com/indutny/elliptic/compare/v6.5.5...v6.5.7) --- updated-dependencies: - dependency-name: elliptic dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Refaktor prosess-vilkar overstyring (#6468) * prosess-vilkar overstyring Skriver bort redux-form * Rydding * La til manglende prop * Fiksing av tester * Legger tilbake ugyldige datoer i kalender * Fjerner unødige valideringsfunksjoner * Retter opp etter endring i prop * Bruker felles verdikjedetest workflow (#6495) * TSFF-633 - fikser typing og skriver bort redux-form i prosess-søknadsfrist (#6349) * TSFF-633 - fikser typing og skriver bort redux-form Legger til knapp som muligjør endring av vurdering * Fikser i stories * Gjenoppretter story * La til tester Fikset resetting av form Skrevet bort siste rest av redux-form * Retter tester * Justerer css * Sjekker på om begrunnelse finnes før man kan redigere den * Flytter avbrytknapp til mer logisk sted Liten oppdatering av story * Fjerner bruk av react-intl, må beholde RawIntlProvider pga felleskomponenter som trenger * Fikser paneltittel * Fikser visning av løst aksjonspunkt * prettier av package.json * Revert "TSFF-633 - fikser typing og skriver bort redux-form i prosess-søknadsfrist (#6349)" This reverts commit 23c23c717e561e37b354084bf95387a14dae7616. * Kodeverk: Justere oppslag i kodeverk, feil kodeverktyper * Legg til ff og utvid varseltekst (#6514) * Legg til ff og utvid varseltekst * Utvid tekst også i TilbakekrevingVedtakUtdypendeTekstPanel * Mock ff i tester * Kodeverk: ts-check fix * Kodeverk: fikse tester --------- Signed-off-by: dependabot[bot] Co-authored-by: Jostein Stuhaug <135307852+josstn@users.noreply.github.com> Co-authored-by: Hallvard Andreas Stark <57254397+hallvardastark@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ramin Esfandiari Co-authored-by: Ramin Esfandiari Co-authored-by: vebnor Co-authored-by: Jostein Stuhaug Co-authored-by: Hallvard Andreas Stark Co-authored-by: Audun Eltvik Co-authored-by: Espen Velsvik Co-authored-by: Audun Eltvik Co-authored-by: Qadeer Khan --- .eslintignore | 2 - .eslintrc.cjs | 1 - .github/dependabot.yml | 3 +- .github/workflows/deploy-docker-image.yml | 7 +- _mocks/featureToggles.ts | 8 + deploy/dev-fss-k9saksbehandling.yml | 4 + deploy/prod-fss-k9saksbehandling.yml | 4 + envDir/.env.development | 1 + eslint.config.mjs | 74 + eslint/eslintrc.common.cjs | 138 - feature-toggles.json | 8 + package.json | 109 +- packages/behandling-felles/package.json | 2 +- packages/behandling-frisinn/package.json | 4 +- .../src/components/KlageProsess.spec.tsx | 1 - .../behandling-omsorgspenger/package.json | 6 +- .../behandling-opplaeringspenger/package.json | 8 +- .../package.json | 8 +- packages/behandling-pleiepenger/package.json | 8 +- .../behandling-tilbakekreving/package.json | 4 +- .../src/BehandlingTilbakekrevingIndex.tsx | 14 +- packages/behandling-unntak/package.json | 4 - .../src/components/UtvidetRettProsess.tsx | 2 + ...rosessStegUtvidetRettPanelDefinisjoner.tsx | 14 +- .../src/ArbeidsforholdFaktaIndex.stories.tsx | 1 - .../LeggTilArbeidsforholdFelter.tsx | 4 +- .../src/FaktaRammevedtakIndex.stories.tsx | 2 +- .../Overf\303\270ringsraderForm.tsx" | 2 +- packages/fakta-direkte-overgang/package.json | 2 +- packages/fakta-etablert-tilsyn/index.ts | 1 - .../fakta-etablert-tilsyn/mock/api-mock.ts | 1 - packages/fakta-etablert-tilsyn/package.json | 12 +- .../fakta-etablert-tilsyn/src/mock/browser.ts | 2 - .../fakta-etablert-tilsyn/src/util/formats.ts | 1 - .../fakta-etablert-tilsyn/src/util/hooks.ts | 1 - packages/fakta-etablert-tilsyn/vite.config.js | 2 - .../src/components/FaktaSubmitButton.tsx | 1 - packages/fakta-inntektsmelding/index.ts | 1 - .../fakta-inntektsmelding/mock/api-mock.ts | 1 - packages/fakta-inntektsmelding/package.json | 16 +- .../fakta-inntektsmelding/src/mock/browser.ts | 2 - .../fakta-inntektsmelding/src/util/utils.ts | 1 - packages/fakta-inntektsmelding/vite.config.js | 2 - packages/fakta-institusjon/package.json | 2 +- .../fakta-medisinsk-vilk\303\245r/index.ts" | 1 - .../mock/handlers.ts" | 1 - .../package.json" | 18 +- .../postcss.config.js" | 1 - .../src/mocks/browser.ts" | 2 - .../src/util/utils.ts" | 1 - .../vite.config.js" | 2 - packages/fakta-medlemskap/i18n/nb_NO.json | 127 +- packages/fakta-medlemskap/package.json | 3 +- .../src/MedlemskapFaktaIndex.jsx | 71 - .../src/MedlemskapFaktaIndex.spec.tsx | 94 + .../src/MedlemskapFaktaIndex.stories.tsx | 59 +- .../src/MedlemskapFaktaIndex.tsx | 64 + .../src/components/MedlemskapInfoPanel.jsx | 80 - .../components/MedlemskapInfoPanel.spec.tsx | 85 +- .../src/components/MedlemskapInfoPanel.tsx | 59 + .../oppholdInntektOgPerioder/FormState.ts | 54 + .../oppholdInntektOgPerioder/Medlemskap.ts | 16 + .../MedlemskapEndringerTabell.tsx | 68 +- .../MerknaderFraBeslutter.ts | 3 + .../oppholdInntektOgPerioder/Opphold.ts | 7 + .../OppholdINorgeOgAdresserFaktaPanel.jsx | 199 -- ...OppholdINorgeOgAdresserFaktaPanel.spec.tsx | 298 -- .../OppholdINorgeOgAdresserFaktaPanel.tsx | 191 ++ .../OppholdInntektOgPeriodeForm.jsx | 213 -- .../OppholdInntektOgPeriodeForm.spec.tsx | 233 -- .../OppholdInntektOgPeriodeForm.tsx | 182 ++ .../OppholdInntektOgPerioderForm.jsx | 336 -- .../OppholdInntektOgPerioderForm.spec.tsx | 261 -- .../OppholdInntektOgPerioderForm.tsx | 276 ++ .../oppholdInntektOgPerioder/Periode.tsx | 20 + .../PerioderMedMedlemskapFaktaPanel.spec.tsx | 172 +- ...sx => PerioderMedMedlemskapFaktaPanel.tsx} | 181 +- .../oppholdInntektOgPerioder/Soknad.ts | 9 + .../StatusForBorgerFaktaPanel.spec.tsx | 115 +- .../StatusForBorgerFaktaPanel.tsx | 220 +- .../medlemskapAksjonspunkterPropType.jsx | 11 - .../medlemskapBehandlingPropType.jsx | 12 - .../medlemskapInntektArbeidYtelsePropType.jsx | 9 - .../medlemskapMedlemskapPropType.jsx | 7 - .../propTypes/medlemskapSoknadPropType.jsx | 12 - packages/fakta-om-barnet/index.ts | 1 - packages/fakta-om-barnet/mock/api-mock.ts | 1 - packages/fakta-om-barnet/mock/browser.ts | 2 - packages/fakta-om-barnet/package.json | 14 +- .../{postcss.config.js => postcss.config.cjs} | 1 - ...tailwind.config.js => tailwind.config.cjs} | 0 packages/fakta-om-barnet/vite.config.js | 2 - packages/fakta-omsorgen-for/index.ts | 1 - packages/fakta-omsorgen-for/mock/api-mock.ts | 1 - packages/fakta-omsorgen-for/mock/browser.ts | 2 - packages/fakta-omsorgen-for/package.json | 14 +- .../postcss.config.cjs} | 0 packages/fakta-omsorgen-for/postcss.config.js | 1 - .../fakta-omsorgen-for/src/util/dateUtils.ts | 1 - packages/fakta-omsorgen-for/src/util/hooks.ts | 1 - packages/fakta-omsorgen-for/src/util/utils.ts | 1 - packages/fakta-omsorgen-for/vite.config.js | 2 - packages/fakta-opplaering/package.json | 6 +- .../GjennomgaaOpplaeringForm.tsx | 6 +- .../src/reisetid/ReisetidNavigation.tsx | 2 +- ...03\270knadsperiodeFieldArrayComponent.tsx" | 2 +- .../src/OpptjeningFaktaIndex.stories.tsx | 1 - .../fakta-overstyr-beregning/package.json | 2 +- .../src/Utenlandsopphold.spec.tsx | 1 - .../src/Utenlandsopphold.stories.tsx | 1 - packages/form/package.json | 4 +- packages/form/src/AutocompleteField.tsx | 1 - packages/form/src/DecimalField.tsx | 6 +- packages/form/src/InputField.tsx | 1 - packages/form/src/PeriodpickerField.tsx | 6 +- packages/form/src/RadioOption.tsx | 1 - packages/form/src/SelectField.tsx | 2 +- packages/form/src/formikUtils.js | 1 - packages/form/src/hook-form/CheckboxGroup.tsx | 3 +- packages/form/src/hook-form/Datepicker.tsx | 3 +- .../FaktaBegrunnelseTextFieldRHF.tsx | 74 + .../form/src/hook-form/RadioGroupPanel.tsx | 5 +- packages/form/src/hook-form/TextArea.tsx | 5 +- .../form/src/hook-form/YesOrNoQuestion.tsx | 3 +- .../faktaBegrunnelseTextField.module.css | 3 + packages/form/src/hook-form/formUtils.ts | 4 + packages/form/src/renderNavField.tsx | 2 +- packages/mocks/browser.js | 1 - packages/mocks/handlers.js | 2 - packages/mocks/testHandlers.js | 1 - .../prop-types/src/arbeidsforholdPropType.jsx | 59 - .../src/behandlingIListePropType.jsx | 25 - ...beregningresultatMedUttaksplanPropType.jsx | 34 - packages/prop-types/src/fagsakPropType.jsx | 26 - .../src/personopplysningPropType.jsx | 39 - packages/prosess-aarskvantum-oms/package.json | 2 +- .../src/components/AksjonspunktForm.tsx | 2 +- .../src/components/AksjonspunktForm9014.tsx | 2 +- .../src/components/AvregningPanel.jsx | 7 +- packages/prosess-felles/index.ts | 6 +- .../vilkar/VilkarResultPickerPeriodisert.tsx | 34 +- .../VilkarResultPickerPeriodisertRHF.tsx | 284 ++ .../src/vilkar/VilkarResultPickerRHF.tsx | 148 + packages/prosess-omsorgsdager/index.ts | 1 - packages/prosess-omsorgsdager/package.json | 10 +- .../{postcss.config.js => postcss.config.cjs} | 0 packages/prosess-omsorgsdager/vite.config.js | 2 - .../src/TilbakekrevingProsessIndex.tsx | 1 - .../src/components/TilbakekrevingForm.tsx | 3 - .../components/TilbakekrevingPeriodeForm.tsx | 6 +- .../splittePerioder/DelOppPeriodeModal.tsx | 2 +- .../splittePerioder/PeriodeController.tsx | 1 - .../aktsomhet/AktsomhetFormPanel.tsx | 2 +- .../AktsomhetReduksjonAvBelopFormPanel.tsx | 1 - .../TilkjentYtelseProsessIndex.stories.tsx | 1 - .../src/components/TilkjentYtelsePanel.tsx | 1 - .../components/manuellePerioder/NyPeriode.tsx | 3 +- .../manuellePerioder/PeriodeRad.tsx | 5 +- .../manuellePerioder/PeriodeTabell.tsx | 3 +- .../manuellePerioder/TilkjentYtelseForm.tsx | 3 +- .../tilbaketrekk/Tilbaketrekkpanel.tsx | 1 - .../src/components/BehandleUnntakForm.tsx | 1 - packages/prosess-uttak/index.ts | 1 - packages/prosess-uttak/package.json | 16 +- .../postcss.config.cjs} | 0 packages/prosess-uttak/postcss.config.js | 1 - .../vurderDato/VurderDatoAksjonspunkt.tsx | 6 +- .../prosess-uttak/src/util/periodUtils.ts | 1 - .../src/util/\303\245rsakUtils.ts" | 1 - packages/prosess-uttak/vite.config.js | 2 - .../components/TilbakekrevingVedtakForm.tsx | 1 - ...bakekrevingEditerVedtaksbrevPanel.spec.tsx | 3 + ...ekrevingVedtakUtdypendeTekstPanel.spec.tsx | 5 + ...ilbakekrevingVedtakUtdypendeTekstPanel.tsx | 9 +- packages/prosess-vedtak/package.json | 2 +- .../src/components/FritekstBrevPanel.tsx | 14 +- .../FritekstRedigering/EditorJSWrapper.ts | 24 +- .../FritekstEditor.stories.tsx | 74 + .../FritekstRedigering/FritekstEditor.tsx | 119 +- .../FritekstRedigering/FritekstRedigering.tsx | 43 +- .../VedtakInnvilgetRevurderingPanel.jsx | 10 +- .../VedtakInnvilgetRevurderingPanel.spec.jsx | 2 +- .../VedtakRevurderingSubmitPanel.tsx | 1 - packages/prosess-vedtak/src/konstanter.js | 1 - packages/prosess-vilkar-alder/package.json | 6 +- .../package.json | 4 +- .../OpptjeningVilkarProsessIndex.stories.tsx | 4 - .../prosess-vilkar-overstyring/package.json | 2 +- ...ltatMedOverstyringProsessIndex.stories.tsx | 77 +- ...lkarresultatMedOverstyringProsessIndex.tsx | 9 +- .../OverstyrBekreftKnappPanel.spec.tsx | 20 - .../OverstyrBekreftKnappPanel.tsx | 22 - .../src/components-old/VilkarBegrunnelse.tsx | 43 - .../VilkarresultatMedBegrunnelse.tsx | 91 - ...ilkarresultatMedOverstyringHeader.spec.tsx | 34 - .../VilkarresultatMedOverstyringHeader.tsx | 126 - .../vilkarBegrunnelse.module.css | 3 - .../src/components-periodisert/FormState.ts | 11 + .../OverstyrBekreftKnappPanel.tsx | 4 +- .../VilkarBegrunnelse.tsx | 47 +- .../VilkarresultatMedBegrunnelse.tsx | 35 +- .../VilkarresultatMedOverstyringForm.spec.tsx | 48 - .../VilkarresultatMedOverstyringForm.tsx | 323 -- ...tatMedOverstyringFormPeriodisert.spec.tsx} | 23 +- ...resultatMedOverstyringFormPeriodisert.tsx} | 212 +- ...ilkarresultatMedOverstyringHeader.spec.tsx | 34 - .../VilkarresultatMedOverstyringHeader.tsx | 127 - ...ilkarresultatMedOverstyringForm.module.css | 24 - ...tMedOverstyringFormPeriodisert.module.css} | 0 .../src/components/FormState.ts | 11 + .../src/components/VilkarBegrunnelse.tsx | 47 +- .../VilkarresultatMedBegrunnelse.tsx | 37 +- .../VilkarresultatMedOverstyringForm.spec.tsx | 9 +- .../VilkarresultatMedOverstyringForm.tsx | 194 +- ...ilkarresultatMedOverstyringHeader.spec.tsx | 3 +- .../VilkarresultatMedOverstyringHeader.tsx | 45 +- .../prosess-vilkar-soknadsfrist/package.json | 2 +- packages/prosess-vilkar-sykdom/package.json | 2 +- .../src/error/extractErrorInfo.ts | 28 + .../src/local-data/useMultipleRestApi.tsx | 10 +- packages/rest-api/package.json | 2 +- .../src/axios/axiosHttpClientApi.spec.ts | 1 - .../rest-api/src/axios/initRestMethods.ts | 72 +- .../sak-aktor/src/AktorSakIndex.stories.tsx | 3 +- packages/sak-aktor/src/AktorSakIndex.tsx | 5 +- .../sak-aktor/src/components/AktoerGrid.tsx | 6 +- packages/sak-app/package.json | 23 +- packages/sak-app/src/aktoer/AktoerIndex.tsx | 3 +- packages/sak-app/src/app/AppIndex.tsx | 3 +- .../sak-app/src/app/ErrorBoundary.stories.tsx | 45 + packages/sak-app/src/app/ErrorBoundary.tsx | 19 +- packages/sak-app/src/app/components/Home.tsx | 2 +- .../src/behandling/BehandlingerIndex.tsx | 4 +- .../melding/MeldingIndex.spec.tsx | 2 +- .../melding/MeldingIndex.tsx | 4 + packages/sak-app/src/bootstrap.tsx | 13 +- packages/sak-app/src/data/useKodeverk.tsx | 2 +- packages/sak-behandling-velger/package.json | 4 +- .../src/components/BehandlingPicker.tsx | 20 +- .../components/BehandlingPickerItem.spec.tsx | 2 +- .../BehandlingPickerItemContentOld.tsx | 2 +- packages/sak-dekorator/package.json | 2 +- packages/sak-dokumenter/package.json | 2 +- packages/sak-historikk/i18n/nb_NO.json | 1 + packages/sak-historikk/package.json | 2 +- .../components/maler/historikkMalType1.tsx | 31 +- .../kodeverk/historikkEndretFeltTypeCodes.ts | 4 + packages/sak-infosider/i18n/nb_NO.json | 13 - packages/sak-infosider/index.ts | 5 - packages/sak-infosider/package.json | 12 - packages/sak-infosider/src/ErrorPage.spec.tsx | 24 - packages/sak-infosider/src/ErrorPage.tsx | 11 - .../sak-infosider/src/ForbiddenPage.spec.tsx | 21 - packages/sak-infosider/src/ForbiddenPage.tsx | 24 - .../src/InfosiderSakIndex.stories.tsx | 19 - .../src/IngenBehandlingValgtPanel.spec.tsx | 29 - .../src/IngenBehandlingValgtPanel.tsx | 44 - .../sak-infosider/src/NotFoundPage.spec.tsx | 20 - .../src/UnauthorizedPage.spec.tsx | 20 - .../src/components/ErrorPageWrapper.spec.tsx | 18 - .../src/components/ErrorPageWrapper.tsx | 41 - .../components/errorPageWrapper.module.css | 6 - .../src/MeldingerSakIndex.stories.tsx | 1 - .../src/MenyEndreBehandlendeEnhetIndex.tsx | 2 +- .../sak-meny-henlegg/src/MenyHenleggIndex.tsx | 2 +- .../src/components/HenleggBehandlingModal.tsx | 2 +- .../sak-meny-marker-behandling/package.json | 2 +- packages/sak-meny-sett-pa-vent/package.json | 2 +- packages/sak-meny/package.json | 2 +- packages/sak-notat/package.json | 12 +- .../sak-sok/src/components/FagsakSearch.tsx | 2 +- packages/sak-totrinnskontroll/package.json | 2 +- .../aksjonspunktTekstUtleder.spec.tsx | 48 +- packages/sak-visittkort/package.json | 4 +- packages/shared-components/package.json | 8 +- .../shared-components/src/FaktaGruppe.tsx | 4 +- .../src/periodpicker/Periodpicker.spec.tsx | 2 +- .../src/tidslinje/usePositionAndSize.ts | 1 - packages/types/src/historikkinnslagTsType.ts | 4 +- .../types/src/notat-i-sak/NotatGjelderType.ts | 1 - packages/utils-test/package.json | 2 +- packages/utils-test/src/intl-test-helper.ts | 2 - .../utils-test/src/redux-form-test-helper.ts | 1 - packages/utils-test/src/test-utils.tsx | 2 - packages/utils/package.json | 2 +- packages/v2/backend/package.json | 2 +- .../sak/feilmeldinger/BigError.stories.tsx | 73 + .../v2/gui/src/sak/feilmeldinger/BigError.tsx | 29 + .../sak/feilmeldinger/ErrorPage.stories.tsx | 21 + .../gui/src/sak/feilmeldinger/ErrorPage.tsx | 25 + .../feilmeldinger/ForbiddenPage.stories.tsx | 21 + .../src/sak/feilmeldinger/ForbiddenPage.tsx | 17 + .../IngenBehandlingValgtPanel.stories.tsx | 34 + .../IngenBehandlingValgtPanel.tsx | 25 + .../NetworkErrorPage.stories.tsx | 25 + .../sak/feilmeldinger/NetworkErrorPage.tsx | 29 + .../feilmeldinger/NotFoundPage.stories.tsx | 21 + .../src/sak/feilmeldinger}/NotFoundPage.tsx | 13 +- .../UnauthorizedPage.stories.tsx | 21 + .../sak/feilmeldinger}/UnauthorizedPage.tsx | 13 +- .../ingenBehandlingValgtPanel.module.css | 0 .../ingenBehandlingValgtPanel.module.d.css.ts | 5 + .../sak/meldinger/FritekstForslagSelect.tsx | 1 - .../gui/src/sak/meldinger/FritekstInput.tsx | 2 +- .../v2/gui/src/sak/meldinger/MalSelect.tsx | 1 - .../src/sak/meldinger/Messages.stories.tsx | 107 +- .../v2/gui/src/sak/meldinger/Messages.tsx | 2 +- .../gui/src/sak/meldinger/MottakerSelect.tsx | 13 +- .../TredjepartsmottakerInput.stories.tsx | 3 +- .../meldinger/TredjepartsmottakerInput.tsx | 14 +- .../src/storybook/decorators/withMaxWidth.tsx | 1 - .../storybook/decorators/withStoryReload.tsx | 2 +- .../gui/src/storybook/mocks/alleKodeverk.json | 5 + packages/v2/tsconfig.json | 2 +- public/mockServiceWorker.js | 4 +- tsconfig.json | 2 +- vite.config.js | 6 + yarn.lock | 2739 ++++++++--------- 318 files changed, 4861 insertions(+), 6339 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.cjs create mode 100644 eslint.config.mjs delete mode 100644 eslint/eslintrc.common.cjs delete mode 100644 "packages/fakta-medisinsk-vilk\303\245r/postcss.config.js" delete mode 100644 packages/fakta-medlemskap/src/MedlemskapFaktaIndex.jsx create mode 100644 packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx create mode 100644 packages/fakta-medlemskap/src/MedlemskapFaktaIndex.tsx delete mode 100644 packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.jsx create mode 100644 packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.tsx create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MerknaderFraBeslutter.ts create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Opphold.ts delete mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.jsx delete mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.spec.tsx create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx delete mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.jsx delete mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.spec.tsx create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.tsx delete mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.jsx delete mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.spec.tsx create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Periode.tsx rename packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/{PerioderMedMedlemskapFaktaPanel.jsx => PerioderMedMedlemskapFaktaPanel.tsx} (54%) create mode 100644 packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Soknad.ts delete mode 100644 packages/fakta-medlemskap/src/propTypes/medlemskapAksjonspunkterPropType.jsx delete mode 100644 packages/fakta-medlemskap/src/propTypes/medlemskapBehandlingPropType.jsx delete mode 100644 packages/fakta-medlemskap/src/propTypes/medlemskapInntektArbeidYtelsePropType.jsx delete mode 100644 packages/fakta-medlemskap/src/propTypes/medlemskapMedlemskapPropType.jsx delete mode 100644 packages/fakta-medlemskap/src/propTypes/medlemskapSoknadPropType.jsx rename packages/fakta-om-barnet/{postcss.config.js => postcss.config.cjs} (81%) rename packages/fakta-om-barnet/{tailwind.config.js => tailwind.config.cjs} (100%) rename packages/{fakta-etablert-tilsyn/postcss.config.js => fakta-omsorgen-for/postcss.config.cjs} (100%) delete mode 100644 packages/fakta-omsorgen-for/postcss.config.js create mode 100644 packages/form/src/hook-form/FaktaBegrunnelseTextFieldRHF.tsx create mode 100644 packages/form/src/hook-form/faktaBegrunnelseTextField.module.css create mode 100644 packages/form/src/hook-form/formUtils.ts delete mode 100644 packages/prop-types/src/arbeidsforholdPropType.jsx delete mode 100644 packages/prop-types/src/behandlingIListePropType.jsx delete mode 100644 packages/prop-types/src/beregningresultatMedUttaksplanPropType.jsx delete mode 100644 packages/prop-types/src/fagsakPropType.jsx delete mode 100644 packages/prop-types/src/personopplysningPropType.jsx create mode 100644 packages/prosess-felles/src/vilkar/VilkarResultPickerPeriodisertRHF.tsx create mode 100644 packages/prosess-felles/src/vilkar/VilkarResultPickerRHF.tsx rename packages/prosess-omsorgsdager/{postcss.config.js => postcss.config.cjs} (100%) rename packages/{fakta-inntektsmelding/postcss.config.js => prosess-uttak/postcss.config.cjs} (100%) delete mode 100644 packages/prosess-uttak/postcss.config.js create mode 100644 packages/prosess-vedtak/src/components/FritekstRedigering/FritekstEditor.stories.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-old/OverstyrBekreftKnappPanel.spec.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-old/OverstyrBekreftKnappPanel.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-old/VilkarBegrunnelse.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-old/VilkarresultatMedBegrunnelse.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-old/VilkarresultatMedOverstyringHeader.spec.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-old/VilkarresultatMedOverstyringHeader.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-old/vilkarBegrunnelse.module.css create mode 100644 packages/prosess-vilkar-overstyring/src/components-periodisert/FormState.ts delete mode 100644 packages/prosess-vilkar-overstyring/src/components-periodisert/VilkarresultatMedOverstyringForm.spec.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-periodisert/VilkarresultatMedOverstyringForm.tsx rename packages/prosess-vilkar-overstyring/src/{components-old/VilkarresultatMedOverstyringForm.spec.tsx => components-periodisert/VilkarresultatMedOverstyringFormPeriodisert.spec.tsx} (76%) rename packages/prosess-vilkar-overstyring/src/{components-old/VilkarresultatMedOverstyringForm.tsx => components-periodisert/VilkarresultatMedOverstyringFormPeriodisert.tsx} (54%) delete mode 100644 packages/prosess-vilkar-overstyring/src/components-periodisert/VilkarresultatMedOverstyringHeader.spec.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-periodisert/VilkarresultatMedOverstyringHeader.tsx delete mode 100644 packages/prosess-vilkar-overstyring/src/components-periodisert/vilkarresultatMedOverstyringForm.module.css rename packages/prosess-vilkar-overstyring/src/{components-old/vilkarresultatMedOverstyringForm.module.css => components-periodisert/vilkarresultatMedOverstyringFormPeriodisert.module.css} (100%) create mode 100644 packages/prosess-vilkar-overstyring/src/components/FormState.ts create mode 100644 packages/rest-api-hooks/src/error/extractErrorInfo.ts create mode 100644 packages/sak-app/src/app/ErrorBoundary.stories.tsx delete mode 100644 packages/sak-infosider/i18n/nb_NO.json delete mode 100644 packages/sak-infosider/index.ts delete mode 100644 packages/sak-infosider/package.json delete mode 100644 packages/sak-infosider/src/ErrorPage.spec.tsx delete mode 100644 packages/sak-infosider/src/ErrorPage.tsx delete mode 100644 packages/sak-infosider/src/ForbiddenPage.spec.tsx delete mode 100644 packages/sak-infosider/src/ForbiddenPage.tsx delete mode 100644 packages/sak-infosider/src/InfosiderSakIndex.stories.tsx delete mode 100644 packages/sak-infosider/src/IngenBehandlingValgtPanel.spec.tsx delete mode 100644 packages/sak-infosider/src/IngenBehandlingValgtPanel.tsx delete mode 100644 packages/sak-infosider/src/NotFoundPage.spec.tsx delete mode 100644 packages/sak-infosider/src/UnauthorizedPage.spec.tsx delete mode 100644 packages/sak-infosider/src/components/ErrorPageWrapper.spec.tsx delete mode 100644 packages/sak-infosider/src/components/ErrorPageWrapper.tsx delete mode 100644 packages/sak-infosider/src/components/errorPageWrapper.module.css create mode 100644 packages/v2/gui/src/sak/feilmeldinger/BigError.stories.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/BigError.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/ErrorPage.stories.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/ErrorPage.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/ForbiddenPage.stories.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/ForbiddenPage.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/IngenBehandlingValgtPanel.stories.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/IngenBehandlingValgtPanel.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/NetworkErrorPage.stories.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/NetworkErrorPage.tsx create mode 100644 packages/v2/gui/src/sak/feilmeldinger/NotFoundPage.stories.tsx rename packages/{sak-infosider/src => v2/gui/src/sak/feilmeldinger}/NotFoundPage.tsx (54%) create mode 100644 packages/v2/gui/src/sak/feilmeldinger/UnauthorizedPage.stories.tsx rename packages/{sak-infosider/src => v2/gui/src/sak/feilmeldinger}/UnauthorizedPage.tsx (53%) rename packages/{sak-infosider/src => v2/gui/src/sak/feilmeldinger}/ingenBehandlingValgtPanel.module.css (100%) create mode 100644 packages/v2/gui/src/sak/feilmeldinger/ingenBehandlingValgtPanel.module.d.css.ts diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 4e2f564b8a..0000000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -mockServiceWorker.js diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index f67cd9b1b8..0000000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./eslint/eslintrc.dev.cjs'); diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 442ad35650..2c6998bbee 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -13,7 +13,7 @@ updates: registries: - npm-github groups: - patch: + patch-and-minor: patterns: - '*' update-types: @@ -23,6 +23,7 @@ updates: - 'react*' - '@types/react' - '@navikt*' + - 'eslint-plugin-vitest' # version 0.5.4 requires eslint version 9 storybook: update-types: - 'major' diff --git a/.github/workflows/deploy-docker-image.yml b/.github/workflows/deploy-docker-image.yml index 4dd5fb3626..65910e5a13 100644 --- a/.github/workflows/deploy-docker-image.yml +++ b/.github/workflows/deploy-docker-image.yml @@ -61,12 +61,15 @@ jobs: secrets: inherit permissions: id-token: write + contents: read packages: read - uses: navikt/sif-gha-workflows/.github/workflows/verdikjede-test.yml@main + uses: navikt/sif-gha-workflows/.github/workflows/verdikjede-test-v2.yml@main needs: build-docker-image with: tag: ${{ needs.build-docker-image.outputs.tag }} - frontend_only: 'true' + suites: "frontend" + image_version: ${{ needs.build-docker-image.outputs.tag }} + trivy: needs: [build-docker-image] uses: navikt/sif-gha-workflows/.github/workflows/trivy.yml@main diff --git a/_mocks/featureToggles.ts b/_mocks/featureToggles.ts index 97109fe038..2209e5d8a2 100644 --- a/_mocks/featureToggles.ts +++ b/_mocks/featureToggles.ts @@ -45,6 +45,10 @@ export const featureTogglesFactory = () => [ key: 'AKSJONSPUNKT_9015', value: process.env.VITE_AKSJONSPUNKT_9015, }, + { + key: "ALDERSVILKAR_KRONISK_SYK", + value: process.env.VITE_ALDERSVILKAR_KRONISK_SYK + }, { key: 'FRITEKST_REDIGERING', value: process.env.VITE_FRITEKST_REDIGERING, @@ -72,5 +76,9 @@ export const featureTogglesFactory = () => [ { key: 'NYE_NOKKELTALL', value: process.env.VITE_NYE_NOKKELTALL, + }, + { + key: 'UTVIDET_VARSELFELT', + value: process.env.VITE_UTVIDET_VARSELFELT, } ]; diff --git a/deploy/dev-fss-k9saksbehandling.yml b/deploy/dev-fss-k9saksbehandling.yml index 837cdc13d3..fad9b01ca0 100644 --- a/deploy/dev-fss-k9saksbehandling.yml +++ b/deploy/dev-fss-k9saksbehandling.yml @@ -87,6 +87,8 @@ spec: value: "true" - name: AKSJONSPUNKT_9015 value: "true" + - name: ALDERSVILKAR_KRONISK_SYK + value: "true" - name: FRITEKST_REDIGERING value: "true" - name: INKLUDER_KALENDER_PILS @@ -105,3 +107,5 @@ spec: value: "true" - name: NYE_NOKKELTALL value: "true" + - name: UTVIDET_VARSELFELT + value: "true" diff --git a/deploy/prod-fss-k9saksbehandling.yml b/deploy/prod-fss-k9saksbehandling.yml index 00de4ebbf4..3bb19e1e68 100644 --- a/deploy/prod-fss-k9saksbehandling.yml +++ b/deploy/prod-fss-k9saksbehandling.yml @@ -84,6 +84,8 @@ spec: value: "true" - name: AKSJONSPUNKT_9015 value: "true" + - name: ALDERSVILKAR_KRONISK_SYK + value: "false" - name: FRITEKST_REDIGERING value: "true" - name: INKLUDER_KALENDER_PILS @@ -102,3 +104,5 @@ spec: value: "true" - name: NYE_NOKKELTALL value: "false" + - name: UTVIDET_VARSELFELT + value: "false" diff --git a/envDir/.env.development b/envDir/.env.development index 695d3b4f02..71e32718b9 100644 --- a/envDir/.env.development +++ b/envDir/.env.development @@ -10,6 +10,7 @@ VITE_LOS_MARKER_BEHANDLING=true VITE_LOS_MARKER_BEHANDLING_SUBMIT=true VITE_AKSJONSPUNKT_9014=true VITE_AKSJONSPUNKT_9015=true +VITE_ALDERSVILKAR_KRONISK_SYK=true VITE_FRITEKST_REDIGERING=true VITE_FIX_SOKNADSFRIST_KALENDER_OG_READONLY=true VITE_INKLUDER_KALENDER_PILS=true diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000..e5a89bcb39 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,74 @@ +// @ts-check + +import eslint from '@eslint/js'; +import configPrettier from 'eslint-config-prettier'; +import globals from "globals"; +import tseslint from 'typescript-eslint'; +import pluginReact from 'eslint-plugin-react' +import pluginJsxA11y from 'eslint-plugin-jsx-a11y'; +import pluginVitest from 'eslint-plugin-vitest'; +// Viss vi ønsker eslint-plugin-jest-dom aktivert: import pluginJestDom from 'eslint-plugin-jest-dom'; +// ^- Rapporterer ein del feil, så virker ikkje å ha vore aktivert før. + + +const OFF = 0; +const WARN = 1; +const ERROR = 2; + +const config = tseslint.config( + eslint.configs.recommended, + ...tseslint.configs.recommended, + configPrettier, + pluginReact.configs.flat['jsx-runtime'], + pluginJsxA11y.flatConfigs.recommended, + pluginVitest.configs.recommended, + // Viss vi ønsker jest-dom plugin aktivert: pluginJestDom.configs["flat/recommended"], + { + languageOptions: { + globals: { + ...globals.browser, + }, + }, + linterOptions: { + // Vurder å enable denne seinare + reportUnusedDisableDirectives: false + }, + rules: { + '@typescript-eslint/no-explicit-any': OFF, + '@typescript-eslint/no-unused-vars': [ + "error", + { + varsIgnorePattern: "React" // TODO Fjern denne og samtidig alle ubrukte React imports. Unødvendig etter overgang til react-jsx i tsconfig + } + ], + 'jsx-a11y/no-autofocus': OFF, // Skrudd av ved migrering til jsx-a11y recommended config. Vurder å fikse seinare. + 'jsx-a11y/anchor-is-valid': OFF, + } + }, + { + files: ["**/*.cjs"], + rules: { + '@typescript-eslint/no-var-requires': OFF, + }, + languageOptions: { + globals: { + require: true, + module: true, + } + } + }, + { + files: ["packages/v2/**.*.ts", "packages/v2/**.*.tsx"], + rules: { + '@typescript-eslint/no-explicit-any': ERROR + } + }, + { + files: ["**/KroniskSykObjektTilMikrofrontend.ts"], + rules: { + 'no-constant-binary-expression': OFF // TODO Fiks denne, sannsynlegvis bug + } + } +) + +export default config diff --git a/eslint/eslintrc.common.cjs b/eslint/eslintrc.common.cjs deleted file mode 100644 index 28061b5409..0000000000 --- a/eslint/eslintrc.common.cjs +++ /dev/null @@ -1,138 +0,0 @@ -const OFF = 0; -const ERROR = 2; - -const config = { - env: { - browser: true, - }, - - globals: { - VERSION: 'off', - vi: true, - }, - - parser: '@typescript-eslint/parser', - - plugins: ['import', 'vitest', '@typescript-eslint'], - - extends: ['airbnb', 'plugin:@typescript-eslint/recommended', "plugin:vitest/recommended", 'prettier'], - - parserOptions: { - sourceType: 'module', - ecmaFeatures: { - ecmaVersion: 2020, - jsx: true, - impliedStrict: true, - }, - }, - - "settings": { - "import/parsers": { - "@typescript-eslint/parser": [".ts", ".tsx", ".js", ".jsx"] - }, - "import/resolver": { - "typescript": { - "alwaysTryTypes": true, - } - } - }, - - rules: { - // Disabled since unresolved imports will be detected by typescript and vite build. Also, couldn't get it to work when - // importing typescript modules (ESM) exported from a package with the modern "exports" clause. (*.js extension problem) - 'import/no-unresolved': OFF, - - // import/no-cycle rule apparently started working when import/resolver was changed to typescript. It found lots of - // existing problems, so disabled it for now. - 'import/no-cycle': OFF, - // Disabled since we want to start using .js extensions when importing. Because that makes importing from packages - // using a simple wildcard (/*) "exports" clause possible, and gives a better dx. Especially in VS Code, path lookup - // from such packages works well then. - 'import/extensions': OFF, - 'linebreak-style': OFF, - 'import/no-named-as-default': OFF, - // 'max-len': [1, 160], - "max-len": ["error", { "code": 160, "ignoreTemplateLiterals": true, "ignoreStrings": true }], - 'no-undef': ERROR, - 'react/require-default-props': OFF, - 'react/jsx-filename-extension': OFF, - 'react/static-property-placement': OFF, - 'react/state-in-constructor': OFF, - - 'function-paren-newline': OFF, - 'function-call-argument-newline': OFF, - // Want to be able to use for ... of loops: - 'no-restricted-syntax': ['off', 'ForOfStatement'], - 'no-restricted-exports': OFF, - // This rule got triggered even if the constructor was useful: - 'no-useless-constructor': OFF, - 'import/no-extraneous-dependencies': [ - 'error', - { devDependencies: ['**/*.spec.ts', '**/*.spec.tsx', '**/*.stories.tsx'] }, - ], - 'react/function-component-definition': [ - 'error', - { - namedComponents: 'arrow-function', - unnamedComponents: 'arrow-function', - }, - ], - 'import/prefer-default-export': OFF, - - // note you must disable the base rule as it can report incorrect errors - 'no-nested-ternary': OFF, - 'no-use-before-define': OFF, - '@typescript-eslint/no-use-before-define': [ERROR], - 'no-shadow': OFF, - '@typescript-eslint/no-shadow': [ERROR], - 'no-unused-vars': OFF, - '@typescript-eslint/no-unused-vars': [ERROR], - - // TODO (TOR) Ignorert inntil videre grunnet kost/nytte - 'react/no-unstable-nested-components': OFF, - 'prefer-regex-literals': OFF, - 'react/no-unused-prop-types': OFF, - 'max-classes-per-file': OFF, - 'jsx-a11y/anchor-is-valid': OFF, - 'jsx-a11y/control-has-associated-label': OFF, - 'react/jsx-props-no-spreading': OFF, - 'react/destructuring-assignment': OFF, - '@typescript-eslint/no-empty-function': OFF, - '@typescript-eslint/no-explicit-any': OFF, - '@typescript-eslint/ban-ts-comment': OFF, - '@typescript-eslint/explicit-module-boundary-types': OFF, - 'class-methods-use-this': OFF, - - // TODO Desse kan vel fjernast? - '@typescript-eslint/indent': OFF, - '@typescript-eslint/explicit-member-accessibility': OFF, - '@typescript-eslint/explicit-function-return-type': OFF, - '@typescript-eslint/ban-ts-ignore': OFF, - '@typescript-eslint/camelcase': OFF, - }, - overrides: [ - { - files: ['*.ts', '*.tsx', '*.jsx'], - rules: { - 'no-undef': OFF, - 'no-console': ["warn", { allow: ["warn", "error"] }], - - }, - }, - { - files: ['*.spec.jsx', '*.spec.tsx', '*.spec.ts'], - rules: { - 'no-unused-expressions': OFF, - 'no-console': OFF - }, - }, - { - files: ['*.tsx'], - rules: { - 'react/prop-types': OFF, - }, - }, - - ], -}; -module.exports = config; diff --git a/feature-toggles.json b/feature-toggles.json index 60777b3441..95521b80d6 100644 --- a/feature-toggles.json +++ b/feature-toggles.json @@ -43,6 +43,10 @@ "key": "AKSJONSPUNKT_9015", "value": "${AKSJONSPUNKT_9015}" }, + { + "key": "ALDERSVILKAR_KRONISK_SYK", + "value": "${ALDERSVILKAR_KRONISK_SYK}" + }, { "key": "FRITEKST_REDIGERING", "value": "${FRITEKST_REDIGERING}" @@ -78,5 +82,9 @@ { "key": "NYE_NOKKELTALL", "value": "${NYE_NOKKELTALL}" + }, + { + "key": "UTVIDET_VARSELFELT", + "value": "${UTVIDET_VARSELFELT}" } ] diff --git a/package.json b/package.json index 2fefeeb283..3b36ebe458 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "test:coverage": "vitest --coverage --selectProjects test", "test-storybook": "test-storybook --url http://127.0.0.1:9001 --testTimeout=30_000", "ts-check": "tsc --pretty && tsc --pretty --project packages/v2/tsconfig.json", - "lint": "eslint --cache packages --ext .ts,.tsx,.js,.jsx", + "lint": "eslint --cache packages", "lint:fix": "eslint --fix --cache packages --ext .ts,.tsx,.js,.jsx", "css:lint": "stylelint \"packages/**/*.css\"", "css:modules:typegen": "tcm ./packages/v2/gui --camelCase dashes --allowArbitraryExtensions ", @@ -43,16 +43,16 @@ ], "dependencies": { "@hookform/error-message": "^2.0.1", - "@navikt/aksel-icons": "6.12.0", - "@navikt/ds-css": "6.12.0", - "@navikt/ds-react": "6.12.0", - "@navikt/ds-tailwind": "^6.12.0", - "@navikt/familie-endringslogg": "12.0.2", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/aksel-icons": "6.13.0", + "@navikt/ds-css": "6.13.0", + "@navikt/ds-react": "6.13.0", + "@navikt/ds-tailwind": "^6.13.0", + "@navikt/familie-endringslogg": "13.1.1", + "@navikt/ft-plattform-komponenter": "3.0.4", "@popperjs/core": "2.11.8", - "@sentry/browser": "8.18.0", - "@sentry/react": "^8.18.0", - "axios": "1.7.2", + "@sentry/browser": "8.26.0", + "@sentry/react": "^8.26.0", + "axios": "1.7.4", "date-fns": "3.6.0", "date-fns-tz": "3.1.3", "history": "5.3.0", @@ -61,26 +61,26 @@ "postcss-import": "^16.1.0", "react": "18.3.1", "react-dom": "18.3.1", - "react-router": "6.24.0", - "react-router-dom": "6.24.0", + "react-router": "6.26.0", + "react-router-dom": "6.26.0", "vite-plugin-svgr": "4.2.0" }, "devDependencies": { - "@playwright/test": "^1.45.2", - "@sentry/cli": "2.32.2", - "@storybook/addon-a11y": "^8.2.4", - "@storybook/addon-actions": "^8.2.4", - "@storybook/addon-docs": "^8.2.4", - "@storybook/addon-essentials": "^8.2.4", - "@storybook/addon-interactions": "^8.2.4", - "@storybook/cli": "^8.2.4", - "@storybook/react": "^8.2.4", - "@storybook/react-vite": "^8.2.4", - "@storybook/test": "^8.2.4", + "@playwright/test": "^1.46.0", + "@sentry/cli": "2.33.1", + "@storybook/addon-a11y": "^8.2.9", + "@storybook/addon-actions": "^8.2.9", + "@storybook/addon-docs": "^8.2.9", + "@storybook/addon-essentials": "^8.2.9", + "@storybook/addon-interactions": "^8.2.9", + "@storybook/cli": "^8.2.9", + "@storybook/react": "^8.2.9", + "@storybook/react-vite": "^8.2.9", + "@storybook/test": "^8.2.9", "@storybook/test-runner": "^0.19.1", - "@storybook/theming": "^8.2.4", - "@testing-library/dom": "10.3.2", - "@testing-library/jest-dom": "^6.4.6", + "@storybook/theming": "^8.2.9", + "@testing-library/dom": "10.4.0", + "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "16.0.0", "@testing-library/user-event": "14.5.2", "@types/history": "5.0.0", @@ -89,55 +89,54 @@ "@types/react-collapse": "5.0.4", "@types/react-router-dom": "5.3.3", "@types/redux-form": "8.3.11", - "@typescript-eslint/eslint-plugin": "7.16.1", - "@typescript-eslint/parser": "^7.16.1", "@vitejs/plugin-react": "^4.3.1", - "autoprefixer": "^10.4.19", - "axios-mock-adapter": "1.22.0", + "autoprefixer": "^10.4.20", + "axios-mock-adapter": "2.0.0", "cross-env": "7.0.3", - "eslint": "8.57.0", - "eslint-config-airbnb": "19.0.4", + "eslint": "9.9.0", "eslint-config-prettier": "9.1.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "2.29.1", - "eslint-plugin-jest-dom": "5.4.0", "eslint-plugin-jsx-a11y": "6.9.0", - "eslint-plugin-react": "7.34.4", - "eslint-plugin-storybook": "0.8.0", - "eslint-plugin-vitest": "^0.4.1", - "husky": "9.1.0", - "jsdom": "24.1.0", - "lint-staged": "15.2.7", - "msw": "2.3.1", + "eslint-plugin-react": "7.35.0", + "eslint-plugin-vitest": "~0.5.4", + "globals": "^15.9.0", + "husky": "9.1.4", + "jsdom": "24.1.1", + "lint-staged": "15.2.9", + "msw": "2.3.5", "msw-storybook-addon": "^2.0.3", - "postcss": "^8.4.39", + "postcss": "^8.4.41", "prettier": "3.3.3", "react-popper": "2.3.0", - "storybook": "^8.2.4", - "stylelint": "16.7.0", + "storybook": "^8.2.9", + "stylelint": "16.8.2", "stylelint-config-standard": "^36.0.1", "stylelint-order": "6.0.4", - "tailwindcss": "^3.4.4", + "tailwindcss": "^3.4.10", "typed-css-modules": "^0.9.1", - "typescript": "5.5.3", - "vite": "^5.3.4", + "typescript": "5.5.4", + "typescript-eslint": "^7.18.0", + "vite": "^5.4.1", "vite-plugin-html": "^3.2.2", - "vitest": "2.0.3", + "vitest": "2.0.5", "vitest-axe": "0.1.0" }, "resolutions": { - "postcss": "8.4.39", + "postcss": "8.4.41", "parse-url": "8.1.0", - "@types/react": "17", - "@editorjs/editorjs": "2.27.2" + "@types/react": "17" }, "msw": { "workerDirectory": "public" }, "lint-staged": { - "packages/**/*.{ts,tsx,js,jsx}": "eslint --cache --fix", - "packages/**/*.css": "stylelint --fix", - "packages/**/*.{ts,tsx,js,jsx,css}": "prettier --write" + "packages/**/!(*.module.d.css).(ts|tsx|js|jsx)": [ + "eslint --cache --fix", + "prettier --write" + ], + "packages/**/*.css": [ + "stylelint --fix", + "prettier --write" + ] }, "packageManager": "yarn@3.4.1" } diff --git a/packages/behandling-felles/package.json b/packages/behandling-felles/package.json index c079eb7f7f..51a27744de 100644 --- a/packages/behandling-felles/package.json +++ b/packages/behandling-felles/package.json @@ -16,7 +16,7 @@ "@k9-sak-web/modal-sett-pa-vent": "1.0.0", "@k9-sak-web/rest-api-hooks": "1.0.0", "@k9-sak-web/types": "1.0.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ft-plattform-komponenter": "3.0.4", "classnames": "2.5.1", "react": "18.3.1", "react-intl": "6.6.8", diff --git a/packages/behandling-frisinn/package.json b/packages/behandling-frisinn/package.json index 0076748965..eca812fa12 100644 --- a/packages/behandling-frisinn/package.json +++ b/packages/behandling-frisinn/package.json @@ -18,8 +18,8 @@ "@k9-sak-web/rest-api": "1.0.0", "@k9-sak-web/rest-api-hooks": "1.0.0", "@k9-sak-web/types": "1.0.0", - "@navikt/ft-fakta-beregning-redesign": "1.2.17", - "@navikt/ft-prosess-beregningsgrunnlag": "6.5.22", + "@navikt/ft-fakta-beregning-redesign": "1.2.21", + "@navikt/ft-prosess-beregningsgrunnlag": "6.5.26", "react": "18.3.1", "react-intl": "6.6.8" } diff --git a/packages/behandling-klage/src/components/KlageProsess.spec.tsx b/packages/behandling-klage/src/components/KlageProsess.spec.tsx index 93f19f47dd..8679b8ce2c 100644 --- a/packages/behandling-klage/src/components/KlageProsess.spec.tsx +++ b/packages/behandling-klage/src/components/KlageProsess.spec.tsx @@ -1,4 +1,3 @@ -/* eslint-disable vitest/no-commented-out-tests */ import React from 'react'; import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; diff --git a/packages/behandling-omsorgspenger/package.json b/packages/behandling-omsorgspenger/package.json index 9352971b54..fc170eb445 100644 --- a/packages/behandling-omsorgspenger/package.json +++ b/packages/behandling-omsorgspenger/package.json @@ -31,9 +31,9 @@ "@k9-sak-web/rest-api": "1.0.0", "@k9-sak-web/rest-api-hooks": "1.0.0", "@k9-sak-web/types": "1.0.0", - "@navikt/ft-fakta-beregning-redesign": "1.2.17", - "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.18", - "@navikt/ft-prosess-beregningsgrunnlag": "6.5.22", + "@navikt/ft-fakta-beregning-redesign": "1.2.21", + "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.22", + "@navikt/ft-prosess-beregningsgrunnlag": "6.5.26", "react": "18.3.1", "react-intl": "6.6.8" } diff --git a/packages/behandling-opplaeringspenger/package.json b/packages/behandling-opplaeringspenger/package.json index 4a385a755b..bea941be5b 100644 --- a/packages/behandling-opplaeringspenger/package.json +++ b/packages/behandling-opplaeringspenger/package.json @@ -35,10 +35,10 @@ "@k9-sak-web/rest-api-hooks": "1.0.0", "@k9-sak-web/sak-app": "1.0.0", "@k9-sak-web/types": "1.0.0", - "@navikt/ft-fakta-beregning-redesign": "1.2.17", - "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.18", - "@navikt/ft-prosess-beregningsgrunnlag": "6.5.22", - "axios": "1.7.2", + "@navikt/ft-fakta-beregning-redesign": "1.2.21", + "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.22", + "@navikt/ft-prosess-beregningsgrunnlag": "6.5.26", + "axios": "1.7.4", "react": "18.3.1", "react-intl": "6.6.8" } diff --git a/packages/behandling-pleiepenger-sluttfase/package.json b/packages/behandling-pleiepenger-sluttfase/package.json index cf9c3de3f7..7eb910ad1f 100644 --- a/packages/behandling-pleiepenger-sluttfase/package.json +++ b/packages/behandling-pleiepenger-sluttfase/package.json @@ -31,10 +31,10 @@ "@k9-sak-web/rest-api-hooks": "1.0.0", "@k9-sak-web/sak-app": "1.0.0", "@k9-sak-web/types": "1.0.0", - "@navikt/ft-fakta-beregning-redesign": "1.2.17", - "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.18", - "@navikt/ft-prosess-beregningsgrunnlag": "6.5.22", - "axios": "1.7.2", + "@navikt/ft-fakta-beregning-redesign": "1.2.21", + "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.22", + "@navikt/ft-prosess-beregningsgrunnlag": "6.5.26", + "axios": "1.7.4", "react": "18.3.1", "react-intl": "6.6.8" } diff --git a/packages/behandling-pleiepenger/package.json b/packages/behandling-pleiepenger/package.json index 4b0451d57b..fc30a575e1 100644 --- a/packages/behandling-pleiepenger/package.json +++ b/packages/behandling-pleiepenger/package.json @@ -36,10 +36,10 @@ "@k9-sak-web/sak-app": "1.0.0", "@k9-sak-web/types": "1.0.0", "@navikt/diagnosekoder": "^1.2024.0", - "@navikt/ft-fakta-beregning-redesign": "1.2.17", - "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.18", - "@navikt/ft-prosess-beregningsgrunnlag": "6.5.22", - "axios": "1.7.2", + "@navikt/ft-fakta-beregning-redesign": "1.2.21", + "@navikt/ft-fakta-fordel-beregningsgrunnlag": "7.5.22", + "@navikt/ft-prosess-beregningsgrunnlag": "6.5.26", + "axios": "1.7.4", "react": "18.3.1", "react-intl": "6.6.8" } diff --git a/packages/behandling-tilbakekreving/package.json b/packages/behandling-tilbakekreving/package.json index 6562a9e145..b91e2db417 100644 --- a/packages/behandling-tilbakekreving/package.json +++ b/packages/behandling-tilbakekreving/package.json @@ -16,8 +16,8 @@ "@k9-sak-web/rest-api": "1.0.0", "@k9-sak-web/rest-api-hooks": "1.0.0", "@k9-sak-web/types": "1.0.0", - "@navikt/ft-kodeverk": "^2.4.13", - "@navikt/ft-prosess-tilbakekreving-foreldelse": "3.3.17", + "@navikt/ft-kodeverk": "^2.4.15", + "@navikt/ft-prosess-tilbakekreving-foreldelse": "3.3.21", "react": "18.3.1", "react-intl": "6.6.8" } diff --git a/packages/behandling-tilbakekreving/src/BehandlingTilbakekrevingIndex.tsx b/packages/behandling-tilbakekreving/src/BehandlingTilbakekrevingIndex.tsx index cb97c7bf0b..151224b8b4 100644 --- a/packages/behandling-tilbakekreving/src/BehandlingTilbakekrevingIndex.tsx +++ b/packages/behandling-tilbakekreving/src/BehandlingTilbakekrevingIndex.tsx @@ -1,17 +1,19 @@ -import React, { useEffect, useState, useCallback } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; import { ReduxFormStateCleaner, Rettigheter, useSetBehandlingVedEndring } from '@k9-sak-web/behandling-felles'; -import { KodeverkMedNavn, Behandling, Fagsak, FagsakPerson } from '@k9-sak-web/types'; +import { Behandling, Fagsak, FagsakPerson, KodeverkMedNavn } from '@k9-sak-web/types'; import { LoadingPanel } from '@fpsak-frontend/shared-components'; import { RestApiState, useRestApiErrorDispatcher } from '@k9-sak-web/rest-api-hooks'; import { AlleKodeverk } from '@k9-sak-web/lib/kodeverk/types.js'; import TilbakekrevingPaneler from './components/TilbakekrevingPaneler'; import FetchedData from './types/fetchedDataTsType'; import { - restApiTilbakekrevingHooks, requestTilbakekrevingApi, + restApiTilbakekrevingHooks, TilbakekrevingBehandlingApiKeys, } from './data/tilbakekrevingBehandlingApi'; +import NetworkErrorPage from '@k9-sak-web/gui/sak/feilmeldinger/NetworkErrorPage.js'; +import { extractErrorInfo } from '../../rest-api-hooks/src/error/extractErrorInfo.js'; const tilbakekrevingData = [ { key: TilbakekrevingBehandlingApiKeys.AKSJONSPUNKTER }, @@ -124,7 +126,7 @@ const BehandlingTilbakekrevingIndex = ({ }; }, []); - const { data, state } = restApiTilbakekrevingHooks.useMultipleRestApi(tilbakekrevingData, { + const { data, state, error } = restApiTilbakekrevingHooks.useMultipleRestApi(tilbakekrevingData, { keepData: true, updateTriggers: [behandling?.versjon], suspendRequest: !behandling, @@ -135,6 +137,10 @@ const BehandlingTilbakekrevingIndex = ({ return ; } + if (state === RestApiState.ERROR) { + return ; + } + return ( <> { - if (featureToggles.AKSJONSPUNKT_9015) - return erFagytelseTypeAleneOmOmsorgen + if (featureToggles.AKSJONSPUNKT_9015) { + const visAlderProsessSteg = + erFagytelseTypeAleneOmOmsorgen || (erFagytelseTypeKroniskSyk && featureToggles.ALDERSVILKAR_KRONISK_SYK); + const harAldersvilkår = vilkar.some(v => v.vilkarType === vilkarType.ALDERSVILKAR_BARN); + + return visAlderProsessSteg && harAldersvilkår ? [ new AlderProsessStegPanelDef(), new InngangsvilkarProsessStegPanelDef(), @@ -21,6 +28,7 @@ const prosessStegUtvidetRettPanelDefinisjoner = ( new UtvidetRettProsessStegPanelDef(erFagytelseTypeAleneOmOmsorgen), new VedtakProsessStegPanelDef(), ]; + } return [ new InngangsvilkarProsessStegPanelDef(), diff --git a/packages/fakta-arbeidsforhold/src/ArbeidsforholdFaktaIndex.stories.tsx b/packages/fakta-arbeidsforhold/src/ArbeidsforholdFaktaIndex.stories.tsx index 1e2a9c37ae..07427da66f 100644 --- a/packages/fakta-arbeidsforhold/src/ArbeidsforholdFaktaIndex.stories.tsx +++ b/packages/fakta-arbeidsforhold/src/ArbeidsforholdFaktaIndex.stories.tsx @@ -1,4 +1,3 @@ -/* eslint-disable import/no-relative-packages */ import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import aksjonspunktStatus from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; import { action } from '@storybook/addon-actions'; diff --git a/packages/fakta-arbeidsforhold/src/components/arbeidsforholdDetaljer/LeggTilArbeidsforholdFelter.tsx b/packages/fakta-arbeidsforhold/src/components/arbeidsforholdDetaljer/LeggTilArbeidsforholdFelter.tsx index 8c4eb53e11..db4625d257 100644 --- a/packages/fakta-arbeidsforhold/src/components/arbeidsforholdDetaljer/LeggTilArbeidsforholdFelter.tsx +++ b/packages/fakta-arbeidsforhold/src/components/arbeidsforholdDetaljer/LeggTilArbeidsforholdFelter.tsx @@ -112,9 +112,9 @@ LeggTilArbeidsforholdFelter.validate = ( const { fomDato, tomDato } = values; if (fomDato && tomDato && moment(fomDato).isAfter(moment(tomDato))) { return { - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs tomDato: sluttdatoErrorMsg(formatDate(fomDato)), - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs fomDato: startdatoErrorMsg(formatDate(tomDato)), }; } diff --git a/packages/fakta-barn-og-overfoeringsdager/src/FaktaRammevedtakIndex.stories.tsx b/packages/fakta-barn-og-overfoeringsdager/src/FaktaRammevedtakIndex.stories.tsx index 0967c0a30b..564dd3b99a 100644 --- a/packages/fakta-barn-og-overfoeringsdager/src/FaktaRammevedtakIndex.stories.tsx +++ b/packages/fakta-barn-og-overfoeringsdager/src/FaktaRammevedtakIndex.stories.tsx @@ -8,7 +8,7 @@ export default { component: FaktaRammevedtakIndex, }; -// @ts-ignore +// @ts-expect-error Migrert frå ts-ignore const behandling: Behandling = { id: 1, versjon: 1, diff --git "a/packages/fakta-barn-og-overfoeringsdager/src/components/Overf\303\270ringsraderForm.tsx" "b/packages/fakta-barn-og-overfoeringsdager/src/components/Overf\303\270ringsraderForm.tsx" index 1884f9a61c..ce945ca50f 100644 --- "a/packages/fakta-barn-og-overfoeringsdager/src/components/Overf\303\270ringsraderForm.tsx" +++ "b/packages/fakta-barn-og-overfoeringsdager/src/components/Overf\303\270ringsraderForm.tsx" @@ -40,7 +40,7 @@ const mapStateToPropsFactory = (_initialState, initialOwnProps: Overføringsrade }; export default connect(mapStateToPropsFactory)( - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs behandlingForm({ enableReinitialize: true, })(OverføringsraderFormImpl), diff --git a/packages/fakta-direkte-overgang/package.json b/packages/fakta-direkte-overgang/package.json index 943a87fc28..04338a324a 100644 --- a/packages/fakta-direkte-overgang/package.json +++ b/packages/fakta-direkte-overgang/package.json @@ -7,7 +7,7 @@ "dependencies": { "@fpsak-frontend/kodeverk": "1.0.0", "@fpsak-frontend/shared-components": "1.0.0", - "dayjs": "1.11.11", + "dayjs": "1.11.12", "formik": "2.4.6", "react": "18.3.1", "react-intl": "6.6.8", diff --git a/packages/fakta-etablert-tilsyn/index.ts b/packages/fakta-etablert-tilsyn/index.ts index 05b9106588..0bdc827ef4 100644 --- a/packages/fakta-etablert-tilsyn/index.ts +++ b/packages/fakta-etablert-tilsyn/index.ts @@ -1,2 +1 @@ -// eslint-disable-next-line import/prefer-default-export export { default as EtablertTilsyn } from './src/ui/MainComponent'; diff --git a/packages/fakta-etablert-tilsyn/mock/api-mock.ts b/packages/fakta-etablert-tilsyn/mock/api-mock.ts index 4002a9ccba..60ccc928ce 100644 --- a/packages/fakta-etablert-tilsyn/mock/api-mock.ts +++ b/packages/fakta-etablert-tilsyn/mock/api-mock.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/prefer-default-export */ import { http, HttpResponse } from 'msw'; import { mockUrlPrepend } from './constants'; import mockedSykdom from './mocked-data/mockedSykdom'; diff --git a/packages/fakta-etablert-tilsyn/package.json b/packages/fakta-etablert-tilsyn/package.json index 13db9782d6..328b84ca98 100644 --- a/packages/fakta-etablert-tilsyn/package.json +++ b/packages/fakta-etablert-tilsyn/package.json @@ -10,22 +10,22 @@ "dev": "vite serve" }, "devDependencies": { - "vite": "^5.3.4", + "vite": "^5.4.1", "vite-plugin-node-polyfills": "^0.22.0" }, "dependencies": { - "@navikt/ds-css": "6.12.0", + "@navikt/ds-css": "6.13.0", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "6.12.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ds-react": "6.13.0", + "@navikt/ft-plattform-komponenter": "3.0.4", "@popperjs/core": "2.11.8", "classnames": "2.5.1", - "dayjs": "1.11.11", + "dayjs": "1.11.12", "lodash": "4.17.21", "react": "18.3.1", "react-collapse": "5.1.1", "react-dom": "18.3.1", - "react-hook-form": "7.52.0", + "react-hook-form": "7.52.2", "react-popper": "2.3.0" }, "msw": { diff --git a/packages/fakta-etablert-tilsyn/src/mock/browser.ts b/packages/fakta-etablert-tilsyn/src/mock/browser.ts index 73cb3ec1c6..68a85da417 100644 --- a/packages/fakta-etablert-tilsyn/src/mock/browser.ts +++ b/packages/fakta-etablert-tilsyn/src/mock/browser.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/prefer-default-export */ -/* eslint-disable import/no-extraneous-dependencies */ import { setupWorker } from 'msw/browser'; import { handlers } from '../../mock/api-mock'; diff --git a/packages/fakta-etablert-tilsyn/src/util/formats.ts b/packages/fakta-etablert-tilsyn/src/util/formats.ts index fc76eb9e67..74bcebb93e 100644 --- a/packages/fakta-etablert-tilsyn/src/util/formats.ts +++ b/packages/fakta-etablert-tilsyn/src/util/formats.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/prefer-default-export */ import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; diff --git a/packages/fakta-etablert-tilsyn/src/util/hooks.ts b/packages/fakta-etablert-tilsyn/src/util/hooks.ts index 9ba0566b70..31236c950d 100644 --- a/packages/fakta-etablert-tilsyn/src/util/hooks.ts +++ b/packages/fakta-etablert-tilsyn/src/util/hooks.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/prefer-default-export */ import { useEffect, useRef } from 'react'; export const usePrevious = value => { diff --git a/packages/fakta-etablert-tilsyn/vite.config.js b/packages/fakta-etablert-tilsyn/vite.config.js index e7b2b361fc..275062abc6 100644 --- a/packages/fakta-etablert-tilsyn/vite.config.js +++ b/packages/fakta-etablert-tilsyn/vite.config.js @@ -1,6 +1,4 @@ -// eslint-disable-next-line import/no-extraneous-dependencies import { defineConfig } from 'vite'; -// eslint-disable-next-line import/no-extraneous-dependencies import react from '@vitejs/plugin-react'; import { nodePolyfills } from 'vite-plugin-node-polyfills'; diff --git a/packages/fakta-felles/src/components/FaktaSubmitButton.tsx b/packages/fakta-felles/src/components/FaktaSubmitButton.tsx index c7b082253e..6f371c9103 100644 --- a/packages/fakta-felles/src/components/FaktaSubmitButton.tsx +++ b/packages/fakta-felles/src/components/FaktaSubmitButton.tsx @@ -99,7 +99,6 @@ const mapStateToProps = (state: any, ownProps: PureOwnProps): MappedOwnProps => hasEmptyRequiredFields: ownProps.doNotCheckForRequiredFields ? false : formNames.some(formName => - // @ts-ignore Fiks denne (reselect) hasBehandlingFormErrorsOfType(formName, behandlingId, behandlingVersjon, isRequiredMessage())(state), ), }; diff --git a/packages/fakta-inntektsmelding/index.ts b/packages/fakta-inntektsmelding/index.ts index cd83995094..2f501099a5 100644 --- a/packages/fakta-inntektsmelding/index.ts +++ b/packages/fakta-inntektsmelding/index.ts @@ -1,2 +1 @@ -// eslint-disable-next-line import/prefer-default-export export { default as Inntektsmelding } from './src/ui/MainComponent'; diff --git a/packages/fakta-inntektsmelding/mock/api-mock.ts b/packages/fakta-inntektsmelding/mock/api-mock.ts index 61b068030a..124e0cd79d 100644 --- a/packages/fakta-inntektsmelding/mock/api-mock.ts +++ b/packages/fakta-inntektsmelding/mock/api-mock.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/prefer-default-export */ import { http, HttpResponse } from 'msw'; import mockedKompletthetsdata from './mockedKompletthetsdata'; diff --git a/packages/fakta-inntektsmelding/package.json b/packages/fakta-inntektsmelding/package.json index 2d9c8d266a..8f437048b2 100644 --- a/packages/fakta-inntektsmelding/package.json +++ b/packages/fakta-inntektsmelding/package.json @@ -10,23 +10,23 @@ "author": "NAV IT", "license": "MIT", "devDependencies": { - "msw": "2.3.1", - "vite": "^5.3.4", + "msw": "2.3.5", + "vite": "^5.4.1", "vite-plugin-node-polyfills": "^0.22.0" }, "dependencies": { - "@navikt/ds-css": "6.12.0", + "@navikt/ds-css": "6.13.0", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "6.12.0", - "@navikt/ft-form-hooks": "4.4.16", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ds-react": "6.13.0", + "@navikt/ft-form-hooks": "5.0.0", + "@navikt/ft-plattform-komponenter": "3.0.4", "@popperjs/core": "2.11.8", "classnames": "2.5.1", - "dayjs": "1.11.11", + "dayjs": "1.11.12", "react": "18.3.1", "react-collapse": "5.1.1", "react-dom": "18.3.1", - "react-hook-form": "7.52.0", + "react-hook-form": "7.52.2", "react-popper": "2.3.0" }, "msw": { diff --git a/packages/fakta-inntektsmelding/src/mock/browser.ts b/packages/fakta-inntektsmelding/src/mock/browser.ts index 73cb3ec1c6..68a85da417 100644 --- a/packages/fakta-inntektsmelding/src/mock/browser.ts +++ b/packages/fakta-inntektsmelding/src/mock/browser.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/prefer-default-export */ -/* eslint-disable import/no-extraneous-dependencies */ import { setupWorker } from 'msw/browser'; import { handlers } from '../../mock/api-mock'; diff --git a/packages/fakta-inntektsmelding/src/util/utils.ts b/packages/fakta-inntektsmelding/src/util/utils.ts index 5aa239c379..2bf29f4721 100644 --- a/packages/fakta-inntektsmelding/src/util/utils.ts +++ b/packages/fakta-inntektsmelding/src/util/utils.ts @@ -3,7 +3,6 @@ import { Aksjonspunkt } from '@k9-sak-web/types'; import { Kode, TilstandBeriket } from '../types/KompletthetData'; import Status from '../types/TilstandStatus'; -// eslint-disable-next-line import/prefer-default-export export const finnAktivtAksjonspunkt = (aksjonspunkter: Aksjonspunkt[]): Aksjonspunkt => aksjonspunkter.find(aksjonspunkt => aksjonspunkt.status === 'OPPR'); diff --git a/packages/fakta-inntektsmelding/vite.config.js b/packages/fakta-inntektsmelding/vite.config.js index b0cd20dcc3..f354be8a4e 100644 --- a/packages/fakta-inntektsmelding/vite.config.js +++ b/packages/fakta-inntektsmelding/vite.config.js @@ -1,6 +1,4 @@ -// eslint-disable-next-line import/no-extraneous-dependencies import { defineConfig } from 'vite'; -// eslint-disable-next-line import/no-extraneous-dependencies import react from '@vitejs/plugin-react'; import { nodePolyfills } from 'vite-plugin-node-polyfills'; diff --git a/packages/fakta-institusjon/package.json b/packages/fakta-institusjon/package.json index 63646b5fff..000fb0ea07 100644 --- a/packages/fakta-institusjon/package.json +++ b/packages/fakta-institusjon/package.json @@ -7,7 +7,7 @@ "dependencies": { "@fpsak-frontend/form": "*", "@k9-sak-web/types": "*", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ft-plattform-komponenter": "3.0.4", "formik": "2.4.6" } } diff --git "a/packages/fakta-medisinsk-vilk\303\245r/index.ts" "b/packages/fakta-medisinsk-vilk\303\245r/index.ts" index d2de580259..8867c146c4 100644 --- "a/packages/fakta-medisinsk-vilk\303\245r/index.ts" +++ "b/packages/fakta-medisinsk-vilk\303\245r/index.ts" @@ -1,2 +1 @@ -// eslint-disable-next-line import/prefer-default-export export { default as MedisinskVilkår } from './src/ui/MainComponent'; diff --git "a/packages/fakta-medisinsk-vilk\303\245r/mock/handlers.ts" "b/packages/fakta-medisinsk-vilk\303\245r/mock/handlers.ts" index 40c5a7f607..f290560bce 100644 --- "a/packages/fakta-medisinsk-vilk\303\245r/mock/handlers.ts" +++ "b/packages/fakta-medisinsk-vilk\303\245r/mock/handlers.ts" @@ -1,4 +1,3 @@ -/* eslint-disable import/prefer-default-export */ import { Period } from '@fpsak-frontend/utils'; import { http, HttpResponse } from 'msw'; import Dokument, { Dokumenttype } from '../src/types/Dokument'; diff --git "a/packages/fakta-medisinsk-vilk\303\245r/package.json" "b/packages/fakta-medisinsk-vilk\303\245r/package.json" index 8cdc4e3e5a..6cf42697bc 100644 --- "a/packages/fakta-medisinsk-vilk\303\245r/package.json" +++ "b/packages/fakta-medisinsk-vilk\303\245r/package.json" @@ -11,26 +11,26 @@ }, "devDependencies": { "cors": "^2.8.5", - "msw": "2.3.1", - "vite": "^5.3.4", + "msw": "2.3.5", + "vite": "^5.4.1", "vite-plugin-node-polyfills": "^0.22.0" }, "dependencies": { "@fpsak-frontend/form": "1.0.0", "@navikt/diagnosekoder": "^1.2024.0", - "@navikt/ds-css": "6.12.0", + "@navikt/ds-css": "6.13.0", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "6.12.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ds-react": "6.13.0", + "@navikt/ft-plattform-komponenter": "3.0.4", "@popperjs/core": "2.11.8", - "@tanstack/react-query": "^5.51.8", - "axios": "1.7.2", + "@tanstack/react-query": "^5.51.23", + "axios": "1.7.4", "classnames": "2.5.1", - "dayjs": "1.11.11", + "dayjs": "1.11.12", "react": "18.3.1", "react-collapse": "5.1.1", "react-dom": "18.3.1", - "react-hook-form": "7.52.0", + "react-hook-form": "7.52.2", "react-outside-click-handler": "1.3.0", "react-popper": "2.3.0" }, diff --git "a/packages/fakta-medisinsk-vilk\303\245r/postcss.config.js" "b/packages/fakta-medisinsk-vilk\303\245r/postcss.config.js" deleted file mode 100644 index 7c6d6c73d3..0000000000 --- "a/packages/fakta-medisinsk-vilk\303\245r/postcss.config.js" +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} \ No newline at end of file diff --git "a/packages/fakta-medisinsk-vilk\303\245r/src/mocks/browser.ts" "b/packages/fakta-medisinsk-vilk\303\245r/src/mocks/browser.ts" index 28dc767b68..fad19b081b 100644 --- "a/packages/fakta-medisinsk-vilk\303\245r/src/mocks/browser.ts" +++ "b/packages/fakta-medisinsk-vilk\303\245r/src/mocks/browser.ts" @@ -1,5 +1,3 @@ -/* eslint-disable import/prefer-default-export */ -/* eslint-disable import/no-extraneous-dependencies */ import { setupWorker } from 'msw/browser'; import { handlers } from '../../mock/handlers'; diff --git "a/packages/fakta-medisinsk-vilk\303\245r/src/util/utils.ts" "b/packages/fakta-medisinsk-vilk\303\245r/src/util/utils.ts" index f2ffc2c5cf..5fed10acff 100644 --- "a/packages/fakta-medisinsk-vilk\303\245r/src/util/utils.ts" +++ "b/packages/fakta-medisinsk-vilk\303\245r/src/util/utils.ts" @@ -1,5 +1,4 @@ import FagsakYtelseType from '../constants/FagsakYtelseType'; -// eslint-disable-next-line import/prefer-default-export export const erFagsakOLPEllerPLS = (fagsakYtelseType: FagsakYtelseType) => [FagsakYtelseType.OPPLÆRINGSPENGER, FagsakYtelseType.PLEIEPENGER_SLUTTFASE].includes(fagsakYtelseType); diff --git "a/packages/fakta-medisinsk-vilk\303\245r/vite.config.js" "b/packages/fakta-medisinsk-vilk\303\245r/vite.config.js" index 42b9b59c6c..2d48a6fe08 100644 --- "a/packages/fakta-medisinsk-vilk\303\245r/vite.config.js" +++ "b/packages/fakta-medisinsk-vilk\303\245r/vite.config.js" @@ -1,6 +1,4 @@ -// eslint-disable-next-line import/no-extraneous-dependencies import { defineConfig } from 'vite'; -// eslint-disable-next-line import/no-extraneous-dependencies import react from '@vitejs/plugin-react'; import { nodePolyfills } from 'vite-plugin-node-polyfills'; diff --git a/packages/fakta-medlemskap/i18n/nb_NO.json b/packages/fakta-medlemskap/i18n/nb_NO.json index 5f2221d85a..3693c11929 100644 --- a/packages/fakta-medlemskap/i18n/nb_NO.json +++ b/packages/fakta-medlemskap/i18n/nb_NO.json @@ -1,128 +1,3 @@ { - "MedlemskapInfoPanel.ErSokerBosattINorge": "Vurder om søker er bosatt i Norge", - "MedlemskapInfoPanel.GyldigMedlemFolketrygden": "Vurder om søker har gyldig medlemskap i perioden", - "MedlemskapInfoPanel.EOSBorgerMedOppholdsrett": "Vurder om søker er EØS-borger med oppholdsrett", - "MedlemskapInfoPanel.IkkeEOSBorgerMedLovligOpphold": "Avklar om søker har lovlig opphold", - "MedlemskapInfoPanel.HarFortsattMedlemskap": "Vurder om søker fortsatt har gyldig medlemskap i perioden", - - "OppholdINorgeOgAdresserFaktaPanel.BosattAdresser": "Bostedsadresse fra folkeregisteret", - "OppholdINorgeOgAdresserFaktaPanel.Parent": "Den andre forelderen", - "OppholdINorgeOgAdresserFaktaPanel.ResidingInNorway": "Søker er bosatt i Norge", - "OppholdINorgeOgAdresserFaktaPanel.NotResidingInNorway": "Søker er ikke bosatt i Norge", - "OppholdINorgeOgAdresserFaktaPanel.OppholdINorge": "Opplysninger oppgitt i søknaden", - "OppholdINorgeOgAdresserFaktaPanel.StayingInNorway": "Opphold i Norge", - "OppholdINorgeOgAdresserFaktaPanel.StayingOutsideOfNorway": "Opphold utenfor Norge", - "OppholdINorgeOgAdresserFaktaPanel.StayingInNorwayLast12": "Opphold i Norge de siste 12 månedene", - "OppholdINorgeOgAdresserFaktaPanel.StayingInNorwayNext12": "Opphold i Norge de neste 12 månedene", - "OppholdINorgeOgAdresserFaktaPanel.Opphold": "Har opphold", - "OppholdINorgeOgAdresserFaktaPanel.IkkeOpphold": "Har ikke opphold", - "OppholdINorgeOgAdresserFaktaPanel.Yes": "Ja", - "OppholdINorgeOgAdresserFaktaPanel.No": "Nei", - - "PerioderMedMedlemskapFaktaPanel.ApplicationInformation": "Perioder med medlemskap", - "PerioderMedMedlemskapFaktaPanel.Period": "Periode", - "PerioderMedMedlemskapFaktaPanel.Coverage": "Dekning", - "PerioderMedMedlemskapFaktaPanel.Status": "Status", - "PerioderMedMedlemskapFaktaPanel.Date": "Beslutningsdato", - "PerioderMedMedlemskapFaktaPanel.Fodselsdato": "Fødselsdato: {dato}", - "PerioderMedMedlemskapFaktaPanel.Termindato": "Termindato: {dato}", - "PerioderMedMedlemskapFaktaPanel.Omsorgsovertakelse": "Dato for omsorgsovertakelse: {dato}", - "PerioderMedMedlemskapFaktaPanel.NoInformation": "Ingen registrerte opplysninger om medlemskap", - - "OppholdInntektOgPerioder.Bekreft": "Bekreft og fortsett", - "OppholdInntektOgPeriode.Oppdater": "Oppdater", - "OppholdInntektOgPeriode.Avbryt": "Avbryt", - - "MedlemskapEndringerTabell.GjeldeneFom": "Gjeldende f.o.m", - "MedlemskapEndringerTabell.Opplysning": "Opplysning", - - "StatusForBorgerFaktaPanel.ApplicationInformation": "Status for søker", - "StatusForBorgerFaktaPanel.CitizenEEA": "EØS borger", - "StatusForBorgerFaktaPanel.CitizenOutsideEEA": "Utenlandsk borger utenfor EØS", - "StatusForBorgerFaktaPanel.Oppholdsrett": "Oppholdsrett", - "StatusForBorgerFaktaPanel.HarOppholdsrett": "Søker har oppholdsrett", - "StatusForBorgerFaktaPanel.HarIkkeOppholdsrett": "Søker har ikke oppholdsrett", - "StatusForBorgerFaktaPanel.LovligOpphold": "Lovlig opphold", - "StatusForBorgerFaktaPanel.HarLovligOpphold": "Søker har lovlig opphold", - "StatusForBorgerFaktaPanel.HarIkkeLovligOpphold": "Søker har ikke lovlig opphold", - - "MerkePanel.Dod": "DØD", - "MerkePanel.DodTittel": "Personen er død", - "FaktaBegrunnelseTextField.Vurdering": "Vurdering", - "FaktaBegrunnelseTextField.BegrunnEndringene": "Begrunn endringene", - "BostedSokerView.ForeignAddresse": "Utenlandsadresse", - "BostedSokerFaktaIndex.Soker": "Søker", - "Personstatus.Hjelpetekst": "Personstatus", - "Personstatus.Ukjent": "Ukjent", - "Sivilstand.Hjelpetekst": "Sivilstand", - "BostedSokerView.Region": "Region", - "Behandling.EditedField": "Saksbehandler har endret feltets verdi", - "SubmitButton.ConfirmInformation": "Bekreft og fortsett", - "HelpText.Aksjonspunkt": "Aksjonspunkt", - "HelpText.Aksjonspunkt.BehandletAksjonspunkt": "Behandlet aksjonspunkt: ", - "ValidationMessage.NotEmpty": "Feltet må fylles ut", - "ValidationMessage.MinLength": "Du må skrive minst {length} tegn", - "ValidationMessage.MaxLength": "Du kan skrive maksimalt {length} tegn", - "ValidationMessage.MinValue": "Feltet må være større eller lik {length}", - "ValidationMessage.MaxValue": "Feltet må være mindre eller lik {length}", - "ValidationMessage.InvalidDate": "Dato må skrives slik : dd.mm.åååå", - "ValidationMessage.DateNotBeforeOrEqual": "Dato må være før eller lik {limit}", - "ValidationMessage.DateNotAfterOrEqual": "Dato må være etter eller lik {limit}", - "ValidationMessage.DateRangesOverlapping": "Perioder kan ikke overlappe i tid", - "ValidationMessage.DateRangesOverlappingPeriodTypes": "Perioder kan ikke overlappe i tid (uttak, utsettelse, gradering, overforing, opphold)", - "ValidationMessage.DatesNotEqual": "Dato må være lik {value}", - "ValidationMessage.InvalidInteger": "Tallet kan ikke ha desimaler", - "ValidationMessage.InvalidDecimal": "Tallet kan ikke inneholde mer enn to desimaler", - "ValidationMessage.InvalidDatesInPeriod": "Periode må skrives slik : dd.mm.åååå - dd.mm.åååå", - "ValidationMessage.InvalidPeriod": "Startdato må være før eller lik sluttdato", - "ValidationMessage.InvalidPeriodRange": "Periode er utenfor opptjeningsperioden", - "ValidationMessage.InvalidNumber": "Feltet kan kun inneholde tall", - "ValidationMessage.utbetalingsgradErMerSamtidigUttaksprosent": "Feltet kan ikke være høyere enn samtidig uttaksprosent", - "ValidationMessage.maxLengthOrFodselsnr": "Du kan skrive maksimalt {length} tegn eller et fødselsnummer (11 siffer)", - "ValidationMessage.Registrering.TerminEllerFoedselMessage": "Fyll ut informasjon om termindato eller fødselsdato", - "ValidationMessage.InvalidFodselsnummerFormat": "Feltet må være et fødselsnummer (11 siffer)", - "ValidationMessage.InvalidFodselsnummer": "Ugyldig fødselsnummer", - "ValidationMessage.SammeFodselsnummerSomSoker": "Fødselsnummer til den andre forelderen kan ikke være det samme som søker.", - "ValidationMessage.InvalidText": "Feltet inneholder ugyldige tegn: {text}", - "ValidationMessage.InvalidValue": "Feltet inneholder en ugyldig verdi: {value}", - "ValidationMessage.ArrayMinLength": "Listen må ha lengde større enn: {length}", - "ValidationMessage.InvalidSaksnummerOrFodselsnummerFormat": "Ugyldig saksnummer eller fødselsnummer", - "ValidationMessage.InvalidTrekkAntallDagerUttakForm": "Antall dager i {periode} kan ikke være høyere enn {maxDays}", - "ValidationMessage.InvalidTrekkDagerFlerbarnsdager": "Antall dager med flerbarnsdager kan ikke være høyere enn {maxDays}", - "ValidationMessage.NegativeSaldo": "Antall dager kan ikke overstige dagene som gjenstår på {periode}. Det er oppgitt {days} dager for mye.", - "ValidationMessage.InvalidStonadskonto": "Stønadskonto {konto} er ikke tilgjengelig", - "ValidationMessage.MinstEnPeriodeRequired": "Minst en av følgende perioder må være utfylt: fullt uttak, overføring av kvote, utsettelse eller gradering", - "ValidationMessage.trekkdagerErMerEnnNullUtsettelse": "Ingen trekkdager for utsettelse", - "ValidationMessage.utbetalingMerEnnNullUtsettelse": "Ingen utbetalingsgrad for utsettelse", - "ValidationMessage.ukerOgDagerVidNullUtbetalningsgradMessage": "Trekk minst en dag når utbetalingsgraden er høyre enn 0%", - "ValidationMessage.UtsettelseUtenFullArbeid": "Søker har ikke 100% stilling, vurder om perioden kan utsettes.", - "ValidationMessage.MerEn100Prosent": "Samlet utbetalingsgrad og andel i arbeid bør ikke overskride 100%.", - "ValidationMessage.MerEn100ProsentOgOgyldigUtsettlse": "Samlet utbetalingsgrad og andel i arbeid bør ikke overskride 100%. Søker har ikke 100% stilling, vurder om perioden kan utsettes.", - "ValidationMessage.InvalidOrganisasjonsnummer": "Ugyldig organisasjonsnummer.", - "Calendar.Day.0": "søndag", - "Calendar.Day.1": "mandag", - "Calendar.Day.2": "tirsdag", - "Calendar.Day.3": "onsdag", - "Calendar.Day.4": "torsdag", - "Calendar.Day.5": "fredag", - "Calendar.Day.6": "lørdag", - "Calendar.Day.Short.0": "søn", - "Calendar.Day.Short.1": "man", - "Calendar.Day.Short.2": "tir", - "Calendar.Day.Short.3": "ons", - "Calendar.Day.Short.4": "tor", - "Calendar.Day.Short.5": "fre", - "Calendar.Day.Short.6": "lør", - "Calendar.Month.0": "Januar", - "Calendar.Month.1": "Februar", - "Calendar.Month.2": "Mars", - "Calendar.Month.3": "April", - "Calendar.Month.4": "Mai", - "Calendar.Month.5": "Juni", - "Calendar.Month.6": "Juli", - "Calendar.Month.7": "August", - "Calendar.Month.8": "September", - "Calendar.Month.9": "Oktober", - "Calendar.Month.10": "November", - "Calendar.Month.11": "Desember" + "OppholdINorgeOgAdresserFaktaPanel.Parent": "Den andre forelderen" } diff --git a/packages/fakta-medlemskap/package.json b/packages/fakta-medlemskap/package.json index e53e8b533b..5e3614c01b 100644 --- a/packages/fakta-medlemskap/package.json +++ b/packages/fakta-medlemskap/package.json @@ -12,7 +12,8 @@ "@fpsak-frontend/shared-components": "1.0.0", "@fpsak-frontend/utils": "1.0.0", "@k9-sak-web/fakta-felles": "1.0.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ft-form-hooks": "5.0.0", + "@navikt/ft-plattform-komponenter": "3.0.4", "i18n-iso-countries": "7.11.3", "moment": "2.30.1", "prop-types": "15.8.1", diff --git a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.jsx b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.jsx deleted file mode 100644 index c487ee7ef1..0000000000 --- a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.jsx +++ /dev/null @@ -1,71 +0,0 @@ -import PropTypes from 'prop-types'; -import React from 'react'; -import { createIntl, createIntlCache, RawIntlProvider } from 'react-intl'; -import messages from '../i18n/nb_NO.json'; -import MedlemskapInfoPanel from './components/MedlemskapInfoPanel'; -import medlemskapAksjonspunkterPropType from './propTypes/medlemskapAksjonspunkterPropType'; -import medlemskapBehandlingPropType from './propTypes/medlemskapBehandlingPropType'; -import medlemskapMedlemskapPropType from './propTypes/medlemskapMedlemskapPropType'; -import medlemskapSoknadPropType from './propTypes/medlemskapSoknadPropType'; - -const cache = createIntlCache(); - -const intl = createIntl( - { - locale: 'nb-NO', - messages, - }, - cache, -); - -const MedlemskapFaktaIndex = ({ - behandling, - soknad, - medlemskap, - aksjonspunkter, - harApneAksjonspunkter, - submittable, - fagsakPerson, - alleMerknaderFraBeslutter, - alleKodeverk, - submitCallback, - readOnly, -}) => ( - - - -); - -MedlemskapFaktaIndex.propTypes = { - behandling: medlemskapBehandlingPropType.isRequired, - medlemskap: medlemskapMedlemskapPropType.isRequired, - soknad: medlemskapSoknadPropType, - aksjonspunkter: PropTypes.arrayOf(medlemskapAksjonspunkterPropType).isRequired, - fagsakPerson: PropTypes.shape().isRequired, - alleMerknaderFraBeslutter: PropTypes.shape({ - notAccepted: PropTypes.bool, - }).isRequired, - alleKodeverk: PropTypes.shape().isRequired, - submitCallback: PropTypes.func.isRequired, - readOnly: PropTypes.bool.isRequired, - harApneAksjonspunkter: PropTypes.bool.isRequired, - submittable: PropTypes.bool.isRequired, -}; - -export default MedlemskapFaktaIndex; diff --git a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx new file mode 100644 index 0000000000..e19312e49d --- /dev/null +++ b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.spec.tsx @@ -0,0 +1,94 @@ +import { composeStories, StoryFn } from '@storybook/react'; +import { screen, userEvent } from '@storybook/test'; +import { act, render } from '@testing-library/react'; +import MedlemskapFaktaIndex from './MedlemskapFaktaIndex'; +import * as stories from './MedlemskapFaktaIndex.stories'; + +describe('MedlemskapFaktaIndex', () => { + const { VisAksjonspunktForAlleAndreMedlemskapsaksjonspunkter } = composeStories(stories) as { + [key: string]: StoryFn>; + }; + it('skal formatere data ved innsending', async () => { + const onClickSpy = vi.fn(); + const props = { submitCallback: onClickSpy }; + render(); + await act(async () => { + expect(screen.getByText('Skogvegen 3, 4353 Klepp Stasjon')).toBeInTheDocument(); + await userEvent.click(screen.getByRole('radio', { name: 'Periode med medlemskap' })); + await userEvent.type(screen.getByRole('textbox', { name: 'Begrunn endringene' }), 'Dette er en begrunnelse'); + expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); + await userEvent.click(screen.getByRole('button', { name: 'Oppdater' })); + }); + await act(async () => { + await userEvent.click(screen.getByText('07.11.2018')); + }); + + await act(async () => { + expect(screen.queryByText('Skogvegen 3, 4353 Klepp Stasjon')).not.toBeInTheDocument(); + await userEvent.click(screen.getByRole('radio', { name: 'Periode med unntak fra medlemskap' })); + await userEvent.type(screen.getByRole('textbox', { name: 'Begrunn endringene' }), 'Dette er en begrunnelse'); + expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); + await userEvent.click(screen.getByRole('button', { name: 'Oppdater' })); + }); + + await act(async () => { + await userEvent.click(screen.getByRole('button', { name: 'Bekreft og fortsett' })); + }); + expect(onClickSpy).toHaveBeenCalledWith([ + { + bekreftedePerioder: [], + kode: '5020', + }, + { + bekreftedePerioder: [ + { + aksjonspunkter: ['5021'], + begrunnelse: 'Dette er en begrunnelse', + erEosBorger: null, + lovligOppholdVurdering: null, + medlemskapManuellVurderingType: 'UNNTAK', + oppholdsrettVurdering: null, + vurderingsdato: '2018-11-07', + }, + { + aksjonspunkter: ['5021'], + begrunnelse: 'Dette er en begrunnelse', + erEosBorger: null, + lovligOppholdVurdering: null, + medlemskapManuellVurderingType: 'MEDLEM', + oppholdsrettVurdering: null, + vurderingsdato: '2019-11-07', + }, + ], + kode: '5053', + }, + { + bekreftedePerioder: [ + { + aksjonspunkter: ['5021'], + begrunnelse: 'Dette er en begrunnelse', + erEosBorger: null, + lovligOppholdVurdering: null, + medlemskapManuellVurderingType: 'UNNTAK', + oppholdsrettVurdering: null, + vurderingsdato: '2018-11-07', + }, + { + aksjonspunkter: ['5021'], + begrunnelse: 'Dette er en begrunnelse', + erEosBorger: null, + lovligOppholdVurdering: null, + medlemskapManuellVurderingType: 'MEDLEM', + oppholdsrettVurdering: null, + vurderingsdato: '2019-11-07', + }, + ], + kode: '5021', + }, + { + bekreftedePerioder: [], + kode: '5023', + }, + ]); + }); +}); diff --git a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx index 4c5e6ff0df..4b02ad973d 100644 --- a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx +++ b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.stories.tsx @@ -1,13 +1,11 @@ import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import aksjonspunktStatus from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; import behandlingStatus from '@fpsak-frontend/kodeverk/src/behandlingStatus'; -import { action } from '@storybook/addon-actions'; -import React from 'react'; import { KodeverkProvider } from '@k9-sak-web/gui/kodeverk/index.js'; import alleKodeverkV2 from '@k9-sak-web/lib/kodeverk/mocks/alleKodeverkV2.json'; -import alleKodeverk from '@k9-sak-web/gui/storybook/mocks/alleKodeverk.json'; -import { behandlingType } from "@k9-sak-web/backend/k9sak/kodeverk/behandling/BehandlingType.js"; -import MedlemskapFaktaIndex from './MedlemskapFaktaIndex'; +import { behandlingType } from '@k9-sak-web/backend/k9sak/kodeverk/behandling/BehandlingType.js'; +import { action } from '@storybook/addon-actions'; +import MedlemskapFaktaIndex, { MedlemskapFaktaIndexProps } from './MedlemskapFaktaIndex'; const behandling = { id: 1, @@ -164,38 +162,37 @@ export default { component: MedlemskapFaktaIndex, }; -export const visAksjonspunktForAvklaringAvStartdatoForForeldrepengerperioden = args => ( +export const VisAksjonspunktForAvklaringOmBrukerErBosatt = args => ( ); -visAksjonspunktForAvklaringAvStartdatoForForeldrepengerperioden.args = { +VisAksjonspunktForAvklaringOmBrukerErBosatt.args = { behandling, medlemskap, soknad, arbeidsforhold, fagsakPerson, alleMerknaderFraBeslutter: { - [aksjonspunktCodes.AVKLAR_STARTDATO_FOR_FORELDREPENGERPERIODEN]: merknaderFraBeslutter, + [aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT]: merknaderFraBeslutter, }, isForeldrepengerFagsak: true, readOnly: false, @@ -204,12 +201,12 @@ visAksjonspunktForAvklaringAvStartdatoForForeldrepengerperioden.args = { submittable: true, }; -export const visAksjonspunktForAlleAndreMedlemskapsaksjonspunkter = args => ( +export const VisAksjonspunktForAlleAndreMedlemskapsaksjonspunkter = (args: MedlemskapFaktaIndexProps) => ( ( erAktivt: true, }, ]} - alleKodeverk={alleKodeverk} - submitCallback={action('button-click')} + submitCallback={args?.submitCallback || action('button-click')} {...args} /> ); -visAksjonspunktForAlleAndreMedlemskapsaksjonspunkter.args = { +VisAksjonspunktForAlleAndreMedlemskapsaksjonspunkter.args = { behandling, medlemskap, soknad, @@ -267,3 +263,30 @@ visAksjonspunktForAlleAndreMedlemskapsaksjonspunkter.args = { harApneAksjonspunkter: true, submittable: true, }; + +export const VisPanelUtenAksjonspunkt = args => ( + + + +); + +VisPanelUtenAksjonspunkt.args = { + behandling, + medlemskap, + soknad, + arbeidsforhold, + fagsakPerson, + alleMerknaderFraBeslutter: { + [aksjonspunktCodes.AVKLAR_STARTDATO_FOR_FORELDREPENGERPERIODEN]: merknaderFraBeslutter, + }, + isForeldrepengerFagsak: true, + readOnly: true, + readOnlyBehandling: false, + harApneAksjonspunkter: false, + submittable: false, +}; diff --git a/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.tsx b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.tsx new file mode 100644 index 0000000000..0fc60fef32 --- /dev/null +++ b/packages/fakta-medlemskap/src/MedlemskapFaktaIndex.tsx @@ -0,0 +1,64 @@ +import { Aksjonspunkt, Behandling, FagsakPerson, KodeverkMedNavn } from '@k9-sak-web/types'; +import { RawIntlProvider, createIntl, createIntlCache } from 'react-intl'; +import messages from '../i18n/nb_NO.json'; +import MedlemskapInfoPanel from './components/MedlemskapInfoPanel'; +import { Medlemskap } from './components/oppholdInntektOgPerioder/Medlemskap'; +import { MerknaderFraBeslutter } from './components/oppholdInntektOgPerioder/MerknaderFraBeslutter'; +import { Soknad } from './components/oppholdInntektOgPerioder/Soknad'; + +const cache = createIntlCache(); + +const intl = createIntl( + { + locale: 'nb-NO', + messages, + }, + cache, +); + +export interface MedlemskapFaktaIndexProps { + behandling: Behandling; + medlemskap: Medlemskap; + soknad?: Soknad; + aksjonspunkter: Aksjonspunkt[]; + fagsakPerson: FagsakPerson; + alleMerknaderFraBeslutter: MerknaderFraBeslutter; + alleKodeverk: { [key: string]: KodeverkMedNavn[] }; + submitCallback: (aksjonspunktData: any) => Promise; + readOnly: boolean; + submittable: boolean; +} + +const MedlemskapFaktaIndex = ({ + behandling, + soknad, + medlemskap, + aksjonspunkter, + submittable, + fagsakPerson, + alleMerknaderFraBeslutter, + alleKodeverk, + submitCallback, + readOnly, +}: MedlemskapFaktaIndexProps) => ( + + {medlemskap && ( + + )} + +); + +export default MedlemskapFaktaIndex; diff --git a/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.jsx b/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.jsx deleted file mode 100644 index 7dafae5523..0000000000 --- a/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.jsx +++ /dev/null @@ -1,80 +0,0 @@ -import React, { useMemo } from 'react'; -// eslint-disable-next-line import/no-duplicates -import PropTypes from 'prop-types'; - -import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import medlemskapAksjonspunkterPropType from '../propTypes/medlemskapAksjonspunkterPropType'; -import medlemskapMedlemskaPropType from '../propTypes/medlemskapMedlemskapPropType'; -import medlemskapSoknadPropType from '../propTypes/medlemskapSoknadPropType'; -import OppholdInntektOgPerioderForm from './oppholdInntektOgPerioder/OppholdInntektOgPerioderForm'; - -const { OVERSTYR_AVKLAR_STARTDATO } = aksjonspunktCodes; - -const avklarStartdatoAp = [OVERSTYR_AVKLAR_STARTDATO]; - -const hasOpen = aksjonspunkt => aksjonspunkt && isAksjonspunktOpen(aksjonspunkt.status); - -/** - * MedlemskapInfoPanel - * - * Presentasjonskomponent. Har ansvar for å vise faktapanelene for medlemskap. - */ -const MedlemskapInfoPanel = ({ - submittable, - aksjonspunkter, - readOnly, - submitCallback, - alleMerknaderFraBeslutter, - behandlingId, - behandlingVersjon, - behandlingType, - soknad, - alleKodeverk, - medlemskap, - fagsakPerson, -}) => { - const avklarStartdatoOverstyring = aksjonspunkter.find(ap => ap.definisjon === OVERSTYR_AVKLAR_STARTDATO); - const aksjonspunkterMinusAvklarStartDato = useMemo( - () => aksjonspunkter.filter(ap => !avklarStartdatoAp.includes(ap.definisjon)), - [aksjonspunkter], - ); - - return ( - !hasOpen(avklarStartdatoOverstyring) && ( - - ) - ); -}; - -MedlemskapInfoPanel.propTypes = { - submittable: PropTypes.bool.isRequired, - aksjonspunkter: PropTypes.arrayOf(medlemskapAksjonspunkterPropType.isRequired).isRequired, - readOnly: PropTypes.bool.isRequired, - submitCallback: PropTypes.func.isRequired, - alleMerknaderFraBeslutter: PropTypes.shape({ - notAccepted: PropTypes.bool, - }).isRequired, - behandlingId: PropTypes.number.isRequired, - behandlingVersjon: PropTypes.number.isRequired, - fagsakPerson: PropTypes.shape().isRequired, - behandlingType: PropTypes.string.isRequired, - soknad: medlemskapSoknadPropType, - alleKodeverk: PropTypes.shape().isRequired, - medlemskap: medlemskapMedlemskaPropType.isRequired, -}; - -export default MedlemskapInfoPanel; diff --git a/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx b/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx index 61159eda47..32febfdf2a 100644 --- a/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx +++ b/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.spec.tsx @@ -1,51 +1,52 @@ -import React from 'react'; -import { screen } from '@testing-library/react'; -import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; +import { composeStories, StoryFn } from '@storybook/react'; +import { userEvent } from '@storybook/test'; +import { act, render, screen } from '@testing-library/react'; +import * as stories from '../MedlemskapFaktaIndex.stories'; import MedlemskapInfoPanel from './MedlemskapInfoPanel'; -import messages from '../../i18n/nb_NO.json'; describe('', () => { - it('skal vise begge medlemskapsformer når aksjonspunkt for startdato for foreldrepengerperioden er avklart', () => { - renderWithIntlAndReduxForm( - , - { messages }, - ); + const { + VisPanelUtenAksjonspunkt, + VisAksjonspunktForAvklaringOmBrukerErBosatt, + VisAksjonspunktForAlleAndreMedlemskapsaksjonspunkter, + } = composeStories(stories) as { + [key: string]: StoryFn>; + }; - expect(screen.getByTestId('OppholdInntektOgPerioderForm')).toBeInTheDocument(); + it('skal vise editeringsmuligheter når det finnes aksjonspunkter', async () => { + render(); + expect(screen.getByText('Vurder om søker er bosatt i Norge')).toBeInTheDocument(); + expect(screen.getByText('Opplysninger oppgitt i søknaden')).toBeInTheDocument(); + expect(screen.getByRole('textbox', { name: 'Begrunn endringene' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'Oppdater' })).toBeDisabled(); + await act(async () => { + await userEvent.type(screen.getByRole('textbox', { name: 'Begrunn endringene' }), 'Dette er en begrunnelse'); + }); + expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); }); - it('skal vise panel for avklaring av startdato for foreldrepengerperioden, for å tilate manuell korrigering selvom aksjonspunktet ikke finnes', () => { - renderWithIntlAndReduxForm( - , - { messages }, - ); + it('skal kunne avklare perioder når en har dette aksjonspunktet', async () => { + render(); + expect(screen.getByText('Vurder om søker har gyldig medlemskap i perioden')).toBeInTheDocument(); + expect(screen.getByText('Perioder med medlemskap')).toBeInTheDocument(); + expect(screen.getByRole('textbox', { name: 'Begrunn endringene' })).toBeInTheDocument(); + expect(screen.getByRole('radio', { name: 'Ikke relevant periode' })).toBeInTheDocument(); + expect(screen.getByRole('radio', { name: 'Periode med medlemskap' })).toBeInTheDocument(); + expect(screen.getByRole('radio', { name: 'Periode med unntak fra medlemskap' })).toBeInTheDocument(); + }); + + it('skal vise informasjon uten editeringsmuligheter når det ikke finnes aksjonspunkter', () => { + render(); + expect(screen.getByText('Opplysninger oppgitt i søknaden')).toBeInTheDocument(); + expect(screen.getByText('Perioder med medlemskap')).toBeInTheDocument(); + expect(screen.queryByText('textbox')).not.toBeInTheDocument(); + expect(screen.queryByRole('button', { name: 'Oppdater' })).not.toBeInTheDocument(); + }); - expect(screen.getByTestId('OppholdInntektOgPerioderForm')).toBeInTheDocument(); + it('skal vise informasjon om opphold og bosatt informasjon', () => { + render(); + expect(screen.getByText('Opphold utenfor Norge')).toBeInTheDocument(); + expect(screen.getByText('Sverige')).toBeInTheDocument(); + expect(screen.getByText('Mygg Robust')).toBeInTheDocument(); }); }); diff --git a/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.tsx b/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.tsx new file mode 100644 index 0000000000..36778d9efb --- /dev/null +++ b/packages/fakta-medlemskap/src/components/MedlemskapInfoPanel.tsx @@ -0,0 +1,59 @@ +import behandlingType from '@fpsak-frontend/kodeverk/src/behandlingType'; +import { Aksjonspunkt, FagsakPerson, KodeverkMedNavn } from '@k9-sak-web/types'; +import React from 'react'; +import { Medlemskap } from './oppholdInntektOgPerioder/Medlemskap'; +import { MerknaderFraBeslutter } from './oppholdInntektOgPerioder/MerknaderFraBeslutter'; +import OppholdInntektOgPerioderForm from './oppholdInntektOgPerioder/OppholdInntektOgPerioderForm'; +import { Soknad } from './oppholdInntektOgPerioder/Soknad'; + +interface MedlemskapInfoPanelProps { + submittable: boolean; + aksjonspunkter: Aksjonspunkt[]; + readOnly: boolean; + submitCallback: (aksjonspunktData: any) => Promise; + alleMerknaderFraBeslutter: MerknaderFraBeslutter; + behandlingId: number; + behandlingVersjon: number; + fagsakPerson: FagsakPerson; + behandlingType: string; + soknad?: Soknad; + alleKodeverk: { [key: string]: KodeverkMedNavn[] }; + medlemskap: Medlemskap; +} + +/** + * MedlemskapInfoPanel + * + * Presentasjonskomponent. Har ansvar for å vise faktapanelene for medlemskap. + */ +const MedlemskapInfoPanel = ({ + submittable, + aksjonspunkter, + readOnly, + submitCallback, + alleMerknaderFraBeslutter, + behandlingId, + behandlingVersjon, + behandlingType: behandlingTypeProp, + soknad, + alleKodeverk, + medlemskap, + fagsakPerson, +}: MedlemskapInfoPanelProps) => ( + +); + +export default MedlemskapInfoPanel; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts new file mode 100644 index 0000000000..1eca09b232 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/FormState.ts @@ -0,0 +1,54 @@ +import { FagsakPerson } from '@k9-sak-web/types'; +import { Periode } from './Periode'; +import { Soknad } from './Soknad'; + +interface FixedMedlemskapPerioder { + fom: string; + tom: string; + dekning: string; + status: string; + beslutningsdato: string; +} + +interface Foreldre { + isApplicant: any; + personopplysning: any; +} + +export type StatusForBorgerFaktaPanelFormState = { + erEosBorger: boolean; + isBorgerAksjonspunktClosed: boolean; + oppholdsrettVurdering: boolean; + lovligOppholdVurdering: boolean; + apKode: string; +}; + +export type OppholdINorgeOgAdresserFaktaPanelFormState = { + foreldre: Foreldre[]; + bosattVurdering: boolean; + hasBosattAksjonspunkt: boolean; + isBosattAksjonspunktClosed: boolean; + opphold: { utlandsopphold?: any[] }; +}; + +export type OppholdInntektOgPeriodeFormState = Periode & + StatusForBorgerFaktaPanelFormState & + OppholdINorgeOgAdresserFaktaPanelFormState & + PerioderMedMedlemskapFaktaPanelFormState & { + begrunnelse: string; + }; + +export type PerioderMedMedlemskapFaktaPanelFormState = { + fixedMedlemskapPerioder?: FixedMedlemskapPerioder[]; + hasPeriodeAksjonspunkt?: boolean; + isPeriodAksjonspunktClosed?: boolean; + medlemskapManuellVurderingType: string; +}; + +export type OppholdInntektOgPerioderFormState = { + soknad: Soknad; + person: FagsakPerson; + gjeldendeFom: string; + perioder: Periode[]; + oppholdInntektOgPeriodeForm: OppholdInntektOgPeriodeFormState; +}; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts new file mode 100644 index 0000000000..1c91fe2bc2 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Medlemskap.ts @@ -0,0 +1,16 @@ +import { Periode } from './Periode'; + +export interface MedlemskapPeriode { + fom: string; + tom: string; + medlemskapType: string; + dekningType: string; + kildeType: string; + beslutningsdato: string | null; +} + +export interface Medlemskap { + fom: string; + medlemskapPerioder: MedlemskapPeriode[]; + perioder: Periode[]; +} diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MedlemskapEndringerTabell.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MedlemskapEndringerTabell.tsx index 155cbcd59e..45755112e8 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MedlemskapEndringerTabell.tsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MedlemskapEndringerTabell.tsx @@ -1,51 +1,41 @@ -import { behandlingFormValueSelector } from '@fpsak-frontend/form'; import { DateLabel } from '@fpsak-frontend/shared-components'; +import { ExclamationmarkTriangleFillIcon } from '@navikt/aksel-icons'; import { Table } from '@navikt/ds-react'; import React from 'react'; -import { useIntl } from 'react-intl'; -import { connect } from 'react-redux'; +import { useFormContext } from 'react-hook-form'; +import { OppholdInntektOgPerioderFormState } from './FormState'; +import { Periode } from './Periode'; -const headerTextCodes = ['MedlemskapEndringerTabell.GjeldeneFom', 'MedlemskapEndringerTabell.Opplysning']; - -interface Periode { - id: string; - vurderingsdato: string; - årsaker: string[]; - aksjonspunkter: string[]; - begrunnelse: string; -} +const headerTextCodes = ['Gjeldende f.o.m', 'Opplysning']; interface MedlemskapEndringerTabellProps { - velgPeriodeCallback: (event: React.MouseEvent, id: string, periode: Periode) => void; + velgPeriodeCallback: (id: string, periode: Periode) => void; selectedId?: string; - perioder?: Periode[]; } -const MedlemskapEndringerTabellImpl = ({ - perioder = [], - velgPeriodeCallback, - selectedId, -}: MedlemskapEndringerTabellProps) => { - const intl = useIntl(); +const MedlemskapEndringerTabellImpl = ({ velgPeriodeCallback, selectedId }: MedlemskapEndringerTabellProps) => { + const { getValues } = useFormContext(); + const { perioder } = getValues(); + const sortertePerioder = perioder.sort((a, b) => a.vurderingsdato.localeCompare(b.vurderingsdato)); return ( {headerTextCodes.map(textCode => ( - {intl.formatMessage({ id: textCode })} + {textCode} ))} - {perioder.map(periode => ( + {sortertePerioder.map(periode => ( ) => - velgPeriodeCallback(event, periode.id, periode) - } + onClick={() => { + velgPeriodeCallback(periode.id, periode); + }} selected={periode.id === selectedId} className={ periode.begrunnelse === null && periode.aksjonspunkter.length > 0 @@ -54,7 +44,15 @@ const MedlemskapEndringerTabellImpl = ({ } > - +
+ {periode.begrunnelse === null && periode.aksjonspunkter.length > 0 && ( + + )} + +
{periode.årsaker.join()}
@@ -64,20 +62,4 @@ const MedlemskapEndringerTabellImpl = ({ ); }; -const mapStateToPropsFactory = (initialState, initialOwnProps) => { - const { behandlingId, behandlingVersjon } = initialOwnProps; - const perioder = ( - behandlingFormValueSelector( - 'OppholdInntektOgPerioderForm', - behandlingId, - behandlingVersjon, - )(initialState, 'perioder') || [] - ).sort((a, b) => a.vurderingsdato.localeCompare(b.vurderingsdato)); - return () => ({ - perioder, - }); -}; - -const MedlemskapEndringerTabell = connect(mapStateToPropsFactory)(MedlemskapEndringerTabellImpl); - -export default MedlemskapEndringerTabell; +export default MedlemskapEndringerTabellImpl; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MerknaderFraBeslutter.ts b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MerknaderFraBeslutter.ts new file mode 100644 index 0000000000..9bdc2aa181 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/MerknaderFraBeslutter.ts @@ -0,0 +1,3 @@ +export interface MerknaderFraBeslutter { + notAccepted: boolean; +} diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Opphold.ts b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Opphold.ts new file mode 100644 index 0000000000..0941981533 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Opphold.ts @@ -0,0 +1,7 @@ +export interface Opphold { + utlandsopphold?: { + landNavn: string; + fom: string; + tom: string; + }[]; +} diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.jsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.jsx deleted file mode 100644 index cf08762da2..0000000000 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.jsx +++ /dev/null @@ -1,199 +0,0 @@ -import React from 'react'; -import { FormattedMessage } from 'react-intl'; -import { connect } from 'react-redux'; -import PropTypes from 'prop-types'; -import countries from 'i18n-iso-countries'; -import norwegianLocale from 'i18n-iso-countries/langs/no.json'; -import BostedSokerFaktaIndex from '@fpsak-frontend/fakta-bosted-soker'; -import { RadioGroupField, behandlingFormValueSelector } from '@fpsak-frontend/form'; -import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import { FaktaGruppe, PeriodLabel, VerticalSpacer } from '@fpsak-frontend/shared-components'; -import { required } from '@fpsak-frontend/utils'; -import { BodyShort, Detail, HGrid } from '@navikt/ds-react'; - -import styles from './oppholdINorgeOgAdresserFaktaPanel.module.css'; - -countries.registerLocale(norwegianLocale); - -const capitalizeFirstLetter = landNavn => { - const string = landNavn.toLowerCase(); - return string.charAt(0).toUpperCase() + string.slice(1); -}; - -const formatLandNavn = landNavn => { - if (landNavn.length === 2 || landNavn.length === 3) { - if (landNavn === 'XXK') { - return 'Kosovo'; - } - return countries.getName(landNavn, 'no'); - } - return landNavn; -}; - -const lagOppholdIUtland = utlandsOpphold => - Array.isArray(utlandsOpphold) && utlandsOpphold.length > 0 ? ( - utlandsOpphold.map(u => ( -
- - {capitalizeFirstLetter(formatLandNavn(u.landNavn))} - - - - -
- )) - ) : ( - - - ); -/** - * OppholdINorgeOgAdresserFaktaPanel - * - * Presentasjonskomponent. Er tilknyttet faktapanelet for medlemskap. - * Viser opphold i innland og utland som er relevante for søker. ReadOnly. - */ -const OppholdINorgeOgAdresserFaktaPanel = ({ - readOnly, - hasBosattAksjonspunkt, - isBosattAksjonspunktClosed, - opphold = {}, - foreldre = [], - alleKodeverk, - alleMerknaderFraBeslutter, -}) => ( - - -
- - - - - - {lagOppholdIUtland(opphold.utlandsopphold)} - -
-
- - {foreldre.map(f => ( -
- {f.isApplicant && ( - - )} - {!f.isApplicant && ( - - )} -
- ))} -
- {hasBosattAksjonspunkt && ( -
- , - }, - { - value: false, - label: ( - {chunks}, - }} - /> - ), - }, - ]} - /> -
- )} -
-
-
-); - -OppholdINorgeOgAdresserFaktaPanel.propTypes = { - readOnly: PropTypes.bool.isRequired, - hasBosattAksjonspunkt: PropTypes.bool.isRequired, - isBosattAksjonspunktClosed: PropTypes.bool.isRequired, - opphold: PropTypes.shape(), - foreldre: PropTypes.arrayOf(PropTypes.shape()), - alleKodeverk: PropTypes.shape().isRequired, - alleMerknaderFraBeslutter: PropTypes.shape({ - notAccepted: PropTypes.bool, - }).isRequired, -}; - -const mapStateToProps = (state, ownProps) => { - const { behandlingId, behandlingVersjon } = ownProps; - const formName = `OppholdInntektOgPeriodeForm-${ownProps.id}`; - return { - opphold: behandlingFormValueSelector(formName, behandlingId, behandlingVersjon)(state, 'opphold'), - foreldre: behandlingFormValueSelector(formName, behandlingId, behandlingVersjon)(state, 'foreldre'), - hasBosattAksjonspunkt: behandlingFormValueSelector( - formName, - behandlingId, - behandlingVersjon, - )(state, 'hasBosattAksjonspunkt'), - isBosattAksjonspunktClosed: behandlingFormValueSelector( - formName, - behandlingId, - behandlingVersjon, - )(state, 'isBosattAksjonspunktClosed'), - }; -}; - -const createParent = (isApplicant, personopplysning) => ({ - isApplicant, - personopplysning, -}); - -OppholdINorgeOgAdresserFaktaPanel.buildInitialValues = (soknad, periode, aksjonspunkter) => { - let opphold = {}; - - if (soknad && soknad.oppgittTilknytning) { - const { oppgittTilknytning } = soknad; - opphold = { - utlandsopphold: oppgittTilknytning.utlandsopphold, - }; - } - - const { personopplysninger } = periode; - const parents = [createParent(true, personopplysninger)]; - if (personopplysninger.annenPart) { - parents.push(createParent(false, personopplysninger.annenPart)); - } - - const filteredAp = aksjonspunkter.filter( - ap => - periode.aksjonspunkter.includes(aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT) || - (periode.aksjonspunkter.length > 0 && - periode.aksjonspunkter.includes(aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT) && - ap.definisjon === aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP), - ); - - return { - opphold, - hasBosattAksjonspunkt: filteredAp.length > 0, - isBosattAksjonspunktClosed: filteredAp.some(ap => !isAksjonspunktOpen(ap.status)), - foreldre: parents, - bosattVurdering: periode.bosattVurdering || periode.bosattVurdering === false ? periode.bosattVurdering : undefined, - }; -}; - -OppholdINorgeOgAdresserFaktaPanel.transformValues = values => ({ - kode: aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT, - bosattVurdering: values.bosattVurdering, -}); - -export default connect(mapStateToProps)(OppholdINorgeOgAdresserFaktaPanel); diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.spec.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.spec.tsx deleted file mode 100644 index 29f1910301..0000000000 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.spec.tsx +++ /dev/null @@ -1,298 +0,0 @@ -import React from 'react'; -import { screen } from '@testing-library/react'; - -import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import aksjonspunktStatus from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import opplysningAdresseType from '@fpsak-frontend/kodeverk/src/opplysningAdresseType'; -import personstatusType from '@fpsak-frontend/kodeverk/src/personstatusType'; -import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; - -import OppholdINorgeOgAdresserFaktaPanel from './OppholdINorgeOgAdresserFaktaPanel'; - -import messages from '../../../i18n/nb_NO.json'; - -describe('', () => { - const opphold = { - utlandsopphold: [ - { - landNavn: 'SVERIGE', - fom: '2017-07-20', - tom: '2017-07-31', - }, - ], - }; - - const foreldre = [ - { - isApplicant: true, - personopplysning: { - navn: 'Espen Utvikler', - adresser: [], - personstatus: 'UTVA', - }, - }, - { - isApplicant: false, - personopplysning: { - navn: 'Petra Tester', - adresser: [], - personstatus: 'UTVA', - }, - }, - ]; - - const alleKodeverk = { - PersonstatusType: [ - { - kode: 'UREG', - navn: 'Uregistrert person', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'ABNR', - navn: 'Aktivt BOSTNR', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'UTVA', - navn: 'Utvandret', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'DØDD', - navn: 'Dødd', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'DØD', - navn: 'Død', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'FØDR', - navn: 'Fødselregistrert', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'BOSA', - navn: 'Bosatt', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'ADNR', - navn: 'Aktivt D-nummer', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'FOSV', - navn: 'Forsvunnet/savnet', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'UFUL', - navn: 'Ufullstendig fødselsnr', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'UTAN', - navn: 'Utgått person annullert tilgang Fnr', - kodeverk: 'PERSONSTATUS_TYPE', - }, - { - kode: 'UTPE', - navn: 'Utgått person', - kodeverk: 'PERSONSTATUS_TYPE', - }, - ], - }; - - it('skal vise info om opphold', () => { - renderWithIntlAndReduxForm( - , - { messages }, - ); - expect(screen.getByText('Opphold utenfor Norge')).toBeInTheDocument(); - expect(screen.getByText('Sverige')).toBeInTheDocument(); - }); - - it('skal rendre form som viser bosatt informasjon', () => { - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Espen Utvikler')).toBeInTheDocument(); - expect(screen.getByText('Petra Tester')).toBeInTheDocument(); - }); - - it('skal rendre form som lar NAV-ansatt velge om barnet er ektefelles barn eller ei', () => { - const toForeldre = [ - { - isApplicant: true, - personopplysning: { - navn: 'Espen Utvikler', - adresser: [], - personstatus: 'UTVA', - }, - }, - { - isApplicant: false, - personopplysning: { - navn: 'Petra Tester', - adresser: [], - personstatus: 'UTVA', - }, - }, - ]; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByRole('radio', { name: 'Søker er bosatt i Norge' })).toBeInTheDocument(); - expect(screen.getByRole('radio', { name: 'Søker er ikke bosatt i Norge' })).toBeInTheDocument(); - }); - - it('skal sette initielle verdier', () => { - const periode = { - aksjonspunkter: [aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT], - bosattVurdering: true, - personopplysninger: { - navn: 'Espen Utvikler', - personstatus: { - personstatus: 'UTVANDRET', - }, - avklartPersonstatus: { - overstyrtPersonstatus: personstatusType.BOSATT, - }, - adresser: [ - { - adresselinje1: 'Vei 1', - postNummer: '1000', - poststed: 'Oslo', - opplysningAdresseType: opplysningAdresseType.POSTADRESSE, - }, - ], - annenPart: { - navn: 'Petra Tester', - personstatus: { - personstatus: 'UTVANDRET', - }, - adresser: [ - { - adresselinje1: 'Vei 2', - postNummer: '2000', - poststed: 'Stockholm', - opplysningAdresseType: opplysningAdresseType.UTENLANDSK_POSTADRESSE, - }, - ], - }, - }, - }; - - const aksjonspunkter = [ - { - definisjon: aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT, - status: aksjonspunktStatus.OPPRETTET, - }, - ]; - const soknad = { - oppgittTilknytning: opphold, - }; - - const initialValues = OppholdINorgeOgAdresserFaktaPanel.buildInitialValues(soknad, periode, aksjonspunkter); - - expect(initialValues).toStrictEqual({ - foreldre: [ - { - isApplicant: true, - personopplysning: { - navn: 'Espen Utvikler', - personstatus: { - personstatus: 'UTVANDRET', - }, - avklartPersonstatus: { - overstyrtPersonstatus: personstatusType.BOSATT, - }, - adresser: [ - { - adresselinje1: 'Vei 1', - postNummer: '1000', - poststed: 'Oslo', - opplysningAdresseType: opplysningAdresseType.POSTADRESSE, - }, - ], - annenPart: { - navn: 'Petra Tester', - personstatus: { - personstatus: 'UTVANDRET', - }, - adresser: [ - { - adresselinje1: 'Vei 2', - postNummer: '2000', - poststed: 'Stockholm', - opplysningAdresseType: opplysningAdresseType.UTENLANDSK_POSTADRESSE, - }, - ], - }, - }, - }, - { - isApplicant: false, - personopplysning: { - navn: 'Petra Tester', - personstatus: { - personstatus: 'UTVANDRET', - }, - adresser: [ - { - adresselinje1: 'Vei 2', - postNummer: '2000', - poststed: 'Stockholm', - opplysningAdresseType: opplysningAdresseType.UTENLANDSK_POSTADRESSE, - }, - ], - }, - }, - ], - bosattVurdering: true, - hasBosattAksjonspunkt: true, - isBosattAksjonspunktClosed: false, - opphold: { - utlandsopphold: [ - { - landNavn: 'SVERIGE', - fom: '2017-07-20', - tom: '2017-07-31', - }, - ], - }, - }); - }); -}); diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx new file mode 100644 index 0000000000..4d129d2582 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdINorgeOgAdresserFaktaPanel.tsx @@ -0,0 +1,191 @@ +import BostedSokerFaktaIndex from '@fpsak-frontend/fakta-bosted-soker'; +import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; +import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; +import { FaktaGruppe, PeriodLabel, VerticalSpacer } from '@fpsak-frontend/shared-components'; +import { required } from '@fpsak-frontend/utils'; +import { BodyShort, Detail, HGrid } from '@navikt/ds-react'; +import { RadioGroupPanel } from '@navikt/ft-form-hooks'; +import countries from 'i18n-iso-countries'; +import norwegianLocale from 'i18n-iso-countries/langs/no.json'; +import { FunctionComponent } from 'react'; + +import { BostedSokerPersonopplysninger } from '@fpsak-frontend/fakta-bosted-soker/src/BostedSokerFaktaIndex'; +import { Aksjonspunkt, Personopplysninger } from '@k9-sak-web/types'; +import { useFormContext, useWatch } from 'react-hook-form'; +import { OppholdInntektOgPerioderFormState, OppholdINorgeOgAdresserFaktaPanelFormState } from './FormState'; +import { MerknaderFraBeslutter } from './MerknaderFraBeslutter'; +import { Opphold } from './Opphold'; +import { Periode } from './Periode'; +import { Soknad } from './Soknad'; +import styles from './oppholdINorgeOgAdresserFaktaPanel.module.css'; + +interface Forelder { + isApplicant: boolean; + personopplysning: BostedSokerPersonopplysninger; +} + +countries.registerLocale(norwegianLocale); + +const capitalizeFirstLetter = (landNavn: string) => { + const string = landNavn.toLowerCase(); + return string.charAt(0).toUpperCase() + string.slice(1); +}; + +const formatLandNavn = (landNavn: string) => { + if (landNavn.length === 2 || landNavn.length === 3) { + if (landNavn === 'XXK') { + return 'Kosovo'; + } + return countries.getName(landNavn, 'no'); + } + return landNavn; +}; + +const lagOppholdIUtland = (utlandsOpphold: Opphold['utlandsopphold']) => + Array.isArray(utlandsOpphold) && utlandsOpphold.length > 0 ? ( + utlandsOpphold.map(u => ( +
+ + {capitalizeFirstLetter(formatLandNavn(u.landNavn))} + + + + +
+ )) + ) : ( + - + ); + +interface OppholdINorgeOgAdresserFaktaPanelProps { + readOnly: boolean; + hasBosattAksjonspunkt: boolean; + isBosattAksjonspunktClosed: boolean; + opphold?: Opphold; + foreldre?: Forelder[]; + alleMerknaderFraBeslutter: MerknaderFraBeslutter; +} + +interface TransformedValues { + kode: string; + bosattVurdering: boolean; +} + +interface StaticFunctions { + buildInitialValues: ( + soknad: Soknad, + periode: Periode, + aksjonspunkter: Aksjonspunkt[], + ) => OppholdINorgeOgAdresserFaktaPanelFormState; + transformValues: (values: OppholdINorgeOgAdresserFaktaPanelFormState) => TransformedValues; +} + +/** + * OppholdINorgeOgAdresserFaktaPanel + * + * Presentasjonskomponent. Er tilknyttet faktapanelet for medlemskap. + * Viser opphold i innland og utland som er relevante for søker. ReadOnly. + */ +const OppholdINorgeOgAdresserFaktaPanel: FunctionComponent & + StaticFunctions = ({ readOnly, hasBosattAksjonspunkt, isBosattAksjonspunktClosed, alleMerknaderFraBeslutter }) => { + const { control } = useFormContext(); + const { foreldre, opphold } = useWatch({ control, name: 'oppholdInntektOgPeriodeForm' }); + return ( + + +
+ + Opphold utenfor Norge + + {!!opphold && lagOppholdIUtland(opphold.utlandsopphold)} + +
+
+ + {foreldre.map(f => ( +
+ {f.isApplicant && } + {!f.isApplicant && ( + + )} +
+ ))} +
+ {hasBosattAksjonspunkt && ( +
+ + Søker er ikke bosatt i Norge + + ), + }, + ]} + /> +
+ )} +
+
+
+ ); +}; +const createParent = (isApplicant: boolean, personopplysning: Personopplysninger) => ({ + isApplicant, + personopplysning, +}); + +OppholdINorgeOgAdresserFaktaPanel.buildInitialValues = ( + soknad: Soknad, + periode: Periode, + aksjonspunkter: Aksjonspunkt[], +) => { + let opphold = {}; + + if (soknad && soknad.oppgittTilknytning) { + const { oppgittTilknytning } = soknad; + opphold = { + utlandsopphold: oppgittTilknytning.utlandsopphold, + }; + } + + const { personopplysninger } = periode; + const parents = [createParent(true, personopplysninger)]; + if (personopplysninger.annenPart) { + parents.push(createParent(false, personopplysninger.annenPart)); + } + + const filteredAp = periode.aksjonspunkter.includes(aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT) + ? aksjonspunkter + : aksjonspunkter.filter(ap => ap.definisjon === aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP); + + return { + opphold, + hasBosattAksjonspunkt: filteredAp.length > 0, + isBosattAksjonspunktClosed: filteredAp.some(ap => !isAksjonspunktOpen(ap.status)), + foreldre: parents, + bosattVurdering: periode.bosattVurdering || periode.bosattVurdering === false ? periode.bosattVurdering : undefined, + }; +}; + +OppholdINorgeOgAdresserFaktaPanel.transformValues = (values: OppholdINorgeOgAdresserFaktaPanelFormState) => ({ + kode: aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT, + bosattVurdering: values.bosattVurdering, +}); + +export default OppholdINorgeOgAdresserFaktaPanel; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.jsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.jsx deleted file mode 100644 index 4ecb857b29..0000000000 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.jsx +++ /dev/null @@ -1,213 +0,0 @@ -import { Button } from '@navikt/ds-react'; -import { AssessedBy } from '@navikt/ft-plattform-komponenter'; -import moment from 'moment'; -import PropTypes from 'prop-types'; -import React from 'react'; -import { FormattedMessage, injectIntl } from 'react-intl'; -import { connect } from 'react-redux'; -import { createSelector } from 'reselect'; -import { behandlingForm, behandlingFormValueSelector } from '@fpsak-frontend/form'; -import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import { - BorderBox, - FlexColumn, - FlexContainer, - FlexRow, - VerticalSpacer, - useSaksbehandlerOppslag, -} from '@fpsak-frontend/shared-components'; -import { ISO_DATE_FORMAT } from '@fpsak-frontend/utils'; -import { FaktaBegrunnelseTextField } from '@k9-sak-web/fakta-felles'; - -import OppholdINorgeOgAdresserFaktaPanel from './OppholdINorgeOgAdresserFaktaPanel'; -import PerioderMedMedlemskapFaktaPanel from './PerioderMedMedlemskapFaktaPanel'; -import StatusForBorgerFaktaPanel from './StatusForBorgerFaktaPanel'; - -const { AVKLAR_OPPHOLDSRETT, AVKLAR_LOVLIG_OPPHOLD } = aksjonspunktCodes; - -const hasAksjonspunkt = (aksjonspunktCode, aksjonspunkter) => aksjonspunkter.some(ap => ap === aksjonspunktCode); - -export const OppholdInntektOgPeriodeForm = ({ - valgtPeriode, - readOnly, - initialValues, - submittable, - periodeResetCallback, - alleKodeverk, - alleMerknaderFraBeslutter, - behandlingId, - behandlingVersjon, - ...formProps -}) => { - const { hentSaksbehandlerNavn } = useSaksbehandlerOppslag(); - return ( - - - - - {(hasAksjonspunkt(AVKLAR_OPPHOLDSRETT, valgtPeriode.aksjonspunkter) || - hasAksjonspunkt(AVKLAR_LOVLIG_OPPHOLD, valgtPeriode.aksjonspunkter)) && ( - - )} - - {valgtPeriode.aksjonspunkter && valgtPeriode.aksjonspunkter.length > 0 && ( - <> - - {!!initialValues.begrunnelse && ( - - )} - - )} - - - - - - - - - - - - - - ); -}; - -OppholdInntektOgPeriodeForm.propTypes = { - selectedId: PropTypes.string, - readOnly: PropTypes.bool.isRequired, - updateOppholdInntektPeriode: PropTypes.func.isRequired, - submittable: PropTypes.bool.isRequired, - valgtPeriode: PropTypes.shape().isRequired, - initialValues: PropTypes.shape().isRequired, - periodeResetCallback: PropTypes.func.isRequired, - alleKodeverk: PropTypes.shape().isRequired, - alleMerknaderFraBeslutter: PropTypes.shape({ - notAccepted: PropTypes.bool, - }).isRequired, - behandlingId: PropTypes.number.isRequired, - behandlingVersjon: PropTypes.number.isRequired, -}; - -const transformValues = values => ({ - begrunnelse: values.begrunnelse || '---', - ...values, -}); - -const buildInitialValues = createSelector( - [ - (state, ownProps) => ownProps.valgtPeriode, - (state, ownProps) => ownProps.aksjonspunkter, - (state, ownProps) => - behandlingFormValueSelector( - 'OppholdInntektOgPerioderForm', - ownProps.behandlingId, - ownProps.behandlingVersjon, - )(state, 'soknad'), - (state, ownProps) => - behandlingFormValueSelector( - 'OppholdInntektOgPerioderForm', - ownProps.behandlingId, - ownProps.behandlingVersjon, - )(state, 'person'), - (state, ownProps) => - behandlingFormValueSelector( - 'OppholdInntektOgPerioderForm', - ownProps.behandlingId, - ownProps.behandlingVersjon, - )(state, 'medlemskapPerioder'), - (state, ownProps) => - behandlingFormValueSelector( - 'OppholdInntektOgPerioderForm', - ownProps.behandlingId, - ownProps.behandlingVersjon, - )(state, 'gjeldendeFom'), - (state, ownProps) => ownProps.alleKodeverk, - ], - (valgtPeriode, alleAksjonspunkter, soknad, person, medlemskapPerioder, gjeldendeFom) => { - const aksjonspunkter = alleAksjonspunkter - .filter( - ap => - valgtPeriode.aksjonspunkter.includes(ap.definisjon) || - ap.definisjon === aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP, - ) - .filter(ap => ap.definisjon !== aksjonspunktCodes.AVKLAR_STARTDATO_FOR_FORELDREPENGERPERIODEN); - let oppholdValues = {}; - let confirmValues = {}; - if ( - hasAksjonspunkt(AVKLAR_OPPHOLDSRETT, valgtPeriode.aksjonspunkter) || - hasAksjonspunkt(AVKLAR_LOVLIG_OPPHOLD, valgtPeriode.aksjonspunkter) - ) { - oppholdValues = StatusForBorgerFaktaPanel.buildInitialValues(valgtPeriode, aksjonspunkter); - } - if (valgtPeriode.aksjonspunkter.length > 0) { - confirmValues = FaktaBegrunnelseTextField.buildInitialValues([valgtPeriode]); - } - - return { - ...valgtPeriode, - ...OppholdINorgeOgAdresserFaktaPanel.buildInitialValues(soknad, valgtPeriode, aksjonspunkter), - ...PerioderMedMedlemskapFaktaPanel.buildInitialValues(valgtPeriode, medlemskapPerioder, soknad, aksjonspunkter), - fom: gjeldendeFom || moment().format(ISO_DATE_FORMAT), - ...oppholdValues, - ...confirmValues, - }; - }, -); - -const mapStateToPropsFactory = (initialState, initialOwnProps) => { - const onSubmit = values => initialOwnProps.updateOppholdInntektPeriode(transformValues(values)); - return (state, ownProps) => { - const { valgtPeriode, submittable } = ownProps; - const formName = `OppholdInntektOgPeriodeForm-${valgtPeriode.id}`; - return { - initialValues: buildInitialValues(state, ownProps), - form: formName, - submittable, - onSubmit, - }; - }; -}; - -export default connect(mapStateToPropsFactory)( - injectIntl( - behandlingForm({ - enableReinitialize: true, - })(OppholdInntektOgPeriodeForm), - ), -); diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.spec.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.spec.tsx deleted file mode 100644 index d019c5d764..0000000000 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.spec.tsx +++ /dev/null @@ -1,233 +0,0 @@ -import React from 'react'; -import { screen } from '@testing-library/react'; -import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import { intlMock } from '@fpsak-frontend/utils-test/intl-test-helper'; -import { reduxFormPropsMock } from '@fpsak-frontend/utils-test/redux-form-test-helper'; -import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; -import { OppholdInntektOgPeriodeForm } from './OppholdInntektOgPeriodeForm'; -import messages from '../../../i18n/nb_NO.json'; - -const valgtPeriode = { - aksjonspunkter: [], - id: '123', -}; - -const alleKodeverk = { - MedlemskapManuellVurderingType: [ - { - kode: 'IKKE_RELEVANT', - navn: 'Ikke relevant periode', - kodeverk: 'MEDLEMSKAP_MANUELL_VURD', - }, - { - kode: 'MEDLEM', - navn: 'Periode med medlemskap', - kodeverk: 'MEDLEMSKAP_MANUELL_VURD', - }, - { - kode: 'UNNTAK', - navn: 'Periode med unntak fra medlemskap', - kodeverk: 'MEDLEMSKAP_MANUELL_VURD', - }, - ], -}; - -describe('', () => { - it('skal vise informasjon uten editeringsmuligheter når det ikke finnes aksjonspunkter', () => { - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Opplysninger oppgitt i søknaden')).toBeInTheDocument(); - expect(screen.getByText('Perioder med medlemskap')).toBeInTheDocument(); - expect(screen.queryByText('textbox')).not.toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); - }); - - it('skal avklare bosatt data når en har dette aksjonspunktet', () => { - const bosattAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - const valgtPeriodeMedBosattAksjonspunkt = { - aksjonspunkter: [aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT], - id: '123', - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByRole('textbox', { name: 'Begrunn endringene' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); - }); - - it('skal avklare perioder når en har dette aksjonspunktet', () => { - const periodeAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - const valgtPeriodeMedAksjonspunkt = { - aksjonspunkter: [aksjonspunktCodes.AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE], - id: '123', - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Perioder med medlemskap')).toBeInTheDocument(); - expect(screen.getByRole('textbox', { name: 'Begrunn endringene' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); - }); - - it('skal avklare oppholdsrett når en har dette aksjonspunktet', () => { - const oppholdsrettAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_OPPHOLDSRETT, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - const valgtPeriodeMedOppholdsrettAksjonspunkt = { - aksjonspunkter: [aksjonspunktCodes.AVKLAR_OPPHOLDSRETT], - id: '123', - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Status for søker')).toBeInTheDocument(); - expect(screen.getByRole('textbox', { name: 'Begrunn endringene' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); - }); - - it('skal avklare lovlig opphold når en har dette aksjonspunktet', () => { - const lovligOppholdAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_LOVLIG_OPPHOLD, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - const valgtPeriodeMedLovligoppholdAksjonspunkt = { - aksjonspunkter: [aksjonspunktCodes.AVKLAR_LOVLIG_OPPHOLD], - id: '123', - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Status for søker')).toBeInTheDocument(); - expect(screen.getByRole('textbox', { name: 'Begrunn endringene' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Oppdater' })).not.toBeDisabled(); - }); -}); diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.tsx new file mode 100644 index 0000000000..acfe676aa3 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPeriodeForm.tsx @@ -0,0 +1,182 @@ +import FaktaBegrunnelseTextFieldRHF from '@fpsak-frontend/form/src/hook-form/FaktaBegrunnelseTextFieldRHF'; +import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; +import { + BorderBox, + FlexColumn, + FlexContainer, + FlexRow, + VerticalSpacer, + useSaksbehandlerOppslag, +} from '@fpsak-frontend/shared-components'; +import { ISO_DATE_FORMAT } from '@fpsak-frontend/utils'; +import { Aksjonspunkt } from '@k9-sak-web/types'; +import { Alert, Button } from '@navikt/ds-react'; +import { AssessedBy } from '@navikt/ft-plattform-komponenter'; +import moment from 'moment'; +import { FunctionComponent, useState } from 'react'; +import { useFormContext, useWatch } from 'react-hook-form'; +import { + OppholdInntektOgPeriodeFormState, + OppholdInntektOgPerioderFormState, + StatusForBorgerFaktaPanelFormState, +} from './FormState'; +import { MedlemskapPeriode } from './Medlemskap'; +import OppholdINorgeOgAdresserFaktaPanel from './OppholdINorgeOgAdresserFaktaPanel'; +import { Periode } from './Periode'; +import PerioderMedMedlemskapFaktaPanel from './PerioderMedMedlemskapFaktaPanel'; +import { Soknad } from './Soknad'; +import StatusForBorgerFaktaPanel from './StatusForBorgerFaktaPanel'; + +const { AVKLAR_OPPHOLDSRETT, AVKLAR_LOVLIG_OPPHOLD } = aksjonspunktCodes; + +const hasAksjonspunkt = (aksjonspunktCode: string, aksjonspunkter: string[]) => + aksjonspunkter.some(ap => ap === aksjonspunktCode); + +const transformValues = (values: OppholdInntektOgPeriodeFormState) => ({ + begrunnelse: values.begrunnelse || '---', + ...values, +}); + +interface OppholdInntektOgPeriodeFormProps { + selectedId?: string; + readOnly: boolean; + updateOppholdInntektPeriode: (values: OppholdInntektOgPeriodeFormState) => void; + submittable: boolean; + valgtPeriode: Periode; + periodeResetCallback: () => void; + alleMerknaderFraBeslutter: { notAccepted: boolean }; +} + +interface StaticFunctions { + buildInitialValues: ( + valgtPeriode: Periode, + alleAksjonspunkter: Aksjonspunkt[], + soknad: Soknad, + medlemskapPerioder: MedlemskapPeriode[], + gjeldendeFom: string, + ) => OppholdInntektOgPeriodeFormState; +} + +export const OppholdInntektOgPeriodeForm: FunctionComponent & StaticFunctions = ({ + valgtPeriode, + readOnly, + updateOppholdInntektPeriode, + submittable, + periodeResetCallback, + alleMerknaderFraBeslutter, +}) => { + const [isSubmitted, setIsSubmitted] = useState(false); + const { hentSaksbehandlerNavn } = useSaksbehandlerOppslag(); + const { control, formState, trigger } = useFormContext(); + const oppholdInntektOgPeriodeFormValues = useWatch({ control, name: 'oppholdInntektOgPeriodeForm' }); + const handleSubmit = () => { + trigger('oppholdInntektOgPeriodeForm').then(isValid => { + if (isValid) { + setIsSubmitted(true); + } + }); + updateOppholdInntektPeriode(transformValues(oppholdInntektOgPeriodeFormValues)); + }; + + const begrunnelse = useWatch({ control, name: 'oppholdInntektOgPeriodeForm.begrunnelse' }); + const perioder = useWatch({ control, name: 'perioder' }); + const harAndreÅpneAksjonspunkter = perioder.some( + periode => periode.aksjonspunkter.length > 0 && periode.begrunnelse === null, + ); + return ( + + + + + {(hasAksjonspunkt(AVKLAR_OPPHOLDSRETT, valgtPeriode.aksjonspunkter) || + hasAksjonspunkt(AVKLAR_LOVLIG_OPPHOLD, valgtPeriode.aksjonspunkter)) && ( + + )} + + {valgtPeriode.aksjonspunkter && valgtPeriode.aksjonspunkter.length > 0 && ( + <> + + {!!begrunnelse && ( + + )} + + )} + + + {submittable && ( + + + + + + + + + + {harAndreÅpneAksjonspunkter && isSubmitted && ( + + Denne perioden er nå oppdatert. Du har flere perioder som må vurderes før du kan bekrefte og fortsette. + + )} + + )} + + ); +}; + +OppholdInntektOgPeriodeForm.buildInitialValues = ( + valgtPeriode: Periode, + alleAksjonspunkter: Aksjonspunkt[], + soknad: Soknad, + medlemskapPerioder: MedlemskapPeriode[], + gjeldendeFom: string, +) => { + const aksjonspunkter = alleAksjonspunkter + .filter( + ap => + valgtPeriode.aksjonspunkter.includes(ap.definisjon) || + ap.definisjon === aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP, + ) + .filter(ap => ap.definisjon !== aksjonspunktCodes.AVKLAR_STARTDATO_FOR_FORELDREPENGERPERIODEN); + let oppholdValues: StatusForBorgerFaktaPanelFormState | undefined; + let confirmValues: + | { + begrunnelse: string; + } + | undefined; + if ( + hasAksjonspunkt(AVKLAR_OPPHOLDSRETT, valgtPeriode.aksjonspunkter) || + hasAksjonspunkt(AVKLAR_LOVLIG_OPPHOLD, valgtPeriode.aksjonspunkter) + ) { + oppholdValues = StatusForBorgerFaktaPanel.buildInitialValues(valgtPeriode, aksjonspunkter); + } + if (valgtPeriode.aksjonspunkter.length > 0) { + confirmValues = FaktaBegrunnelseTextFieldRHF.buildInitialValues([valgtPeriode]); + } + + return { + ...valgtPeriode, + ...OppholdINorgeOgAdresserFaktaPanel.buildInitialValues(soknad, valgtPeriode, aksjonspunkter), + ...PerioderMedMedlemskapFaktaPanel.buildInitialValues(valgtPeriode, medlemskapPerioder, soknad, aksjonspunkter), + fom: gjeldendeFom || moment().format(ISO_DATE_FORMAT), + ...oppholdValues, + ...confirmValues, + }; +}; + +export default OppholdInntektOgPeriodeForm; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.jsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.jsx deleted file mode 100644 index 7ee92551e6..0000000000 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.jsx +++ /dev/null @@ -1,336 +0,0 @@ -import React, { Component } from 'react'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { FormattedMessage, injectIntl } from 'react-intl'; -import { createSelector } from 'reselect'; -import { formPropTypes, change as reduxFormChange, reset as reduxFormReset } from 'redux-form'; -import { Button } from '@navikt/ds-react'; -// eslint-disable-next-line import/no-duplicates -import PropTypes from 'prop-types'; -import { behandlingForm, behandlingFormValueSelector, getBehandlingFormPrefix } from '@fpsak-frontend/form'; -import aksjonspunktCodes, { hasAksjonspunkt } from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import behandlingType from '@fpsak-frontend/kodeverk/src/behandlingType'; -import { AksjonspunktHelpText, VerticalSpacer } from '@fpsak-frontend/shared-components'; -// eslint-disable-next-line import/no-duplicates -import { aksjonspunktPropType } from '@fpsak-frontend/prop-types'; -import { guid } from '@fpsak-frontend/utils'; -import MedlemskapEndringerTabell from './MedlemskapEndringerTabell'; -import OppholdInntektOgPeriodeForm from './OppholdInntektOgPeriodeForm'; - -const { - AVKLAR_OM_BRUKER_ER_BOSATT, - AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, - AVKLAR_OPPHOLDSRETT, - AVKLAR_LOVLIG_OPPHOLD, - AVKLAR_FORTSATT_MEDLEMSKAP, -} = aksjonspunktCodes; - -const getHelpTexts = aksjonspunkter => { - const helpTexts = []; - if (hasAksjonspunkt(AVKLAR_FORTSATT_MEDLEMSKAP, aksjonspunkter)) { - helpTexts.push(); - } - if (hasAksjonspunkt(AVKLAR_OM_BRUKER_ER_BOSATT, aksjonspunkter)) { - helpTexts.push(); - } - if (hasAksjonspunkt(AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, aksjonspunkter)) { - helpTexts.push( - , - ); - } - if (hasAksjonspunkt(AVKLAR_OPPHOLDSRETT, aksjonspunkter)) { - helpTexts.push( - , - ); - } - if (hasAksjonspunkt(AVKLAR_LOVLIG_OPPHOLD, aksjonspunkter)) { - helpTexts.push( - , - ); - } - return helpTexts; -}; - -const createNewPerioder = (perioder, id, values) => { - const updatedIndex = perioder.findIndex(p => p.id === id); - const updatedPeriode = perioder.find(p => p.id === id); - - return [ - ...perioder.slice(0, updatedIndex), - { - ...updatedPeriode, - ...values, - }, - ...perioder.slice(updatedIndex + 1), - ]; -}; - -/** - * OppholdInntektOgPerioderForm - * - * Presentasjonskomponent. Har ansvar for å sette opp Redux Formen for faktapenelet til Medlemskapsvilkåret. - */ -export class OppholdInntektOgPerioderForm extends Component { - constructor(props) { - super(props); - - this.state = { - valgtPeriode: undefined, - }; - - this.velgPeriodeCallback = this.velgPeriodeCallback.bind(this); - this.updateOppholdInntektPeriode = this.updateOppholdInntektPeriode.bind(this); - this.isConfirmButtonDisabled = this.isConfirmButtonDisabled.bind(this); - this.periodeResetCallback = this.periodeResetCallback.bind(this); - } - - // eslint-disable-next-line camelcase - UNSAFE_componentWillMount() { - const { initialValues } = this.props; - const defaultPeriode = initialValues.perioder ? initialValues.perioder[0] : {}; - this.setValgtPeriode(defaultPeriode); - } - - setValgtPeriode(valgtPeriode) { - if (!valgtPeriode) { - const { initialValues } = this.props; - const defaultPeriode = initialValues.perioder ? initialValues.perioder[0] : {}; - this.setState({ valgtPeriode: defaultPeriode }); - } - this.setState({ valgtPeriode }); - } - - periodeResetCallback() { - const { behandlingFormPrefix, reduxFormReset: formReset } = this.props; - const { valgtPeriode } = this.state; - if (valgtPeriode) { - formReset(`${behandlingFormPrefix}.OppholdInntektOgPeriodeForm-${valgtPeriode.id}`); - } - } - - velgPeriodeCallback(p, id, periode) { - const valgtPeriode = { - id, - ...periode, - }; - this.setState({ valgtPeriode }); - } - - updateOppholdInntektPeriode(values) { - const { behandlingFormPrefix, perioder, reduxFormChange: formChange } = this.props; - - const updatedPeriode = perioder.find(p => p.id === values.id); - - const newPeriodeObject = { - ...updatedPeriode, - ...values, - }; - - const newPerioder = createNewPerioder(perioder, values.id, newPeriodeObject); - - formChange(`${behandlingFormPrefix}.OppholdInntektOgPerioderForm`, 'perioder', newPerioder); - } - - isConfirmButtonDisabled() { - const { perioder, readOnly, submitting, dirty } = this.props; - - if (!dirty) { - return true; - } - - if (perioder && perioder.length > 0) { - const ubekreftPerioder = perioder.filter( - periode => periode.aksjonspunkter.length > 0 && periode.begrunnelse === null, - ); - - if (ubekreftPerioder.length > 0) { - return true; - } - } - - return submitting || readOnly; - } - - render() { - const { - hasOpenAksjonspunkter, - submittable, - aksjonspunkter, - readOnly, - submitting, - isRevurdering, - behandlingId, - behandlingVersjon, - alleKodeverk, - alleMerknaderFraBeslutter, - ...formProps - } = this.props; - - const { valgtPeriode } = this.state; - const isApOpen = hasOpenAksjonspunkter || !submittable; - - return ( -
- {getHelpTexts(aksjonspunkter)} - {hasAksjonspunkt(AVKLAR_FORTSATT_MEDLEMSKAP, aksjonspunkter) && ( - - )} - - {valgtPeriode && ( - - )} - - - - - ); - } -} - -OppholdInntektOgPerioderForm.propTypes = { - intl: PropTypes.shape().isRequired, - hasOpenAksjonspunkter: PropTypes.bool.isRequired, - submittable: PropTypes.bool.isRequired, - aksjonspunkter: PropTypes.arrayOf(aksjonspunktPropType.isRequired).isRequired, - readOnly: PropTypes.bool.isRequired, - submitting: PropTypes.bool.isRequired, - isRevurdering: PropTypes.bool.isRequired, - alleMerknaderFraBeslutter: PropTypes.shape({ - notAccepted: PropTypes.bool, - }).isRequired, - ...formPropTypes, -}; - -const medlemAksjonspunkter = [ - AVKLAR_OM_BRUKER_ER_BOSATT, - AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, - AVKLAR_OPPHOLDSRETT, - AVKLAR_LOVLIG_OPPHOLD, - AVKLAR_FORTSATT_MEDLEMSKAP, -]; - -export const transformValues = (values, aksjonspunkter) => { - const aktiveMedlemAksjonspunkter = aksjonspunkter - .filter(ap => medlemAksjonspunkter.includes(ap.definisjon)) - .filter(ap => ap.erAktivt) - .filter(ap => ap.definisjon !== aksjonspunktCodes.AVKLAR_STARTDATO_FOR_FORELDREPENGERPERIODEN); - - return aktiveMedlemAksjonspunkter.map(ap => ({ - kode: ap.definisjon, - // begrunnelse: '', //TODO (Hallvard): Kan vi fjerne denne? - bekreftedePerioder: values.perioder - .map(periode => { - // TODO Kor mange felt er det i bekreftetPeriode? Kan ein heller laga nytt objekt med det ein treng? - const { - /* eslint-disable @typescript-eslint/no-unused-vars */ - id, - fixedMedlemskapPerioder, - foreldre, - manuellVurderingType, - hasBosattAksjonspunkt, - hasPeriodeAksjonspunkt, - isBosattAksjonspunktClosed, - isPeriodAksjonspunktClosed, - opphold, - personopplysninger, - fom, - termindato, - årsaker, - /* eslint-enable @typescript-eslint/no-unused-vars */ - ...bekreftetPeriode - } = periode; - return bekreftetPeriode; - }) - .filter( - periode => - periode.aksjonspunkter.includes(ap.definisjon) || - (periode.aksjonspunkter.length > 0 && ap.definisjon === aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP), - ), - })); -}; - -const buildInitalValues = createSelector( - [ownProps => ownProps.soknad, ownProps => ownProps.fagsakPerson, ownProps => ownProps.medlemskap], - (soknad, person, medlem = {}) => ({ - soknad, - person, - gjeldendeFom: medlem.fom, - medlemskapPerioder: medlem.medlemskapPerioder || [], - perioder: (medlem.perioder || []).map(periode => ({ - ...periode, - id: guid(), - })), - }), -); - -export const isBehandlingRevurderingFortsattMedlemskap = createSelector( - [ownProps => ownProps.behandlingType, ownProps => ownProps.medlemskap], - (type, medlem = {}) => type === behandlingType.REVURDERING && !!medlem.fom, -); - -const mapStateToPropsFactory = (initialState, initialOwnProps) => { - const onSubmit = values => initialOwnProps.submitCallback(transformValues(values, initialOwnProps.aksjonspunkter)); - const hasOpenAksjonspunkter = initialOwnProps.aksjonspunkter.some(ap => isAksjonspunktOpen(ap.status)); - const perioder = []; - - return (state, ownProps) => { - const { behandlingId, behandlingVersjon } = ownProps; - const behandlingFormPrefix = getBehandlingFormPrefix(behandlingId, behandlingVersjon); - return { - behandlingFormPrefix, - onSubmit, - hasOpenAksjonspunkter, - initialValues: buildInitalValues(ownProps), - perioder: - behandlingFormValueSelector( - 'OppholdInntektOgPerioderForm', - behandlingId, - behandlingVersjon, - )(state, 'perioder') || perioder, - isRevurdering: isBehandlingRevurderingFortsattMedlemskap(ownProps), - }; - }; -}; - -const mapDispatchToProps = dispatch => ({ - ...bindActionCreators( - { - reduxFormChange, - reduxFormReset, - }, - dispatch, - ), -}); - -export default connect( - mapStateToPropsFactory, - mapDispatchToProps, -)( - behandlingForm({ - form: 'OppholdInntektOgPerioderForm', - // Fiks for https://jira.adeo.no/browse/TSF-998 kopiert fra fp-frontend - // ref: https://github.com/navikt/fp-frontend - // /commit/6a17a716da87e38fbb6a678757eaeea69dcd30ac#diff-fa5cf1a3780389bacd27f386442774846ee8b01b664337d8cf9bafa8dec243bd - // enableReinitialize: true, - })(injectIntl(OppholdInntektOgPerioderForm)), -); diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.spec.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.spec.tsx deleted file mode 100644 index def258d56b..0000000000 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.spec.tsx +++ /dev/null @@ -1,261 +0,0 @@ -import React from 'react'; -import { screen } from '@testing-library/react'; -import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import behandlingType from '@fpsak-frontend/kodeverk/src/behandlingType'; -import { intlMock } from '@fpsak-frontend/utils-test/intl-test-helper'; -import { reduxFormPropsMock } from '@fpsak-frontend/utils-test/redux-form-test-helper'; -import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; -import OppholdInntektOgPerioderForm, { transformValues } from './OppholdInntektOgPerioderForm'; -import messages from '../../../i18n/nb_NO.json'; - -const perioder = []; - -describe('', () => { - it('skal vise informasjon uten editeringsmuligheter når det ikke finnes aksjonspunkter', () => { - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.queryByRole('textbox')).not.toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Bekreft og fortsett' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Bekreft og fortsett' })).toBeDisabled(); - }); - - it('skal avklare bosatt data når en har dette aksjonspunktet', () => { - const bosattAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_OM_BRUKER_ER_BOSATT, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Vurder om søker er bosatt i Norge')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Bekreft og fortsett' })).toBeInTheDocument(); - }); - - it('skal avklare perioder når en har dette aksjonspunktet', () => { - const periodeAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Vurder om søker har gyldig medlemskap i perioden')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Bekreft og fortsett' })).toBeInTheDocument(); - }); - - it('skal avklare oppholdsrett når en har dette aksjonspunktet', () => { - const oppholdsrettAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_OPPHOLDSRETT, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Vurder om søker er EØS-borger med oppholdsrett')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Bekreft og fortsett' })).toBeInTheDocument(); - }); - - it('skal avklare lovlig opphold når en har dette aksjonspunktet', () => { - const lovligOppholdAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_LOVLIG_OPPHOLD, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Avklar om søker har lovlig opphold')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Bekreft og fortsett' })).toBeInTheDocument(); - }); - - it('skal avklare fortsatt medlemskap når en har dette aksjonspunktet', () => { - const fortsattMedlemskapAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - renderWithIntlAndReduxForm( - , - { messages }, - ); - - expect(screen.getByText('Vurder om søker fortsatt har gyldig medlemskap i perioden')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Bekreft og fortsett' })).toBeInTheDocument(); - }); - - it('skal kun avklare aksjonspunkt som er aktive', () => { - const lovligOppholdAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_LOVLIG_OPPHOLD, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: false, - erAktivt: false, - }; - - const fortsattMedlemskapAksjonspunkt = { - id: 1, - definisjon: aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP, - status: 's1', - toTrinnsBehandling: true, - toTrinnsBehandlingGodkjent: false, - kanLoses: true, - erAktivt: true, - }; - - const values = { - perioder: [ - { - aksjonspunkter: [aksjonspunktCodes.AVKLAR_LOVLIG_OPPHOLD], - begrunnelse: 'dawdawdawdawdawda', - bosattVurdering: null, - erEosBorger: false, - lovligOppholdVurdering: true, - medlemskapManuellVurderingType: null, - oppholdsrettVurdering: null, - vurderingsdato: '2019-10-06', - årsaker: ['STATSBORGERSKAP'], - }, - ], - }; - - const transformed = transformValues(values, [lovligOppholdAksjonspunkt, fortsattMedlemskapAksjonspunkt]); - - expect(transformed.length).toBe(1); - expect(transformed[0].kode).toBe(aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP); - }); -}); diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx new file mode 100644 index 0000000000..1ece422f5f --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/OppholdInntektOgPerioderForm.tsx @@ -0,0 +1,276 @@ +import aksjonspunktCodes, { hasAksjonspunkt } from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; +import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; +import { AksjonspunktHelpText, VerticalSpacer } from '@fpsak-frontend/shared-components'; +import { guid } from '@fpsak-frontend/utils'; +import { Aksjonspunkt, FagsakPerson, KodeverkMedNavn } from '@k9-sak-web/types'; +import { Button } from '@navikt/ds-react'; +import { Form } from '@navikt/ft-form-hooks'; +import React, { useMemo, useState } from 'react'; +import { useForm, useWatch } from 'react-hook-form'; +import { OppholdInntektOgPeriodeFormState, OppholdInntektOgPerioderFormState } from './FormState'; +import { Medlemskap } from './Medlemskap'; +import MedlemskapEndringerTabell from './MedlemskapEndringerTabell'; +import { MerknaderFraBeslutter } from './MerknaderFraBeslutter'; +import OppholdInntektOgPeriodeForm from './OppholdInntektOgPeriodeForm'; +import { Periode } from './Periode'; +import { Soknad } from './Soknad'; + +const { + AVKLAR_OM_BRUKER_ER_BOSATT, + AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, + AVKLAR_OPPHOLDSRETT, + AVKLAR_LOVLIG_OPPHOLD, + AVKLAR_FORTSATT_MEDLEMSKAP, +} = aksjonspunktCodes; + +const getHelpTexts = (aksjonspunkter: Aksjonspunkt[]) => { + const helpTexts = []; + if (hasAksjonspunkt(AVKLAR_FORTSATT_MEDLEMSKAP, aksjonspunkter)) { + helpTexts.push('Vurder om søker fortsatt har gyldig medlemskap i perioden'); + } + if (hasAksjonspunkt(AVKLAR_OM_BRUKER_ER_BOSATT, aksjonspunkter)) { + helpTexts.push('Vurder om søker er bosatt i Norge'); + } + if (hasAksjonspunkt(AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, aksjonspunkter)) { + helpTexts.push('Vurder om søker har gyldig medlemskap i perioden'); + } + if (hasAksjonspunkt(AVKLAR_OPPHOLDSRETT, aksjonspunkter)) { + helpTexts.push('Vurder om søker er EØS-borger med oppholdsrett'); + } + if (hasAksjonspunkt(AVKLAR_LOVLIG_OPPHOLD, aksjonspunkter)) { + helpTexts.push('Avklar om søker har lovlig opphold'); + } + return helpTexts; +}; + +const createNewPerioder = (perioder: Periode[], id: string, values): Periode[] => { + const updatedIndex = perioder.findIndex(p => p.id === id); + const updatedPeriode = perioder.find(p => p.id === id); + + return [ + ...perioder.slice(0, updatedIndex), + { + ...updatedPeriode, + ...values, + }, + ...perioder.slice(updatedIndex + 1), + ]; +}; + +const medlemAksjonspunkter = [ + AVKLAR_OM_BRUKER_ER_BOSATT, + AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, + AVKLAR_OPPHOLDSRETT, + AVKLAR_LOVLIG_OPPHOLD, + AVKLAR_FORTSATT_MEDLEMSKAP, +]; + +export const transformValues = (values: OppholdInntektOgPerioderFormState, aksjonspunkter: Aksjonspunkt[]) => { + const aktiveMedlemAksjonspunkter = aksjonspunkter + .filter(ap => medlemAksjonspunkter.includes(ap.definisjon)) + .filter(ap => ap.erAktivt) + .filter(ap => ap.definisjon !== aksjonspunktCodes.AVKLAR_STARTDATO_FOR_FORELDREPENGERPERIODEN); + + return aktiveMedlemAksjonspunkter.map(aksjonspunkt => ({ + kode: aksjonspunkt.definisjon, + bekreftedePerioder: values.perioder + .map(periode => { + const { + vurderingsdato, + aksjonspunkter: aksjonspunkterFraPeriode, + oppholdsrettVurdering, + erEosBorger, + lovligOppholdVurdering, + medlemskapManuellVurderingType, + begrunnelse, + } = periode; + const bekreftetPeriode = { + vurderingsdato, + aksjonspunkter: aksjonspunkterFraPeriode, + oppholdsrettVurdering, + erEosBorger, + lovligOppholdVurdering, + medlemskapManuellVurderingType, + begrunnelse, + }; + return bekreftetPeriode; + }) + .filter( + periode => + periode.aksjonspunkter.includes(aksjonspunkt.definisjon) || + (periode.aksjonspunkter.length > 0 && + aksjonspunkt.definisjon === aksjonspunktCodes.AVKLAR_FORTSATT_MEDLEMSKAP), + ), + })); +}; + +const buildInitialValues = ( + soknad: Soknad, + fagsakPerson: FagsakPerson, + medlemskap: Medlemskap, + perioder: Periode[], + valgtPeriode: Periode, + aksjonspunkter: Aksjonspunkt[], +): OppholdInntektOgPerioderFormState => ({ + soknad, + person: fagsakPerson, + gjeldendeFom: medlemskap.fom, + perioder, + oppholdInntektOgPeriodeForm: OppholdInntektOgPeriodeForm.buildInitialValues( + valgtPeriode, + aksjonspunkter, + soknad, + medlemskap.medlemskapPerioder, + medlemskap.fom, + ), +}); + +interface OppholdInntektOgPerioderFormProps { + submittable: boolean; + aksjonspunkter: Aksjonspunkt[]; + readOnly: boolean; + isRevurdering: boolean; + alleMerknaderFraBeslutter: MerknaderFraBeslutter; + alleKodeverk: { [key: string]: KodeverkMedNavn[] }; + behandlingId: number; + behandlingVersjon: number; + medlemskap: Medlemskap; + soknad: Soknad; + fagsakPerson: FagsakPerson; + submitCallback: (aksjonspunktData: any) => Promise; +} + +export const OppholdInntektOgPerioderForm = ({ + readOnly, + submittable, + aksjonspunkter, + alleMerknaderFraBeslutter, + soknad, + fagsakPerson, + medlemskap, + submitCallback, +}: OppholdInntektOgPerioderFormProps) => { + const initialPerioder = useMemo( + () => + (medlemskap.perioder || []).map(periode => ({ + ...periode, + id: guid(), + })), + [medlemskap], + ); + const [valgtPeriode, setValgtPeriode] = useState(initialPerioder?.length > 0 ? initialPerioder[0] : undefined); + + const getInitialValues = (oppdatertePerioder?: Periode[], nyValgtPeriode?: Periode) => + buildInitialValues( + soknad, + fagsakPerson, + medlemskap, + oppdatertePerioder || initialPerioder, + nyValgtPeriode || valgtPeriode, + aksjonspunkter, + ); + + const formMethods = useForm({ + defaultValues: getInitialValues(), + }); + + const hasOpenAksjonspunkter = aksjonspunkter.some(ap => isAksjonspunktOpen(ap.status)); + + const handleSubmit = (formState: OppholdInntektOgPerioderFormState) => { + submitCallback(transformValues(formState, aksjonspunkter)); + }; + + const perioder = useWatch({ control: formMethods.control, name: 'perioder' }); + + const periodeResetCallback = () => { + formMethods.reset({ + ...formMethods.getValues(), + oppholdInntektOgPeriodeForm: getInitialValues().oppholdInntektOgPeriodeForm, + }); + }; + + const velgPeriodeCallback = (id: string, periode: Periode) => { + const nyValgtPeriode = { + id, + ...periode, + }; + + formMethods.reset( + { + ...formMethods.getValues(), + oppholdInntektOgPeriodeForm: getInitialValues(perioder, nyValgtPeriode).oppholdInntektOgPeriodeForm, + }, + { keepDirty: true }, + ); + setValgtPeriode(nyValgtPeriode); + }; + + const updateOppholdInntektPeriode = (values: OppholdInntektOgPeriodeFormState) => { + const updatedPeriode = perioder.find(p => p.id === values.id); + const newPeriodeObject = { + ...updatedPeriode, + ...values, + }; + const newPerioder = createNewPerioder(perioder, values.id, newPeriodeObject); + formMethods.setValue('perioder', newPerioder); + }; + + const isConfirmButtonDisabled = () => { + if (!formMethods.formState.isDirty) { + return true; + } + + if (perioder && perioder.length > 0) { + const ubekreftPerioder = perioder.filter( + periode => periode.aksjonspunkter.length > 0 && periode.begrunnelse === null, + ); + + if (ubekreftPerioder.length > 0) { + return true; + } + } + return formMethods.formState.isSubmitting || readOnly; + }; + + const isApOpen = hasOpenAksjonspunkter || !submittable; + + return ( +
+ + {getHelpTexts(aksjonspunkter).map(helpText => ( + {helpText} + ))} + + {hasAksjonspunkt(AVKLAR_FORTSATT_MEDLEMSKAP, aksjonspunkter) && ( + + )} + + {valgtPeriode && ( + + )} + + + + + ); +}; + +export default OppholdInntektOgPerioderForm; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Periode.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Periode.tsx new file mode 100644 index 0000000000..0bb6b8eae7 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Periode.tsx @@ -0,0 +1,20 @@ +import { Personopplysninger } from '@k9-sak-web/types'; + +export interface Periode { + id: string; + vurderingsdato: string; + årsaker: string[]; + aksjonspunkter: string[]; + begrunnelse: string; + personopplysninger: Personopplysninger; + bosattVurdering: boolean; + vurdertAv: string; + vurdertTidspunkt: string; + isBosattAksjonspunktClosed: boolean; + isPeriodAksjonspunktClosed: boolean; + dekningType: string; + medlemskapManuellVurderingType: string; + oppholdsrettVurdering?: boolean; + erEosBorger?: boolean; + lovligOppholdVurdering?: boolean; +} diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.spec.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.spec.tsx index 5a57a3608a..bc28c2eb16 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.spec.tsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.spec.tsx @@ -3,17 +3,44 @@ import { screen } from '@testing-library/react'; import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import aksjonspunktStatus from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; +import { renderWithIntl } from '@fpsak-frontend/utils-test/test-utils'; +import { Aksjonspunkt } from '@k9-sak-web/types'; +import { FormProvider, useForm } from 'react-hook-form'; import { KodeverkProvider } from '@k9-sak-web/gui/kodeverk/index.js'; import alleKodeverkV2 from '@k9-sak-web/lib/kodeverk/mocks/alleKodeverkV2.json'; -import { behandlingType } from "@k9-sak-web/backend/k9sak/kodeverk/behandling/BehandlingType.js"; +import { behandlingType } from '@k9-sak-web/backend/k9sak/kodeverk/behandling/BehandlingType.js'; +import { MedlemskapPeriode } from './Medlemskap'; +import { Periode } from './Periode'; import PerioderMedMedlemskapFaktaPanel from './PerioderMedMedlemskapFaktaPanel'; +import { Soknad } from './Soknad'; import messages from '../../../i18n/nb_NO.json'; describe('', () => { + const Wrapper = props => { + const formMethods = useForm({ + defaultValues: { + oppholdInntektOgPeriodeForm: { + fixedMedlemskapPerioder: props.perioder, + hasPeriodeAksjonspunkt: true, + }, + }, + }); + + return ( + + {props.children} + + ); + }; + it('skal vise periode og manuelle-vurderingstyper i form', () => { - const periods = [ + const perioder = [ { fom: '2016-01-15', tom: '2016-10-15', @@ -22,44 +49,24 @@ describe('', () => { beslutningsdato: '2016-10-16', }, ]; - const manuelleVurderingstyper = [ - { - kode: 'test1', - navn: 'navn1', - }, - { - kode: 'test2', - navn: 'navn2', - }, - ]; - renderWithIntlAndReduxForm( - - - , + renderWithIntl( + + + , { messages }, ); expect(screen.getByText('Full')).toBeInTheDocument(); expect(screen.getByText('Foreløpig')).toBeInTheDocument(); expect(screen.getByText('15.01.2016-15.10.2016')).toBeInTheDocument(); - expect(screen.getAllByRole('radio', { name: /navn/i }).length).toBe(2); + expect(screen.getAllByRole('radio', { name: 'Ikke relevant periode' }).length).toBe(1); + expect(screen.getAllByRole('radio', { name: 'Periode med medlemskap' }).length).toBe(1); + expect(screen.getAllByRole('radio', { name: 'Periode med unntak fra medlemskap' }).length).toBe(1); }); it('skal vise fødselsdato når en har dette', () => { - const periods = [ + const perioder = [ { fom: '2016-01-15', tom: '2016-10-15', @@ -69,16 +76,14 @@ describe('', () => { }, ]; - renderWithIntlAndReduxForm( - , + renderWithIntl( + + + , { messages }, ); @@ -96,15 +101,10 @@ describe('', () => { }, ]; - renderWithIntlAndReduxForm( - , + renderWithIntl( + + + , { messages }, ); @@ -112,17 +112,12 @@ describe('', () => { }); it('skal ikke vise tabell når det ikke finnes medlemskapsperioder', () => { - const medlemskapPerioder = []; - - renderWithIntlAndReduxForm( - , + const perioder = []; + + renderWithIntl( + + + , { messages }, ); @@ -130,41 +125,29 @@ describe('', () => { }); it('skal sette opp initielle verdier og sorterte perioder etter periodestart', () => { - const periode = { + const periode: Periode = { aksjonspunkter: [aksjonspunktCodes.AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE], medlemskapManuellVurderingType: 'manuellType', - medlemskapPerioder: [ - { - fom: '2016-01-15', - tom: '2016-10-15', - dekningType: { - navn: 'testdekning', - }, - medlemskapType: { - navn: 'testStatus', - }, - beslutningsdato: '2016-10-16', - }, - { - fom: '2017-01-15', - tom: '2017-10-15', - dekningType: { - navn: 'testdekning2017', - }, - medlemskapType: { - navn: 'testStatus2017', - }, - beslutningsdato: '2017-10-16', - }, - ], + id: '', + vurderingsdato: '', + årsaker: [], + begrunnelse: '', + personopplysninger: undefined, + bosattVurdering: false, + vurdertAv: '', + vurdertTidspunkt: '', + isBosattAksjonspunktClosed: false, + isPeriodAksjonspunktClosed: false, + dekningType: undefined, }; - const medlemskapPerioder = [ + const medlemskapPerioder: MedlemskapPeriode[] = [ { fom: '2016-01-15', tom: '2016-10-15', dekningType: 'FTL_2_9_1_b', medlemskapType: 'ENDELIG', beslutningsdato: '2016-10-16', + kildeType: undefined, }, { fom: '2017-01-15', @@ -172,19 +155,26 @@ describe('', () => { dekningType: 'FTL_2_6', medlemskapType: 'FORELOPIG', beslutningsdato: '2017-10-16', + kildeType: undefined, }, ]; - const soknad = { - fodselsdatoer: { - 1: '2017-10-15', + const soknad: Soknad = { + fodselsdatoer: ['2017-10-15'], + oppgittFordeling: { + startDatoForPermisjon: '', + }, + oppgittTilknytning: { + utlandsopphold: [], }, }; - const aksjonspunkter = [ + const aksjonspunkter: Aksjonspunkt[] = [ { definisjon: aksjonspunktCodes.AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, status: aksjonspunktStatus.OPPRETTET, + kanLoses: false, + erAktivt: false, }, ]; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.jsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.tsx similarity index 54% rename from packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.jsx rename to packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.tsx index 1845ceb9af..58b70a0ce9 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.jsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/PerioderMedMedlemskapFaktaPanel.tsx @@ -1,13 +1,7 @@ -import React from 'react'; -import { connect } from 'react-redux'; -import { FormattedMessage } from 'react-intl'; -import moment from 'moment'; -import PropTypes from 'prop-types'; -import { createSelector } from 'reselect'; -import { Label, RadioGroupField, behandlingFormValueSelector } from '@fpsak-frontend/form'; +import { FunctionComponent, useMemo } from 'react'; +import { Label } from '@fpsak-frontend/form'; import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; -import kodeverkTyper from '@fpsak-frontend/kodeverk/src/kodeverkTyper'; import { useKodeverkContext } from '@k9-sak-web/gui/kodeverk/index.js'; import { DateLabel, @@ -18,48 +12,86 @@ import { PeriodLabel, VerticalSpacer, } from '@fpsak-frontend/shared-components'; -import { DDMMYYYY_DATE_FORMAT, required } from '@fpsak-frontend/utils'; +import { DDMMYYYY_DATE_FORMAT } from '@fpsak-frontend/utils'; +import { Aksjonspunkt } from '@k9-sak-web/types'; import { BodyShort, Table, VStack } from '@navikt/ds-react'; +import { RadioGroupPanel } from '@navikt/ft-form-hooks'; +import { required } from '@navikt/ft-form-validators'; +import moment from 'moment'; import { KodeverkType } from '@k9-sak-web/lib/kodeverk/types/KodeverkType.js'; +import { useFormContext } from 'react-hook-form'; +import { OppholdInntektOgPerioderFormState, PerioderMedMedlemskapFaktaPanelFormState } from './FormState'; +import { MedlemskapPeriode } from './Medlemskap'; +import { MerknaderFraBeslutter } from './MerknaderFraBeslutter'; +import { Periode } from './Periode'; +import { Soknad } from './Soknad'; +import { KodeverkObject } from '@k9-sak-web/lib/kodeverk/types.js'; + +const headerTextCodes = ['Periode', 'Dekning', 'Status', 'Beslutningsdato']; + +export const getAksjonspunkter = (kodeverkVurderingTypes: KodeverkObject[]) => { + return kodeverkVurderingTypes.sort((a, b) => { + const kodeA = a.kode; + const kodeB = b.kode; + if (kodeA < kodeB) { + return -1; + } + if (kodeA > kodeB) { + return 1; + } + + return 0; + }); +}; + +interface PerioderMedMedlemskapFaktaPanelProps { + readOnly: boolean; + fodselsdato?: string; + alleMerknaderFraBeslutter?: MerknaderFraBeslutter; +} -const headerTextCodes = [ - 'PerioderMedMedlemskapFaktaPanel.Period', - 'PerioderMedMedlemskapFaktaPanel.Coverage', - 'PerioderMedMedlemskapFaktaPanel.Status', - 'PerioderMedMedlemskapFaktaPanel.Date', -]; +interface StaticFunctions { + buildInitialValues: ( + periode: Periode, + medlemskapPerioder: MedlemskapPeriode[], + soknad: Soknad, + aksjonspunkter: Aksjonspunkt[], + ) => PerioderMedMedlemskapFaktaPanelFormState; + transformValues: ( + values: PerioderMedMedlemskapFaktaPanelFormState, + manuellVurderingTyper, + ) => { kode: string; medlemskapManuellVurderingType: string }; +} /** * PerioderMedMedlemskapFaktaPanel * * Presentasjonskomponent. Setter opp aksjonspunktet for avklaring av perioder (Medlemskapsvilkåret). */ -export const PerioderMedMedlemskapFaktaPanel = ({ - readOnly, - hasPeriodeAksjonspunkt, - isPeriodAksjonspunktClosed, - fixedMedlemskapPerioder = [], - fodselsdato, - vurderingTypes, - alleMerknaderFraBeslutter, -}) => { - const { kodeverkNavnFraKode } = useKodeverkContext(); - +export const PerioderMedMedlemskapFaktaPanel: FunctionComponent & + StaticFunctions = ({ readOnly, fodselsdato, alleMerknaderFraBeslutter }) => { + const { kodeverkNavnFraKode, hentKodeverkForKode } = useKodeverkContext(); + const { getValues } = useFormContext(); + const kodeverkVurderingTypes: KodeverkObject[] = hentKodeverkForKode( + KodeverkType.MEDLEMSKAP_MANUELL_VURDERING_TYPE, + ) as KodeverkObject[]; + const { + oppholdInntektOgPeriodeForm: { fixedMedlemskapPerioder, hasPeriodeAksjonspunkt, isPeriodAksjonspunktClosed }, + } = getValues(); + const vurderingTypes = useMemo(() => getAksjonspunkter(kodeverkVurderingTypes), [kodeverkVurderingTypes]); if (!fixedMedlemskapPerioder || fixedMedlemskapPerioder.length === 0) { return ( - - - - + + Ingen registrerte opplysninger om medlemskap ); } return (
@@ -67,7 +99,7 @@ export const PerioderMedMedlemskapFaktaPanel = ({ {headerTextCodes.map(text => ( - + {text} ))} @@ -96,29 +128,23 @@ export const PerioderMedMedlemskapFaktaPanel = ({ {hasPeriodeAksjonspunkt && ( - ({ value: type.kode, label: )} - - {fodselsdato && ( - - )} - + {fodselsdato && `Fødselsdato: ${moment(fodselsdato).format(DDMMYYYY_DATE_FORMAT)}`} @@ -126,50 +152,14 @@ export const PerioderMedMedlemskapFaktaPanel = ({ ); }; -PerioderMedMedlemskapFaktaPanel.propTypes = { - readOnly: PropTypes.bool.isRequired, - fixedMedlemskapPerioder: PropTypes.arrayOf(PropTypes.shape()), - fodselsdato: PropTypes.string, - vurderingTypes: PropTypes.arrayOf(PropTypes.shape()).isRequired, - hasPeriodeAksjonspunkt: PropTypes.bool.isRequired, - isPeriodAksjonspunktClosed: PropTypes.bool.isRequired, - alleMerknaderFraBeslutter: PropTypes.shape({ - notAccepted: PropTypes.bool, - }).isRequired, -}; - -export const getAksjonspunkter = createSelector([ownProps => ownProps.alleKodeverk], alleKodeverk => { - const vurderingTypes = alleKodeverk[kodeverkTyper.MEDLEMSKAP_MANUELL_VURDERING_TYPE]; - return vurderingTypes.sort((a, b) => { - const kodeA = a.kode; - const kodeB = b.kode; - if (kodeA < kodeB) { - return -1; - } - if (kodeA > kodeB) { - return 1; - } - - return 0; - }); -}); - -const mapStateToProps = (state, ownProps) => ({ - ...behandlingFormValueSelector( - `OppholdInntektOgPeriodeForm-${ownProps.id}`, - ownProps.behandlingId, - ownProps.behandlingVersjon, - )(state, 'fixedMedlemskapPerioder', 'fodselsdato', 'hasPeriodeAksjonspunkt', 'isPeriodAksjonspunktClosed'), - vurderingTypes: getAksjonspunkter(ownProps), -}); - -PerioderMedMedlemskapFaktaPanel.buildInitialValues = (periode, medlemskapPerioder, soknad, aksjonspunkter) => { - if (medlemskapPerioder === null) { - return []; - } - +PerioderMedMedlemskapFaktaPanel.buildInitialValues = ( + periode: Periode, + medlemskapPerioder: MedlemskapPeriode[], + soknad: Soknad, + aksjonspunkter: Aksjonspunkt[], +) => { const fixedMedlemskapPerioder = medlemskapPerioder - .map(i => ({ + ?.map(i => ({ fom: i.fom, tom: i.tom, dekning: i.dekningType, @@ -194,11 +184,14 @@ PerioderMedMedlemskapFaktaPanel.buildInitialValues = (periode, medlemskapPeriode }; }; -PerioderMedMedlemskapFaktaPanel.transformValues = (values, manuellVurderingTyper) => ({ - kode: aksjonspunktCodes.AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, - medlemskapManuellVurderingType: manuellVurderingTyper.find( - m => m.kode === values.medlemskapManuellVurderingType.kode, - ), -}); +PerioderMedMedlemskapFaktaPanel.transformValues = ( + values: PerioderMedMedlemskapFaktaPanelFormState, + manuellVurderingTyper, +) => { + return { + kode: aksjonspunktCodes.AVKLAR_OM_BRUKER_HAR_GYLDIG_PERIODE, + medlemskapManuellVurderingType: manuellVurderingTyper.find(m => m.kode === values.medlemskapManuellVurderingType), + }; +}; -export default connect(mapStateToProps)(PerioderMedMedlemskapFaktaPanel); +export default PerioderMedMedlemskapFaktaPanel; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Soknad.ts b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Soknad.ts new file mode 100644 index 0000000000..c6df051a42 --- /dev/null +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/Soknad.ts @@ -0,0 +1,9 @@ +export interface Soknad { + oppgittFordeling: { + startDatoForPermisjon: string; + }; + oppgittTilknytning: { + utlandsopphold: any[]; + }; + fodselsdatoer: string[]; +} diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.spec.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.spec.tsx index e634d64a63..e6f7bce8fd 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.spec.tsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.spec.tsx @@ -2,24 +2,33 @@ import React from 'react'; import { screen } from '@testing-library/react'; import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; -import { intlMock } from '@fpsak-frontend/utils-test/intl-test-helper'; -import { renderWithIntlAndReduxForm } from '@fpsak-frontend/utils-test/test-utils'; - +import { renderWithIntl } from '@fpsak-frontend/utils-test/test-utils'; +import { Aksjonspunkt } from '@k9-sak-web/types'; +import { FormProvider, useForm } from 'react-hook-form'; +import { Periode } from './Periode'; import StatusForBorgerFaktaPanel from './StatusForBorgerFaktaPanel'; import messages from '../../../i18n/nb_NO.json'; describe('', () => { + const Wrapper = props => { + const formMethods = useForm({ + defaultValues: { + oppholdInntektOgPeriodeForm: { + apKode: props.apKode, + erEosBorger: props.erEosBorger, + isBorgerAksjonspunktClosed: props.isBorgerAksjonspunktClosed, + }, + }, + }); + + return {props.children}; + }; it('skal vise radioknapper for vurdering av oppholdsrett', () => { - renderWithIntlAndReduxForm( - , + renderWithIntl( + + + , { messages }, ); @@ -31,15 +40,10 @@ describe('', () => { }); it('skal vise radioknapper for vurdering av lovlig opphold', () => { - renderWithIntlAndReduxForm( - , + renderWithIntl( + + + , { messages }, ); @@ -51,13 +55,28 @@ describe('', () => { }); it('skal sette initielle verdi når det er EØS borger og ingen vurdering er lagret', () => { - const periode = { + const periode: Periode = { aksjonspunkter: [aksjonspunktCodes.AVKLAR_OPPHOLDSRETT], + id: '', + vurderingsdato: '', + årsaker: [], + begrunnelse: '', + personopplysninger: undefined, + bosattVurdering: false, + vurdertAv: '', + vurdertTidspunkt: '', + isBosattAksjonspunktClosed: false, + isPeriodAksjonspunktClosed: false, + dekningType: undefined, + medlemskapManuellVurderingType: undefined, + oppholdsrettVurdering: undefined, }; - const aksjonspunkter = [ + const aksjonspunkter: Aksjonspunkt[] = [ { definisjon: aksjonspunktCodes.AVKLAR_OPPHOLDSRETT, status: 'UTFO', + kanLoses: false, + erAktivt: false, }, ]; const initialValues = StatusForBorgerFaktaPanel.buildInitialValues(periode, aksjonspunkter); @@ -72,10 +91,22 @@ describe('', () => { }); it('skal sette initielle verdi når det er EØS borger og vurdering er lagret', () => { - const periode = { + const periode: Periode = { aksjonspunkter: [], erEosBorger: true, oppholdsrettVurdering: true, + id: '', + vurderingsdato: '', + årsaker: [], + begrunnelse: '', + personopplysninger: undefined, + bosattVurdering: false, + vurdertAv: '', + vurdertTidspunkt: '', + isBosattAksjonspunktClosed: false, + isPeriodAksjonspunktClosed: false, + dekningType: undefined, + medlemskapManuellVurderingType: undefined, }; const aksjonspunkter = []; @@ -92,13 +123,28 @@ describe('', () => { }); it('skal sette initielle verdi når regionkode ikke finnes men en har oppholdsrett-aksjonspunkt', () => { - const periode = { + const periode: Periode = { aksjonspunkter: [aksjonspunktCodes.AVKLAR_OPPHOLDSRETT], + id: '', + vurderingsdato: '', + årsaker: [], + begrunnelse: '', + personopplysninger: undefined, + bosattVurdering: false, + vurdertAv: '', + vurdertTidspunkt: '', + isBosattAksjonspunktClosed: false, + isPeriodAksjonspunktClosed: false, + dekningType: undefined, + medlemskapManuellVurderingType: undefined, + oppholdsrettVurdering: false, }; - const aksjonspunkter = [ + const aksjonspunkter: Aksjonspunkt[] = [ { definisjon: aksjonspunktCodes.AVKLAR_OPPHOLDSRETT, status: 'UTFO', + kanLoses: false, + erAktivt: false, }, ]; @@ -107,17 +153,30 @@ describe('', () => { expect(initialValues).toStrictEqual({ apKode: aksjonspunktCodes.AVKLAR_OPPHOLDSRETT, erEosBorger: true, - oppholdsrettVurdering: undefined, + oppholdsrettVurdering: false, lovligOppholdVurdering: undefined, isBorgerAksjonspunktClosed: true, }); }); it('skal sette initielle verdi når det ikke er EØS borger', () => { - const periode = { + const periode: Periode = { aksjonspunkter: [aksjonspunktCodes.AVKLAR_OPPHOLDSRETT], erEosBorger: false, lovligOppholdVurdering: false, + id: '', + vurderingsdato: '', + årsaker: [], + begrunnelse: '', + personopplysninger: undefined, + bosattVurdering: false, + vurdertAv: '', + vurdertTidspunkt: '', + isBosattAksjonspunktClosed: false, + isPeriodAksjonspunktClosed: false, + dekningType: undefined, + medlemskapManuellVurderingType: undefined, + oppholdsrettVurdering: undefined, }; const aksjonspunkter = []; diff --git a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.tsx b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.tsx index 5fdb8dafa8..96352870ad 100644 --- a/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.tsx +++ b/packages/fakta-medlemskap/src/components/oppholdInntektOgPerioder/StatusForBorgerFaktaPanel.tsx @@ -1,20 +1,14 @@ -import { RadioGroupField, behandlingFormValueSelector } from '@fpsak-frontend/form'; -import React, { FunctionComponent } from 'react'; -import { FormattedMessage, WrappedComponentProps } from 'react-intl'; -import { connect } from 'react-redux'; import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import { isAksjonspunktOpen } from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; import { ArrowBox, FaktaGruppe, VerticalSpacer } from '@fpsak-frontend/shared-components'; import { required } from '@fpsak-frontend/utils'; +import { Aksjonspunkt } from '@k9-sak-web/types'; import { Detail } from '@navikt/ds-react'; - -export type FormValues = { - erEosBorger: boolean; - isBorgerAksjonspunktClosed: boolean; - oppholdsrettVurdering: boolean; - lovligOppholdVurdering: boolean; - apKode: string; -}; +import { RadioGroupPanel } from '@navikt/ft-form-hooks'; +import React, { FunctionComponent } from 'react'; +import { useFormContext } from 'react-hook-form'; +import { OppholdInntektOgPerioderFormState, StatusForBorgerFaktaPanelFormState } from './FormState'; +import { Periode } from './Periode'; interface TransformedValues { kode: string; @@ -25,15 +19,12 @@ interface TransformedValues { interface StatusForBorgerFaktaPanelProps { readOnly: boolean; - isBorgerAksjonspunktClosed: boolean; - apKode: string; alleMerknaderFraBeslutter: { notAccepted: boolean }; - erEosBorger?: boolean; } interface StaticFunctions { - buildInitialValues: (periode, aksjonspunkter) => FormValues; - transformValues: (values: FormValues, name?: string) => TransformedValues; + buildInitialValues: (periode: Periode, aksjonspunkter: Aksjonspunkt[]) => StatusForBorgerFaktaPanelFormState; + transformValues: (values: StatusForBorgerFaktaPanelFormState, aksjonspunkter: Aksjonspunkt[]) => TransformedValues; } /** @@ -41,122 +32,112 @@ interface StaticFunctions { * * Presentasjonskomponent. Setter opp aksjonspunktet for avklaring av borgerstatus (Medlemskapsvilkåret). */ -const StatusForBorgerFaktaPanel: FunctionComponent & - StaticFunctions = ({ readOnly, erEosBorger, isBorgerAksjonspunktClosed, apKode, alleMerknaderFraBeslutter }) => ( - - , - }, - { - value: false, - label: , - }, - ]} - /> - - {erEosBorger && ( - - - - - - , - }, - { - value: false, - label: ( - {chunks}, - }} - /> - ), - }, - ]} - /> - - )} - {erEosBorger === false && ( - - - - - - , - }, - { - value: false, - label: ( - {chunks}, - }} - /> - ), - }, - ]} - /> - - )} - -); - -const mapStateToProps = (state, ownProps) => ({ - ...behandlingFormValueSelector( - `OppholdInntektOgPeriodeForm-${ownProps.id}`, - ownProps.behandlingId, - ownProps.behandlingVersjon, - )(state, 'erEosBorger', 'isBorgerAksjonspunktClosed', 'apKode'), -}); +const StatusForBorgerFaktaPanel: FunctionComponent & StaticFunctions = ({ + readOnly, + alleMerknaderFraBeslutter, +}) => { + const { getValues } = useFormContext(); + const { + oppholdInntektOgPeriodeForm: { erEosBorger, isBorgerAksjonspunktClosed, apKode }, + } = getValues(); + return ( + + + + {erEosBorger && ( + + Oppholdsrett + + + Søker har ikke oppholdsrett + + ), + }, + ]} + /> + + )} + {erEosBorger === false && ( + + Lovlig opphold + + + Søker har ikke lovlig opphold + + ), + }, + ]} + /> + + )} + + ); +}; -const getApKode = aksjonspunkter => +const getApKode = (aksjonspunkter: Aksjonspunkt[]) => aksjonspunkter .map(ap => ap.definisjon) .filter( kode => kode === aksjonspunktCodes.AVKLAR_OPPHOLDSRETT || kode === aksjonspunktCodes.AVKLAR_LOVLIG_OPPHOLD, )[0]; -const getEosBorger = (periode, aksjonspunkter) => +const getEosBorger = (periode: Periode, aksjonspunkter: Aksjonspunkt[]) => periode.erEosBorger || periode.erEosBorger === false ? periode.erEosBorger : aksjonspunkter.some(ap => ap.definisjon === aksjonspunktCodes.AVKLAR_OPPHOLDSRETT); -const getOppholdsrettVurdering = periode => +const getOppholdsrettVurdering = (periode: Periode) => periode.oppholdsrettVurdering || periode.oppholdsrettVurdering === false ? periode.oppholdsrettVurdering : undefined; -const getLovligOppholdVurdering = periode => +const getLovligOppholdVurdering = (periode: Periode) => periode.lovligOppholdVurdering || periode.lovligOppholdVurdering === false ? periode.lovligOppholdVurdering : undefined; -StatusForBorgerFaktaPanel.buildInitialValues = (periode, aksjonspunkter) => { +StatusForBorgerFaktaPanel.buildInitialValues = (periode: Periode, aksjonspunkter: Aksjonspunkt[]) => { const erEosBorger = getEosBorger(periode, aksjonspunkter); const closedAp = aksjonspunkter @@ -180,11 +161,14 @@ StatusForBorgerFaktaPanel.buildInitialValues = (periode, aksjonspunkter) => { }; }; -StatusForBorgerFaktaPanel.transformValues = (values, aksjonspunkter) => ({ +StatusForBorgerFaktaPanel.transformValues = ( + values: StatusForBorgerFaktaPanelFormState, + aksjonspunkter: Aksjonspunkt[], +) => ({ kode: getApKode(aksjonspunkter), oppholdsrettVurdering: values.oppholdsrettVurdering, lovligOppholdVurdering: values.lovligOppholdVurdering, erEosBorger: values.erEosBorger, }); -export default connect(mapStateToProps)(StatusForBorgerFaktaPanel); +export default StatusForBorgerFaktaPanel; diff --git a/packages/fakta-medlemskap/src/propTypes/medlemskapAksjonspunkterPropType.jsx b/packages/fakta-medlemskap/src/propTypes/medlemskapAksjonspunkterPropType.jsx deleted file mode 100644 index b7ad77b85d..0000000000 --- a/packages/fakta-medlemskap/src/propTypes/medlemskapAksjonspunkterPropType.jsx +++ /dev/null @@ -1,11 +0,0 @@ -// eslint-disable-next-line import/no-duplicates -import PropTypes from 'prop-types'; - -const medlemskapAksjonspunkterPropType = PropTypes.shape({ - definisjon: PropTypes.string.isRequired, - status: PropTypes.string.isRequired, - begrunnelse: PropTypes.string, - kanLoses: PropTypes.bool.isRequired, -}); - -export default medlemskapAksjonspunkterPropType; diff --git a/packages/fakta-medlemskap/src/propTypes/medlemskapBehandlingPropType.jsx b/packages/fakta-medlemskap/src/propTypes/medlemskapBehandlingPropType.jsx deleted file mode 100644 index 850008895a..0000000000 --- a/packages/fakta-medlemskap/src/propTypes/medlemskapBehandlingPropType.jsx +++ /dev/null @@ -1,12 +0,0 @@ -// eslint-disable-next-line import/no-duplicates -import PropTypes from 'prop-types'; - -const medlemskapBehandlingPropType = PropTypes.shape({ - id: PropTypes.number.isRequired, - versjon: PropTypes.number.isRequired, - type: PropTypes.string.isRequired, - status: PropTypes.string.isRequired, - behandlingPaaVent: PropTypes.bool, -}); - -export default medlemskapBehandlingPropType; diff --git a/packages/fakta-medlemskap/src/propTypes/medlemskapInntektArbeidYtelsePropType.jsx b/packages/fakta-medlemskap/src/propTypes/medlemskapInntektArbeidYtelsePropType.jsx deleted file mode 100644 index bb19ed6dbb..0000000000 --- a/packages/fakta-medlemskap/src/propTypes/medlemskapInntektArbeidYtelsePropType.jsx +++ /dev/null @@ -1,9 +0,0 @@ -import PropTypes from 'prop-types'; - -const medlemskapInntektArbeidYtelsePropType = PropTypes.shape({ - inntektsmeldinger: PropTypes.arrayOf(PropTypes.shape({ - arbeidsgiverStartdato: PropTypes.string, - })), -}); - -export default medlemskapInntektArbeidYtelsePropType; diff --git a/packages/fakta-medlemskap/src/propTypes/medlemskapMedlemskapPropType.jsx b/packages/fakta-medlemskap/src/propTypes/medlemskapMedlemskapPropType.jsx deleted file mode 100644 index 10f948f7a1..0000000000 --- a/packages/fakta-medlemskap/src/propTypes/medlemskapMedlemskapPropType.jsx +++ /dev/null @@ -1,7 +0,0 @@ -import PropTypes from 'prop-types'; - -const medlemskapMedlemskapPropType = PropTypes.shape({ - fom: PropTypes.string, -}); - -export default medlemskapMedlemskapPropType; diff --git a/packages/fakta-medlemskap/src/propTypes/medlemskapSoknadPropType.jsx b/packages/fakta-medlemskap/src/propTypes/medlemskapSoknadPropType.jsx deleted file mode 100644 index cd7c32d4df..0000000000 --- a/packages/fakta-medlemskap/src/propTypes/medlemskapSoknadPropType.jsx +++ /dev/null @@ -1,12 +0,0 @@ -import PropTypes from 'prop-types'; - -const medlemskapSoknadPropType = PropTypes.shape({ - oppgittFordeling: PropTypes.shape({ - startDatoForPermisjon: PropTypes.string, - }), - oppgittTilknytning: PropTypes.shape({ - utlandsopphold: PropTypes.arrayOf(PropTypes.shape()), - }), -}); - -export default medlemskapSoknadPropType; diff --git a/packages/fakta-om-barnet/index.ts b/packages/fakta-om-barnet/index.ts index 135ceb40ed..8ab567dfee 100644 --- a/packages/fakta-om-barnet/index.ts +++ b/packages/fakta-om-barnet/index.ts @@ -1,2 +1 @@ -// eslint-disable-next-line import/prefer-default-export export { default as OmBarnet } from './src/ui/MainComponent'; diff --git a/packages/fakta-om-barnet/mock/api-mock.ts b/packages/fakta-om-barnet/mock/api-mock.ts index 61a6b6b58d..a3217544c3 100644 --- a/packages/fakta-om-barnet/mock/api-mock.ts +++ b/packages/fakta-om-barnet/mock/api-mock.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/prefer-default-export */ import { http, HttpResponse } from 'msw'; export const handlers = [ diff --git a/packages/fakta-om-barnet/mock/browser.ts b/packages/fakta-om-barnet/mock/browser.ts index 13c86e372c..9205feb343 100644 --- a/packages/fakta-om-barnet/mock/browser.ts +++ b/packages/fakta-om-barnet/mock/browser.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/prefer-default-export */ -/* eslint-disable import/no-extraneous-dependencies */ import { setupWorker } from 'msw/browser'; import { handlers } from './api-mock'; diff --git a/packages/fakta-om-barnet/package.json b/packages/fakta-om-barnet/package.json index cbc840c2b2..a9b9e9305a 100644 --- a/packages/fakta-om-barnet/package.json +++ b/packages/fakta-om-barnet/package.json @@ -10,22 +10,22 @@ "dev": "vite serve" }, "devDependencies": { - "msw": "2.3.1", - "vite": "^5.3.4", + "msw": "2.3.5", + "vite": "^5.4.1", "vite-plugin-node-polyfills": "^0.22.0" }, "dependencies": { - "@navikt/ds-react": "6.12.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ds-react": "6.13.0", + "@navikt/ft-plattform-komponenter": "3.0.4", "@popperjs/core": "2.11.8", "classnames": "2.5.1", - "dayjs": "1.11.11", + "dayjs": "1.11.12", "react": "18.3.1", "react-collapse": "5.1.1", "react-dom": "18.3.1", - "react-hook-form": "7.52.0", + "react-hook-form": "7.52.2", "react-popper": "2.3.0", - "tailwindcss": "^3.4.4" + "tailwindcss": "^3.4.10" }, "msw": { "workerDirectory": "public" diff --git a/packages/fakta-om-barnet/postcss.config.js b/packages/fakta-om-barnet/postcss.config.cjs similarity index 81% rename from packages/fakta-om-barnet/postcss.config.js rename to packages/fakta-om-barnet/postcss.config.cjs index fa41216bff..2b2bed35af 100644 --- a/packages/fakta-om-barnet/postcss.config.js +++ b/packages/fakta-om-barnet/postcss.config.cjs @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ const tailwindcss = require('tailwindcss'); const autoprefixer = require('autoprefixer'); const postcssImport = require('postcss-import'); diff --git a/packages/fakta-om-barnet/tailwind.config.js b/packages/fakta-om-barnet/tailwind.config.cjs similarity index 100% rename from packages/fakta-om-barnet/tailwind.config.js rename to packages/fakta-om-barnet/tailwind.config.cjs diff --git a/packages/fakta-om-barnet/vite.config.js b/packages/fakta-om-barnet/vite.config.js index b0cd20dcc3..f354be8a4e 100644 --- a/packages/fakta-om-barnet/vite.config.js +++ b/packages/fakta-om-barnet/vite.config.js @@ -1,6 +1,4 @@ -// eslint-disable-next-line import/no-extraneous-dependencies import { defineConfig } from 'vite'; -// eslint-disable-next-line import/no-extraneous-dependencies import react from '@vitejs/plugin-react'; import { nodePolyfills } from 'vite-plugin-node-polyfills'; diff --git a/packages/fakta-omsorgen-for/index.ts b/packages/fakta-omsorgen-for/index.ts index 1fac2e4662..92fea3efdf 100644 --- a/packages/fakta-omsorgen-for/index.ts +++ b/packages/fakta-omsorgen-for/index.ts @@ -1,2 +1 @@ -// eslint-disable-next-line import/prefer-default-export export { default as OmsorgenFor } from './src/ui/MainComponent'; diff --git a/packages/fakta-omsorgen-for/mock/api-mock.ts b/packages/fakta-omsorgen-for/mock/api-mock.ts index 9a1ba30a24..6b959992fb 100644 --- a/packages/fakta-omsorgen-for/mock/api-mock.ts +++ b/packages/fakta-omsorgen-for/mock/api-mock.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/prefer-default-export */ import { http, HttpResponse } from 'msw'; import mockedOmsorgsperioder from './mocked-data/mockedOmsorgsperioder'; diff --git a/packages/fakta-omsorgen-for/mock/browser.ts b/packages/fakta-omsorgen-for/mock/browser.ts index 13c86e372c..9205feb343 100644 --- a/packages/fakta-omsorgen-for/mock/browser.ts +++ b/packages/fakta-omsorgen-for/mock/browser.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/prefer-default-export */ -/* eslint-disable import/no-extraneous-dependencies */ import { setupWorker } from 'msw/browser'; import { handlers } from './api-mock'; diff --git a/packages/fakta-omsorgen-for/package.json b/packages/fakta-omsorgen-for/package.json index fed3c43038..e393d66d86 100644 --- a/packages/fakta-omsorgen-for/package.json +++ b/packages/fakta-omsorgen-for/package.json @@ -10,24 +10,24 @@ "dev": "vite serve" }, "devDependencies": { - "msw": "2.3.1", - "vite": "^5.3.4", + "msw": "2.3.5", + "vite": "^5.4.1", "vite-plugin-node-polyfills": "^0.22.0" }, "dependencies": { - "@navikt/ds-css": "6.12.0", + "@navikt/ds-css": "6.13.0", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "6.12.0", + "@navikt/ds-react": "6.13.0", "@navikt/fnrvalidator": "2.1.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ft-plattform-komponenter": "3.0.4", "@popperjs/core": "2.11.8", "classnames": "2.5.1", - "dayjs": "1.11.11", + "dayjs": "1.11.12", "object-hash": "3.0.0", "react": "18.3.1", "react-collapse": "5.1.1", "react-dom": "18.3.1", - "react-hook-form": "7.52.0", + "react-hook-form": "7.52.2", "react-intl": "6.6.8", "react-popper": "2.3.0" }, diff --git a/packages/fakta-etablert-tilsyn/postcss.config.js b/packages/fakta-omsorgen-for/postcss.config.cjs similarity index 100% rename from packages/fakta-etablert-tilsyn/postcss.config.js rename to packages/fakta-omsorgen-for/postcss.config.cjs diff --git a/packages/fakta-omsorgen-for/postcss.config.js b/packages/fakta-omsorgen-for/postcss.config.js deleted file mode 100644 index 7c6d6c73d3..0000000000 --- a/packages/fakta-omsorgen-for/postcss.config.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {} \ No newline at end of file diff --git a/packages/fakta-omsorgen-for/src/util/dateUtils.ts b/packages/fakta-omsorgen-for/src/util/dateUtils.ts index c3a1584296..01b91b8ba9 100644 --- a/packages/fakta-omsorgen-for/src/util/dateUtils.ts +++ b/packages/fakta-omsorgen-for/src/util/dateUtils.ts @@ -7,7 +7,6 @@ const dateFormats = ['YYYY-MM-DD', 'DD.MM.YYYY']; dayjs.extend(utc); dayjs.extend(customParseFormat); -// eslint-disable-next-line import/prefer-default-export export function dateFromString(dateString: string): dayjs.Dayjs { return dayjs(dateString, dateFormats).utc(true); } diff --git a/packages/fakta-omsorgen-for/src/util/hooks.ts b/packages/fakta-omsorgen-for/src/util/hooks.ts index 3d5ef27692..0e08333246 100644 --- a/packages/fakta-omsorgen-for/src/util/hooks.ts +++ b/packages/fakta-omsorgen-for/src/util/hooks.ts @@ -1,6 +1,5 @@ import { useEffect, useRef } from 'react'; -// eslint-disable-next-line import/prefer-default-export export const usePrevious = (value: boolean): boolean => { const ref = useRef(); useEffect(() => { diff --git a/packages/fakta-omsorgen-for/src/util/utils.ts b/packages/fakta-omsorgen-for/src/util/utils.ts index 311316eead..8e7868d65d 100644 --- a/packages/fakta-omsorgen-for/src/util/utils.ts +++ b/packages/fakta-omsorgen-for/src/util/utils.ts @@ -1,7 +1,6 @@ import * as messages from '../nb_NO'; import Ytelsestype from '../types/Ytelsestype'; -// eslint-disable-next-line import/prefer-default-export export const teksterForSakstype = (sakstype: string) => { if (sakstype === Ytelsestype.PSB) { return messages.pleiepenger; diff --git a/packages/fakta-omsorgen-for/vite.config.js b/packages/fakta-omsorgen-for/vite.config.js index b0cd20dcc3..f354be8a4e 100644 --- a/packages/fakta-omsorgen-for/vite.config.js +++ b/packages/fakta-omsorgen-for/vite.config.js @@ -1,6 +1,4 @@ -// eslint-disable-next-line import/no-extraneous-dependencies import { defineConfig } from 'vite'; -// eslint-disable-next-line import/no-extraneous-dependencies import react from '@vitejs/plugin-react'; import { nodePolyfills } from 'vite-plugin-node-polyfills'; diff --git a/packages/fakta-opplaering/package.json b/packages/fakta-opplaering/package.json index 479da39b2c..b10805acc1 100644 --- a/packages/fakta-opplaering/package.json +++ b/packages/fakta-opplaering/package.json @@ -9,10 +9,10 @@ "@fpsak-frontend/utils": "*", "@k9-sak-web/types": "*", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "6.12.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ds-react": "6.13.0", + "@navikt/ft-plattform-komponenter": "3.0.4", "classnames": "2.5.1", - "dayjs": "1.11.11", + "dayjs": "1.11.12", "formik": "2.4.6", "react-intl": "6.6.8", "react-outside-click-handler": "1.3.0", diff --git a/packages/fakta-opplaering/src/gjennomgaaOpplaering/GjennomgaaOpplaeringForm.tsx b/packages/fakta-opplaering/src/gjennomgaaOpplaering/GjennomgaaOpplaeringForm.tsx index 73779af1da..72ad1d6901 100644 --- a/packages/fakta-opplaering/src/gjennomgaaOpplaering/GjennomgaaOpplaeringForm.tsx +++ b/packages/fakta-opplaering/src/gjennomgaaOpplaering/GjennomgaaOpplaeringForm.tsx @@ -52,9 +52,7 @@ const schema = yup.object().shape({ .test( 'overlapp', ({ value }: { value: Period }) => `${value.prettifyPeriod()} overlapper med en annen periode`, - // @ts-ignore (periode: Period, testParams) => { - // @ts-ignore const [, , values] = testParams.from; const andrePerioder = values.value[fieldname.PERIODER] .filter(v => v.periode !== periode) @@ -234,9 +232,9 @@ const GjennomgaaOpplaeringForm = ({ vurdering, avbrytRedigering, erRedigering }:
{ - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs typeof errors[fieldname.PERIODER]?.[index]?.periode === 'string' && ( - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs {errors[fieldname.PERIODER]?.[index]?.periode} ) } diff --git a/packages/fakta-opplaering/src/reisetid/ReisetidNavigation.tsx b/packages/fakta-opplaering/src/reisetid/ReisetidNavigation.tsx index a48fba276b..01d98739c3 100644 --- a/packages/fakta-opplaering/src/reisetid/ReisetidNavigation.tsx +++ b/packages/fakta-opplaering/src/reisetid/ReisetidNavigation.tsx @@ -19,7 +19,7 @@ const ReisetidNavigation = ({ perioder, setValgtPeriode }: OwnProps) => { }, []); const perioderSomErVurdert = perioder .filter(periode => periode.resultat !== ReisetidStatus.IKKE_VURDERT) - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs .sort((a, b) => new Date(b.periode.fom) - new Date(a.periode.fom)); const allePerioder = [...perioderTilVurdering, ...perioderSomErVurdert]; const elements = [ diff --git "a/packages/fakta-opplysninger-fra-soknaden/src/S\303\270knadsperiodeFieldArrayComponent.tsx" "b/packages/fakta-opplysninger-fra-soknaden/src/S\303\270knadsperiodeFieldArrayComponent.tsx" index 9020b4e7af..07ad4963ff 100644 --- "a/packages/fakta-opplysninger-fra-soknaden/src/S\303\270knadsperiodeFieldArrayComponent.tsx" +++ "b/packages/fakta-opplysninger-fra-soknaden/src/S\303\270knadsperiodeFieldArrayComponent.tsx" @@ -412,7 +412,7 @@ export const inntektIsValid = (selvstendigNæringsdrivendeInntekt2019, selvstend return null; }; -// @ts-ignore Fiks denne! +// @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs const connectedComponent = connect(mapStateToProps)(SøknadsperiodeFieldArrayComponent); export default connectedComponent; diff --git a/packages/fakta-opptjening-oms/src/OpptjeningFaktaIndex.stories.tsx b/packages/fakta-opptjening-oms/src/OpptjeningFaktaIndex.stories.tsx index fb35ee0f2a..e221360890 100644 --- a/packages/fakta-opptjening-oms/src/OpptjeningFaktaIndex.stories.tsx +++ b/packages/fakta-opptjening-oms/src/OpptjeningFaktaIndex.stories.tsx @@ -1,4 +1,3 @@ -/* eslint-disable import/no-relative-packages */ import aksjonspunktCodes from '@fpsak-frontend/kodeverk/src/aksjonspunktCodes'; import aksjonspunktStatus from '@fpsak-frontend/kodeverk/src/aksjonspunktStatus'; import opptjeningAktivitetType from '@fpsak-frontend/kodeverk/src/opptjeningAktivitetType'; diff --git a/packages/fakta-overstyr-beregning/package.json b/packages/fakta-overstyr-beregning/package.json index 443f2e12ab..d22a0d71e0 100644 --- a/packages/fakta-overstyr-beregning/package.json +++ b/packages/fakta-overstyr-beregning/package.json @@ -9,7 +9,7 @@ "@fpsak-frontend/shared-components": "1.0.0", "@fpsak-frontend/utils": "workspace:^", "@k9-sak-web/types": "workspace:^", - "@navikt/ds-react": "6.12.0", + "@navikt/ds-react": "6.13.0", "date-fns": "3.6.0", "formik": "2.4.6", "react": "18.3.1", diff --git a/packages/fakta-utenlandsopphold/src/Utenlandsopphold.spec.tsx b/packages/fakta-utenlandsopphold/src/Utenlandsopphold.spec.tsx index 03b6ddcf11..9951070f07 100644 --- a/packages/fakta-utenlandsopphold/src/Utenlandsopphold.spec.tsx +++ b/packages/fakta-utenlandsopphold/src/Utenlandsopphold.spec.tsx @@ -5,7 +5,6 @@ import React, { ReactElement } from 'react'; import { renderWithIntl } from '@fpsak-frontend/utils-test/test-utils'; import { KodeverkProvider } from '@k9-sak-web/gui/kodeverk/context/KodeverkContext.js'; import { useKodeverkContext } from '@k9-sak-web/gui/kodeverk/hooks/useKodeverkContext.js'; -// eslint-disable-next-line import/no-relative-packages import utenlandsoppholdMock, { utenlandsoppholdÅrsakMock } from '../../mocks/mockdata/utenlandsoppholdMock'; import Utenlandsopphold from './Utenlandsopphold'; diff --git a/packages/fakta-utenlandsopphold/src/Utenlandsopphold.stories.tsx b/packages/fakta-utenlandsopphold/src/Utenlandsopphold.stories.tsx index 6f56b02ae2..2da56c3c77 100644 --- a/packages/fakta-utenlandsopphold/src/Utenlandsopphold.stories.tsx +++ b/packages/fakta-utenlandsopphold/src/Utenlandsopphold.stories.tsx @@ -1,5 +1,4 @@ import React from 'react'; -// eslint-disable-next-line import/no-relative-packages import utenlandsoppholdMock from '../../mocks/mockdata/utenlandsoppholdMock'; import Utenlandsopphold from './Utenlandsopphold'; diff --git a/packages/form/package.json b/packages/form/package.json index 528465b63c..ae6ce376b6 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -8,12 +8,12 @@ "dependencies": { "@fpsak-frontend/shared-components": "1.0.0", "@fpsak-frontend/utils": "1.0.0", - "@navikt/ft-plattform-komponenter": "3.0.1", + "@navikt/ft-plattform-komponenter": "3.0.4", "classnames": "2.5.1", "formik": "2.4.6", "moment": "2.30.1", "react": "18.3.1", - "react-hook-form": "7.52.0", + "react-hook-form": "7.52.2", "react-intl": "6.6.8", "react-redux": "9.1.2", "redux": "5.0.1", diff --git a/packages/form/src/AutocompleteField.tsx b/packages/form/src/AutocompleteField.tsx index 8ed71cd371..5191a93ab2 100644 --- a/packages/form/src/AutocompleteField.tsx +++ b/packages/form/src/AutocompleteField.tsx @@ -1,7 +1,6 @@ import { Label } from '@navikt/ds-react'; import React from 'react'; import { Field, WrappedFieldInputProps } from 'redux-form'; -// eslint-disable-next-line import/no-named-default import { Autocomplete as NAPAutocomplete } from '@navikt/ft-plattform-komponenter'; import ReadOnlyField from './ReadOnlyField'; import styles from './autocompleteField.module.css'; diff --git a/packages/form/src/DecimalField.tsx b/packages/form/src/DecimalField.tsx index 270adc9d03..a84a7d5605 100644 --- a/packages/form/src/DecimalField.tsx +++ b/packages/form/src/DecimalField.tsx @@ -38,10 +38,10 @@ const createNormalizeOnBlurField = WrappedNavFieldComponent => { blurHandler({ input: { onBlur, ...input }, ...props }) { const { normalizeOnBlur, component: Comp } = this.props; return ( - // @ts-ignore TODO Fiks + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs { @@ -89,7 +89,7 @@ const DecimalField = ({ { const meta1 = getField1.meta; if (meta1.submitFailed && meta1.error) { - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs return intl.formatMessage(...meta1.error); } const getField2 = haystack(otherProps, names[1]); const meta2 = getField2.meta; if (meta2.submitFailed && meta2.error) { - // @ts-ignore + // @ts-expect-error Migrert frå ts-ignore, uvisst kvifor denne trengs return intl.formatMessage(...meta2.error); } return undefined; @@ -86,7 +86,7 @@ const renderPeriodpicker = (hideLabel?: boolean) => label: