diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterClient.java b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterClient.java index 933f1ebac3e..250abb24fa0 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterClient.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterClient.java @@ -96,11 +96,12 @@ private Flux getErrors(Set miljoer, Throwable throwable) { @Override public void release(List identer) { - // Pensjonforvalter / POPP, AP, UT støtter pt ikke sletting + // Pensjonforvalter AP, UT støtter pt ikke sletting pensjonforvalterConsumer.sletteTpForhold(identer); pensjonforvalterConsumer.slettePensjonsavtale(identer); pensjonforvalterConsumer.sletteAfpOffentlig(identer); + pensjonforvalterConsumer.slettePoppinntekt(identer); } private String prepInitStatus(Set miljoer) { diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterConsumer.java b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterConsumer.java index 9dadced34e2..a6f10a00f04 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterConsumer.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/PensjonforvalterConsumer.java @@ -1,6 +1,7 @@ package no.nav.dolly.bestilling.pensjonforvalter; import com.fasterxml.jackson.databind.ObjectMapper; +import com.sun.jna.Function; import lombok.extern.slf4j.Slf4j; import no.nav.dolly.bestilling.ConsumerStatus; import no.nav.dolly.bestilling.pensjonforvalter.command.AnnullerSamboerCommand; @@ -19,6 +20,7 @@ import no.nav.dolly.bestilling.pensjonforvalter.command.PensjonHentVedtakCommand; import no.nav.dolly.bestilling.pensjonforvalter.command.SletteAfpOffentligCommand; import no.nav.dolly.bestilling.pensjonforvalter.command.SlettePensjonsavtaleCommand; +import no.nav.dolly.bestilling.pensjonforvalter.command.SlettePoppInntektCommand; import no.nav.dolly.bestilling.pensjonforvalter.command.SletteTpForholdCommand; import no.nav.dolly.bestilling.pensjonforvalter.domain.AfpOffentligRequest; import no.nav.dolly.bestilling.pensjonforvalter.domain.AlderspensjonRequest; @@ -69,14 +71,14 @@ public PensjonforvalterConsumer( .build(); } - @Timed(name = "providers", tags = { "operation", "pen_getMiljoer" }) + @Timed(name = "providers", tags = {"operation", "pen_getMiljoer"}) public Mono> getMiljoer() { return tokenService.exchange(serverProperties) .flatMap(token -> new HentMiljoerCommand(webClient, token.getTokenValue()).call()); } - @Timed(name = "providers", tags = { "operation", "popp_lagreInntekt" }) + @Timed(name = "providers", tags = {"operation", "popp_lagreInntekt"}) public Flux lagreInntekter(PensjonPoppInntektRequest pensjonPoppInntektRequest) { return tokenService.exchange(serverProperties) @@ -84,7 +86,7 @@ public Flux lagreInntekter(PensjonPoppInntektRequest p pensjonPoppInntektRequest).call()); } - @Timed(name = "providers", tags = { "operation", "popp_lagreGenerertInntekt" }) + @Timed(name = "providers", tags = {"operation", "popp_lagreGenerertInntekt"}) public Flux lagreGenererteInntekter(PensjonPoppGenerertInntektRequest pensjonPoppGenerertInntektRequest) { return tokenService.exchange(serverProperties) @@ -92,7 +94,7 @@ public Flux lagreGenererteInntekter(PensjonPoppGenerer pensjonPoppGenerertInntektRequest).call()); } - @Timed(name = "providers", tags = { "operation", "pen_opprettPerson" }) + @Timed(name = "providers", tags = {"operation", "pen_opprettPerson"}) public Flux opprettPerson(PensjonPersonRequest pensjonPersonRequest, Set miljoer) { @@ -102,7 +104,7 @@ public Flux opprettPerson(PensjonPersonRequest pensjon .doOnNext(response -> log.info("Opprettet person for {}: {}", pensjonPersonRequest.getFnr(), response)); } - @Timed(name = "providers", tags = { "operation", "pen_hentSamboer" }) + @Timed(name = "providers", tags = {"operation", "pen_hentSamboer"}) public Flux hentSamboer(String ident, String miljoe) { return tokenService.exchange(serverProperties) @@ -110,7 +112,7 @@ public Flux hentSamboer(String ident, String miljoe) { .doOnNext(response -> log.info("Pensjon samboer for {} i {} hentet {}", ident, miljoe, response)); } - @Timed(name = "providers", tags = { "operation", "pen_opprettSamboer" }) + @Timed(name = "providers", tags = {"operation", "pen_opprettSamboer"}) public Flux lagreSamboer(PensjonSamboerRequest pensjonSamboerRequest, String miljoe) { log.info("Oppretter samboerskap i pensjon: {}", pensjonSamboerRequest); @@ -119,14 +121,14 @@ public Flux lagreSamboer(PensjonSamboerRequest pensjon .flatMapMany(token -> new LagreSamboerCommand(webClient, pensjonSamboerRequest, miljoe, token.getTokenValue()).call()); } - @Timed(name = "providers", tags = { "operation", "pen_opprettSamboer" }) + @Timed(name = "providers", tags = {"operation", "pen_opprettSamboer"}) public Flux annullerSamboer(String periodeId, String miljoe) { return tokenService.exchange(serverProperties) .flatMapMany(token -> new AnnullerSamboerCommand(webClient, periodeId, miljoe, token.getTokenValue()).call()); } - @Timed(name = "providers", tags = { "operation", "pen_lagreAlderspensjon" }) + @Timed(name = "providers", tags = {"operation", "pen_lagreAlderspensjon"}) public Flux lagreAlderspensjon(AlderspensjonRequest request) { return tokenService.exchange(serverProperties) @@ -134,21 +136,21 @@ public Flux lagreAlderspensjon(AlderspensjonRequest re new LagreAlderspensjonCommand(webClient, token.getTokenValue(), request).call()); } - @Timed(name = "providers", tags = { "operation", "pen_lagreUforetrygd" }) + @Timed(name = "providers", tags = {"operation", "pen_lagreUforetrygd"}) public Flux lagreUforetrygd(PensjonUforetrygdRequest request) { return tokenService.exchange(serverProperties) .flatMapMany(token -> new LagreUforetrygdCommand(webClient, token.getTokenValue(), request).call()); } - @Timed(name = "providers", tags = { "operation", "pen_lagreTpForhold" }) + @Timed(name = "providers", tags = {"operation", "pen_lagreTpForhold"}) public Flux lagreTpForhold(PensjonTpForholdRequest pensjonTpForholdRequest) { return tokenService.exchange(serverProperties) .flatMapMany(token -> new LagreTpForholdCommand(webClient, token.getTokenValue(), pensjonTpForholdRequest).call()); } - @Timed(name = "providers", tags = { "operation", "pen_sletteTpForhold" }) + @Timed(name = "providers", tags = {"operation", "pen_sletteTpForhold"}) public void sletteTpForhold(List identer) { tokenService.exchange(serverProperties) @@ -160,21 +162,21 @@ public void sletteTpForhold(List identer) { .subscribe(response -> log.info("Slettet mot PESYS (tp) i alle miljoer")); } - @Timed(name = "providers", tags = { "operation", "pen_lagreTpYtelse" }) + @Timed(name = "providers", tags = {"operation", "pen_lagreTpYtelse"}) public Flux lagreTpYtelse(PensjonTpYtelseRequest pensjonTpYtelseRequest) { return tokenService.exchange(serverProperties) .flatMapMany(token -> new LagreTpYtelseCommand(webClient, token.getTokenValue(), pensjonTpYtelseRequest).call()); } - @Timed(name = "providers", tags = { "operation", "pen_lagrePensjpnsavtale" }) + @Timed(name = "providers", tags = {"operation", "pen_lagrePensjpnsavtale"}) public Flux lagrePensjonsavtale(PensjonsavtaleRequest pensjonsavtaleRequest) { return tokenService.exchange(serverProperties) .flatMapMany(token -> new LagrePensjonsavtaleCommand(webClient, pensjonsavtaleRequest, token.getTokenValue()).call()); } - @Timed(name = "providers", tags = { "operation", "pen_slettePensjpnsavtale" }) + @Timed(name = "providers", tags = {"operation", "pen_slettePensjpnsavtale"}) public void slettePensjonsavtale(List identer) { tokenService.exchange(serverProperties) @@ -184,7 +186,18 @@ public void slettePensjonsavtale(List identer) { .subscribe(resultat -> log.info("Slettet pensjonsavtaler (PEN), alle miljøer")); } - @Timed(name = "providers", tags = { "operation", "pen_hentVedtak" }) + @Timed(name = "providers", tags = {"operation", "pen_slettePoppinntekt"}) + public void slettePoppinntekt(List identer) { + + tokenService.exchange(serverProperties) + .flatMap(token -> Flux.from(new HentMiljoerCommand(webClient, token.getTokenValue()).call()) + .flatMap(miljoer -> Flux.fromIterable(identer) + .flatMap(ident -> new SlettePoppInntektCommand(webClient, ident, miljoer, token.getTokenValue()).call())) + .collectList()) + .subscribe(resultat -> log.info("Slettet POPP-inntekt, alle miljøer")); + } + + @Timed(name = "providers", tags = {"operation", "pen_hentVedtak"}) public Flux hentVedtak(String ident, String miljoe) { return tokenService.exchange(serverProperties) @@ -193,14 +206,14 @@ public Flux hentVedtak(String ident, String miljoe) { ident, miljoe, response)); } - @Timed(name = "providers", tags = { "operation", "pen_lagreAfpOffentlig" }) + @Timed(name = "providers", tags = {"operation", "pen_lagreAfpOffentlig"}) public Flux lagreAfpOffentlig(AfpOffentligRequest afpOffentligRequest, String ident, String miljoe) { return tokenService.exchange(serverProperties) .flatMapMany(token -> new LagreAfpOffentligCommand(webClient, afpOffentligRequest, ident, miljoe, token.getTokenValue()).call()); } - @Timed(name = "providers", tags = { "operation", "pen_sletteAfpOffentlig" }) + @Timed(name = "providers", tags = {"operation", "pen_sletteAfpOffentlig"}) public void sletteAfpOffentlig(List identer) { tokenService.exchange(serverProperties) diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/command/SlettePoppInntektCommand.java b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/command/SlettePoppInntektCommand.java new file mode 100644 index 00000000000..decbb1bf29b --- /dev/null +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/bestilling/pensjonforvalter/command/SlettePoppInntektCommand.java @@ -0,0 +1,52 @@ +package no.nav.dolly.bestilling.pensjonforvalter.command; + +import lombok.RequiredArgsConstructor; +import no.nav.dolly.bestilling.pensjonforvalter.domain.PensjonforvalterResponse; +import no.nav.testnav.libs.reactivecore.utils.WebClientFilter; +import no.nav.testnav.libs.securitycore.config.UserConstant; +import org.springframework.http.HttpStatus; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.concurrent.Callable; + +import static no.nav.dolly.domain.CommonKeysAndUtils.CONSUMER; +import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CALL_ID; +import static no.nav.dolly.domain.CommonKeysAndUtils.HEADER_NAV_CONSUMER_ID; +import static no.nav.dolly.util.CallIdUtil.generateCallId; +import static no.nav.dolly.util.TokenXUtil.getUserJwt; +import static org.springframework.http.HttpHeaders.AUTHORIZATION; + +@RequiredArgsConstructor +public class SlettePoppInntektCommand implements Callable> { + + private static final String POPP_DELETE_URL = "/api/v1/popp/person"; + + private final WebClient webClient; + private final String ident; + private final Set miljoer; + private final String token; + + public Flux call() { + + return webClient + .delete() + .uri(uriBuilder -> uriBuilder + .path(POPP_DELETE_URL) + .queryParam("miljoer", miljoer) + .build()) + .header("pid", ident) + .header(AUTHORIZATION, "Bearer " + token) + .header(UserConstant.USER_HEADER_JWT, getUserJwt()) + .header(HEADER_NAV_CALL_ID, generateCallId()) + .header(HEADER_NAV_CONSUMER_ID, CONSUMER) + .retrieve() + .bodyToFlux(PensjonforvalterResponse.class) + .doOnError(WebClientFilter::logErrorMessage) + .onErrorResume(Exception.class, error -> Mono.empty()); + } +} \ No newline at end of file diff --git a/apps/dolly-backend/src/main/resources/logback-spring.xml b/apps/dolly-backend/src/main/resources/logback-spring.xml index a49aedadd95..cd2db827ed4 100644 --- a/apps/dolly-backend/src/main/resources/logback-spring.xml +++ b/apps/dolly-backend/src/main/resources/logback-spring.xml @@ -5,7 +5,7 @@ -1 true - - + diff --git a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java index 5a062785582..bbaaf79f3cd 100644 --- a/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java +++ b/apps/dolly-frontend/src/main/java/no/nav/dolly/web/DollyFrontendApplicationStarter.java @@ -43,13 +43,6 @@ public class DollyFrontendApplicationStarter { private final AccessService accessService; private final UserJwtExchange userJwtExchange; private final Consumers consumers; - - public static void main(String[] args) { - new SpringApplicationBuilder(DollyFrontendApplicationStarter.class) - .initializers(new NaisEnvironmentApplicationContextInitializer()) - .run(args); - } - private final GatewayFilter removeCookiesFilter = (exchange, chain) -> { ServerWebExchange modifiedExchange = exchange.mutate() .request(r -> r.headers(headers -> headers.remove(HttpHeaders.COOKIE))) @@ -108,6 +101,12 @@ public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { .build(); } + public static void main(String[] args) { + new SpringApplicationBuilder(DollyFrontendApplicationStarter.class) + .initializers(new NaisEnvironmentApplicationContextInitializer()) + .run(args); + } + private GatewayFilter addAuthenticationHeaderFilterFrom(ServerProperties serverProperties) { return new AddAuthenticationHeaderToRequestGatewayFilterFactory() .apply(exchange -> { diff --git a/apps/dolly-frontend/src/main/js/package-lock.json b/apps/dolly-frontend/src/main/js/package-lock.json index 434c4a80139..57999eff2a0 100644 --- a/apps/dolly-frontend/src/main/js/package-lock.json +++ b/apps/dolly-frontend/src/main/js/package-lock.json @@ -1,12 +1,12 @@ { "name": "dolly", - "version": "3.1.1", + "version": "3.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dolly", - "version": "3.1.1", + "version": "3.1.2", "license": "ISC", "dependencies": { "@hookform/resolvers": "^4.0.0", @@ -67,12 +67,14 @@ "@typescript-eslint/parser": "^8.12.2", "@vitejs/plugin-react": "^4.3.4", "@vitest/ui": "^3.0.5", + "babel-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216", "babel-plugin-styled-components": "^2.1.4", "dot-prop": "^9.0.0", "esbuild": ">=0.25.0", "eslint": "^9.13.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216", "fetch-retry": "^6.0.0", "isomorphic-fetch": "^3.0.0", "jsdom": "^26.0.0", @@ -437,6 +439,24 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-decorators": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", @@ -803,6 +823,13 @@ "node": ">=18" } }, + "node_modules/@date-fns/tz": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.2.0.tgz", + "integrity": "sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==", + "dev": true, + "license": "MIT" + }, "node_modules/@emotion/babel-plugin": { "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", @@ -1547,32 +1574,19 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.6.tgz", + "integrity": "sha512-+0TjwR1eAUdZtvv/ir1mGX+v0tUoR3VEPB8Up0LLJC+whRW0GgBBtpbOkg/a/U4Dxa6l5a3l9AJ1aWIQVyoWJA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.11.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", - "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@floating-ui/core": { "version": "1.6.9", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", @@ -1718,9 +1732,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1960,16 +1974,16 @@ } }, "node_modules/@navikt/aksel-icons": { - "version": "7.13.0", - "resolved": "https://npm.pkg.github.com/download/@navikt/aksel-icons/7.13.0/23160e57540df4f599acc7b744a08e8a34b05b70", - "integrity": "sha512-ItbZfWy9+tczVLtwcBs5fP9cf6z5XqTtGh4sBRvnaCt0840Qgs/fWld/j4V5TXdXD825morqBMqkP/rJRvEbKQ==", + "version": "7.14.1", + "resolved": "https://npm.pkg.github.com/download/@navikt/aksel-icons/7.14.1/2cd8697925f2be9b968ffbd2032b37c08a431445", + "integrity": "sha512-8GyrTwm67xD6zs2lYs/lsAsfLTLIlr6RhokfuNQtmubvp/5jQQ0ASsOlpf7FK3Fumi81hz7zFo59x3Xf/iJb0w==", "dev": true, "license": "MIT" }, "node_modules/@navikt/ds-css": { - "version": "7.13.0", - "resolved": "https://npm.pkg.github.com/download/@navikt/ds-css/7.13.0/208180e5bb9f3c344913c7e96ac40256325b1bd3", - "integrity": "sha512-FVXiYkhee6ngiL+TL9VVSjL9wp6j67fQvmgCsriVJNsWEco1rCgbaaskJuy7WBNZ0uC1mweksRTR+PbdusQBbg==", + "version": "7.14.1", + "resolved": "https://npm.pkg.github.com/download/@navikt/ds-css/7.14.1/bc6e8c656547a8ee11a49638ace30659d55bf4c2", + "integrity": "sha512-z9Fy9ZiMH3Zt+/53eBLhDWc4IZOTSfMz1rnbjgg7c+5Dy/8b1UoK1GMtG3z9tWEngsMPwCjLamjJktNWcWZmzQ==", "dev": true, "license": "MIT" }, @@ -1991,40 +2005,29 @@ } }, "node_modules/@navikt/ds-react": { - "version": "7.13.0", - "resolved": "https://npm.pkg.github.com/download/@navikt/ds-react/7.13.0/0aa70adf19e75769246a25fdf8487fe0dbfa3f0d", - "integrity": "sha512-FXgO7s5NkhpDZcqd82MeZYLzlyGWPnUVvdtJW+etv/fXlrKaGLdNd2wK9KY1KVTPaFSHHfBPkmz6dneDY2Z4CA==", + "version": "7.14.1", + "resolved": "https://npm.pkg.github.com/download/@navikt/ds-react/7.14.1/97ccabc95a5f5ab1b3fc6c7619ae2bd52c10a322", + "integrity": "sha512-p97wuYwM5J5SQolMI14VRmCJm1f5/vaVL0YzDRXE3fuYLxvtNbGtSZWjpqVG4xnfU3ynTXU8wRDSPR0ajWDOQg==", "dev": true, "license": "MIT", "dependencies": { "@floating-ui/react": "0.25.4", "@floating-ui/react-dom": "^2.0.9", - "@navikt/aksel-icons": "^7.13.0", - "@navikt/ds-tokens": "^7.13.0", + "@navikt/aksel-icons": "^7.14.1", + "@navikt/ds-tokens": "^7.14.1", "clsx": "^2.1.0", - "date-fns": "^3.0.0", - "react-day-picker": "8.10.1" + "date-fns": "^4.0.0", + "react-day-picker": "9.5.0" }, "peerDependencies": { "@types/react": ">=17.0.30", "react": ">=17.0.0 || >19.0.0-rc" } }, - "node_modules/@navikt/ds-react/node_modules/date-fns": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", - "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, "node_modules/@navikt/ds-tokens": { - "version": "7.13.0", - "resolved": "https://npm.pkg.github.com/download/@navikt/ds-tokens/7.13.0/7ba52d92027490e15b65e79d685757fd38aff7f0", - "integrity": "sha512-kqKJhx1cQfmpQDwA0eIum0apEqutis/wn65h92nCOxwhpfMm8jUkry4JgTbwlfH5uHMJXEe9p9DwYkgbjeZcmQ==", + "version": "7.14.1", + "resolved": "https://npm.pkg.github.com/download/@navikt/ds-tokens/7.14.1/e28573e7fca321d65e1f28795c7f2a5ec8807b8e", + "integrity": "sha512-PXPPYuxWm0sLtuB54bobO43pY0I+dZMvk6bwpjuHxTT8+dPSMWaTTzVr1urXNCu/5uAPCked8nNQbucckY5IMA==", "dev": true, "license": "MIT" }, @@ -2561,9 +2564,9 @@ } }, "node_modules/@react-router/dev": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@react-router/dev/-/dev-7.1.5.tgz", - "integrity": "sha512-3YQAbaKQm4mxcd0jmbItr2Ik0GshEMmPpRAld7XhIymB50MklWSsgd+IJWcqSv8RVlNs1ZMxRC0maS3Hv/V19g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@react-router/dev/-/dev-7.2.0.tgz", + "integrity": "sha512-GzSNGeWuhx6sMsnidCQAlCAephibUMC61xIAdsc6hBXWCJe/T9wUrvtnh2Xbcpr7BRZJtJN4UhI472ZURA6m9w==", "dev": true, "license": "MIT", "dependencies": { @@ -2576,7 +2579,7 @@ "@babel/traverse": "^7.23.2", "@babel/types": "^7.22.5", "@npmcli/package-json": "^4.0.1", - "@react-router/node": "7.1.5", + "@react-router/node": "7.2.0", "arg": "^5.0.1", "babel-dead-code-elimination": "^1.0.6", "chokidar": "^4.0.0", @@ -2604,8 +2607,8 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@react-router/serve": "^7.1.5", - "react-router": "^7.1.5", + "@react-router/serve": "^7.2.0", + "react-router": "^7.2.0", "typescript": "^5.1.0", "vite": "^5.1.0 || ^6.0.0", "wrangler": "^3.28.2" @@ -2639,9 +2642,9 @@ } }, "node_modules/@react-router/node": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@react-router/node/-/node-7.1.5.tgz", - "integrity": "sha512-Ga8xFHxO2yt5TpGwV5xYx4LC3eUDmhT6jYfTbMFb6F7hBA9sLdHxNfYZCe2WEfVZ4/BM7I8989Qzq6BWilV2LA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@react-router/node/-/node-7.2.0.tgz", + "integrity": "sha512-CqBHLwvvV4BB8htmaSwT+SOwX9B4RVOIiEdTlaIp12sNVCGSYDIEGbv3T4Wxeq8p5ynNfhNcdBeXtZ6ZPWVozA==", "license": "MIT", "dependencies": { "@mjackson/node-fetch-server": "^0.2.0", @@ -2653,7 +2656,7 @@ "node": ">=20.0.0" }, "peerDependencies": { - "react-router": "7.1.5", + "react-router": "7.2.0", "typescript": "^5.1.0" }, "peerDependenciesMeta": { @@ -3229,17 +3232,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.0.tgz", - "integrity": "sha512-aFcXEJJCI4gUdXgoo/j9udUYIHgF23MFkg09LFz2dzEmU0+1Plk4rQWv/IYKvPHAtlkkGoB3m5e6oUp+JPsNaQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", + "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/type-utils": "8.24.0", - "@typescript-eslint/utils": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/type-utils": "8.24.1", + "@typescript-eslint/utils": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -3259,16 +3262,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.0.tgz", - "integrity": "sha512-MFDaO9CYiard9j9VepMNa9MTcqVvSny2N4hkY6roquzj8pdCBRENhErrteaQuu7Yjn1ppk0v1/ZF9CG3KIlrTA==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz", + "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/typescript-estree": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/typescript-estree": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", "debug": "^4.3.4" }, "engines": { @@ -3284,14 +3287,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.0.tgz", - "integrity": "sha512-HZIX0UByphEtdVBKaQBgTDdn9z16l4aTUz8e8zPQnyxwHBtf5vtl1L+OhH+m1FGV9DrRmoDuYKqzVrvWDcDozw==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", + "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0" + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3302,14 +3305,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.0.tgz", - "integrity": "sha512-8fitJudrnY8aq0F1wMiPM1UUgiXQRJ5i8tFjq9kGfRajU+dbPyOuHbl0qRopLEidy0MwqgTHDt6CnSeXanNIwA==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", + "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.24.0", - "@typescript-eslint/utils": "8.24.0", + "@typescript-eslint/typescript-estree": "8.24.1", + "@typescript-eslint/utils": "8.24.1", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -3326,9 +3329,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.0.tgz", - "integrity": "sha512-VacJCBTyje7HGAw7xp11q439A+zeGG0p0/p2zsZwpnMzjPB5WteaWqt4g2iysgGFafrqvyLWqq6ZPZAOCoefCw==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", + "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", "dev": true, "license": "MIT", "engines": { @@ -3340,14 +3343,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.0.tgz", - "integrity": "sha512-ITjYcP0+8kbsvT9bysygfIfb+hBj6koDsu37JZG7xrCiy3fPJyNmfVtaGsgTUSEuTzcvME5YI5uyL5LD1EV5ZQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", + "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/visitor-keys": "8.24.0", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3367,16 +3370,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.0.tgz", - "integrity": "sha512-07rLuUBElvvEb1ICnafYWr4hk8/U7X9RDCOqd9JcAMtjh/9oRmcfN4yGzbPVirgMR0+HLVHehmu19CWeh7fsmQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", + "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.0", - "@typescript-eslint/types": "8.24.0", - "@typescript-eslint/typescript-estree": "8.24.0" + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/typescript-estree": "8.24.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3391,13 +3394,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.0.tgz", - "integrity": "sha512-kArLq83QxGLbuHrTMoOEWO+l2MwsNS2TGISEdx8xgqpkbytB07XmlQyQdNDrCc1ecSqx0cnmhGvpX+VBwqqSkg==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", + "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.0", + "@typescript-eslint/types": "8.24.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3442,15 +3445,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz", - "integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.6.tgz", + "integrity": "sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.5", - "@vitest/utils": "3.0.5", - "chai": "^5.1.2", + "@vitest/spy": "3.0.6", + "@vitest/utils": "3.0.6", + "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, "funding": { @@ -3458,13 +3461,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz", - "integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.6.tgz", + "integrity": "sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.5", + "@vitest/spy": "3.0.6", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -3485,9 +3488,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", - "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz", + "integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==", "dev": true, "license": "MIT", "dependencies": { @@ -3498,14 +3501,14 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz", - "integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.6.tgz", + "integrity": "sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.5", - "pathe": "^2.0.2" + "@vitest/utils": "3.0.6", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" @@ -3519,15 +3522,15 @@ "license": "MIT" }, "node_modules/@vitest/snapshot": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz", - "integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.6.tgz", + "integrity": "sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.5", + "@vitest/pretty-format": "3.0.6", "magic-string": "^0.30.17", - "pathe": "^2.0.2" + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" @@ -3541,9 +3544,9 @@ "license": "MIT" }, "node_modules/@vitest/spy": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz", - "integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.6.tgz", + "integrity": "sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3554,25 +3557,25 @@ } }, "node_modules/@vitest/ui": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.0.5.tgz", - "integrity": "sha512-gw2noso6WI+2PeMVCZFntdATS6xl9qhQcbhkPQ9sOmx/Xn0f4Bx4KDSbD90jpJPF0l5wOzSoGCmKyVR3W612mg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-3.0.6.tgz", + "integrity": "sha512-N4M2IUG2Q5LCeX4OWs48pQF4P3qsFejmDTc6QWGRFTLPrEe5EvM5HN0WSUnGAmuzQpSWv7ItfSsIJIWaEM2wpQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.5", + "@vitest/utils": "3.0.6", "fflate": "^0.8.2", "flatted": "^3.3.2", - "pathe": "^2.0.2", - "sirv": "^3.0.0", - "tinyglobby": "^0.2.10", + "pathe": "^2.0.3", + "sirv": "^3.0.1", + "tinyglobby": "^0.2.11", "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "3.0.5" + "vitest": "3.0.6" } }, "node_modules/@vitest/ui/node_modules/pathe": { @@ -3583,14 +3586,14 @@ "license": "MIT" }, "node_modules/@vitest/utils": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", - "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.6.tgz", + "integrity": "sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.5", - "loupe": "^3.1.2", + "@vitest/pretty-format": "3.0.6", + "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, "funding": { @@ -3972,6 +3975,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/babel-plugin-react-compiler": { + "version": "19.0.0-beta-21e868a-20250216", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-19.0.0-beta-21e868a-20250216.tgz", + "integrity": "sha512-WDOBsm9t9P0RADm8CSlav5OqWvs+3mZFvrBo/qf3vuNtdz78OG5TFxOy7De8ePR3rA6qg1Qmcjjae6nR1pOpCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.19.0" + } + }, "node_modules/babel-plugin-styled-components": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz", @@ -4768,6 +4781,13 @@ "url": "https://github.com/sponsors/kossnocorp" } }, + "node_modules/date-fns-jalali": { + "version": "4.1.0-0", + "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz", + "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==", + "dev": true, + "license": "MIT" + }, "node_modules/dayjs": { "version": "1.11.13", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", @@ -4998,9 +5018,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.101", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.101.tgz", - "integrity": "sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==", + "version": "1.5.102", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", + "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", "dev": true, "license": "ISC" }, @@ -5419,6 +5439,27 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, + "node_modules/eslint-plugin-react-compiler": { + "version": "19.0.0-beta-21e868a-20250216", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-compiler/-/eslint-plugin-react-compiler-19.0.0-beta-21e868a-20250216.tgz", + "integrity": "sha512-LstAv6tKgZylMmJniWxQL9TOY9kwRddLnvBsoTbRsgUDROL5bsg0k5XHMaNJLyX8cxh4iafQ/WxAw5shNUf3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "hermes-parser": "^0.25.1", + "zod": "^3.22.4", + "zod-validation-error": "^3.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -5837,9 +5878,9 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -6326,6 +6367,23 @@ "dev": true, "license": "MIT" }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, "node_modules/highlight-words-core": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.3.tgz", @@ -7788,9 +7846,9 @@ "optional": true }, "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, "license": "MIT", "engines": { @@ -7804,9 +7862,9 @@ "license": "MIT" }, "node_modules/msw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.0.tgz", - "integrity": "sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.1.tgz", + "integrity": "sha512-TVT65uoWt9LE4lMTLBdClHBQVwvZv5ofac1YyE119nCrNyXf4ktdeVnWH9Fyt94Ifmiedhw6Npp4DSuVRSuRpw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -8961,18 +9019,25 @@ } }, "node_modules/react-day-picker": { - "version": "8.10.1", - "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", - "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.5.0.tgz", + "integrity": "sha512-WmJnPFVLnKh5Qscm7wavMNg86rqPverSWjx+zgK8/ZmGRSQ8c8OoqW10RI+AzAfT2atIxImpCUU2R9Z7Xb2SUA==", "dev": true, "license": "MIT", + "dependencies": { + "@date-fns/tz": "^1.2.0", + "date-fns": "^4.1.0", + "date-fns-jalali": "^4.1.0-0" + }, + "engines": { + "node": ">=18" + }, "funding": { "type": "individual", "url": "https://github.com/sponsors/gpbl" }, "peerDependencies": { - "date-fns": "^2.28.0 || ^3.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": ">=16.8.0" } }, "node_modules/react-display-name": { @@ -9050,9 +9115,9 @@ } }, "node_modules/react-inlinesvg": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/react-inlinesvg/-/react-inlinesvg-4.1.8.tgz", - "integrity": "sha512-VZHLoK3cZoN8DelBT6zr6w347t4/xsDjYbxDNbjyGzOJrvAIJORJoRVBop6EG/tW3Mpz0rEueS4YyD8WXgI6Tw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-inlinesvg/-/react-inlinesvg-4.2.0.tgz", + "integrity": "sha512-V59P6sFU7NACIbvoay9ikYKVFWyIIZFGd7w6YT1m+H7Ues0fOI6B6IftE6NPSYXXv7RHVmrncIyJeYurs3OJcA==", "license": "MIT", "dependencies": { "react-from-dom": "^0.7.5" @@ -9176,9 +9241,9 @@ } }, "node_modules/react-router": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.5.tgz", - "integrity": "sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.2.0.tgz", + "integrity": "sha512-fXyqzPgCPZbqhrk7k3hPcCpYIlQ2ugIXDboHUzhJISFVy2DEPsmHgN588MyGmkIOv3jDgNfUE3kJi83L28s/LQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10047,9 +10112,9 @@ } }, "node_modules/sirv": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", - "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.1.tgz", + "integrity": "sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==", "dev": true, "license": "MIT", "dependencies": { @@ -10710,17 +10775,20 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", + "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.2", + "fdir": "^6.4.3", "picomatch": "^4.0.2" }, "engines": { "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/tinyglobby/node_modules/picomatch": { @@ -10767,22 +10835,22 @@ } }, "node_modules/tldts": { - "version": "6.1.77", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.77.tgz", - "integrity": "sha512-lBpoWgy+kYmuXWQ83+R7LlJCnsd9YW8DGpZSHhrMl4b8Ly/1vzOie3OdtmUJDkKxcgRGOehDu5btKkty+JEe+g==", + "version": "6.1.78", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.78.tgz", + "integrity": "sha512-fSgYrW0ITH0SR/CqKMXIruYIPpNu5aDgUp22UhYoSrnUQwc7SBqifEBFNce7AAcygUPBo6a/gbtcguWdmko4RQ==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.77" + "tldts-core": "^6.1.78" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.77", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.77.tgz", - "integrity": "sha512-bCaqm24FPk8OgBkM0u/SrEWJgHnhBWYqeBo6yUmcZJDCHt/IfyWBb+14CXdGi4RInMv4v7eUAin15W0DoA+Ytg==", + "version": "6.1.78", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.78.tgz", + "integrity": "sha512-jS0svNsB99jR6AJBmfmEWuKIgz91Haya91Z43PATaeHJ24BkMoNRb/jlaD37VYjb0mYf6gRL/HOnvS1zEnYBiw==", "dev": true, "license": "MIT" }, @@ -11161,9 +11229,9 @@ "license": "MIT" }, "node_modules/uuid": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", - "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -11210,14 +11278,14 @@ } }, "node_modules/vite": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.0.tgz", - "integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.1.tgz", + "integrity": "sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.24.2", - "postcss": "^8.5.1", + "postcss": "^8.5.2", "rollup": "^4.30.1" }, "bin": { @@ -11816,9 +11884,9 @@ } }, "node_modules/vite/node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -11845,31 +11913,31 @@ } }, "node_modules/vitest": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz", - "integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.6.tgz", + "integrity": "sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.5", - "@vitest/mocker": "3.0.5", - "@vitest/pretty-format": "^3.0.5", - "@vitest/runner": "3.0.5", - "@vitest/snapshot": "3.0.5", - "@vitest/spy": "3.0.5", - "@vitest/utils": "3.0.5", - "chai": "^5.1.2", + "@vitest/expect": "3.0.6", + "@vitest/mocker": "3.0.6", + "@vitest/pretty-format": "^3.0.6", + "@vitest/runner": "3.0.6", + "@vitest/snapshot": "3.0.6", + "@vitest/spy": "3.0.6", + "@vitest/utils": "3.0.6", + "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.1.0", "magic-string": "^0.30.17", - "pathe": "^2.0.2", + "pathe": "^2.0.3", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.5", + "vite-node": "3.0.6", "why-is-node-running": "^2.3.0" }, "bin": { @@ -11885,8 +11953,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.5", - "@vitest/ui": "3.0.5", + "@vitest/browser": "3.0.6", + "@vitest/ui": "3.0.6", "happy-dom": "*", "jsdom": "*" }, @@ -11922,16 +11990,16 @@ "license": "MIT" }, "node_modules/vitest/node_modules/vite-node": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz", - "integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.6.tgz", + "integrity": "sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", - "pathe": "^2.0.2", + "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0" }, "bin": { @@ -12457,6 +12525,29 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.4.0.tgz", + "integrity": "sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.18.0" + } } } } diff --git a/apps/dolly-frontend/src/main/js/package.json b/apps/dolly-frontend/src/main/js/package.json index 508dd1d31e5..93c10f85a62 100644 --- a/apps/dolly-frontend/src/main/js/package.json +++ b/apps/dolly-frontend/src/main/js/package.json @@ -1,6 +1,6 @@ { "name": "dolly", - "version": "3.1.1", + "version": "3.1.2", "type": "module", "description": "", "main": "index.js", @@ -79,11 +79,14 @@ "@typescript-eslint/parser": "^8.12.2", "@vitejs/plugin-react": "^4.3.4", "@vitest/ui": "^3.0.5", + "babel-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216", "babel-plugin-styled-components": "^2.1.4", "dot-prop": "^9.0.0", + "esbuild": ">=0.25.0", "eslint": "^9.13.0", "eslint-config-prettier": "^10.0.1", "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-compiler": "^19.0.0-beta-21e868a-20250216", "fetch-retry": "^6.0.0", "isomorphic-fetch": "^3.0.0", "jsdom": "^26.0.0", @@ -100,8 +103,7 @@ "vite": "^6.1.0", "vite-plugin-environment": "^1.1.3", "vite-tsconfig-paths": "^5.1.3", - "vitest": "^3.0.5", - "esbuild": ">=0.25.0" + "vitest": "^3.0.5" }, "prettier": { "singleQuote": true, diff --git a/apps/dolly-frontend/src/main/js/playwright/mocks/Selectors.tsx b/apps/dolly-frontend/src/main/js/playwright/mocks/Selectors.tsx index dbf712a09a8..d47e1fa1b09 100644 --- a/apps/dolly-frontend/src/main/js/playwright/mocks/Selectors.tsx +++ b/apps/dolly-frontend/src/main/js/playwright/mocks/Selectors.tsx @@ -5,7 +5,7 @@ export enum TestComponentSelectors { INPUT_NY_GRUPPE_NAVN = 'input-ny-gruppe-navn', INPUT_NY_GRUPPE_HENSIKT = 'input-ny-gruppe-hensikt', INPUT_HENSIKT = 'input-hensikt', - INPUT_FORBEDRING_MODAL = 'input-forbedring-modal', + INPUT_KONTAKT_MODAL = 'input-kontakt-modal', INPUT_BESTILLING_MALNAVN = 'input-bestilling-malnavn', INPUT_MINSIDE_ENDRE_MALNAVN = 'input-minside-endre-malnavn', TOGGLE_FAVORITTER = 'toggle-favoritter', @@ -41,7 +41,8 @@ export enum TestComponentSelectors { BUTTON_OPEN_BESTILLING = 'button-open-bestilling', BUTTON_OPEN_IDENT = 'button-open-ident', BUTTON_OPEN_BESTILLINGSDETALJER = 'button-open-bestillingsdetaljer', - BUTTON_OPEN_FORBEDRING_MODAL = 'button-open-forbedring-modal', + BUTTON_OPEN_KONTAKTINFO = 'button-open-kontaktinfo', + BUTTON_OPEN_KONTAKTSKJEMA = 'button-open-kontaktskjema', BUTTON_VELG_ALLE = 'button-velg-alle', BUTTON_FJERN_ALLE = 'button-fjern-alle', BUTTON_VIDERE = 'button-videre', @@ -65,7 +66,7 @@ export enum TestComponentSelectors { BUTTON_HEADER_ENDRINGSMELDING = 'button-header-endringsmelding', BUTTON_PROFIL = 'button-minside', BUTTON_PROFIL_MINSIDE = 'button-profil-minside', - BUTTON_SEND_FORBEDRINGSOENSKE = 'button-send-forbedringsoenske', + BUTTON_SEND_MELDING = 'button-send-melding', BUTTON_FULLFOER_BESTILLING = 'button-fullfoer-bestilling', BUTTON_AVBRYT_BESTILLING = 'button-avbryt-bestilling', BUTTON_IMPORTER_PERSONER = 'button-importer-personer', @@ -98,7 +99,7 @@ export enum TestComponentSelectors { SELECT_PERSON_SEARCH = 'select-person-search', SELECT_MAL = 'select-mal', HOVER_MILJOE = 'hover-miljoe', - CHECKBOX_FORBEDRING_ANONYM = 'checkbox-forbedring-anonym', + CHECKBOX_KONTAKT_ANONYM = 'checkbox-kontakt-anonym', CHECKBOX_TENORSOEK = 'checkbox-tenorsoek', CHECKBOX_ORGANISASJONER_TENORSOEK = 'checkbox-organisasjoner-tenorsoek', ERROR_MESSAGE_NAVIGERING = 'error-message-navigering', diff --git a/apps/dolly-frontend/src/main/js/playwright/tests/Minside.spec.ts b/apps/dolly-frontend/src/main/js/playwright/tests/Minside.spec.ts index d3550e6307e..181b0a2f937 100644 --- a/apps/dolly-frontend/src/main/js/playwright/tests/Minside.spec.ts +++ b/apps/dolly-frontend/src/main/js/playwright/tests/Minside.spec.ts @@ -9,20 +9,19 @@ test.describe('Minside mal testing', () => { await page.goto('') await page.getByTestId(TestComponentSelectors.BUTTON_PROFIL).click() await page.getByTestId(TestComponentSelectors.BUTTON_PROFIL_MINSIDE).click() - await page.getByTestId(TestComponentSelectors.BUTTON_OPEN_FORBEDRING_MODAL).click() - await expect( - page.getByTestId(TestComponentSelectors.BUTTON_SEND_FORBEDRINGSOENSKE), - ).toBeDisabled() + await page.getByTestId(TestComponentSelectors.BUTTON_OPEN_KONTAKTINFO).click() + await page.getByTestId(TestComponentSelectors.BUTTON_OPEN_KONTAKTSKJEMA).click() + await expect(page.getByTestId(TestComponentSelectors.BUTTON_SEND_MELDING)).toBeDisabled() await page - .getByTestId(TestComponentSelectors.INPUT_FORBEDRING_MODAL) + .getByTestId(TestComponentSelectors.INPUT_KONTAKT_MODAL) .fill('When you wish upon a star') - await page.getByTestId(TestComponentSelectors.CHECKBOX_FORBEDRING_ANONYM).click() - await expect(page.getByTestId(TestComponentSelectors.CHECKBOX_FORBEDRING_ANONYM)).toBeEnabled() + await page.getByTestId(TestComponentSelectors.CHECKBOX_KONTAKT_ANONYM).click() + await expect(page.getByTestId(TestComponentSelectors.CHECKBOX_KONTAKT_ANONYM)).toBeEnabled() - await page.getByTestId(TestComponentSelectors.CHECKBOX_FORBEDRING_ANONYM).click() - await page.getByTestId(TestComponentSelectors.BUTTON_SEND_FORBEDRINGSOENSKE).click() + await page.getByTestId(TestComponentSelectors.CHECKBOX_KONTAKT_ANONYM).click() + await page.getByTestId(TestComponentSelectors.BUTTON_SEND_MELDING).click() await page.getByTestId(TestComponentSelectors.INPUT_MINSIDE_SOEK_MAL).fill('mal') await page.getByTestId(TestComponentSelectors.INPUT_MINSIDE_SOEK_MAL).clear() await page.getByTestId(TestComponentSelectors.TOGGLE_MIN_SIDE_ORGANISASJON_MALER).click() diff --git a/apps/dolly-frontend/src/main/js/src/app/App.tsx b/apps/dolly-frontend/src/main/js/src/app/App.tsx index bc7c124f7d8..b077311fa13 100644 --- a/apps/dolly-frontend/src/main/js/src/app/App.tsx +++ b/apps/dolly-frontend/src/main/js/src/app/App.tsx @@ -4,7 +4,7 @@ import Header from '@/components/layout/header/Header' import Loading from '@/components/ui/loading/Loading' import { VarslingerModal } from '@/components/varslinger/VarslingerModal' import './App.less' -import { Forbedring } from '@/components/feedback/Forbedring' +import { Kontaktinfo } from '@/components/feedback/Kontaktinfo' import ToastConnector from '@/components/ui/toast/ToastConnector' import { Breadcrumbs } from '@/components/layout/breadcrumb/Breadcrumb' import { useBrukerProfil, useCurrentBruker } from '@/utils/hooks/useBruker' @@ -66,7 +66,7 @@ export const App = () => { - + ) diff --git a/apps/dolly-frontend/src/main/js/src/assets/icons/custom/SlackLogo.svg b/apps/dolly-frontend/src/main/js/src/assets/icons/custom/SlackLogo.svg new file mode 100644 index 00000000000..38fb6500dd5 --- /dev/null +++ b/apps/dolly-frontend/src/main/js/src/assets/icons/custom/SlackLogo.svg @@ -0,0 +1,14 @@ + + + \ No newline at end of file diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Personinformasjon.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Personinformasjon.tsx index b8221646581..8c524b9afba 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Personinformasjon.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg1/paneler/Personinformasjon.tsx @@ -328,7 +328,7 @@ PersoninformasjonPanel.initialValues = ({ set, opts, setMulti, del, has }) => { ) }, remove() { - del('skjerming') + del(['skjerming', paths.egenAnsattDatoFom.tpsM, paths.egenAnsattDatoFom.skjerming]) }, }, norskBankkonto: { diff --git a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx index 1526b96c98c..cfcb1f537da 100644 --- a/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/bestillingsveileder/stegVelger/steg/steg2/Steg2.tsx @@ -1,6 +1,5 @@ import React, { lazy, Suspense, useContext, useEffect } from 'react' -import { harAvhukedeAttributter } from '@/components/bestillingsveileder/utils' -import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext' +import { useFormContext } from 'react-hook-form' import { SigrunstubForm } from '@/components/fagsystem/sigrunstub/form/Form' import { InntektstubForm } from '@/components/fagsystem/inntektstub/form/Form' import { InntektsmeldingForm } from '@/components/fagsystem/inntektsmelding/form/Form' @@ -14,13 +13,11 @@ import { MedlForm } from '@/components/fagsystem/medl/form/MedlForm' import { SykdomForm } from '@/components/fagsystem/sykdom/form/Form' import { OrganisasjonForm } from '@/components/fagsystem/organisasjoner/form/Form' import { TjenestepensjonForm } from '@/components/fagsystem/tjenestepensjon/form/Form' -import { Alert } from '@navikt/ds-react' import { AlderspensjonForm } from '@/components/fagsystem/alderspensjon/form/Form' import { ArbeidsplassenForm } from '@/components/fagsystem/arbeidsplassen/form/Form' import { UforetrygdForm } from '@/components/fagsystem/uforetrygd/form/Form' import { SigrunstubPensjonsgivendeForm } from '@/components/fagsystem/sigrunstubPensjonsgivende/form/Form' import { KrrstubForm } from '@/components/fagsystem/krrstub/form/KrrForm' -import { useFormContext } from 'react-hook-form' import { SkattekortForm } from '@/components/fagsystem/skattekort/form/Form' import { PensjonsavtaleForm } from '@/components/fagsystem/pensjonsavtale/form/Form' import { FullmaktForm } from '@/components/fagsystem/fullmakt/form/FullmaktForm' @@ -29,34 +26,35 @@ import { YrkesskaderForm } from '@/components/fagsystem/yrkesskader/form/Form' import Loading from '@/components/ui/loading/Loading' import { PdlfForm } from '@/components/fagsystem/pdlf/form/Form' import { ArbeidssoekerregisteretForm } from '@/components/fagsystem/arbeidssoekerregisteret/form/Form' +import { BestillingsveilederContext } from '@/components/bestillingsveileder/BestillingsveilederContext' +import { harAvhukedeAttributter } from '@/components/bestillingsveileder/utils' +import { Alert } from '@navikt/ds-react' const HistarkForm = lazy(() => import('@/components/fagsystem/histark/form/HistarkForm')) const DokarkivForm = lazy(() => import('@/components/fagsystem/dokarkiv/form/DokarkivForm')) -const gruppeNavn = (gruppe) => {gruppe.navn} +const Steg2: React.FC = () => { + const { getValues, setValue } = useFormContext() + const opts: any = useContext(BestillingsveilederContext) -const getEmptyMessage = (leggTil, importTestnorge, gruppe = null) => { - if (leggTil) { - return 'Du har ikke lagt til flere egenskaper. Vennligst gå tilbake og velg nye egenskaper.' - } else if (importTestnorge) { - return ( - - Du har ikke lagt til egenskaper. Dolly vil importere valgt Test-Norge person(er) til - {gruppe === null && <> gruppe du velger i neste steg.} - {gruppe !== null && <> gruppen {gruppeNavn(gruppe)}.} - - ) + const getEmptyMessage = (leggTil, importTestnorge, gruppe = null) => { + if (leggTil) { + return 'Du har ikke lagt til flere egenskaper. Vennligst gå tilbake og velg nye egenskaper.' + } else if (importTestnorge) { + return ( + + Du har ikke lagt til egenskaper. Dolly vil importere valgt Test-Norge person(er) til + {gruppe === null && <> gruppe du velger i neste steg.} + {gruppe !== null && <> gruppen {gruppeNavn(gruppe)}.} + + ) + } + return 'Du har ikke valgt noen egenskaper. Dolly oppretter personer med tilfeldige verdier.' } - return 'Du har ikke valgt noen egenskaper. Dolly oppretter personer med tilfeldige verdier.' -} - -const Steg2 = () => { - const opts: any = useContext(BestillingsveilederContext) - const formMethods = useFormContext() useEffect(() => { if (opts.gruppe?.id) { - formMethods.setValue('gruppeId', opts.gruppe?.id) + setValue('gruppeId', opts.gruppe?.id) } }, []) @@ -64,41 +62,43 @@ const Steg2 = () => { const importTestnorge = opts.is.importTestnorge const gruppe = opts.gruppe - if (!harAvhukedeAttributter(formMethods.getValues())) { + if (!harAvhukedeAttributter(getValues())) { return {getEmptyMessage(leggTil, importTestnorge, gruppe)} } + const gruppeNavn = (gruppe: any) => {gruppe.navn} return (
- - - - - - - - - - - - - - - - - - - - - - - + {getValues('fullmakt') && } + {getValues('aareg') && } + {getValues('sigrunstub') && } + {getValues('sigrunstubPensjonsgivende') && } + {getValues('inntektstub') && } + {getValues('inntektsmelding') && } + {getValues('skattekort') && } + {getValues('arbeidssoekerregisteret') && } + {getValues('arbeidsplassenCV') && } + {getValues('pensjonforvalter') && } + {getValues('pensjonsavtale') && } + {getValues('tjenestepensjon') && } + {getValues('alderspensjon') && } + {getValues('uforetrygd') && } + {getValues('afpOffentlig') && } + {getValues('arenaforvalter') && } + {getValues('sykemelding') && } + {getValues('yrkesskader') && } + {getValues('brregstub') && } + {getValues('instdata') && } + {getValues('krrstub') && } + {getValues('medl') && } + {getValues('udistub') && } + {getValues('organisasjon') && } + }> - - + {getValues('dokarkiv') && } + {getValues('histark') && } -
) } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/Form.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/Form.tsx index d0694d46f01..80ea64caf30 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/Form.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/brregstub/form/Form.tsx @@ -13,6 +13,11 @@ export const brregAttributt = 'brregstub' export const BrregstubForm = () => { const formMethods = useFormContext() + + if (!formMethods.watch(brregAttributt)) { + return null + } + const understatuser = SelectOptionsOppslag.hentUnderstatusFraBrregstub() const understatuserOptions = SelectOptionsFormat.formatOptions('understatuser', understatuser) diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/HistarkVisning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/HistarkVisning.tsx index 72abdcf39ce..ddb5d801981 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/HistarkVisning.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/HistarkVisning.tsx @@ -1,7 +1,11 @@ import { TitleValue } from '@/components/ui/titleValue/TitleValue' import { arrayToString, formatDate } from '@/utils/DataFormatter' +import Button from '@/components/ui/button/Button' +import JoarkDokumentService from '@/service/services/JoarkDokumentService' type HistarkDokument = { + idx: number + dokumentInfoId: any dokument: { antallSider: number enhetsNr: string @@ -19,7 +23,7 @@ type HistarkDokument = { } } -export default ({ dokument }: HistarkDokument) => { +export default ({ dokument, dokumentInfoId, idx }: HistarkDokument) => { if (!dokument) { return null } @@ -39,7 +43,24 @@ export default ({ dokument }: HistarkDokument) => { /> - +
+

Vedlegg

+
+
+ + + +
) } diff --git a/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/Visning.tsx b/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/Visning.tsx index 88a0364f30d..2c432140ea8 100644 --- a/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/Visning.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/fagsystem/histark/visning/Visning.tsx @@ -3,9 +3,11 @@ import HistarkVisning from './HistarkVisning' import Loading from '@/components/ui/loading/Loading' import { Journalpost } from '@/service/services/JoarkDokumentService' import { DollyFieldArray } from '@/components/ui/form/fieldArray/DollyFieldArray' +import { useTransaksjonsid } from '@/utils/hooks/useTransaksjonsid' interface Form { data?: Array + ident: string loading: boolean } @@ -14,14 +16,26 @@ type MiljoDataListe = { data: Array } -const Histark = ({ data }) => { +const getHeader = (dokument: any) => { + return `Dokument (${dokument?.filnavn})` +} + +const Histark = ({ data, dokumentInfoId, idx }) => { if (!data) return null - return + return } -export default ({ data, loading }: Form) => { - if (loading) { +export default ({ data, loading, ident }: Form) => { + const { transaksjonsid, loading: loadingTransaksjon } = useTransaksjonsid('HISTARK', ident) + let dokumentInfoIder: number[] = [] + transaksjonsid?.forEach((transaksjon) => + transaksjon?.transaksjonId.forEach((indreTransaksjon) => + dokumentInfoIder.push(indreTransaksjon.dokumentInfoId), + ), + ) + + if (loading || loadingTransaksjon) { return } @@ -33,11 +47,16 @@ export default ({ data, loading }: Form) => { <> {data.length === 1 ? ( - + ) : ( - 2}> - {(dokument) => { - return + 2} + > + {(dokument, idx) => { + return }} )} diff --git a/apps/dolly-frontend/src/main/js/src/components/feedback/Forbedring.tsx b/apps/dolly-frontend/src/main/js/src/components/feedback/Forbedring.tsx deleted file mode 100644 index c3149085888..00000000000 --- a/apps/dolly-frontend/src/main/js/src/components/feedback/Forbedring.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react' -// @ts-ignore -import './Forbedring.less' -import { ForbedringModal } from '@/components/feedback/ForbedringModal' -import useBoolean from '@/utils/hooks/useBoolean' -import Icon from '@/components/ui/icon/Icon' -import { ErrorBoundary } from '@/components/ui/appError/ErrorBoundary' -import { TestComponentSelectors } from '#/mocks/Selectors' - -export const Forbedring = () => { - const [isForbedringModalOpen, openForbedringModal, closeForbedringModal] = useBoolean(false) - - return ( - - - {isForbedringModalOpen && } - - ) -} diff --git a/apps/dolly-frontend/src/main/js/src/components/feedback/ForbedringModal.tsx b/apps/dolly-frontend/src/main/js/src/components/feedback/KontaktModal.tsx similarity index 61% rename from apps/dolly-frontend/src/main/js/src/components/feedback/ForbedringModal.tsx rename to apps/dolly-frontend/src/main/js/src/components/feedback/KontaktModal.tsx index cf6c870df22..66bbc5e03a8 100644 --- a/apps/dolly-frontend/src/main/js/src/components/feedback/ForbedringModal.tsx +++ b/apps/dolly-frontend/src/main/js/src/components/feedback/KontaktModal.tsx @@ -12,19 +12,19 @@ import { Textarea } from '@navikt/ds-react' import { Logger } from '@/logger/Logger' import { TestComponentSelectors } from '#/mocks/Selectors' -export const ForbedringModal = ({ closeModal }) => { +export const KontaktModal = ({ closeModal }) => { const { brukerBilde } = useBrukerProfilBilde() const { currentBruker } = useCurrentBruker() const MAX_LENGTH = 2000 const [uuid] = useState(_uuid()) - const [forbedring, setForbedring] = useState('') + const [melding, setMelding] = useState('') const [isAnonym, toggleAnonym] = useToggle(false) - const sendForbedring = () => { + const sendMelding = () => { Logger.log({ - event: `Ønsket forbedring fra Dollybruker`, - message: forbedring, + event: `Melding fra Dollybruker`, + message: melding, uuid: uuid, isAnonym: isAnonym, brukerType: currentBruker.brukertype, @@ -35,31 +35,34 @@ export const ForbedringModal = ({ closeModal }) => { return ( -

Ønske om forbedring eller ny funksjonalitet

+

Kontakt team Dolly


+

+ Her kan du sende oss tilbakemeldinger, komme med ønsker eller forslag til ny + funksjonalitet, eller melde fra om feil og mangler. NB! Om du ønsker svar på meldingen kan + du ikke velge å være anonym. +

{isAnonym ? ( -
- -
+ ) : ( Profilbilde )}