From 0636c511245d20f7cc0d25dc2cf2669380604064 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 10 Oct 2024 09:26:59 +0200 Subject: [PATCH 01/10] chore(deps): update dependency stylelint-order to v6 (#6179) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../code-du-travail-frontend/package.json | 2 +- packages/react-ui/package.json | 2 +- yarn.lock | 30 +++++++++---------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packages/code-du-travail-frontend/package.json b/packages/code-du-travail-frontend/package.json index 5b43202e36..faa87b7b41 100644 --- a/packages/code-du-travail-frontend/package.json +++ b/packages/code-du-travail-frontend/package.json @@ -105,7 +105,7 @@ "stylelint-config-rational-order": "^0.1.2", "stylelint-config-standard-scss": "^6.1.0", "stylelint-config-styled-components": "^0.1.1", - "stylelint-order": "^5.0.0", + "stylelint-order": "^6.0.0", "stylelint-processor-styled-components": "^1.10.0", "supertest": "^6.3.3", "testing-library-selector": "0.3.1", diff --git a/packages/react-ui/package.json b/packages/react-ui/package.json index 3048335f78..3a5c77400f 100644 --- a/packages/react-ui/package.json +++ b/packages/react-ui/package.json @@ -68,7 +68,7 @@ "stylelint-config-rational-order": "^0.1.2", "stylelint-config-standard-scss": "^6.1.0", "stylelint-config-styled-components": "^0.1.1", - "stylelint-order": "^5.0.0", + "stylelint-order": "^6.0.0", "stylelint-processor-styled-components": "^1.10.0", "svgo": "^2.3.1", "typescript": "^5.0.4", diff --git a/yarn.lock b/yarn.lock index 2298b0577a..7ea037a6c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1935,7 +1935,7 @@ __metadata: stylelint-config-rational-order: ^0.1.2 stylelint-config-standard-scss: ^6.1.0 stylelint-config-styled-components: ^0.1.1 - stylelint-order: ^5.0.0 + stylelint-order: ^6.0.0 stylelint-processor-styled-components: ^1.10.0 supertest: ^6.3.3 testing-library-selector: 0.3.1 @@ -5538,7 +5538,7 @@ __metadata: stylelint-config-rational-order: ^0.1.2 stylelint-config-standard-scss: ^6.1.0 stylelint-config-styled-components: ^0.1.1 - stylelint-order: ^5.0.0 + stylelint-order: ^6.0.0 stylelint-processor-styled-components: ^1.10.0 svgo: ^2.3.1 typescript: ^5.0.4 @@ -19470,12 +19470,12 @@ __metadata: languageName: node linkType: hard -"postcss-sorting@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-sorting@npm:7.0.1" +"postcss-sorting@npm:^8.0.2": + version: 8.0.2 + resolution: "postcss-sorting@npm:8.0.2" peerDependencies: - postcss: ^8.3.9 - checksum: 79cca6703ef7c60ea913c3bfb91f85bd7adce35e60b834a40cadd1c7e18f37961d63f0e641387651ee3bf1df1996e952d8fe443f93a271aa2d23f239ea3145bc + postcss: ^8.4.20 + checksum: ebb5cc6a2982a1f0bb8332669e425793ebc01c30fa83ea981c765d64d212e289bef5fdb1e627904c471cb75f1ad0727ed9e85c0d879e263590c8fc64eecf31c2 languageName: node linkType: hard @@ -19534,7 +19534,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.3.11, postcss@npm:^8.4.19, postcss@npm:^8.4.27": +"postcss@npm:^8.4.19, postcss@npm:^8.4.27, postcss@npm:^8.4.32": version: 8.4.47 resolution: "postcss@npm:8.4.47" dependencies: @@ -22397,15 +22397,15 @@ __metadata: languageName: node linkType: hard -"stylelint-order@npm:^5.0.0": - version: 5.0.0 - resolution: "stylelint-order@npm:5.0.0" +"stylelint-order@npm:^6.0.0": + version: 6.0.4 + resolution: "stylelint-order@npm:6.0.4" dependencies: - postcss: ^8.3.11 - postcss-sorting: ^7.0.1 + postcss: ^8.4.32 + postcss-sorting: ^8.0.2 peerDependencies: - stylelint: ^14.0.0 - checksum: fa3ace3cc65486b9f94165603bd04983636fda5ac959cd29bf87847a95b32f366b16faf612bd49e3b9f96073f8fe28a22a5c5727cc08c8f9d7327c89084b3f30 + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + checksum: 66ed8a80b34b98994e38d75671766f102d47c73362495b77861f0648efcc75cf3ad6f30f988c3cf16c9747ac139087ef1ff71b3bea40f9c5e081a25ebeb34feb languageName: node linkType: hard From 221338c9670e69538e93ec2c2f15e16e1a9539bb Mon Sep 17 00:00:00 2001 From: Caroline <4971715+carolineBda@users.noreply.github.com> Date: Thu, 10 Oct 2024 10:28:15 +0200 Subject: [PATCH 02/10] fix(idcc): ne pas afficher le lien vers la CC si pas de slug (#6193) --- .../src/conventions/Search/ConventionLink.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/code-du-travail-frontend/src/conventions/Search/ConventionLink.tsx b/packages/code-du-travail-frontend/src/conventions/Search/ConventionLink.tsx index 145ff51cc2..038ed06d5c 100644 --- a/packages/code-du-travail-frontend/src/conventions/Search/ConventionLink.tsx +++ b/packages/code-du-travail-frontend/src/conventions/Search/ConventionLink.tsx @@ -90,7 +90,6 @@ export const ConventionLink = ({ onClick, small = false, }: Props): JSX.Element => { - const { num } = convention; const router = useRouter(); const clickHandler = () => { @@ -106,7 +105,7 @@ export const ConventionLink = ({ return ( <> - {num === 9999 ? ( + {!convention.slug ? ( ) : ( Date: Thu, 10 Oct 2024 12:03:30 +0200 Subject: [PATCH 03/10] fix(bouton questionnaire): ne pas ouvrir avec l'animation si on est en mobile (#6200) --- .../__tests__/__snapshots__/a-propos.test.tsx.snap | 4 ++-- .../__tests__/__snapshots__/droit-du-travail.test.js.snap | 4 ++-- .../__snapshots__/fiche-ministere-travail.test.tsx.snap | 4 ++-- .../__tests__/__snapshots__/glossaire-[slug].test.tsx.snap | 4 ++-- .../__tests__/__snapshots__/glossaire.test.tsx.snap | 4 ++-- .../__tests__/__snapshots__/mentions-legales.test.tsx.snap | 4 ++-- .../modeles-de-courriers-[slug].test.tsx.snap | 4 ++-- .../__snapshots__/modeles-de-courriers.test.tsx.snap | 4 ++-- .../__tests__/__snapshots__/recherche.test.js.snap | 4 ++-- .../__tests__/__snapshots__/stats.test.tsx.snap | 4 ++-- .../__tests__/__snapshots__/themes.test.tsx.snap | 4 ++-- .../code-du-travail-frontend/src/layout/Feedback/index.tsx | 7 ++++++- 12 files changed, 28 insertions(+), 23 deletions(-) diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap index 124d588e3d..ae0f7c67a5 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-gweoQa cuLwRV" + class="sc-gweoQa hvzWpe" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/droit-du-travail.test.js.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/droit-du-travail.test.js.snap index 13e15a3bd8..09092516f5 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/droit-du-travail.test.js.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/droit-du-travail.test.js.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-cspYLC kcRZKx" + class="sc-cspYLC eByYtq" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/fiche-ministere-travail.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/fiche-ministere-travail.test.tsx.snap index 43c26de7bf..b133729698 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/fiche-ministere-travail.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/fiche-ministere-travail.test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-djVXDX eyMLIL" + class="sc-djVXDX dHeNbI" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire-[slug].test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire-[slug].test.tsx.snap index a431d96629..9c79cf7e18 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire-[slug].test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire-[slug].test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-gweoQa cuLwRV" + class="sc-gweoQa hvzWpe" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire.test.tsx.snap index 772a40f8f6..f8409fd544 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/glossaire.test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-gweoQa cuLwRV" + class="sc-gweoQa hvzWpe" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/mentions-legales.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/mentions-legales.test.tsx.snap index 390b235126..98c2158ba7 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/mentions-legales.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/mentions-legales.test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-gweoQa cuLwRV" + class="sc-gweoQa hvzWpe" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers-[slug].test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers-[slug].test.tsx.snap index 2e8e4c0648..edb957b940 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers-[slug].test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers-[slug].test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-gweoQa cuLwRV" + class="sc-gweoQa hvzWpe" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers.test.tsx.snap index 13d96b7cf3..516ec11f09 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/modeles-de-courriers.test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-gweoQa cuLwRV" + class="sc-gweoQa hvzWpe" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/recherche.test.js.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/recherche.test.js.snap index 53d1852a7b..fb2d177797 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/recherche.test.js.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/recherche.test.js.snap @@ -91,7 +91,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-kUdmhA iSfTtt" + class="sc-kUdmhA bolxyu" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -99,7 +99,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/stats.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/stats.test.tsx.snap index 3eee266773..eec58ba5a5 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/stats.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/stats.test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-gweoQa cuLwRV" + class="sc-gweoQa hvzWpe" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/themes.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/themes.test.tsx.snap index c8d86fd83a..aef790fdb3 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/themes.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/themes.test.tsx.snap @@ -171,7 +171,7 @@ exports[` should render 1`] = ` aria-expanded="false" aria-haspopup="dialog" aria-label="Donner votre avis" - class="sc-jdkBTo fNAEdb" + class="sc-jdkBTo bxMVjI" data-tally-open="3jLRW1" data-tally-overlay="1" data-tally-width="500" @@ -179,7 +179,7 @@ exports[` should render 1`] = ` diff --git a/packages/code-du-travail-frontend/src/layout/Feedback/index.tsx b/packages/code-du-travail-frontend/src/layout/Feedback/index.tsx index 69852b424d..34d5965710 100644 --- a/packages/code-du-travail-frontend/src/layout/Feedback/index.tsx +++ b/packages/code-du-travail-frontend/src/layout/Feedback/index.tsx @@ -3,6 +3,7 @@ import React from "react"; import Script from "next/script"; import { push as matopush } from "@socialgouv/matomo-next"; import { MatomoBaseEvent } from "../../lib"; +import { theme } from "@socialgouv/cdtn-ui"; export const Feedback = (): React.ReactNode => { const onClick = () => { @@ -51,7 +52,9 @@ const ButtonSuggestion = styled.button` display: flex; padding-top: 10px; - animation: moveLeftAndRight 30s ease-in-out infinite 5s; + @media (min-width: ${theme.breakpoints.desktop}) { + animation: moveLeftAndRight 30s ease-in-out infinite 5s; + } span { color: white; @@ -86,10 +89,12 @@ const ImgSuggestion = styled.img` animation: wiggle 2.5s ease 7.5s 1; //transform-origin: 70% 70%; + &:hover { animation: 2.5s ease 0s infinite normal none running wiggle; //transform-origin: 70% 70%; } + @keyframes wiggle { 0% { transform: rotate(0deg); From 0237f23fbe412288a6c8e07073a6561002b55fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o=20M=C3=A9vollon?= <38255502+matmut7@users.noreply.github.com> Date: Thu, 10 Oct 2024 13:24:32 +0200 Subject: [PATCH 04/10] fix: liveness probe (#6184) * fix livenessprobe code-travail-numerique SE * Update values.yaml * Update .kontinuous/values.yaml Co-authored-by: Martial Maillot * Update .kontinuous/values.yaml --------- Co-authored-by: Billi Watio Tiayo Co-authored-by: Martial Maillot Co-authored-by: Maxime Golfier <25312957+maxgfr@users.noreply.github.com> --- .kontinuous/values.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.kontinuous/values.yaml b/.kontinuous/values.yaml index eac032f1f1..a21f161e90 100644 --- a/.kontinuous/values.yaml +++ b/.kontinuous/values.yaml @@ -12,6 +12,16 @@ app: imagePackage: app imageProject: cdtn probesPath: /api/health + livenessProbe: + failureThreshold: 15 + httpGet: + path: /api/health/ + port: http + scheme: HTTP + initialDelaySeconds: 30 # Délai avant la première vérification après le démarrage du pod + periodSeconds: 10 # Fréquence des vérifications + successThreshold: 1 + timeoutSeconds: 10 # Temps maximum pour que l'endpoint réponde containerSecurityContext: readOnlyRootFilesystem: true envFrom: From 2a1752acc9bd6f5eb0c7c3c4bb859ce7e7589070 Mon Sep 17 00:00:00 2001 From: Caroline <4971715+carolineBda@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:46:42 +0200 Subject: [PATCH 05/10] =?UTF-8?q?fix(idcc):=20ajout=20des=20redirections?= =?UTF-8?q?=20pour=20les=20CC=20qui=20ont=20=C3=A9t=C3=A9=20supprim=C3=A9?= =?UTF-8?q?=20(#6187)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../code-du-travail-frontend/redirects.json | 52 +++++++++++++++---- .../src/api/config.ts | 2 + 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/packages/code-du-travail-frontend/redirects.json b/packages/code-du-travail-frontend/redirects.json index 2bad538ff8..c089f29025 100644 --- a/packages/code-du-travail-frontend/redirects.json +++ b/packages/code-du-travail-frontend/redirects.json @@ -1065,47 +1065,47 @@ "permanent": true }, { - "source": "/convention-collective/(2075|2075(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/2075(-[a-z0-9-]+)?", "destination": "/convention-collective/1747-activites-industrielles-de-boulangerie-et-patisserie", "permanent": true }, { - "source": "/convention-collective/(7012|7012(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/7012(-[a-z0-9-]+)?", "destination": "/convention-collective/7026-personnels-des-activites-hippiques", "permanent": true }, { - "source": "/convention-collective/(7013|7013(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/7013(-[a-z0-9-]+)?", "destination": "/convention-collective/7026-personnels-des-activites-hippiques", "permanent": true }, { - "source": "/convention-collective/(7014|7014(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/7014(-[a-z0-9-]+)?", "destination": "/convention-collective/7026-personnels-des-activites-hippiques", "permanent": true }, { - "source": "/convention-collective/(1194|1194(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/1194(-[a-z0-9-]+)?", "destination": "/convention-collective/2121-edition", "permanent": true }, { - "source": "/convention-collective/(1016|1016(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/1016(-[a-z0-9-]+)?", "destination": "/convention-collective/2121-edition", "permanent": true }, { - "source": "/convention-collective/(2770|2770(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/2770(-[a-z0-9-]+)?", "destination": "/convention-collective/2121-edition", "permanent": true }, { - "source": "/convention-collective/(635|635(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/(0635|635(?:-[a-z0-9-]+)?)", "destination": "/convention-collective/573-commerces-de-gros", "permanent": true }, { - "source": "/convention-collective/(1734|1734(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/1734(-[a-z0-9-]+)?", "destination": "/convention-collective/2642-production-audiovisuelle", "permanent": true }, @@ -1115,7 +1115,7 @@ "permanent": true }, { - "source": "/convention-collective/(2564|2564(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/2564(-[a-z0-9-]+)?", "destination": "/convention-collective/1875-veterinaires-personnel-salarie-des-cabinets-et-cliniques-veterinaires", "permanent": true }, @@ -1125,8 +1125,38 @@ "permanent": true }, { - "source": "/convention-collective/(1383|1383(?:-[a-z0-9-]+)?)", + "source": "/convention-collective/1383(-[a-z0-9-]+)?", "destination": "/convention-collective/3243-quincaillerie-fournitures-industrielles-fers-metaux-et-equipement-de-la", "permanent": true + }, + { + "source": "/convention-collective/bijouterie-joaillerie-orfevrerie-horlogerie-bjoh", + "destination": "/convention-collective/3251-bijouterie-joaillerie-orfevrerie-horlogerie-bjoh", + "permanent": true + }, + { + "source": "/convention-collective/1044(-[a-z0-9-]+)?", + "destination": "/convention-collective/3251-bijouterie-joaillerie-orfevrerie-horlogerie-bjoh", + "permanent": true + }, + { + "source": "/convention-collective/(0567|567(?:-[a-z0-9-]+)?)", + "destination": "/convention-collective/3251-bijouterie-joaillerie-orfevrerie-horlogerie-bjoh", + "permanent": true + }, + { + "source": "/convention-collective/2785(-[a-z0-9-]+)?", + "destination": "/convention-collective/3250-commissaires-de-justice-et-societes-de-ventes-volontaires", + "permanent": true + }, + { + "source": "/convention-collective/batiment-etam-ile-de-france-hors-seine-et-marne", + "destination": "/convention-collective/2707-batiment-etam-ile-de-france-hors-seine-et-marne", + "permanent": true + }, + { + "source": "/convention-collective/bijouterie-joaillerie-orfevrerie-horlogerie-bjoh", + "destination": "/convention-collective/3251-bijouterie-joaillerie-orfevrerie-horlogerie-bjoh", + "permanent": true } ] diff --git a/packages/code-du-travail-frontend/src/api/config.ts b/packages/code-du-travail-frontend/src/api/config.ts index e8caa460bc..f2b58fb567 100644 --- a/packages/code-du-travail-frontend/src/api/config.ts +++ b/packages/code-du-travail-frontend/src/api/config.ts @@ -35,4 +35,6 @@ export const IDCC_MERGE = { 2642: [1734], 1875: [2564], 3243: [731, 1383], + 3251: [1044, 567], + 3250: [2785], }; From 5ee472d66b11e312702ea73d82d8c95f7ea8fd6a Mon Sep 17 00:00:00 2001 From: Social Groovy Bot <45039513+SocialGroovyBot@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:26:46 +0000 Subject: [PATCH 06/10] chore(release): version 4.156.0 --- CHANGELOG.md | 17 +++++++++++++++++ lerna.json | 2 +- packages/code-du-travail-frontend/CHANGELOG.md | 15 +++++++++++++++ packages/code-du-travail-frontend/package.json | 2 +- packages/code-du-travail-modeles/CHANGELOG.md | 6 ++++++ packages/code-du-travail-modeles/package.json | 2 +- packages/code-du-travail-utils/CHANGELOG.md | 4 ++++ packages/code-du-travail-utils/package.json | 2 +- packages/react-ui/CHANGELOG.md | 4 ++++ packages/react-ui/package.json | 2 +- 10 files changed, 51 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4be5dfbd50..a450dc07ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) + +### Bug Fixes + +- **bouton questionnaire:** ne pas ouvrir avec l'animation si on est en mobile ([#6200](https://github.com/SocialGouv/code-du-travail-numerique/issues/6200)) ([c284244](https://github.com/SocialGouv/code-du-travail-numerique/commit/c2842445d5ed2804617dd02ec219fceba1b842d3)) +- **deps:** update dependency next to v14.2.11 [security] ([9d8bcb7](https://github.com/SocialGouv/code-du-travail-numerique/commit/9d8bcb7d7306afede239256cb56710f8551794b8)) +- **error logs:** retrait du log dans sentry des erreurs d'accès au localStorage ([#6181](https://github.com/SocialGouv/code-du-travail-numerique/issues/6181)) ([8e20206](https://github.com/SocialGouv/code-du-travail-numerique/commit/8e20206358baca515c75727f3a4af6ab487d4e52)) +- **idcc:** ajout des redirections pour les CC qui ont été supprimé ([#6187](https://github.com/SocialGouv/code-du-travail-numerique/issues/6187)) ([2a1752a](https://github.com/SocialGouv/code-du-travail-numerique/commit/2a1752acc9bd6f5eb0c7c3c4bb859ce7e7589070)) +- **idcc:** ne pas afficher le lien vers la CC si pas de slug ([#6193](https://github.com/SocialGouv/code-du-travail-numerique/issues/6193)) ([221338c](https://github.com/SocialGouv/code-du-travail-numerique/commit/221338c9670e69538e93ec2c2f15e16e1a9539bb)) +- **indemnité de licenciement:** simplification de la CC 275 ([#6173](https://github.com/SocialGouv/code-du-travail-numerique/issues/6173)) ([10cc1bd](https://github.com/SocialGouv/code-du-travail-numerique/commit/10cc1bd0e156243dd33da88c7915e89a0637c63e)) +- liveness probe ([#6184](https://github.com/SocialGouv/code-du-travail-numerique/issues/6184)) ([0237f23](https://github.com/SocialGouv/code-du-travail-numerique/commit/0237f23fbe412288a6c8e07073a6561002b55fdb)) +- **trouver sa cc:** update url canonique ([#6175](https://github.com/SocialGouv/code-du-travail-numerique/issues/6175)) ([eb77564](https://github.com/SocialGouv/code-du-travail-numerique/commit/eb77564180242664082a9e3bc6f374e6de53d7f7)) + +### Features + +- **modèles de documents:** track des utilisateurs qui type CTRL + C sur la page ([#6186](https://github.com/SocialGouv/code-du-travail-numerique/issues/6186)) ([da37349](https://github.com/SocialGouv/code-du-travail-numerique/commit/da37349065200e3c5da9c2d0ab03b9ee3e83c4de)) + ## [4.155.2](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.1...v4.155.2) (2024-09-25) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 7dbd05e902..06bde9cfe3 100644 --- a/lerna.json +++ b/lerna.json @@ -8,5 +8,5 @@ }, "npmClient": "yarn", "useWorkspaces": true, - "version": "4.155.2" + "version": "4.156.0" } diff --git a/packages/code-du-travail-frontend/CHANGELOG.md b/packages/code-du-travail-frontend/CHANGELOG.md index 1b3d5b73fd..2b860b6e42 100644 --- a/packages/code-du-travail-frontend/CHANGELOG.md +++ b/packages/code-du-travail-frontend/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) + +### Bug Fixes + +- **bouton questionnaire:** ne pas ouvrir avec l'animation si on est en mobile ([#6200](https://github.com/SocialGouv/code-du-travail-numerique/issues/6200)) ([c284244](https://github.com/SocialGouv/code-du-travail-numerique/commit/c2842445d5ed2804617dd02ec219fceba1b842d3)) +- **deps:** update dependency next to v14.2.11 [security] ([9d8bcb7](https://github.com/SocialGouv/code-du-travail-numerique/commit/9d8bcb7d7306afede239256cb56710f8551794b8)) +- **error logs:** retrait du log dans sentry des erreurs d'accès au localStorage ([#6181](https://github.com/SocialGouv/code-du-travail-numerique/issues/6181)) ([8e20206](https://github.com/SocialGouv/code-du-travail-numerique/commit/8e20206358baca515c75727f3a4af6ab487d4e52)) +- **idcc:** ajout des redirections pour les CC qui ont été supprimé ([#6187](https://github.com/SocialGouv/code-du-travail-numerique/issues/6187)) ([2a1752a](https://github.com/SocialGouv/code-du-travail-numerique/commit/2a1752acc9bd6f5eb0c7c3c4bb859ce7e7589070)) +- **idcc:** ne pas afficher le lien vers la CC si pas de slug ([#6193](https://github.com/SocialGouv/code-du-travail-numerique/issues/6193)) ([221338c](https://github.com/SocialGouv/code-du-travail-numerique/commit/221338c9670e69538e93ec2c2f15e16e1a9539bb)) +- **trouver sa cc:** update url canonique ([#6175](https://github.com/SocialGouv/code-du-travail-numerique/issues/6175)) ([eb77564](https://github.com/SocialGouv/code-du-travail-numerique/commit/eb77564180242664082a9e3bc6f374e6de53d7f7)) + +### Features + +- **modèles de documents:** track des utilisateurs qui type CTRL + C sur la page ([#6186](https://github.com/SocialGouv/code-du-travail-numerique/issues/6186)) ([da37349](https://github.com/SocialGouv/code-du-travail-numerique/commit/da37349065200e3c5da9c2d0ab03b9ee3e83c4de)) + ## [4.155.2](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.1...v4.155.2) (2024-09-25) ### Bug Fixes diff --git a/packages/code-du-travail-frontend/package.json b/packages/code-du-travail-frontend/package.json index faa87b7b41..221295b65d 100644 --- a/packages/code-du-travail-frontend/package.json +++ b/packages/code-du-travail-frontend/package.json @@ -1,6 +1,6 @@ { "name": "@cdt/frontend", - "version": "4.155.2", + "version": "4.156.0", "description": "Code du travail frontend", "private": true, "homepage": "https://code-du-travail.beta.gouv.fr/", diff --git a/packages/code-du-travail-modeles/CHANGELOG.md b/packages/code-du-travail-modeles/CHANGELOG.md index c738eddf03..df0a4a96b2 100644 --- a/packages/code-du-travail-modeles/CHANGELOG.md +++ b/packages/code-du-travail-modeles/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) + +### Bug Fixes + +- **indemnité de licenciement:** simplification de la CC 275 ([#6173](https://github.com/SocialGouv/code-du-travail-numerique/issues/6173)) ([10cc1bd](https://github.com/SocialGouv/code-du-travail-numerique/commit/10cc1bd0e156243dd33da88c7915e89a0637c63e)) + ## [4.155.2](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.1...v4.155.2) (2024-09-25) **Note:** Version bump only for package @socialgouv/modeles-social diff --git a/packages/code-du-travail-modeles/package.json b/packages/code-du-travail-modeles/package.json index ec1ad37c80..71dc912ee6 100644 --- a/packages/code-du-travail-modeles/package.json +++ b/packages/code-du-travail-modeles/package.json @@ -4,7 +4,7 @@ "access": "public", "registry": "https://registry.npmjs.org/" }, - "version": "4.155.2", + "version": "4.156.0", "description": "Les règles publicodes des simulateurs de code du travail numérique", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/packages/code-du-travail-utils/CHANGELOG.md b/packages/code-du-travail-utils/CHANGELOG.md index 45d92dc41c..14323da365 100644 --- a/packages/code-du-travail-utils/CHANGELOG.md +++ b/packages/code-du-travail-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) + +**Note:** Version bump only for package @socialgouv/cdtn-utils + ## [4.155.2](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.1...v4.155.2) (2024-09-25) **Note:** Version bump only for package @socialgouv/cdtn-utils diff --git a/packages/code-du-travail-utils/package.json b/packages/code-du-travail-utils/package.json index fec7525168..1d0a9c2f5c 100644 --- a/packages/code-du-travail-utils/package.json +++ b/packages/code-du-travail-utils/package.json @@ -4,7 +4,7 @@ "access": "public", "registry": "https://registry.npmjs.org/" }, - "version": "4.155.2", + "version": "4.156.0", "main": "build/index.js", "module": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/react-ui/CHANGELOG.md b/packages/react-ui/CHANGELOG.md index 2527b312ff..ac9516728e 100644 --- a/packages/react-ui/CHANGELOG.md +++ b/packages/react-ui/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) + +**Note:** Version bump only for package @socialgouv/cdtn-ui + ## [4.155.2](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.1...v4.155.2) (2024-09-25) **Note:** Version bump only for package @socialgouv/cdtn-ui diff --git a/packages/react-ui/package.json b/packages/react-ui/package.json index 3a5c77400f..468cc08ffe 100644 --- a/packages/react-ui/package.json +++ b/packages/react-ui/package.json @@ -4,7 +4,7 @@ "access": "public", "registry": "https://registry.npmjs.org/" }, - "version": "4.155.2", + "version": "4.156.0", "description": "Composants ReactJS", "main": "lib/index.js", "files": [ From 1a85a2279a74bd8d05d93865433da07d03e8aabc Mon Sep 17 00:00:00 2001 From: Victor Zeinstra Date: Thu, 10 Oct 2024 16:38:01 +0200 Subject: [PATCH 07/10] fix: preavis demission ref manquante 3239 (#6168) Co-authored-by: victor Co-authored-by: carolineBda --- .../preavis-demission/preavis-demission.data.json | 12 ++++++------ .../preavis-licenciement.data.json | 13 ++++++------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/code-du-travail-modeles/src/simulators/preavis-demission/preavis-demission.data.json b/packages/code-du-travail-modeles/src/simulators/preavis-demission/preavis-demission.data.json index db8d79e288..b2f73392d0 100644 --- a/packages/code-du-travail-modeles/src/simulators/preavis-demission/preavis-demission.data.json +++ b/packages/code-du-travail-modeles/src/simulators/preavis-demission/preavis-demission.data.json @@ -3078,8 +3078,8 @@ "answer": "1 semaine", "answer2": null, "answer3": "7", - "ref": null, - "refUrl": null + "ref": "Article 162-6 de la convention collective", + "refUrl": "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000043942455#KALIARTI000043942455" }, { "criteria": { @@ -3092,8 +3092,8 @@ "answer": "2 semaines", "answer2": null, "answer3": "14", - "ref": null, - "refUrl": null + "ref": "Article 162-6 de la convention collective", + "refUrl": "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000043942455#KALIARTI000043942455" }, { "criteria": { @@ -3106,8 +3106,8 @@ "answer": "1 mois", "answer2": null, "answer3": "30", - "ref": null, - "refUrl": null + "ref": "Article 162-6 de la convention collective", + "refUrl": "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000043942455#KALIARTI000043942455" }, { "criteria": { diff --git a/packages/code-du-travail-modeles/src/simulators/preavis-licenciement/preavis-licenciement.data.json b/packages/code-du-travail-modeles/src/simulators/preavis-licenciement/preavis-licenciement.data.json index 7b9bf92b12..52512217b6 100644 --- a/packages/code-du-travail-modeles/src/simulators/preavis-licenciement/preavis-licenciement.data.json +++ b/packages/code-du-travail-modeles/src/simulators/preavis-licenciement/preavis-licenciement.data.json @@ -87,7 +87,6 @@ "question": "Quel est l'échelon du salarié ?", "note": "L'échelon du salarié est habituellement mentionné sur le bulletin de salaire." }, - { "name": "ancienneté", "question": "Quelle est l'ancienneté du salarié ?", @@ -5086,8 +5085,8 @@ "answer": "1 semaine", "answer2": null, "answer3": "7", - "ref": null, - "refUrl": null + "ref": "Article 162.4.1", + "refUrl": "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000043942452?idConteneur=KALICONT000044594539&origin=list#KALIARTI000043942452" }, { "criteria": { @@ -5100,8 +5099,8 @@ "answer": "1 mois", "answer2": null, "answer3": "30", - "ref": null, - "refUrl": null + "ref": "Article 162.4.1", + "refUrl": "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000043942452?idConteneur=KALICONT000044594539&origin=list#KALIARTI000043942452" }, { "criteria": { @@ -5114,8 +5113,8 @@ "answer": "2 mois", "answer2": null, "answer3": "60", - "ref": null, - "refUrl": null + "ref": "Article 162.4.1", + "refUrl": "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000043942452?idConteneur=KALICONT000044594539&origin=list#KALIARTI000043942452" }, { "criteria": { From bf843e54f6778bb7be2d937a412b578e02667997 Mon Sep 17 00:00:00 2001 From: Caroline <4971715+carolineBda@users.noreply.github.com> Date: Mon, 14 Oct 2024 15:54:42 +0200 Subject: [PATCH 08/10] =?UTF-8?q?fix(indemnit=C3=A9=20de=20licenciement):?= =?UTF-8?q?=20ajout=20de=20l'avenant=20pour=20la=20CC=20275=20(#6174)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../indemnite-licenciement/formule.spec.ts | 274 +++++++++++++++++- .../indemnite-licenciement/indemnite.spec.ts | 113 +++++++- .../indemnite-licenciement/references.spec.ts | 157 +++++++--- .../indemnite-licenciement.yaml | 96 +++++- 4 files changed, 574 insertions(+), 66 deletions(-) diff --git a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/formule.spec.ts b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/formule.spec.ts index be7dfe6cda..06c81e9789 100644 --- a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/formule.spec.ts +++ b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/formule.spec.ts @@ -278,7 +278,7 @@ describe("Formule indemnité licenciement - CC 275", () => { }); }); - describe("Après le 31/01/2024", () => { + describe("Entre le 31/01/2024 et le 30/09/2024", () => { describe("Non-cadres", () => { test.each([ { @@ -549,4 +549,276 @@ describe("Formule indemnité licenciement - CC 275", () => { ); }); }); + + describe("Après le 14/10/2024", () => { + describe("Non-cadres", () => { + test.each([ + { + expectedExplanations: [], + expectedFormula: "", + seniority: 7 / 12, + }, + { + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (≈ 1.08 an : valeur arrondie)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1)", + seniority: 13 / 12, + }, + { + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1)", + seniority: 5, + }, + { + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1) + (2/5 * Sref * A2)", + seniority: 10, + }, + { + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (3/5 * Sref * A3)", + seniority: 15, + }, + { + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "A4 : Ancienneté entre 15 et 20 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (3/5 * Sref * A3) + (4/5 * Sref * A4)", + seniority: 20, + }, + { + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "A4 : Ancienneté entre 15 et 20 ans (5 ans)", + "A5 : Ancienneté au dela de 20 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (3/5 * Sref * A3) + (4/5 * Sref * A4) + (1 * Sref * A5)", + seniority: 25, + }, + { + expectedExplanations: ["Sref : Salaire de référence (5000 €)"], + expectedFormula: "18 * Sref", + seniority: 50, + }, + ])( + "Formule $expectedFormula avec une ancienneté de $seniority ans", + ({ seniority, expectedFormula, expectedExplanations }) => { + engine.setSituation({ + "contrat salarié . convention collective": "'IDCC0275'", + "contrat salarié . convention collective . transport aérien personnel au sol . catégorie professionnelle": + "'Non-cadres'", + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année": + seniority.toString(), + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année": + seniority.toString(), + "contrat salarié . indemnité de licenciement . date de notification": + "15/10/2024", + "contrat salarié . indemnité de licenciement . salaire de référence conventionnel": + "5000", + }); + const result = engine.getFormule(); + expect(result.formula).toEqual(expectedFormula); + expect(result.explanations).toEqual(expectedExplanations); + } + ); + }); + + describe("Cadres", () => { + test.each([ + { + age: 45, + expectedExplanations: [], + expectedFormula: "", + seniority: 7 / 12, + }, + { + age: 45, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (≈ 1.08 an : valeur arrondie)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1)", + seniority: 13 / 12, + }, + { + age: 45, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1)", + seniority: 5, + }, + { + age: 45, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1) + (2/5 * Sref * A2)", + seniority: 10, + }, + { + age: 45, + expectedExplanations: ["Sref : Salaire de référence (5000 €)"], + expectedFormula: "18 * Sref", + seniority: 50, + }, + { + age: 50, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (1 * Sref)", + seniority: 10, + }, + { + age: 50, + expectedExplanations: ["Sref : Salaire de référence (5000 €)"], + expectedFormula: "19 * Sref", + seniority: 50, + }, + { + age: 56, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (2 * Sref)", + seniority: 10, + }, + { + age: 56, + expectedExplanations: ["Sref : Salaire de référence (5000 €)"], + expectedFormula: "20 * Sref", + seniority: 50, + }, + { + age: 45, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (4/5 * Sref * A3)", + seniority: 15, + }, + { + age: 50, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (4/5 * Sref * A3) + (1 * Sref)", + seniority: 15, + }, + { + age: 56, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (4/5 * Sref * A3) + (2 * Sref)", + seniority: 15, + }, + { + age: 45, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "A4 : Ancienneté au dela de 15 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (4/5 * Sref * A3) + (1 * Sref * A4)", + seniority: 20, + }, + { + age: 50, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "A4 : Ancienneté au dela de 15 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (4/5 * Sref * A3) + (1 * Sref * A4) + (1 * Sref)", + seniority: 20, + }, + { + age: 56, + expectedExplanations: [ + "A1 : Ancienneté jusqu'à 5 ans (5 ans)", + "A2 : Ancienneté entre 5 et 10 ans (5 ans)", + "A3 : Ancienneté entre 10 et 15 ans (5 ans)", + "A4 : Ancienneté au dela de 15 ans (5 ans)", + "Sref : Salaire de référence (5000 €)", + ], + expectedFormula: + "(1/4 * Sref * A1) + (2/5 * Sref * A2) + (4/5 * Sref * A3) + (1 * Sref * A4) + (2 * Sref)", + seniority: 20, + }, + ])( + "Formule $expectedFormula avec une ancienneté de $seniority ans et age de $age ans", + ({ seniority, expectedFormula, expectedExplanations, age }) => { + engine.setSituation({ + "contrat salarié . convention collective": "'IDCC0275'", + "contrat salarié . convention collective . transport aérien personnel au sol . age": + age.toString(), + "contrat salarié . convention collective . transport aérien personnel au sol . catégorie professionnelle": + "'Cadres'", + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année": + seniority.toString(), + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année": + seniority.toString(), + "contrat salarié . indemnité de licenciement . date de notification": + "15/10/2024", + "contrat salarié . indemnité de licenciement . salaire de référence conventionnel": + "5000", + }); + const result = engine.getFormule(); + expect(result.formula).toEqual(expectedFormula); + expect(result.explanations).toEqual(expectedExplanations); + } + ); + }); + }); }); diff --git a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/indemnite.spec.ts b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/indemnite.spec.ts index 3aa59693e0..b975d989de 100644 --- a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/indemnite.spec.ts +++ b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/indemnite.spec.ts @@ -5,9 +5,9 @@ const engine = new IndemniteLicenciementPublicodes( "275" ); -describe("CC 275", () => { +describe("Calcul de l'indemnité de licenciement pour la CC 275", () => { describe("Avant le 31/01/2024", () => { - describe("Calcul de l'indemnité de licenciement pour Non-cadres", () => { + describe("Non Cadres", () => { test.each` seniorityRight | seniority | salaireRef | expectedCompensation ${0.91} | ${0.91} | ${2500} | ${0} @@ -43,7 +43,7 @@ describe("CC 275", () => { ); }); - describe("Calcul de l'indemnité de licenciement pour Cadres", () => { + describe("Cadres", () => { test.each` seniorityRight | seniority | salaireRef | expectedCompensation | age ${0.91} | ${0.91} | ${2500} | ${0} | ${45} @@ -102,8 +102,8 @@ describe("CC 275", () => { }); }); - describe("A partir du 31/01/2024", () => { - describe("Calcul de l'indemnité de licenciement pour Non-cadres", () => { + describe("Entre le 31/01/2024 et le 30/10/2024", () => { + describe("Non Cadre", () => { test.each` seniorityRight | seniority | salaireRef | expectedCompensation ${0.61} | ${0.61} | ${2500} | ${0} @@ -140,7 +140,7 @@ describe("CC 275", () => { ); }); - describe("Calcul de l'indemnité de licenciement pour Cadres", () => { + describe("Cadres", () => { test.each` seniorityRight | seniority | salaireRef | expectedCompensation | age ${0.61} | ${0.61} | ${2500} | ${0} | ${45} @@ -201,4 +201,105 @@ describe("CC 275", () => { ); }); }); + + describe("A partir du 30/10/2024", () => { + describe("Non Cadres", () => { + test.each` + seniorityRight | seniority | salaireRef | expectedCompensation + ${0.61} | ${0.61} | ${2500} | ${0} + ${0.91} | ${0.91} | ${2500} | ${568.75} + ${0.91} | ${4} | ${2500} | ${2500} + ${0.91} | ${5} | ${2500} | ${3125} + ${0.91} | ${10} | ${2500} | ${8125} + ${0.91} | ${15} | ${2500} | ${15625} + ${0.91} | ${20} | ${2500} | ${25625} + ${0.91} | ${25} | ${2500} | ${38125} + ${0.91} | ${50} | ${5000} | ${90000} + `( + "Avec une ancienneté $seniority ans, un salaire de référence $salaireRef € => une compensation de base de $expectedCompensation €", + ({ salaireRef, expectedCompensation, seniority, seniorityRight }) => { + const { result, missingArgs } = engine.setSituation( + { + "contrat salarié . convention collective": "'IDCC0275'", + "contrat salarié . convention collective . transport aérien personnel au sol . catégorie professionnelle": + "'Non-cadres'", + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année": + seniority, + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année": + seniorityRight, + "contrat salarié . indemnité de licenciement . date de notification": + "15/10/2024", + "contrat salarié . indemnité de licenciement . salaire de référence conventionnel": + salaireRef, + }, + "contrat salarié . indemnité de licenciement . résultat conventionnel" + ); + expect(result.unit?.numerators).toEqual(["€"]); + expect(missingArgs).toEqual([]); + expect(result.value).toEqual(expectedCompensation); + } + ); + }); + + describe("Cadres", () => { + test.each` + seniorityRight | seniority | salaireRef | expectedCompensation | age + ${0.61} | ${0.61} | ${2500} | ${0} | ${45} + ${0.91} | ${0.91} | ${2500} | ${568.75} | ${45} + ${0.91} | ${5} | ${2500} | ${3125} | ${45} + ${0.91} | ${10} | ${2500} | ${8125} | ${45} + ${0.91} | ${15} | ${2500} | ${18125} | ${45} + ${0.91} | ${20} | ${2500} | ${30625} | ${45} + ${0.91} | ${25} | ${2500} | ${43125} | ${45} + ${0.91} | ${50} | ${5000} | ${90000} | ${45} + ${0.61} | ${0.61} | ${2500} | ${0} | ${50} + ${0.91} | ${0.91} | ${2500} | ${568.75} | ${45} + ${0.91} | ${5} | ${2500} | ${3125} | ${50} + ${0.91} | ${10} | ${2500} | ${10625} | ${50} + ${0.91} | ${15} | ${2500} | ${20625} | ${50} + ${0.91} | ${20} | ${2500} | ${33125} | ${50} + ${0.91} | ${25} | ${2500} | ${45625} | ${50} + ${0.91} | ${50} | ${5000} | ${95000} | ${50} + ${0.61} | ${0.61} | ${2500} | ${0} | ${55} + ${0.91} | ${0.91} | ${2500} | ${568.75} | ${45} + ${0.91} | ${5} | ${2500} | ${3125} | ${55} + ${0.91} | ${10} | ${2500} | ${13125} | ${55} + ${0.91} | ${15} | ${2500} | ${23125} | ${55} + ${0.91} | ${20} | ${2500} | ${35625} | ${55} + ${0.91} | ${25} | ${2500} | ${48125} | ${55} + ${0.91} | ${50} | ${5000} | ${100000} | ${55} + `( + "Avec une ancienneté $seniority ans et $age ans d'age, un salaire de référence $salaireRef € => une compensation de base de $expectedCompensation €", + ({ + salaireRef, + expectedCompensation, + seniority, + seniorityRight, + age, + }) => { + const { result, missingArgs } = engine.setSituation( + { + "contrat salarié . convention collective": "'IDCC0275'", + "contrat salarié . convention collective . transport aérien personnel au sol . age": + age, + "contrat salarié . convention collective . transport aérien personnel au sol . catégorie professionnelle": + "'Cadres'", + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année": + seniority, + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année": + seniorityRight, + "contrat salarié . indemnité de licenciement . date de notification": + "15/10/2024", + "contrat salarié . indemnité de licenciement . salaire de référence conventionnel": + salaireRef, + }, + "contrat salarié . indemnité de licenciement . résultat conventionnel" + ); + expect(result.unit?.numerators).toEqual(["€"]); + expect(missingArgs).toEqual([]); + expect(result.value).toEqual(expectedCompensation); + } + ); + }); + }); }); diff --git a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/references.spec.ts b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/references.spec.ts index e4857522bc..16defd3aa0 100644 --- a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/references.spec.ts +++ b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/__tests__/indemnite-licenciement/references.spec.ts @@ -2,23 +2,22 @@ import { IndemniteLicenciementPublicodes } from "../../../../../publicodes"; const engine = new IndemniteLicenciementPublicodes( modelsIndemniteLicenciement, - "275" + "275", ); describe("Vérification des références juridiques pour la CC 275", () => { describe("Avant le 31/01/2024", () => { + const references = [ + { + article: "Article 20", + url: "https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872", + }, + { + article: "Article 35", + url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872", + }, + ]; describe("Non cadres", () => { - const references = [ - { - article: "Article 20", - url: "https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872", - }, - { - article: "Article 35", - url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716", - }, - ]; - test.each` seniority | expectedReferences ${5} | ${references} @@ -46,22 +45,11 @@ describe("Vérification des références juridiques pour la CC 275", () => { expect(result).toHaveLength(expectedReferences.length); expect(result).toEqual(expect.arrayContaining(expectedReferences)); - } + }, ); }); describe("Cadres", () => { - const references = [ - { - article: "Article 20", - url: "https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872", - }, - { - article: "Article 35", - url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716", - }, - ]; - test.each` seniority | expectedReferences | age ${5} | ${references} | ${50} @@ -98,24 +86,23 @@ describe("Vérification des références juridiques pour la CC 275", () => { expect(result).toHaveLength(expectedReferences.length); expect(result).toEqual(expect.arrayContaining(expectedReferences)); - } + }, ); }); }); - describe("A partir du 31/01/2024", () => { + describe("Entre le 31/01/2024 et le 30/09/2024", () => { + const references = [ + { + article: "Article 20", + url: "https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872", + }, + { + article: "Article 35", + url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872", + }, + ]; describe("Non cadres", () => { - const references = [ - { - article: "Article 20", - url: "https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872", - }, - { - article: "Article 35", - url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716", - }, - ]; - test.each` seniority | expectedReferences ${5} | ${references} @@ -143,22 +130,96 @@ describe("Vérification des références juridiques pour la CC 275", () => { expect(result).toHaveLength(expectedReferences.length); expect(result).toEqual(expect.arrayContaining(expectedReferences)); - } + }, ); }); describe("Cadres", () => { - const references = [ - { - article: "Article 20", - url: "https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872", + test.each` + seniority | expectedReferences | age + ${5} | ${references} | ${50} + ${5} | ${references} | ${55} + ${5} | ${references} | ${56} + ${10} | ${references} | ${50} + ${10} | ${references} | ${55} + ${10} | ${references} | ${56} + ${15} | ${references} | ${50} + ${15} | ${references} | ${55} + ${15} | ${references} | ${56} + ${20} | ${references} | ${50} + ${20} | ${references} | ${55} + ${20} | ${references} | ${56} + `( + "avec une ancienneté de $seniority ans et age de $age ans", + ({ seniority, expectedReferences, age }) => { + engine.setSituation({ + "contrat salarié . convention collective": "'IDCC0275'", + "contrat salarié . convention collective . transport aérien personnel au sol . age": + age.toString(), + "contrat salarié . convention collective . transport aérien personnel au sol . catégorie professionnelle": + "'Cadres'", + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année": + seniority, + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année": + seniority, + "contrat salarié . indemnité de licenciement . date de notification": + "31/01/2024", + "contrat salarié . indemnité de licenciement . salaire de référence conventionnel": + "1000", + }); + const result = engine.getReferences("résultat conventionnel"); + + expect(result).toHaveLength(expectedReferences.length); + expect(result).toEqual(expect.arrayContaining(expectedReferences)); }, - { - article: "Article 35", - url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716", + ); + }); + }); + + describe("Après le 14/10/2024", () => { + const references = [ + { + article: "Article 20", + url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000050302351", + }, + { + article: "Article 35", + url: "https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872", + }, + ]; + describe("Non cadres", () => { + test.each` + seniority | expectedReferences + ${5} | ${references} + ${10} | ${references} + ${15} | ${references} + ${20} | ${references} + ${25} | ${references} + `( + "avec une ancienneté de $seniority ans", + ({ seniority, expectedReferences }) => { + engine.setSituation({ + "contrat salarié . convention collective": "'IDCC0275'", + "contrat salarié . convention collective . transport aérien personnel au sol . catégorie professionnelle": + "'Non-cadres'", + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année": + seniority, + "contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année": + seniority, + "contrat salarié . indemnité de licenciement . date de notification": + "15/10/2024", + "contrat salarié . indemnité de licenciement . salaire de référence conventionnel": + "1000", + }); + const result = engine.getReferences("résultat conventionnel"); + + expect(result).toHaveLength(expectedReferences.length); + expect(result).toEqual(expect.arrayContaining(expectedReferences)); }, - ]; + ); + }); + describe("Cadres", () => { test.each` seniority | expectedReferences | age ${5} | ${references} | ${50} @@ -187,7 +248,7 @@ describe("Vérification des références juridiques pour la CC 275", () => { "contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année": seniority, "contrat salarié . indemnité de licenciement . date de notification": - "31/01/2024", + "15/10/2024", "contrat salarié . indemnité de licenciement . salaire de référence conventionnel": "1000", }); @@ -195,7 +256,7 @@ describe("Vérification des références juridiques pour la CC 275", () => { expect(result).toHaveLength(expectedReferences.length); expect(result).toEqual(expect.arrayContaining(expectedReferences)); - } + }, ); }); }); diff --git a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/indemnite-licenciement.yaml b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/indemnite-licenciement.yaml index 12c994f0b2..072771cbca 100644 --- a/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/indemnite-licenciement.yaml +++ b/packages/code-du-travail-modeles/src/modeles/conventions/275_transport_aerien_personnel_au_sol/indemnite-licenciement.yaml @@ -67,13 +67,20 @@ contrat salarié . convention collective . transport aérien personnel au sol . facteur: 2 / 5 unité: € -contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté entre 5 et 10 ans . indemnité: +contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté entre 5 et 10 ans . indemnité avant 14 octobre 2024: valeur: produit: assiette: palier * contrat salarié . indemnité de licenciement . salaire de référence conventionnel facteur: 1 / 4 unité: € +contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté entre 5 et 10 ans . indemnité: + valeur: + produit: + assiette: palier * contrat salarié . indemnité de licenciement . salaire de référence conventionnel + facteur: 2 / 5 + unité: € + ## ancienneté entre 10 et 15ans contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté entre 10 et 15 ans . palier: somme: @@ -137,7 +144,7 @@ contrat salarié . convention collective . transport aérien personnel au sol . arrondi: 2 décimales références: Article 20: https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872 - Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716 + Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872 cdtn: formule: explanations: @@ -149,16 +156,17 @@ contrat salarié . convention collective . transport aérien personnel au sol . - "Sref : Salaire de référence": contrat salarié . indemnité de licenciement . salaire de référence conventionnel formula: (1/5 * Sref * A1)[ + (2/5 * Sref * A2)][ + (3/5 * Sref * A3)][ + (4/5 * Sref * A4)][ + (1 * Sref * A5)] -contrat salarié . convention collective . transport aérien personnel au sol . non cadres . résultat conventionnel: +contrat salarié . convention collective . transport aérien personnel au sol . non cadres . résultat conventionnel avant le 14 octobre 2024: remplace: contrat salarié . indemnité de licenciement . résultat conventionnel applicable si: toutes ces conditions: - contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année >= paramètre . minimum ancienneté conventionnelle requise en année - contrat salarié . indemnité de licenciement . date de notification >= 31/01/2024 + - contrat salarié . indemnité de licenciement . date de notification < 14/10/2024 plafond: indemnité de licenciement . salaire de référence conventionnel * 18 somme: - ancienneté jusqu'à 5 ans . indemnité - - ancienneté entre 5 et 10 ans . indemnité + - ancienneté entre 5 et 10 ans . indemnité avant 14 octobre 2024 - ancienneté entre 10 et 15 ans . indemnité - ancienneté entre 15 et 20 ans . indemnité - ancienneté au dela de 20 ans . indemnité @@ -166,7 +174,7 @@ contrat salarié . convention collective . transport aérien personnel au sol . arrondi: 2 décimales références: Article 20: https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872 - Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716 + Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872 cdtn: formule: explanations: @@ -178,6 +186,35 @@ contrat salarié . convention collective . transport aérien personnel au sol . - "Sref : Salaire de référence": contrat salarié . indemnité de licenciement . salaire de référence conventionnel formula: (1/4 * Sref * A1)[ + (1/4 * Sref * A2)][ + (3/5 * Sref * A3)][ + (4/5 * Sref * A4)][ + (1 * Sref * A5)] +contrat salarié . convention collective . transport aérien personnel au sol . non cadres . résultat conventionnel: + remplace: contrat salarié . indemnité de licenciement . résultat conventionnel + applicable si: + toutes ces conditions: + - contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année >= paramètre . minimum ancienneté conventionnelle requise en année + - contrat salarié . indemnité de licenciement . date de notification >= 14/10/2024 + plafond: indemnité de licenciement . salaire de référence conventionnel * 18 + somme: + - ancienneté jusqu'à 5 ans . indemnité + - ancienneté entre 5 et 10 ans . indemnité + - ancienneté entre 10 et 15 ans . indemnité + - ancienneté entre 15 et 20 ans . indemnité + - ancienneté au dela de 20 ans . indemnité + unité: € + arrondi: 2 décimales + références: + Article 20: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000050302351 + Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872 + cdtn: + formule: + explanations: + - "A1 : Ancienneté jusqu'à 5 ans": contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté jusqu'à 5 ans . palier + - "A2 : Ancienneté entre 5 et 10 ans": contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté entre 5 et 10 ans . palier + - "A3 : Ancienneté entre 10 et 15 ans": contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté entre 10 et 15 ans . palier + - "A4 : Ancienneté entre 15 et 20 ans": contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté entre 15 et 20 ans . palier + - "A5 : Ancienneté au dela de 20 ans": contrat salarié . convention collective . transport aérien personnel au sol . non cadres . ancienneté au dela de 20 ans . palier + - "Sref : Salaire de référence": contrat salarié . indemnité de licenciement . salaire de référence conventionnel + formula: (1/4 * Sref * A1)[ + (2/5 * Sref * A2)][ + (3/5 * Sref * A3)][ + (4/5 * Sref * A4)][ + (1 * Sref * A5)] + contrat salarié . convention collective . transport aérien personnel au sol . non cadres . résultat conventionnel avec plafond: applicable si: indemnité de licenciement . résultat conventionnel = contrat salarié . indemnité de licenciement . salaire de référence conventionnel * 18 valeur: oui @@ -229,13 +266,20 @@ contrat salarié . convention collective . transport aérien personnel au sol . facteur: 2 / 5 unité: € -contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté entre 5 et 10 ans . indemnité: +contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté entre 5 et 10 ans . indemnité avant 14 octobre 2024: valeur: produit: assiette: palier * contrat salarié . indemnité de licenciement . salaire de référence conventionnel facteur: 1 / 4 unité: € +contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté entre 5 et 10 ans . indemnité: + valeur: + produit: + assiette: palier * contrat salarié . indemnité de licenciement . salaire de référence conventionnel + facteur: 2 / 5 + unité: € + ## ancienneté entre 10 et 15ans contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté entre 10 et 15 ans . palier: somme: @@ -284,7 +328,7 @@ contrat salarié . convention collective . transport aérien personnel au sol . plafond: plafond références: Article 20: https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872 - Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716 + Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872 cdtn: formule: explanations: @@ -295,17 +339,18 @@ contrat salarié . convention collective . transport aérien personnel au sol . - "Sref : Salaire de référence": contrat salarié . indemnité de licenciement . salaire de référence conventionnel formula: (1/5 * Sref * A1)[ + (2/5 * Sref * A2)][ + (4/5 * Sref * A3)][ + (1 * Sref * A4)] -# Après le 1er Février 2024 -contrat salarié . convention collective . transport aérien personnel au sol . cadres . résultat conventionnel: +# Entre le 1er Février et 1 Octobre 2024 +contrat salarié . convention collective . transport aérien personnel au sol . cadres . résultat conventionnel avant le 14 octobre 2024: remplace: contrat salarié . indemnité de licenciement . résultat conventionnel applicable si: toutes ces conditions: - contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année >= paramètre . minimum ancienneté conventionnelle requise en année - contrat salarié . indemnité de licenciement . date de notification >= 31/01/2024 + - contrat salarié . indemnité de licenciement . date de notification < 14/10/2024 plafond: plafond somme: - ancienneté jusqu'à 5 ans . indemnité - - ancienneté entre 5 et 10 ans . indemnité + - ancienneté entre 5 et 10 ans . indemnité avant 14 octobre 2024 - ancienneté entre 10 et 15 ans . indemnité - ancienneté au dela de 15 ans . indemnité - majoration @@ -313,7 +358,7 @@ contrat salarié . convention collective . transport aérien personnel au sol . arrondi: 2 décimales références: Article 20: https://www.legifrance.gouv.fr/conv_coll/id/KALISCTA000005732500/?idConteneur=KALICONT000005635872 - Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872&origin=list#KALIARTI000026343716 + Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872 cdtn: formule: explanations: @@ -324,6 +369,35 @@ contrat salarié . convention collective . transport aérien personnel au sol . - "Sref : Salaire de référence": contrat salarié . indemnité de licenciement . salaire de référence conventionnel formula: (1/4 * Sref * A1)[ + (1/4 * Sref * A2)][ + (4/5 * Sref * A3)][ + (1 * Sref * A4)] +# Après le 14 octobre 2024 +contrat salarié . convention collective . transport aérien personnel au sol . cadres . résultat conventionnel: + remplace: contrat salarié . indemnité de licenciement . résultat conventionnel + applicable si: + toutes ces conditions: + - contrat salarié . indemnité de licenciement . ancienneté conventionnelle requise en année >= paramètre . minimum ancienneté conventionnelle requise en année + - contrat salarié . indemnité de licenciement . date de notification >= 14/10/2024 + plafond: plafond + somme: + - ancienneté jusqu'à 5 ans . indemnité + - ancienneté entre 5 et 10 ans . indemnité + - ancienneté entre 10 et 15 ans . indemnité + - ancienneté au dela de 15 ans . indemnité + - majoration + unité: € + arrondi: 2 décimales + références: + Article 20: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000050302351 + Article 35: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000026343716?idConteneur=KALICONT000005635872 + cdtn: + formule: + explanations: + - "A1 : Ancienneté jusqu'à 5 ans": contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté jusqu'à 5 ans . palier + - "A2 : Ancienneté entre 5 et 10 ans": contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté entre 5 et 10 ans . palier + - "A3 : Ancienneté entre 10 et 15 ans": contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté entre 10 et 15 ans . palier + - "A4 : Ancienneté au dela de 15 ans": contrat salarié . convention collective . transport aérien personnel au sol . cadres . ancienneté au dela de 15 ans . palier + - "Sref : Salaire de référence": contrat salarié . indemnité de licenciement . salaire de référence conventionnel + formula: (1/4 * Sref * A1)[ + (2/5 * Sref * A2)][ + (4/5 * Sref * A3)][ + (1 * Sref * A4)] + # majorations contrat salarié . convention collective . transport aérien personnel au sol . cadres . majoration: valeur: 0 € From 9a05003326306451e4c4738ccdeff995069f44ff Mon Sep 17 00:00:00 2001 From: Social Groovy Bot <45039513+SocialGroovyBot@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:23:51 +0000 Subject: [PATCH 09/10] chore(release): version 4.156.1 --- CHANGELOG.md | 7 +++++++ lerna.json | 2 +- packages/code-du-travail-frontend/CHANGELOG.md | 4 ++++ packages/code-du-travail-frontend/package.json | 2 +- packages/code-du-travail-modeles/CHANGELOG.md | 7 +++++++ packages/code-du-travail-modeles/package.json | 2 +- packages/code-du-travail-utils/CHANGELOG.md | 4 ++++ packages/code-du-travail-utils/package.json | 2 +- packages/react-ui/CHANGELOG.md | 4 ++++ packages/react-ui/package.json | 2 +- 10 files changed, 31 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a450dc07ca..25efd5cdfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.156.1](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.156.0...v4.156.1) (2024-10-14) + +### Bug Fixes + +- **indemnité de licenciement:** ajout de l'avenant pour la CC 275 ([#6174](https://github.com/SocialGouv/code-du-travail-numerique/issues/6174)) ([bf843e5](https://github.com/SocialGouv/code-du-travail-numerique/commit/bf843e54f6778bb7be2d937a412b578e02667997)) +- preavis demission ref manquante 3239 ([#6168](https://github.com/SocialGouv/code-du-travail-numerique/issues/6168)) ([1a85a22](https://github.com/SocialGouv/code-du-travail-numerique/commit/1a85a2279a74bd8d05d93865433da07d03e8aabc)) + # [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) ### Bug Fixes diff --git a/lerna.json b/lerna.json index 06bde9cfe3..971309e7b2 100644 --- a/lerna.json +++ b/lerna.json @@ -8,5 +8,5 @@ }, "npmClient": "yarn", "useWorkspaces": true, - "version": "4.156.0" + "version": "4.156.1" } diff --git a/packages/code-du-travail-frontend/CHANGELOG.md b/packages/code-du-travail-frontend/CHANGELOG.md index 2b860b6e42..893eeb6b8e 100644 --- a/packages/code-du-travail-frontend/CHANGELOG.md +++ b/packages/code-du-travail-frontend/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.156.1](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.156.0...v4.156.1) (2024-10-14) + +**Note:** Version bump only for package @cdt/frontend + # [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) ### Bug Fixes diff --git a/packages/code-du-travail-frontend/package.json b/packages/code-du-travail-frontend/package.json index 221295b65d..0d619a661e 100644 --- a/packages/code-du-travail-frontend/package.json +++ b/packages/code-du-travail-frontend/package.json @@ -1,6 +1,6 @@ { "name": "@cdt/frontend", - "version": "4.156.0", + "version": "4.156.1", "description": "Code du travail frontend", "private": true, "homepage": "https://code-du-travail.beta.gouv.fr/", diff --git a/packages/code-du-travail-modeles/CHANGELOG.md b/packages/code-du-travail-modeles/CHANGELOG.md index df0a4a96b2..0baee07cd7 100644 --- a/packages/code-du-travail-modeles/CHANGELOG.md +++ b/packages/code-du-travail-modeles/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.156.1](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.156.0...v4.156.1) (2024-10-14) + +### Bug Fixes + +- **indemnité de licenciement:** ajout de l'avenant pour la CC 275 ([#6174](https://github.com/SocialGouv/code-du-travail-numerique/issues/6174)) ([bf843e5](https://github.com/SocialGouv/code-du-travail-numerique/commit/bf843e54f6778bb7be2d937a412b578e02667997)) +- preavis demission ref manquante 3239 ([#6168](https://github.com/SocialGouv/code-du-travail-numerique/issues/6168)) ([1a85a22](https://github.com/SocialGouv/code-du-travail-numerique/commit/1a85a2279a74bd8d05d93865433da07d03e8aabc)) + # [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) ### Bug Fixes diff --git a/packages/code-du-travail-modeles/package.json b/packages/code-du-travail-modeles/package.json index 71dc912ee6..e157c7b206 100644 --- a/packages/code-du-travail-modeles/package.json +++ b/packages/code-du-travail-modeles/package.json @@ -4,7 +4,7 @@ "access": "public", "registry": "https://registry.npmjs.org/" }, - "version": "4.156.0", + "version": "4.156.1", "description": "Les règles publicodes des simulateurs de code du travail numérique", "main": "./lib/index.js", "types": "./lib/index.d.ts", diff --git a/packages/code-du-travail-utils/CHANGELOG.md b/packages/code-du-travail-utils/CHANGELOG.md index 14323da365..f8439020de 100644 --- a/packages/code-du-travail-utils/CHANGELOG.md +++ b/packages/code-du-travail-utils/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.156.1](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.156.0...v4.156.1) (2024-10-14) + +**Note:** Version bump only for package @socialgouv/cdtn-utils + # [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) **Note:** Version bump only for package @socialgouv/cdtn-utils diff --git a/packages/code-du-travail-utils/package.json b/packages/code-du-travail-utils/package.json index 1d0a9c2f5c..cad32015db 100644 --- a/packages/code-du-travail-utils/package.json +++ b/packages/code-du-travail-utils/package.json @@ -4,7 +4,7 @@ "access": "public", "registry": "https://registry.npmjs.org/" }, - "version": "4.156.0", + "version": "4.156.1", "main": "build/index.js", "module": "build/index.js", "types": "build/index.d.ts", diff --git a/packages/react-ui/CHANGELOG.md b/packages/react-ui/CHANGELOG.md index ac9516728e..b64e3f42b9 100644 --- a/packages/react-ui/CHANGELOG.md +++ b/packages/react-ui/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.156.1](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.156.0...v4.156.1) (2024-10-14) + +**Note:** Version bump only for package @socialgouv/cdtn-ui + # [4.156.0](https://github.com/SocialGouv/code-du-travail-numerique/compare/v4.155.2...v4.156.0) (2024-10-10) **Note:** Version bump only for package @socialgouv/cdtn-ui diff --git a/packages/react-ui/package.json b/packages/react-ui/package.json index 468cc08ffe..7dc8f101a9 100644 --- a/packages/react-ui/package.json +++ b/packages/react-ui/package.json @@ -4,7 +4,7 @@ "access": "public", "registry": "https://registry.npmjs.org/" }, - "version": "4.156.0", + "version": "4.156.1", "description": "Composants ReactJS", "main": "lib/index.js", "files": [ From d841f65ec429eccd16dfcfbfa5e12d5be36270fa Mon Sep 17 00:00:00 2001 From: Maxime Golfier <25312957+maxgfr@users.noreply.github.com> Date: Tue, 15 Oct 2024 12:04:21 +0200 Subject: [PATCH 10/10] =?UTF-8?q?feat(dsfr):=20ajout=20des=20premi=C3=A8re?= =?UTF-8?q?s=20pages=20et=20composants=20en=20DSFR=20(#6078)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: dsfr * fix: dsfr * fix: dsfr * fix: tests * fix: build * fix: build * fix: build * feat(dsfr): ajout du footer (#6079) * feat: add code * fix: tests * fix: tests * fix: tests * fix: tests * fix: tests * fix: dernier titi * fix: autoclick * fix: bug * feat(css): ajout de la lib `panda-css` (zero-runtime) (#6085) * fix: pandacss * fix: build * fix: build * feat(dsfr): ajout de la page stats (#6090) * fix: pandacss * fix: build * fix: build * fix(stats): add page * fix: stats * fix: tests * fix: tests * Update packages/code-du-travail-frontend/src/modules/mentions-legales/index.tsx Co-authored-by: Martial Maillot * fix(recherche): remonter les pré-qualifiés dans la recherche (#6082) * chore(release): version 4.151.1 * fix(csp): remove reporting on sentry (#6092) * fix: config * fix: config * fix: config * empty * fix: config * empty * Update packages/code-du-travail-frontend/src/modules/mentions-legales/index.tsx Co-authored-by: Martial Maillot * Update packages/code-du-travail-frontend/src/modules/mentions-legales/index.tsx Co-authored-by: Martial Maillot * fix: config * chore(dsfr): mise à jour de la version DSFR * fix(dsfr): ignore les exceptions d'hydratation * feat(tests): ajout du module de testing (#6096) * fix: tests * fix: tests * fix: command * fix: merge date * fix: tests * fix: tests * fix: tests * fix: tests * fix(dsfr): ignore les exceptions d'hydratation * fix: readme * feat(DSFR): migration de la page article du code du travail (#6099) * feat: 6093 dsfr page politique de confidentialit (#6094) * feat: implémentation page politique confidentialité dsfr * chore: clean * fix: iframe dark mode * chore: refacto + e2e test * feat: convert a to Link * chore: review * chore: rename test --------- Co-authored-by: victor * feat(dsfr): ajout des liens d'évitement (#6120) * feat(dsfr): migration de la page plan du site (#6097) * feat(dsfr): mise à jour des snapshots * feat(dsfr): mise à jour des snapshots * chore(dsfr): mise à jour de la lib DSFR * feat(dsfr): ajout du composant "Avez-vous trouvé une réponse à votre question" (#6121) * fix: merge date * fix: satisfaction * fix: retours preavis * fix: retours preavis * fix: tests * move feedback component to the page articleCodeDuTravail.tsx * clean-up css * fix: feedback * fix: feedback * fix: tests * fix: tests * feat(dsfr): création du composant "Besoin de plus d'information" (#6135) * fix: ui * fix: composant --------- Co-authored-by: carolineBda Co-authored-by: Martial Maillot * fix: retours * fix: tests * feat: nouvelle API pour les articles du code du travail (#6132) Co-authored-by: carolineBda * fix(spec) : fix de la spec article-code-du-travail.spec.ts * fix(dsfr): ajout de la config pour supprimer le `insafe-inline` des `scripts` dans les `csp` (#6151) * feat(dsfr): ajout de matomo pour tracker les events (#6157) * fix: matomo * fix: matomo --------- Co-authored-by: Martial Maillot * fix(feedback): ajout d'une logique de caractères restants (#6156) * fix: tests * feat: limiter à 500 caractères la saisie * feat: limiter à 500 caractères la saisie --------- Co-authored-by: Martial Maillot * feat(dsfr): ajout du nouveau logo (#6159) * feat(dsfr): ajout des pages d'erreurs (404 + 500) (#6146) * fix: pages * fix: 404 * fix: tests * fix: tests * fix: tests * fix: lint * test error * fix errors * Fix spec * add button to test error page * feat: force error 500 for testing purpose * feat: revert errors --------- Co-authored-by: carolineBda Co-authored-by: Martial Maillot * feat: séparation des anciennes API et des nouvelles (#6183) * fix(article code du travail): retrait du tag Code du travail (#6182) * feat(config): correction de `husky`, ajout de `prettier` pour le formattage et de `lint-staged` pour runner le formattage au `precommit` (#6192) * fix: prettier * fix: prettier * fix: readme * fix: readme * fix: bug * fix: prettier * fix: prettier * fix: tests * fix: tests * fix: prettier * fix: prettier * fix: branch * merge dev * fix: crash lors de la sélection d'une suggestion (#6202) * fix: crash lors de la sélection d'une suggestion * Update packages/code-du-travail-frontend/src/modules/utils/events.ts Co-authored-by: Caroline <4971715+carolineBda@users.noreply.github.com> --------- Co-authored-by: Caroline <4971715+carolineBda@users.noreply.github.com> * fix: crash lors de la sélection d'une suggestion (#6209) * fix: crash lors de la sélection d'une suggestion * Update packages/code-du-travail-frontend/src/modules/utils/events.ts Co-authored-by: Caroline <4971715+carolineBda@users.noreply.github.com> --------- Co-authored-by: Martial Maillot * fix(suggestion): style + move feedback into RichComponent (#6210) * fix: format --------- Co-authored-by: Caroline <4971715+carolineBda@users.noreply.github.com> Co-authored-by: Martial Maillot Co-authored-by: Social Groovy Bot <45039513+SocialGroovyBot@users.noreply.github.com> Co-authored-by: Victor Zeinstra Co-authored-by: victor Co-authored-by: carolineBda --- .github/workflows/quality.yml | 33 +- .husky/pre-commit | 10 +- .prettierignore | 9 - README.md | 35 +- package.json | 8 +- packages/code-du-travail-frontend/.gitignore | 4 + .../code-du-travail-frontend/.prettierignore | 4 + .../code-du-travail-frontend/.prettierrc.mjs | 10 + packages/code-du-travail-frontend/README.md | 243 - .../__snapshots__/a-propos.test.tsx.snap | 182 +- .../droit-du-travail.test.js.snap | 608 +- .../fiche-ministere-travail.test.tsx.snap | 294 +- .../glossaire-[slug].test.tsx.snap | 160 +- .../__snapshots__/glossaire.test.tsx.snap | 220 +- .../mentions-legales.test.tsx.snap | 748 -- .../modeles-de-courriers-[slug].test.tsx.snap | 302 +- .../modeles-de-courriers.test.tsx.snap | 202 +- .../__snapshots__/recherche.test.js.snap | 168 +- .../__snapshots__/stats.test.tsx.snap | 689 -- .../__snapshots__/themes.test.tsx.snap | 186 +- .../__tests__/glossaire-[slug].test.tsx | 3 +- .../__tests__/stats.test.tsx | 22 - .../app/[...not-found]/page.tsx | 5 + .../app/code-du-travail/[slug]/page.tsx | 56 + .../code-du-travail-frontend/app/error.tsx | 28 + .../app/global-error.tsx | 30 + .../code-du-travail-frontend/app/globals.css | 1 + .../code-du-travail-frontend/app/layout.tsx | 61 + .../app/mentions-legales/page.tsx | 18 + .../app/not-found.tsx | 19 + .../app/plan-du-site/page.tsx | 24 + .../app/politique-confidentialite/page.tsx | 18 + .../app/stats/page.tsx | 36 + .../cypress.config.js | 12 +- .../light/article-code-du-travail.spec.ts | 22 + .../light/contributions/contributions.spec.ts | 17 +- .../cypress/integration/light/header.spec.ts | 19 + .../integration/light/landing-pages.spec.ts | 33 +- .../integration/light/not-found.spec.ts | 9 +- .../light/outils/dossier-licenciement.spec.ts | 4 +- .../light/outils/preavis-retraite.spec.ts | 4 +- .../outils/trouver-sa-cc-je-la-saisis.spec.ts | 8 +- ...trouver-sa-cc-recherche-entreprise.spec.ts | 4 +- .../light/plan-du-site/plan-du-site.spec.ts | 12 + .../light/politique-confidentialite.spec.ts | 13 + .../integration/light/redirects.spec.ts | 2 - .../cypress/support/commands.ts | 2 + .../cypress/support/errors.ts | 15 + .../cypress/support/index.ts | 2 + .../cypress/tsconfig.json | 2 +- .../code-du-travail-frontend/jest.config.js | 6 +- .../lint-staged.config.js | 7 +- .../code-du-travail-frontend/middleware.ts | 57 + .../code-du-travail-frontend/next-env.d.ts | 3 +- .../code-du-travail-frontend/next.config.mjs | 14 +- .../code-du-travail-frontend/package.json | 28 +- .../code-du-travail-frontend/pages/404.tsx | 76 - .../code-du-travail-frontend/pages/_app.tsx | 9 +- .../pages/_document.tsx | 1 + .../pages/code-du-travail/[slug].tsx | 73 - .../pages/droit-du-travail.tsx | 18 +- .../code-du-travail-frontend/pages/index.tsx | 3 +- .../pages/integration/[slug].tsx | 5 +- .../pages/mentions-legales.tsx | 119 - .../pages/modeles-de-courriers/[slug].tsx | 4 +- .../pages/plan-du-site.tsx | 220 - .../pages/politique-confidentialite.tsx | 209 - .../code-du-travail-frontend/pages/stats.tsx | 112 - .../code-du-travail-frontend/panda.config.ts | 12 + .../postcss.config.cjs | 5 + .../public/static/assets/img/logo.svg | 8 + .../public/static/assets/img/ovoid.svg | 19 + .../public/static/assets/img/srdt.svg | 25 + .../static/assets/img/technical-error.svg | 61 + .../scripts/data/documents_data.json | 226 + ...idcc.test.ts.snap => idcc.es.test.ts.snap} | 18 +- ...t.test.ts.snap => suggest.es.test.ts.snap} | 0 .../{idcc.test.ts => idcc.es.test.ts} | 0 .../{suggest.test.ts => suggest.es.test.ts} | 0 .../{utils.test.ts => utils.es.test.ts} | 0 ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/agreements/queries.ts | 2 +- ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/enterprises/controller.ts | 2 +- ...es.test.ts => fetchEnterprises.es.test.ts} | 0 ....test.ts => populateAgreements.es.test.ts} | 0 ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/glossary/queries.ts | 4 +- .../src/api/modules/glossary/service.ts | 2 +- ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/highlights/queries.ts | 4 +- ...e.test.ts.snap => service.es.test.ts.snap} | 6 +- .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/index.ts | 1 - ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/items/service.ts | 6 +- ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 ...e.test.ts.snap => service.es.test.ts.snap} | 10 +- .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/search/service/search.ts | 6 +- ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 .../modules/sitemap/__tests__/service.test.ts | 156 - .../src/api/modules/sitemap/index.ts | 1 - .../src/api/modules/sitemap/service.ts | 47 - ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 ...e.test.ts.snap => service.es.test.ts.snap} | 0 .../{service.test.ts => service.es.test.ts} | 0 .../src/api/modules/tools/queries.ts | 5 +- .../__snapshots__/Feedback.test.js.snap | 88 +- .../src/common/Metas.tsx | 4 +- .../__snapshots__/ReferenceList.test.js.snap | 32 +- .../ReferencesJuridiques.test.js.snap | 42 +- .../src/common/Share.tsx | 12 +- .../src/common/__tests__/Answer.test.js | 10 +- .../AccessibilityModal.test.js.snap | 22 +- .../__snapshots__/Answer.test.js.snap | 1301 ++- .../__snapshots__/Article.test.js.snap | 56 +- .../__snapshots__/Breadcrumbs.test.js.snap | 22 +- .../__snapshots__/ContactModal.test.js.snap | 20 +- .../__tests__/__snapshots__/Html.test.js.snap | 2 +- .../__snapshots__/RelatedItems.test.js.snap | 42 +- .../ServiceRenseignement.test.js.snap | 28 +- .../ServiceRenseignementModal.test.js.snap | 38 +- .../__snapshots__/Share.test.js.snap | 28 +- .../__snapshots__/Custom.test.js.snap | 18 +- .../code-du-travail-frontend/src/config.ts | 8 +- .../DisplayContentContribution.test.tsx | 233 +- .../__tests__/ReferencesJuridique.test.tsx | 112 +- .../DisplayContentContribution.test.tsx.snap | 425 +- .../ReferencesJuridique.test.tsx.snap | 113 + .../conventions/Convention/Contributions.tsx | 4 +- .../__snapshots__/index.test.js.snap | 822 +- .../Search/__tests__/Search.test.js | 42 +- .../__snapshots__/Search.test.js.snap | 118 +- .../api/__mocks__/agreements.service.ts | 9 +- .../Search/api/__tests__/agreement.mock.js | 3 +- .../Search/api/agreements.service.ts | 4 +- .../Search/api/enterprises.service.ts | 8 +- .../src/conventions/SearchModal.tsx | 2 +- .../__snapshots__/SearchModal.test.js.snap | 20 +- .../FicheServicePublic.test.js.snap | 324 +- .../__tests__/ficheData.mock.json | 7012 ++++++++--------- .../components/__tests__/Accordion.test.js | 4 +- .../__tests__/ElementBuilder.test.js | 70 +- .../components/__tests__/LienExterne.test.js | 2 +- .../components/__tests__/Table.test.js | 2 +- .../__snapshots__/Accordion.test.js.snap | 100 +- .../__snapshots__/ElementBuilder.test.js.snap | 67 + .../FragmentConditionne.test.tsx.snap | 38 +- .../__snapshots__/Image.test.tsx.snap | 18 +- .../__tests__/__snapshots__/List.test.js.snap | 6 +- .../__snapshots__/OuSAdresser.test.js.snap | 10 +- .../__snapshots__/ServiceEnLigne.test.js.snap | 12 +- .../__snapshots__/Table.test.js.snap | 2 +- .../__snapshots__/Tabulator.test.js.snap | 66 +- .../__snapshots__/Title.test.js.snap | 4 +- .../__tests__/mocks/accordionData.json | 176 +- .../mocks/lienExterneCommenteData.json | 80 +- .../__tests__/mocks/lienExterneData.json | 14 +- .../components/__tests__/mocks/listData.json | 48 +- .../mocks/ouSAdresserClassicData.json | 38 +- .../__tests__/mocks/ouSAdresserWebData.json | 64 +- .../__tests__/mocks/serviceEnLigneData.json | 38 +- .../components/__tests__/mocks/tableData.json | 1934 ++--- .../__tests__/mocks/tabulatorData.json | 116 +- .../src/home/HomeSlice.tsx | 6 +- .../src/home/Tools.tsx | 6 +- .../integration/Components/Integration.tsx | 4 +- .../src/layout/Header/BurgerNav.tsx | 42 +- .../code-du-travail-frontend/src/lib/date.ts | 1 - ...ArticlesRefs.js => replaceArticlesRefs.ts} | 0 .../src/lib/useLocalStorage.ts | 2 +- .../__tests__/service.es.test.ts | 18 + .../code-du-travail/articleCodeDuTravail.tsx | 53 + .../src/modules/code-du-travail/index.ts | 3 + .../src/modules/code-du-travail/queries.ts | 23 + .../src/modules/code-du-travail/type.ts | 8 + .../src/modules/common/Html.tsx | 21 + .../src/modules/common/ListWithArrow.tsx | 33 + .../src/modules/common/RelatedItems.tsx | 52 + .../src/modules/common/Share.tsx | 133 + .../modules/common/__tests__/Html.test.tsx} | 6 +- .../common/__tests__/RelatedItems.test.tsx | 90 + .../modules/common/__tests__/Share.test.tsx | 51 + .../__snapshots__/Html.test.tsx.snap | 12 + .../__snapshots__/RelatedItems.test.tsx.snap | 108 + .../__snapshots__/Share.test.tsx.snap | 80 + .../modules/common/__tests__/metas.test.tsx | 38 + .../src/modules/common/metas.tsx | 32 + .../src/modules/common/tracking.ts | 40 + .../src/modules/config/MatomoAnalytics.tsx | 31 + .../src/modules/config/StartDsfr.tsx | 17 + .../src/modules/config/defaultColorScheme.ts | 3 + .../__tests__/queries.es.test.ts | 45 + .../src/modules/contributions/index.ts | 1 + .../src/modules/contributions/queries.ts | 29 + .../__tests__/queries.es.test.ts | 35 + .../modules/convention-collective/index.ts | 1 + .../modules/convention-collective/queries.ts | 32 + .../documents/__tests__/service.es.test.ts | 49 + .../src/modules/documents/fetch-document.ts | 22 + .../modules/documents/fetch-related-items.ts | 93 + .../src/modules/documents/index.ts | 3 + .../src/modules/documents/type.ts | 20 + .../src/modules/error/IconError.tsx | 33 + .../src/modules/error/NotFound.tsx | 59 + .../src/modules/error/UnexpectedError.tsx | 43 + .../modules/error/__tests__/NotFound.test.tsx | 10 + .../error/__tests__/UnexpectedError.test.tsx | 10 + .../__snapshots__/NotFound.test.tsx.snap | 85 + .../UnexpectedError.test.tsx.snap | 69 + .../informations/__tests__/queries.es.test.ts | 22 + .../src/modules/informations/index.ts | 1 + .../src/modules/informations/queries.ts | 35 + .../src/modules/layout/BrandTop.tsx | 7 + .../src/modules/layout/Container.tsx | 17 + .../src/modules/layout/ContainerRich.tsx | 40 + .../src/modules/layout/Footer.tsx | 180 + .../src/modules/layout/SkipLinks.tsx | 24 + .../layout/__tests__/BrandTop.test.tsx | 10 + .../modules/layout/__tests__/Footer.test.tsx | 10 + .../layout/__tests__/SkipLinks.test.tsx | 10 + .../__snapshots__/BrandTop.test.tsx.snap | 9 + .../__snapshots__/Footer.test.tsx.snap | 403 + .../__snapshots__/SkipLinks.test.tsx.snap | 53 + .../src/modules/layout/common.ts | 4 + .../layout/feedback/FeedbackAnswered.tsx | 12 + .../layout/feedback/FeedbackContent.tsx | 148 + .../layout/feedback/FeedbackDefault.tsx | 32 + .../__tests__/FeedbackAnswered.test.tsx | 11 + .../__tests__/FeedbackContent.test.tsx | 20 + .../__tests__/FeedbackDefault.test.tsx | 13 + .../FeedbackAnswered.test.tsx.snap | 14 + .../FeedbackContent.test.tsx.snap | 164 + .../FeedbackDefault.test.tsx.snap | 35 + .../src/modules/layout/feedback/index.tsx | 53 + .../src/modules/layout/feedback/tracking.ts | 72 + .../src/modules/layout/header/SearchInput.tsx | 92 + .../header/__tests__/HeaderDsfr.test.tsx | 11 + .../header/__tests__/SearchInput.test.tsx | 66 + .../__snapshots__/HeaderDsfr.test.tsx.snap | 436 + .../__tests__/fetchSuggestResults.test.ts | 30 + .../layout/header/fetchSuggestResults.ts | 19 + .../src/modules/layout/header/index.tsx | 75 + .../src/modules/layout/index.tsx | 21 + .../src/modules/layout/infos/PopupContent.tsx | 109 + .../infos/__tests__/PopupContent.test.tsx | 10 + .../__snapshots__/PopupContent.test.tsx.snap | 87 + .../__snapshots__/index.test.tsx.snap | 183 + .../layout/infos/__tests__/index.test.tsx | 10 + .../src/modules/layout/infos/index.tsx | 72 + .../src/modules/layout/infos/tracking.ts | 35 + .../src/modules/layout/tracking.ts | 28 + .../__tests__/MentionsLegales.test.tsx | 10 + .../MentionsLegales.test.tsx.snap | 123 + .../src/modules/mentions-legales/index.tsx | 91 + .../__tests__/queries.es.test.ts | 23 + .../src/modules/modeles-de-courriers/index.ts | 1 + .../modules/modeles-de-courriers/queries.ts | 33 + .../outils/__tests__/queries.es.test.ts | 26 + .../src/modules/outils/index.ts | 1 + .../src/modules/outils/queries.ts | 55 + .../src/modules/plan-du-site/SiteMap.tsx | 126 + .../__tests__/PlanDuSite.test.tsx | 38 + .../__snapshots__/PlanDuSite.test.tsx.snap | 269 + .../plan-du-site/__tests__/queries.es.test.ts | 98 + .../src/modules/plan-du-site/index.tsx | 2 + .../src/modules/plan-du-site/queries.ts | 116 + .../modules/privacy-policy/TrackApproval.tsx | 16 + .../src/modules/privacy-policy/index.tsx | 152 + .../src/modules/stats/StatsDisplay.tsx | 34 + .../modules/stats/__tests__/Stats.test.tsx | 17 + .../stats/__tests__/StatsDisplay.test.tsx | 12 + .../__snapshots__/Stats.test.tsx.snap | 128 + .../__snapshots__/StatsDisplay.test.tsx.snap | 31 + .../src/modules/stats/index.tsx | 26 + .../themes/__tests__/queries.es.test.ts | 59 + .../src/modules/themes/index.ts | 1 + .../src/modules/themes/queries.ts | 27 + .../modules/utils/__tests__/events.test.ts | 63 + .../src/modules/utils/events.ts | 38 + .../src/modules/utils/index.ts | 2 + .../src/modules/utils/sort.ts | 8 + .../Component.tsx | 5 +- .../Informations.tsx | 16 +- .../1516-organismes-formation/Component.tsx | 5 +- .../Informations.tsx | 16 +- .../agreements/1527-immobilier/Component.tsx | 5 +- .../1527-immobilier/Informations.tsx | 5 +- .../16-transports-routiers/Component.tsx | 5 +- .../16-transports-routiers/Informations.tsx | 5 +- .../1672-societes-assurances/Component.tsx | 5 +- .../1672-societes-assurances/Informations.tsx | 16 +- .../Component.tsx | 5 +- .../Informations.tsx | 16 +- .../Component.tsx | 5 +- .../Informations.tsx | 16 +- .../agreements/2120-banques/Informations.tsx | 14 +- .../2148-telecommunications/Component.tsx | 5 +- .../2148-telecommunications/Informations.tsx | 16 +- .../agreements/2596-coiffure/Component.tsx | 5 +- .../agreements/2596-coiffure/Informations.tsx | 16 +- .../2609-batiment-etam/Component.tsx | 5 +- .../2609-batiment-etam/Informations.tsx | 5 +- .../2614-travaux-public/Component.tsx | 5 +- .../2614-travaux-public/Informations.tsx | 5 +- .../44-industries-chimiques/Component.tsx | 5 +- .../44-industries-chimiques/Informations.tsx | 26 +- .../common/usecase/computeSalaryPeriods.ts | 4 +- .../steps/Agreement/store/validator.ts | 10 +- .../components/SectionTitleWithTooltip.tsx | 21 +- .../SectionTitleWithTooltip.test.tsx | 4 +- .../store/__tests__/validator.test.ts | 9 +- .../steps/Anciennete/store/store.ts | 4 +- .../steps/ContratTravail/store/store.ts | 4 +- .../steps/Informations/store/store.ts | 4 +- .../steps/Resultat/store/store.ts | 20 +- .../Salaires/components/SalaireTempsPlein.tsx | 4 +- .../__tests__/TempsPartiel.test.tsx | 8 +- .../steps/Salaires/store/store.ts | 4 +- .../steps/Salaires/store/validator.ts | 26 +- .../src/outils/CommonIndemniteDepart/store.ts | 2 +- .../CommonIndemniteDepart/utils/question.ts | 16 +- .../Components/Agreements/ShowAgreements.tsx | 4 +- .../src/outils/ConventionCollective/index.tsx | 8 +- .../steps/AgreementSelection.tsx | 4 +- .../__snapshots__/index.test.tsx.snap | 48 +- .../__tests__/information-error.test.tsx | 1 - .../__tests__/stepReducer.test.ts | 5 +- .../__tests__/success.test.tsx | 1 - .../DureePreavisDemission/steps/Result.tsx | 2 +- .../steps/__tests__/Agreement.test.tsx | 4 +- .../__snapshots__/Result.test.tsx.snap | 38 +- .../__snapshots__/index.test.tsx.snap | 52 +- .../__tests__/information-error.test.tsx | 1 - .../__tests__/stepReducer.test.ts | 5 +- .../steps/Result/Components/DisplayResult.tsx | 4 +- .../__snapshots__/Result.test.js.snap | 176 +- .../__snapshots__/Status.test.js.snap | 118 +- .../__snapshots__/index.test.tsx.snap | 52 +- .../__tests__/stepReducer.test.ts | 5 +- .../HeuresRechercheEmploi/steps/Result.tsx | 2 +- .../__snapshots__/Result.test.tsx.snap | 56 +- .../absence-date-onchange-motif.test.tsx | 6 +- .../absence-date-with-agreement.test.tsx | 6 +- .../absence-date-without-agreement.test.tsx | 6 +- .../__tests__/cc1527.test.tsx | 26 +- .../__tests__/no-agreement-result.test.tsx | 2 +- .../__tests__/notification.test.tsx | 6 +- .../__tests__/salary-validation.test.tsx | 1 - .../agreements/ui-customizations/messages.ts | 4 +- .../steps/Resultat/Eligible.tsx | 2 +- .../__snapshots__/index.test.tsx.snap | 52 +- .../__tests__/stepReducer.test.js | 5 +- .../__snapshots__/Salaires.test.js.snap | 62 +- .../__snapshots__/TypeContrat.test.js.snap | 18 +- .../TypeRemuneration.test.js.snap | 18 +- .../__tests__/__snapshots__/CDD.test.js.snap | 80 +- .../__tests__/__snapshots__/CTT.test.js.snap | 80 +- .../__snapshots__/Indemnite.test.js.snap | 140 +- .../__snapshots__/InfosGenerales.test.js.snap | 180 +- .../__snapshots__/Remuneration.test.js.snap | 96 +- .../steps/Agreement/store/validator.ts | 10 +- .../steps/Result/components/Warning.tsx | 16 +- .../src/outils/PreavisRetraite/steps/store.ts | 2 +- .../__tests__/anciennete.test.tsx | 8 +- .../__tests__/legal.test.tsx | 4 +- .../steps/Resultat/Eligible.tsx | 2 +- .../steps/Resultat/utils.ts | 2 +- .../src/outils/api/index.ts | 2 +- .../AgreementInput/AgreementTile.tsx | 4 +- .../EnterpriseSearch/Location/Search.tsx | 7 +- .../src/outils/common/Condition.js | 4 +- .../Feedback/__tests__/feedback.test.tsx | 18 +- .../outils/common/__tests__/Condition.test.js | 11 +- .../__snapshots__/SelectQuestion.test.js.snap | 28 +- .../StepInformations.test.tsx.snap | 2 +- .../__snapshots__/StepList.test.js.snap | 22 +- .../__snapshots__/Wizard.test.tsx.snap | 174 +- .../__snapshots__/YesNoQuestion.test.js.snap | 20 +- .../publicodes/indemnite-licenciement.ts | 41 +- .../data/questionnaire.data.json | 1430 ++-- .../src/search/SearchBar/index.tsx | 8 +- .../src/search/SearchResults/Law.js | 4 +- .../src/search/SearchResults/Results.tsx | 12 +- .../src/search/SearchResults/Themes.js | 4 +- .../src/search/__tests__/ListLink.test.js | 8 + .../__snapshots__/SearchResults.test.js.snap | 174 +- .../__snapshots__/search.service.test.js.snap | 13 - .../search/__tests__/search.service.test.js | 43 - .../src/search/search.service.js | 31 - .../src/search/utils.js | 4 +- .../test/jest.setup.js | 18 +- .../code-du-travail-frontend/tsconfig.json | 9 +- .../code-du-travail-modeles/.prettierignore | 3 + .../code-du-travail-modeles/.prettierrc.mjs | 10 + packages/code-du-travail-modeles/README.md | 16 - packages/code-du-travail-modeles/package.json | 12 +- .../src/modeles/common/types/salary.ts | 68 +- .../src/modeles/common/types/seniority.ts | 16 +- ...e_avec_explanations_dupliqu\303\251s.yaml" | 2 +- .../__tests__/data/formule_flag_$formule.yaml | 2 +- .../formule_plusieurs_regles_desactivees.yaml | 2 +- .../__tests__/split-by-seniority-year.test.ts | 39 +- .../missing-args.spec.ts | 1 - .../preavis-retraite.yaml | 1 - .../1486_bureaux_etudes_techniques/salary.ts | 4 +- .../preavis-retraite.yaml | 1 - .../conventions/1527_immobilier/salary.ts | 4 +- .../indemnite-licenciement/formule.spec.ts | 1 - .../missing-args.spec.ts | 1 - .../missing-args.spec.ts | 1 - .../16_transports_routiers/salary.ts | 4 +- .../conventions/2596_coiffure/salary.ts | 4 +- .../indemnite-licenciement/indemnite.spec.ts | 2 +- .../indemnite-licenciement/references.spec.ts | 14 +- .../salary.ts | 4 +- .../missing-args.spec.ts | 1 - .../missing-args.spec.ts | 1 - .../indemnite-licenciement/anciennete.spec.ts | 330 +- .../missing-args.spec.ts | 1 - .../preavis-retraite.yaml | 1 - .../src/publicodes/types.ts | 8 +- .../code-du-travail-utils/.prettierignore | 2 + .../code-du-travail-utils/.prettierrc.mjs | 10 + .../code-du-travail-utils/eslint.config.mjs | 7 + packages/code-du-travail-utils/package.json | 19 +- packages/react-ui/.stylelintrc.json | 10 - packages/react-ui/package.json | 17 +- yarn.lock | 2516 +++++- 442 files changed, 19427 insertions(+), 13591 deletions(-) delete mode 100644 .prettierignore create mode 100644 packages/code-du-travail-frontend/.prettierignore create mode 100644 packages/code-du-travail-frontend/.prettierrc.mjs delete mode 100755 packages/code-du-travail-frontend/README.md delete mode 100644 packages/code-du-travail-frontend/__tests__/__snapshots__/mentions-legales.test.tsx.snap delete mode 100644 packages/code-du-travail-frontend/__tests__/__snapshots__/stats.test.tsx.snap delete mode 100644 packages/code-du-travail-frontend/__tests__/stats.test.tsx create mode 100644 packages/code-du-travail-frontend/app/[...not-found]/page.tsx create mode 100644 packages/code-du-travail-frontend/app/code-du-travail/[slug]/page.tsx create mode 100644 packages/code-du-travail-frontend/app/error.tsx create mode 100644 packages/code-du-travail-frontend/app/global-error.tsx create mode 100644 packages/code-du-travail-frontend/app/globals.css create mode 100644 packages/code-du-travail-frontend/app/layout.tsx create mode 100644 packages/code-du-travail-frontend/app/mentions-legales/page.tsx create mode 100644 packages/code-du-travail-frontend/app/not-found.tsx create mode 100644 packages/code-du-travail-frontend/app/plan-du-site/page.tsx create mode 100644 packages/code-du-travail-frontend/app/politique-confidentialite/page.tsx create mode 100644 packages/code-du-travail-frontend/app/stats/page.tsx create mode 100644 packages/code-du-travail-frontend/cypress/integration/light/article-code-du-travail.spec.ts create mode 100644 packages/code-du-travail-frontend/cypress/integration/light/header.spec.ts create mode 100644 packages/code-du-travail-frontend/cypress/integration/light/plan-du-site/plan-du-site.spec.ts create mode 100644 packages/code-du-travail-frontend/cypress/integration/light/politique-confidentialite.spec.ts create mode 100644 packages/code-du-travail-frontend/cypress/support/errors.ts create mode 100644 packages/code-du-travail-frontend/middleware.ts delete mode 100644 packages/code-du-travail-frontend/pages/404.tsx delete mode 100644 packages/code-du-travail-frontend/pages/code-du-travail/[slug].tsx delete mode 100644 packages/code-du-travail-frontend/pages/mentions-legales.tsx delete mode 100644 packages/code-du-travail-frontend/pages/plan-du-site.tsx delete mode 100644 packages/code-du-travail-frontend/pages/politique-confidentialite.tsx delete mode 100644 packages/code-du-travail-frontend/pages/stats.tsx create mode 100644 packages/code-du-travail-frontend/panda.config.ts create mode 100644 packages/code-du-travail-frontend/postcss.config.cjs create mode 100644 packages/code-du-travail-frontend/public/static/assets/img/logo.svg create mode 100644 packages/code-du-travail-frontend/public/static/assets/img/ovoid.svg create mode 100644 packages/code-du-travail-frontend/public/static/assets/img/srdt.svg create mode 100644 packages/code-du-travail-frontend/public/static/assets/img/technical-error.svg rename packages/code-du-travail-frontend/src/api/__tests__/__snapshots__/{idcc.test.ts.snap => idcc.es.test.ts.snap} (95%) rename packages/code-du-travail-frontend/src/api/__tests__/__snapshots__/{suggest.test.ts.snap => suggest.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/__tests__/{idcc.test.ts => idcc.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/__tests__/{suggest.test.ts => suggest.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/__tests__/{utils.test.ts => utils.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/agreements/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/agreements/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/contributions/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/contributions/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/dossiers/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/dossiers/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/enterprises/service/__tests__/{fetchEnterprises.test.ts => fetchEnterprises.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/enterprises/service/__tests__/{populateAgreements.test.ts => populateAgreements.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/glossary/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/glossary/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/highlights/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/highlights/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/idcc/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (94%) rename packages/code-du-travail-frontend/src/api/modules/idcc/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/items/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/items/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/modeles/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/modeles/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/search/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (98%) rename packages/code-du-travail-frontend/src/api/modules/search/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/sheets-mt/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/sheets-mt/__tests__/{service.test.ts => service.es.test.ts} (100%) delete mode 100644 packages/code-du-travail-frontend/src/api/modules/sitemap/__tests__/service.test.ts delete mode 100644 packages/code-du-travail-frontend/src/api/modules/sitemap/index.ts delete mode 100644 packages/code-du-travail-frontend/src/api/modules/sitemap/service.ts rename packages/code-du-travail-frontend/src/api/modules/suggest/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/suggest/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/themes/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/themes/__tests__/{service.test.ts => service.es.test.ts} (100%) rename packages/code-du-travail-frontend/src/api/modules/tools/__tests__/__snapshots__/{service.test.ts.snap => service.es.test.ts.snap} (100%) rename packages/code-du-travail-frontend/src/api/modules/tools/__tests__/{service.test.ts => service.es.test.ts} (100%) create mode 100644 packages/code-du-travail-frontend/src/contributions/__tests__/__snapshots__/ReferencesJuridique.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/fiche-service-public/components/__tests__/__snapshots__/ElementBuilder.test.js.snap rename packages/code-du-travail-frontend/src/lib/{replaceArticlesRefs.js => replaceArticlesRefs.ts} (100%) create mode 100644 packages/code-du-travail-frontend/src/modules/code-du-travail/__tests__/service.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/code-du-travail/articleCodeDuTravail.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/code-du-travail/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/code-du-travail/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/code-du-travail/type.ts create mode 100644 packages/code-du-travail-frontend/src/modules/common/Html.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/common/ListWithArrow.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/common/RelatedItems.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/common/Share.tsx rename packages/code-du-travail-frontend/{__tests__/mentions-legales.test.tsx => src/modules/common/__tests__/Html.test.tsx} (51%) create mode 100644 packages/code-du-travail-frontend/src/modules/common/__tests__/RelatedItems.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/common/__tests__/Share.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/common/__tests__/__snapshots__/Html.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/common/__tests__/__snapshots__/RelatedItems.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/common/__tests__/__snapshots__/Share.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/common/__tests__/metas.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/common/metas.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/common/tracking.ts create mode 100644 packages/code-du-travail-frontend/src/modules/config/MatomoAnalytics.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/config/StartDsfr.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/config/defaultColorScheme.ts create mode 100644 packages/code-du-travail-frontend/src/modules/contributions/__tests__/queries.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/contributions/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/contributions/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/convention-collective/__tests__/queries.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/convention-collective/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/convention-collective/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/documents/__tests__/service.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/documents/fetch-document.ts create mode 100644 packages/code-du-travail-frontend/src/modules/documents/fetch-related-items.ts create mode 100644 packages/code-du-travail-frontend/src/modules/documents/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/documents/type.ts create mode 100644 packages/code-du-travail-frontend/src/modules/error/IconError.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/error/NotFound.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/error/UnexpectedError.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/error/__tests__/NotFound.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/error/__tests__/UnexpectedError.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/error/__tests__/__snapshots__/NotFound.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/error/__tests__/__snapshots__/UnexpectedError.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/informations/__tests__/queries.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/informations/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/informations/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/layout/BrandTop.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/Container.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/ContainerRich.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/Footer.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/SkipLinks.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/__tests__/BrandTop.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/__tests__/Footer.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/__tests__/SkipLinks.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/__tests__/__snapshots__/BrandTop.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/__tests__/__snapshots__/Footer.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/__tests__/__snapshots__/SkipLinks.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/common.ts create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/FeedbackAnswered.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/FeedbackContent.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/FeedbackDefault.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/__tests__/FeedbackAnswered.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/__tests__/FeedbackContent.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/__tests__/FeedbackDefault.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/__tests__/__snapshots__/FeedbackAnswered.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/__tests__/__snapshots__/FeedbackContent.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/__tests__/__snapshots__/FeedbackDefault.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/feedback/tracking.ts create mode 100644 packages/code-du-travail-frontend/src/modules/layout/header/SearchInput.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/header/__tests__/HeaderDsfr.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/header/__tests__/SearchInput.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/header/__tests__/__snapshots__/HeaderDsfr.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/header/__tests__/fetchSuggestResults.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/layout/header/fetchSuggestResults.ts create mode 100644 packages/code-du-travail-frontend/src/modules/layout/header/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/infos/PopupContent.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/infos/__tests__/PopupContent.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/infos/__tests__/__snapshots__/PopupContent.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/infos/__tests__/__snapshots__/index.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/layout/infos/__tests__/index.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/infos/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/layout/infos/tracking.ts create mode 100644 packages/code-du-travail-frontend/src/modules/layout/tracking.ts create mode 100644 packages/code-du-travail-frontend/src/modules/mentions-legales/__tests__/MentionsLegales.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/mentions-legales/__tests__/__snapshots__/MentionsLegales.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/mentions-legales/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/modeles-de-courriers/__tests__/queries.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/modeles-de-courriers/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/modeles-de-courriers/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/outils/__tests__/queries.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/outils/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/outils/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/plan-du-site/SiteMap.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/plan-du-site/__tests__/PlanDuSite.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/plan-du-site/__tests__/__snapshots__/PlanDuSite.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/plan-du-site/__tests__/queries.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/plan-du-site/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/plan-du-site/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/privacy-policy/TrackApproval.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/privacy-policy/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/stats/StatsDisplay.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/stats/__tests__/Stats.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/stats/__tests__/StatsDisplay.test.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/stats/__tests__/__snapshots__/Stats.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/stats/__tests__/__snapshots__/StatsDisplay.test.tsx.snap create mode 100644 packages/code-du-travail-frontend/src/modules/stats/index.tsx create mode 100644 packages/code-du-travail-frontend/src/modules/themes/__tests__/queries.es.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/themes/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/themes/queries.ts create mode 100644 packages/code-du-travail-frontend/src/modules/utils/__tests__/events.test.ts create mode 100644 packages/code-du-travail-frontend/src/modules/utils/events.ts create mode 100644 packages/code-du-travail-frontend/src/modules/utils/index.ts create mode 100644 packages/code-du-travail-frontend/src/modules/utils/sort.ts delete mode 100644 packages/code-du-travail-frontend/src/search/__tests__/__snapshots__/search.service.test.js.snap delete mode 100644 packages/code-du-travail-frontend/src/search/__tests__/search.service.test.js delete mode 100644 packages/code-du-travail-frontend/src/search/search.service.js create mode 100644 packages/code-du-travail-modeles/.prettierignore create mode 100644 packages/code-du-travail-modeles/.prettierrc.mjs delete mode 100644 packages/code-du-travail-modeles/README.md create mode 100644 packages/code-du-travail-utils/.prettierignore create mode 100644 packages/code-du-travail-utils/.prettierrc.mjs create mode 100644 packages/code-du-travail-utils/eslint.config.mjs delete mode 100644 packages/react-ui/.stylelintrc.json diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 97e68aa675..f829351a4a 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -29,6 +29,10 @@ jobs: - name: Build code run: | yarn build + env: + NEXT_PUBLIC_ES_INDEX_PREFIX: ${{ secrets.NEXT_PUBLIC_ES_INDEX_PREFIX }} + ELASTICSEARCH_TOKEN_API: ${{ secrets.ELASTICSEARCH_TOKEN_API }} + ELASTICSEARCH_URL: ${{ secrets.ELASTICSEARCH_URL }} - name: Cache build uses: actions/cache@v4 with: @@ -43,7 +47,11 @@ jobs: fail-fast: false matrix: repositories: - ["@socialgouv/cdtn-ui", "@cdt/frontend", "@socialgouv/modeles-social"] + [ + "@cdt/frontend", + "@socialgouv/modeles-social", + "@socialgouv/cdtn-utils", + ] steps: - uses: actions/cache@v4 name: Restore build @@ -54,6 +62,29 @@ jobs: run: | yarn workspace ${{ matrix.repositories }} lint --quiet + format: + name: Code formatter checker + runs-on: ubuntu-latest + needs: [build] + strategy: + fail-fast: false + matrix: + repositories: + [ + "@cdt/frontend", + "@socialgouv/modeles-social", + "@socialgouv/cdtn-utils", + ] + steps: + - uses: actions/cache@v4 + name: Restore build + with: + path: ./* + key: ${{ github.sha }} + - name: Code formatter checker for ${{ matrix.repositories }} + run: | + yarn workspace ${{ matrix.repositories }} format:check + build-storybook: name: Build Storybook runs-on: ubuntu-latest diff --git a/.husky/pre-commit b/.husky/pre-commit index 544c847103..6b00462eb8 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,9 +1 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -yarn lerna run \ - --exclude-dependents \ - --parallel 1 \ - --since HEAD \ - --stream \ - ; +yarn precommit diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index cf3383f081..0000000000 --- a/.prettierignore +++ /dev/null @@ -1,9 +0,0 @@ -packages/code-du-travail-frontend/public/static -.next -.out -build/ -dist/ -node_modules/ -package-lock.json -yarn.lock -package.json \ No newline at end of file diff --git a/README.md b/README.md index d1c11a0d06..aa76877c0e 100644 --- a/README.md +++ b/README.md @@ -21,15 +21,23 @@ yarn yarn build ``` -### Packages +### Testing + +```sh +yarn test:frontend # To run frontend tests +TEST_MODE=heavy-and-light yarn test:e2e # To run e2e test without any UI +TEST_MODE=heavy-and-light yarn test:e2e:ui # To run e2e test with Cypress UI +# TEST_MODE can be : light, heavy, heavy-and-light or html-validation +``` + +## Packages | Package | description | | --------------------------------------------------------------- | ---------------------------------------------------------------------------- | | [code-du-travail-frontend](./packages/code-du-travail-frontend) | Application Next.js | | [code-du-travail-modeles](./packages/code-du-travail-modeles) | Implémentation [publicodes](https://publi.codes) des conventions collectives | -| [react-ui](./packages/react-ui) | Librairie de composant | -### Frontend +### code-du-travail-frontend Pour lancer l'application en se basant sur l'API de pre-production : @@ -40,13 +48,22 @@ yarn dev:frontend Notre bibliothèque de composants UI est disponible en démo [ici](https://socialgouv.github.io/code-du-travail-numerique/). -### Testing +### code-du-travail-modeles -```sh -TEST_MODE=heavy-and-light yarn test:e2e # To run e2e test without any UI -TEST_MODE=heavy-and-light yarn test:e2e:ui # To run e2e test with Cypress UI -# TEST_MODE can be light, heavy, heavy-and-light or html-validation -``` +Ce package contient les modèles [publicodes](https://publi.codes/) pour les simulateurs du code du travail numérique. + +#### Organisation + +Le package contient les modèles publicodes dans le dossier 'src/modeles' dans le format YAML. +Le découpage des modèles n'est pas encore finalisé. +A l'heure actuelle, on place les informations du code du travail dans le fichier `contrat-salarie.yaml` +puis les informations de chaque convention collective dans le dossier `src/modeles/conventions` +où chaque convention possède son fichier. + +Une classe `MergeModele` dans le dossier `src/utils` permet de fusionner l'ensemble des fichiers YAML présent dans le dossier `modeles` pour alimenter le moteur de publicodes. + +Enfin le dossier `src/__test__` contient les tests permettant de valider les règles dans le modèle YAML. +Le but étant de pouvoir fonctionner en mode TDD pour rédiger nos règles. ## License diff --git a/package.json b/package.json index 22484b43f9..1603400e64 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "description": "Code du travail", "homepage": "https://github.com/SocialGouv/code-du-travail-numerique#readme", "scripts": { + "prepare": "husky", "build": "lerna run build --scope=@socialgouv/cdtn-utils --scope=@socialgouv/cdtn-ui --scope=@socialgouv/modeles-social --scope=@cdt/frontend --stream", "build:npm": "lerna run build --scope=@socialgouv/cdtn-utils --scope=@socialgouv/cdtn-ui --scope=@socialgouv/modeles-social --stream", "clean": "lerna clean", @@ -32,7 +33,9 @@ "test:update": "lerna run test:update --scope=@socialgouv/cdtn-ui --scope=@cdt/frontend --stream", "test:update:frontend": "lerna run test:update --scope=@cdt/frontend --stream", "test:update:api": "lerna run test:api:update --scope=@cdt/frontend --stream", - "prepare": "is-ci || husky install" + "format": "lerna run format --stream", + "format:check": "lerna run format:check --stream", + "precommit": "lerna run precommit --stream" }, "repository": { "type": "git", @@ -42,8 +45,7 @@ "url": "https://github.com/SocialGouv/code-du-travail-numerique/issues" }, "devDependencies": { - "husky": "^9.0.0", - "is-ci": "^3.0.0", + "husky": "^9.1.6", "lerna": "^5.0.0" }, "workspaces": [ diff --git a/packages/code-du-travail-frontend/.gitignore b/packages/code-du-travail-frontend/.gitignore index f38e9c2c83..0ed2068218 100644 --- a/packages/code-du-travail-frontend/.gitignore +++ b/packages/code-du-travail-frontend/.gitignore @@ -8,3 +8,7 @@ cypress/screenshots cypress/downloads .env .env.* + +## Panda +styled-system +styled-system-studio \ No newline at end of file diff --git a/packages/code-du-travail-frontend/.prettierignore b/packages/code-du-travail-frontend/.prettierignore new file mode 100644 index 0000000000..2ff512a818 --- /dev/null +++ b/packages/code-du-travail-frontend/.prettierignore @@ -0,0 +1,4 @@ +node_modules/ +.next/ +.swc/ +styled-system/ diff --git a/packages/code-du-travail-frontend/.prettierrc.mjs b/packages/code-du-travail-frontend/.prettierrc.mjs new file mode 100644 index 0000000000..9433203127 --- /dev/null +++ b/packages/code-du-travail-frontend/.prettierrc.mjs @@ -0,0 +1,10 @@ +export default { + printWidth: 80, // Maximum line length (80 characters) + tabWidth: 2, // Number of spaces per indentation level + useTabs: false, // Use spaces instead of tabs + semi: true, // End statements with a semicolon + singleQuote: false, // Use double quotes in strings + trailingComma: "es5", // Add trailing commas in objects, arrays, etc., per ES5 + bracketSpacing: true, // Add spaces inside object literals: { foo: bar } + arrowParens: "always", // Always include parens for arrow functions: (x) => x +}; diff --git a/packages/code-du-travail-frontend/README.md b/packages/code-du-travail-frontend/README.md deleted file mode 100755 index 9292bbedea..0000000000 --- a/packages/code-du-travail-frontend/README.md +++ /dev/null @@ -1,243 +0,0 @@ -# Code-du-travail - Frontend (@cdt/frontend) - -## Ajouter une convention collective pour l'indemnité de licenciement - -### 1. Ajouter le salaire de référence (`code-du-travail-modeles`) - -Dans le folder `plugins/salaire-reference`, ajouter la convention collective pour l'indemnité de licenciement en créant un fichier. - -Il faut ajouter le type d'entrée de l'input aussi tout en rajoutant les TUs. - -Puis dans `types`, rajouter le type de votre convention collective - -```ts -export type ReferenceSalaryProps = - T extends SupportedCc.IDCC1516 - ? CC1516ReferenceSalaryProps - T extends SupportedCc.IDCCXXX - ? IDCCXXXReferenceSalaryProps - : LegalReferenceSalaryProps; -``` - -### 2. Ajouter l'ancienneté (`code-du-travail-modeles`) - -Dans le folder `plugins/anciennete`, ajouter la convention collective pour l'indemnité de licenciement en créant un fichier. - -Techniquement, on peut implémenter l'interface `ISeniority` pour ajouter une fonction qui override la fonction de `compute` ou alors juste modifier les motifs en mettant les bon paramètres qu'on souhaite. - -Ensuite, dans `index.ts`, on peut ajouter la classe qui va process l'ancienneté avec comme paramètre les bons motifs. - -```ts -switch (idcc) { - case SupportedCc.IDCC2511: - return new SeniorityLegal(getMotifs(SupportedCc.IDCC2511)) as ISeniority; - case SupportedCc.default: - default: - return new SeniorityLegal(getMotifs(SupportedCc.default)) as ISeniority; -} -``` - -Enfin si on souhaite pimper les types, on peut le faire dans `types`. - -```ts -export type SeniorityProps = T extends SupportedCc.IDCC2511 - ? LegalSeniorityProps - : LegalSeniorityProps; -``` - -### 3. Ajouter la formule de calcul (`code-du-travail-modeles`) - -Dans le folder `plugins/formule`, ajouter la convention collective pour l'indemnité de licenciement en créant un fichier. - -Le principe est le même que l'`ancienneté` et le `salaire de référence`. - -On peut créer une classe qui va implémenter l'interface `IFormula` - -```ts -export class Formula1516 - implements IFormula -``` - -Ensuite, on peut modifier la fonction `computeFormula`, on ajoutant les bonnes `explanations`, comme on le voit ci-dessous : - -```ts -... -formula = `(1 / 5 * Sref * A1) + (1 / 10 * Sref * A2)`; -const anWithout = round(seniority - 15) < 2 ? "an" : "ans"; -explanations.push(`A1 : Ancienneté totale (${round(seniority)} ans)`); -explanations.push( - `A2 : Années de présence au delà de 15 ans (${round( - seniority - 15 - )} ${anWithout})` -); -... -``` - -Après dans l'`index.ts`, on peut ajouter la classe : - -```ts -switch (idcc) { - case SupportedCc.IDCC1516: - return new Formula1516() as IFormula; - case SupportedCc.default: - default: - return new FormulaLegal() as IFormula; -} -``` - -Enfin si on souhaite pimper les types, on peut le faire dans `types`. - -```ts -export type FormulaProps = T extends SupportedCc.default - ? LegalFormulaProps - : DefaultFormulaProps; -``` - -### 4. Ajouter le calcul de l'indemnité avec publicodes (`code-du-travail-modeles`) - -Il faut créer un folder pour la convention collective et créer un fichier `indemnite-licenciement.yaml`. - -Afin que la Convention collective soit considéré comme traité, il faut ajouter à `common.yaml`, le `indemnite-licenciement: true` : - -```yaml -contrat salarié . convention collective . hospitalisation privées: - description: Convention collective nationale de l'hospitalisation privée du 18 avril 2002. - applicable si: convention collective = 'IDCC2264' - valeur: oui - cdtn: - idcc: 2264 - préavis-retraite: true - indemnité-licenciement: true -``` - -Publicodes, en plus du calcul de l'indemnité s'occupe également des références juridiques. - -Le but de la règle est de remplacer la règle : `contrat salarié . indemnité de licenciement . résultat conventionnel`, comme dans l'example ci-dessous : - -```yml -contrat salarié . convention collective . sport . indemnité de licenciement: - valeur: oui - -contrat salarié . convention collective . sport . indemnité de licenciement . jusqu'à dix ans ou moins: - valeur: - le minimum de: - - contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année - - 10 an - -contrat salarié . convention collective . sport . indemnité de licenciement . au dela de dix ans: - somme: - - contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année - - (- 10 an) - plancher: 0 an - -contrat salarié . convention collective . sport . indemnité de licenciement . dix ans ou moins: - valeur: - produit: - assiette: jusqu'à dix ans ou moins * contrat salarié . indemnité de licenciement . salaire de référence conventionnel - facteur: 1 / 4 - unité: € - -contrat salarié . convention collective . sport . indemnité de licenciement . plus de dix ans: - valeur: - produit: - assiette: au dela de dix ans * contrat salarié . indemnité de licenciement . salaire de référence conventionnel - facteur: 1 / 3 - unité: € - -# (1/4*Sref*A1) + (1/3*Sref*A2) -# A1 : Ancienneté de 10 ans ou moins -# A2 : Ancienneté au delà de 10 ans -contrat salarié . convention collective . sport . indemnité de licenciement . résultat conventionnel: - remplace: contrat salarié . indemnité de licenciement . résultat conventionnel - variations: - - si: contrat salarié . indemnité de licenciement . ancienneté conventionnelle en année > (7 mois / 12) - alors: - somme: - - dix ans ou moins - - plus de dix ans - - sinon: 0 - unité: € - arrondi: 2 décimales - références: - Article 4.4.3.3: https://www.legifrance.gouv.fr/conv_coll/article/KALIARTI000042110557?idConteneur=KALICONT000017577652 - Article 7.1.2: https://www.legifrance.gouv.fr/conv_coll/id/KALIARTI000042110596/?idConteneur=KALICONT000017577652&origin=list -``` - -NOTE: La convention collective `2264` montre une implémentation complexe qui s'occupe de plusieurs cas complexes. - -:warning: N'oublions pas d'écrire les tests pour cette partie. - -### 5. Si la convention dispose d'un salaire de référence conventionnel (`code-du-travail-frontend`) - -Il faut ajouter dans le dossier `src/outils/IndemniteLicenciement/agreements`, un dossier avec le nom de la convention collective. - -Celui-ci est composé d'un `Component.tsx` qui fonctionne comme une étape avec son propre `store`. - -Ce `store` est retrouvable dans un dossier, dans le quel, on ajoute un `validator.ts` qui est activable à chaque suivant, et un `store.ts` pour sauvegarder les informations saisies par l'utilisateur. - -On peut rajouter une méthode d'override du calcul du salaire de reference conventionnel dans un fichier `computeReferenceSalary.ts`. Celui-ci sera activé au niveau du suivant, et par conséquent lorsque les informations sont validées par le validator. - -Après, dans `src/outils/IndemniteLicenciement/types.ts` : - -```ts -export type AgreementStoreInput = - | Agreement1516StoreInput - | MaConventionCollectiveInput; - -export type AgreementStoreError = - | Agreement1516StoreError - | MaConventionCollectiveError; - -export type AgreementStoreSlice = - | Agreement1516StoreSlice - | MaConventionCollectiveSlice; - -export const createRootAgreementsStore = ( - set: StoreApi["setState"], - get: StoreApi["getState"] -) => ({ - ...createAgreement1516StoreSalaires(set, get), - ...createMaCCStore(set, get), -}); -``` - -Puis, il faut ajouter le validator dans `src/outils/IndemniteLicenciement/validator.ts` a la racine : - -```ts -export const validateAgreement = ( - idcc: SupportedCc, - step: IndemniteLicenciementStepName, - get: StoreApi["getState"], - set: StoreApi["setState"] -): boolean => { - switch (true) { - case SupportedCc.IDCC1516 === idcc && - step === IndemniteLicenciementStepName.Salaires: - return validateAgreement1516(get, set); - case SupportedCc.MA_CC === idcc && - step === IndemniteLicenciementStepName.Salaires: - return validateMaCc(get, set); - default: - return true; - } -}; -``` - -Enfin, il suffit de rajouter le composant d'injection dans `src/outils/IndemniteLicenciement/AgreementsInjector.tsx` : - -```ts -export default function AgreementsInjector(props: Props) { - switch (true) { - case SupportedCc.IDCC1516 === props.idcc && - props.step === IndemniteLicenciementStepName.Salaires: - return ; - case SupportedCc.MA_CC === props.idcc && - props.step === IndemniteLicenciementStepName.Salaires: - return ; - default: - return <>; - } -} -``` - -That's all folks ! diff --git a/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap b/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap index ae0f7c67a5..cd366aa83c 100644 --- a/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap +++ b/packages/code-du-travail-frontend/__tests__/__snapshots__/a-propos.test.tsx.snap @@ -3,38 +3,38 @@ exports[` should render 1`] = `
le 04/01/2020, 00:00:00
République française, site officiel du gouvernement. Liberté, égalité, fraternité should render 1`] = `

À propos

Apprenez-en plus sur notre histoire, notre équipe et nos méthodes

Qu’est-ce que le Code du travail numérique ?

@@ -240,7 +240,7 @@ exports[` should render 1`] = ` janvier 2020.

Pourquoi le Code du travail numérique ?

@@ -258,7 +258,7 @@ exports[` should render 1`] = `

À qui ce service s’adresse-t-il ?

@@ -273,7 +273,7 @@ exports[` should render 1`] = `

Que peut-on trouver sur le site ?

@@ -298,19 +298,19 @@ exports[` should render 1`] = `

Qui sommes-nous ?

Notre équipe

@@ -346,7 +346,7 @@ exports[` should render 1`] = ` .

Nos méthodes

@@ -370,45 +370,45 @@ exports[` should render 1`] = `