- Met à jour le style des notifications dans la conversation
- Améliore la landing page
- Améliore la vue de la situation des simulateurs
- Les données de l'entreprise courante sont stockées en publicodes
- Ajoute la possibilité de réinitialisé la simulation sans les données entreprises
* WIP Place des entreprises
* Fix Emoji waning
* WIP Place des entreprises
* Ajout de PdE dans les CSP directive
* Ajout de l'option small sur la popover
* Style de l'iframe place des entreprises
* ⬆ Update react-aria button, dialog and overlays
* Amélioration du composant PlaceDesEntreprises
* Empêche l'event "click" apres un event "touch" sur mobile (fix#2020)
* Clean commentaire
* Fix des erreurs de dom
* Ajout des fonctions isProduction, isStaging et isDevelopment
* Ajout des url de staging place des entreprises
* Refacto du texte
* Ajout des traduction
* Ajout du staging de PdE dans le cors
* Modification du lien storybook EN
* Ajout de dépréciation sur les var d'env MODE, DEV et PROD
* Ajout du siret pour PdE dans Gérer
* Ajout d'un scrollToTop sur l'onLoad de l'iframe
* Fix css de la popover sur mobile
* Fix css des bar de pourcentage sur tablet
Ajout d'un Switch oui/non
* Fix lint
* Add react-router and fix type
* Fix lint
* Resolution du conflit de version de prettier avec storybook
* Fix storybook
* Reduce Storybook bundle size
Refacto css in QuickLinks
Remove useless comment
Add default theme to CSS prop
* Déploiement de Storybook
* Fix déploiement
* Fix déploiement storybook url
* Fix Switch style
* Remplace les oui/non radio bouton par un Switch
* Filter aria props + react props in Storybook controls
Sort props in Storybook
Add global style in Storybook decorator
* Update Storybook packages
* Ajout d'un debounce dans OuiNonInput
* Fix du Switch
* Refacto des alias
* Fix lint error avec Storybook
* Fix eslint error
* Refacto deploy for Storybook
* ✨Ajout de type pour les yaml d'economie collaborative
✨Ajout de type sur les fonction du locale storage
+ Autre fix de type
* Deploy storybook in dist dir in prod
* Fix focus on Switch
* Fix cy test
* ✨ Remplace l'alias ~ par @
* ✨ Refacto du Switch
* Remplace la checkbox par un Switch dans ChiffreAffairesActivitéMixte
* Ajout des stories RadioGroup et ToggleGroup
* Remplace le Switch oui/non par un ToggleGroup
* Ajout d'un label dans le Switch
Ajout du mode light sur le Switch
* Fix autofocus
* Fix cypress test
* 🐛 Ajout du polyfill replaceAll
* Test de deploiement
* Ajout d'une redirection pour Storybook
* Fix Storybook url
* Fix du deploiement de Storybook
* Ajout de storybook
Ajout d'un Switch oui/non
* Fix lint
* Add react-router and fix type
* Fix lint
* Resolution du conflit de version de prettier avec storybook
* Fix storybook
* Reduce Storybook bundle size
Refacto css in QuickLinks
Remove useless comment
Add default theme to CSS prop
* Déploiement de Storybook
* Fix déploiement
* Fix déploiement storybook url
* Fix Switch style
* Remplace les oui/non radio bouton par un Switch
* Filter aria props + react props in Storybook controls
Sort props in Storybook
Add global style in Storybook decorator
* Update Storybook packages
* Ajout d'un debounce dans OuiNonInput
* Fix du Switch
* Refacto des alias
* Fix lint error avec Storybook
* Fix eslint error
* Refacto deploy for Storybook
* ✨Ajout de type pour les yaml d'economie collaborative
✨Ajout de type sur les fonction du locale storage
+ Autre fix de type
* Deploy storybook in dist dir in prod
* Fix focus on Switch
* Fix cy test
* ✨ Remplace l'alias ~ par @
* ✨ Refacto du Switch
* Remplace la checkbox par un Switch dans ChiffreAffairesActivitéMixte
* Ajout des stories RadioGroup et ToggleGroup
* Remplace le Switch oui/non par un ToggleGroup
* Ajout d'un label dans le Switch
Ajout du mode light sur le Switch
* Fix autofocus
* Fix cypress test
* 🐛 Ajout du polyfill replaceAll
* Test de deploiement
* Ajout d'une redirection pour Storybook
* Fix Storybook url
* Fix du deploiement de Storybook
* Ajout de storybook
Ajout d'un Switch oui/non
* Fix lint
* Add react-router and fix type
* Fix lint
* Resolution du conflit de version de prettier avec storybook
* Fix storybook
* Reduce Storybook bundle size
Refacto css in QuickLinks
Remove useless comment
Add default theme to CSS prop
* Déploiement de Storybook
* Fix déploiement
* Fix déploiement storybook url
* Fix Switch style
* Remplace les oui/non radio bouton par un Switch
* Filter aria props + react props in Storybook controls
Sort props in Storybook
Add global style in Storybook decorator
* Update Storybook packages
* Ajout d'un debounce dans OuiNonInput
* Fix du Switch
* Refacto des alias
* Fix lint error avec Storybook
* Fix eslint error
* Refacto deploy for Storybook
* ✨Ajout de type pour les yaml d'economie collaborative
✨Ajout de type sur les fonction du locale storage
+ Autre fix de type
* Deploy storybook in dist dir in prod
* Fix focus on Switch
* Fix cy test
* ✨ Remplace l'alias ~ par @
* ✨ Refacto du Switch
* Remplace la checkbox par un Switch dans ChiffreAffairesActivitéMixte
* Ajout des stories RadioGroup et ToggleGroup
* Remplace le Switch oui/non par un ToggleGroup
* Ajout d'un label dans le Switch
Ajout du mode light sur le Switch
* Fix autofocus
* Fix cypress test
* 🐛 Ajout du polyfill replaceAll
🐛 Correction de deux liens dans les metadata-src
✨ Ajout de type sur le sitePath
✨ Refacto du script algolia:update en typescript
* Fix eslint error
* Ajout de commentaire sur les types
✨ Refacto du type de retour de getSimulatorsData
* ✨ Déplace les scripts de traduction dans site
* ✨ Nettoyage du fichier .env.template
* ✨ Ajout du devtool redux uniquement en mode dev
* ✨ Ajout d'une erreur si l'api github ne retourne pas un status 200
* ✨ Fix types
* ✨ Temporary fix package import error
* ⬆️ Update @redux-devtools/extension
On utilise une logique propre, plus la peine de passer par iframeResizer (qui intègre beaucoup de logique
de polyfill).
Par ailleurs, répare la page de test de l'intégration iframe en dev.
fix#1968, fix#1998
* ✨ Refacto de la config eslint
* ✨ Ajout de rel='noreferrer' sur les liens
* ✨ Fix de différentes erreurs de types et de tests
* ✨ Ajout des regles cypress dans eslint
* ✨ Suppression de la regle react/jsx-no-target-blank
* ✨ Fix import
- Creation d'un composnant <BrowserOnly /> pour éviter le CLS
- Restaure l'animation de chargement et le message de navigateur obsolète
- Correction d'une chaîne de caractère dans l'UI avec des tabulations
- Répare la section nouveautés
- Suppression du rehooks/local-storage
- Suppression de swr
La version utilisée de react-markdown n'était pas compatible avec
ViteJS. J'ai tenté la mise à jour vers la v7 qui est publiée sous forme
de ES Module, ce qui nécessitait d'intégrer plusieurs changements d'API.
En m'y attelant j'ai réalisé que la motivation première de
react-markdown était de ne surtout pas utiliser
`dangerouslySetInnerHTML`, ce qui est utile pour les cas d'usages où le
markdown n'est pas digne de confiance (message d'utilisateurs par
exemple). Cette contrainte oblige à alourdir sensiblement la quantité de
JavaScript à charger et à évaluer.
Anisi dans certains markdown que l'on affiche, on utilise la balise HTML
`<sup>`, qui n'est pas parsée nativement pas react-markdown. Comme on ne
peut pas faire de `dangerouslySetInnerHTML` il faut intégrer un parseur
HTML complet qui rajout 60kb, juste pour quelques occurences de `<sup>`
dans les pages nouveautés.
Dans notre cas d'usage reparser tout le html en Javascript, n'est pas
utile. markdown-to-jsx semble plus adapté et beaucoup plus léger. Par
ailleurs le paquet est 5 fois plus utilisé que react-markdown :
https://www.npmtrends.com/react-markdown-vs-markdown-to-jsx
Nous utilisions Jest uniquement pour les tests de non regressions qui
recquièrent le “snapshot testing”. Cette fonctionnalité étant supoprtée
par Vitest, il n'est plus utile de maintenir 2 environnement de tests
séparés.
* 🎨 Ajoute un champs de recherche d'entreprise dans la page d'accueil
Aucune intéractivité ajoutée pour l'instant
🔥 Déplace la recherche dans un nouveau composant
🎨 Ajoute une animation lors de la saisie de texte
🎨✨ Branche la recherche d'entreprise via l'api existante
🎨 Améliorations diverses
✨ ajoute la possibilité d'utiliser entrée lorsqu'il n'y a qu'un seul résultat
Remplace les résultats sous forme de lien par des boutons
🐛 Fix le prérendu
💚 Fix TS & répare le composant 'Appear'
Améliore le style sur mobile
Ajoute une section simulateurs sur la landing
Enlève l'animation lorsqu'on revient à la page d'accueil depuis une autre page
Branche la selection d'entreprise avec la page 'gérer'
Branche la selection d'entreprise avec la page 'gérer'
Ajoute un raccourci vers l'entreprise selectionnée depuis la page d'accueil
👽 ajoute les traductions manquantes
* Adapte la nouvelle page à la charte URSSAF
* Répare la selection des resultats
Simplifie le contenu de la landing
* Met à jour les tests cypress avec le flow de recherche
* Répare les erreurs de type
* Réduit la taille du champ de recherche sur la landing
* Met en avant la recherche entreprise
* Améliore le test cypress de la recherche
* Utilise une couleur moins forte pour le fond de la recherche
* Remet en couleur claire par la landing
* Utilise data-testid pour identifier les éléments de la recherche
* Enlève un composant non utilisé
Co-authored-by: Johan Girod <johan.girod@beta.gouv.fr>
Co-authored-by: Alexandre Valsamou-Stanislawski <alexandre.valsamoustanislawski@beta.gouv.fr>
Le package.json racine sert uniquement à définir les workspaces mais les
dépendances doivent être définies dans chacun des workspace. C'est
pourquoi un `yarn install` à la racine sans ajouter d'option spécifique
ne fonctionne pas.
J'ai donc déplacé l'ensemble des dépendances de dev dans le workspace
`site`, la plupart étaient des doublons déjà présent dans le fichier.
Cette librairie n'était utilisée qu'une seule fois et styled-components
permet de s'en passer aisément.
Hélas, la libraire n'est pas supprimée du bundle car elle reste utilisée
par react-instantsearch-dom.
a680ad31 🐛 Corrige un bug sur l'affichage des remplacements dans la doc publicodes
1e45d98d 🔥 Supprime la transformation d'emoji dans la doc publicodes
77973a9b 🐛 Répare l'affichage des règles remplacées
341b2e39 🎨🐛 corrige le style du remplacement dans les sommes
24dce683 🎨 Améliore l'explication des règles avec remplacement
6d086823 💚 fix lint
2d64d908 🏗Add export as Pdf button on simulators
163b766a ✅ Prettier linting in publicodes subtree
e1507975 ✨ Reformat files
80161f95 🐛 Fix VAT example
79bde0be 🔥 Remove "classnames" dependency from publicodes-react
3e65e320 🔥 Remove ramda from publicodes-react
71b68707 📦 Publicodes v1.0.0-beta.16
bdc92216 Merge the tests and publish workflows
1c032ebc ✅ Add test for a value with a percentage in its unit
d2865e8c Disable sum optimization inside comparisons
f4faa35d Ajout d'un test qui casse l'implé actuelle des missing parentes
f6105283 🖋 Document packages publication on NPM
a79eeb86 Better Github workflows
d0db4d09 Import publish action
c268cff5 Type checking in CI
a35403d7 Correction formattage
3022fd78 Add a separate cache for applicability
35095da9 Optimize the evaluation of applicability
7525446e Add a github action to run tests on push
39a12a13 Ajout d'un prettierrc / reformattage de quelques fichiers récents
c296a25e Ajout d'un deuxièmes test non fonctionnel sur le sujet #33
9f5afb4e Désactivation d'un nouveau test pas encore résolu
76d00085 Récupération de la complexité initiale du test missing variations
93210235 🐛 Meilleures missingVariables des variations
369abeae Simplification du test missingVariables qui ne marche pas
64217d3d Nouveau test missing variables éval paresseuse variations
d9c3e1f6 Conversion d'un gros test JS object en YAML
615ae5e5 Ajout d'un test râté pour #33
d290b46d Passage à mochapack pour webpack 5
5d7a5b31 Paquets NPM et conf babel manquants
1df9a8d4 Ajout d'un .gitignore et yarn.lock
6c2d0203 Uniformise l'unité des arrondis
2cbffe8a ⬆ MAJ Typescript vers 4.3
678403e4 Corrige le calcul des cotisations forfaitaires de début d'activité
8cdaac05 Simpler condition component (#1578)
b7459617 🔥 Supprime les variables temporelles
db62b57d 🔥 Supprime l'utilisation des temporals dans les mécanismes
git-subtree-dir: publicodes
git-subtree-split: a680ad31c33b93e4f35171488cec1b6f9e08179a
Cette recherche se base sur Algolia. Elle est accessible depuis toutes les
pages. Elle remplace intégralement la précédente recherche.
La fonctionnalité possède deux parties:
- la mise à jour des données (au build)
- l'UI sous la forme de composants
L'UI se base sur la bibliothèque `react-instantsearch` qui est developpé et
maintenu par Algolia.
Co-authored-by: Johan Girod <johan.girod@beta.gouv.fr>
Co-authored-by: Maxime Quandalle <maxime.quandalle@gmail.com>
Co-authored-by: Alexandre Hajjar <alexandre.hajjar@gmail.com>
* Translate to typescript.
* Use explicit imports for mocha and jest.
* Remove dependency on @types/mocha as it may conflict with jest types.
* Upgrade jest & replace yaml-jest with custom transformer.
* Fix mocha-webpack bug.
* Prevent jest from priting console outputs.
* Remove the 1000 max_width rule in editorconfig which is obsolete since
prettier 2.3.2 has fixed the key-wrapping problem.
* Let prettier run on yaml files (notably modele-social, but not the translation
files).
* Simplify editorconfig file.
* Let editorconfig trim trailing whitespaces in yaml files, but ignore locale
yaml files.
* Allow prettier on publicodes.
J'ai eu un peu de mal à adapter la configuration Typescript pour le
typage de l'export des workers, mais passer par le paramètre "typeRoot"
du tsconfig semble changer les choses.
* AST API: add AST visitor & iterator
* cycles detection: use AST iterator
* remove dagrejs/graphlib
* cycle extraction: smallest cycle & print in Graphviz dot format
WARNING: a cycle still exists around `entreprise . chiffre d'affaires` see
issue #1524 for a definitive fix.
Auparavant, les modifications sur publicodes ne lancaient pas de rebuild, il
fallait tuer et relancer le process pour que cela marche.
Incidement corrige la fuite mémoire du CTRL+C sur le yarn start
* Ajout de tags meta aux pages /documentation
Pour les moteurs de recherche, et pour les partages sur réseaux sociaux.
A utiliser avec un module de type prerender.io dans le cas de ces
derniers, qui ne font pas tourner le javascript, contrairement à Google.
* Meta description : si pas de description, la question
* MAJ react-helmet dans mon-entreprise
Déplace:
mon-entreprise/source/sites/publi.codes → publicodes/site
mon-entreprise/source/sites/mon-entreprise.fr → mon-entreprise/source/site
La config Webpack du site publicodes reste encore liée à celle de
mon-entreprise.fr, il faudra la dissocier quand nous déplacerons le
projet publicodes dans son propre dépôt.
Utilisation d'un fork en attendant que React 17 soit supporté par
Enzyme.
J'ai essayé rapidement la librairie
https://testing-library.com/docs/react-testing-library/migrate-from-enzyme
vers laquelle certains utilisateurs d'Enzyme semblent maintenant se
tourner, mais la migration est non triviale (alors même que nous n'avons
qu'un seul fichier qui utilise les tests Enzyme !)
Plein de nouveautés et notamment la possibilité de "programmer" les
types chaînes littérales qui nous sera utile par exemple pour vérifier
statiquement la validité d'une *expression* publicode dans
`engine.evaluate`.
https://devblogs.microsoft.com/typescript/announcing-typescript-4-1/
⬆ MAJ ESLint-typescript pour la compatibilité
J'ai involontairement mergé un `it.only` dans #1136 qui désactive tous
les tests sauf un — utile en développement mais pas quelque chose que
l'on veut commiter sur `master`. La règle Eslint bloquera désormais ce
code.
Build a dependencies graph and detect cycles:
* Types and guards for nodes of the ParsedRules AST
* Simple visitor framework for the nodes and their `formule` sub-nodes
* Build a directed graph for dependencies using @dagrejs/graphlib
- Ajoute la possibilité de signer via un écran tactile
- Améliore le parcours du formulaire
- Prends en compte les retours ACOSS
- Ajoute une possibilité d'intégration en iframe (non listée dans les intégrations officielles)
- enlève la librairie react-syntax-highlighting des dépendances de publicodes
- affiche un fallback avec le code source non coloré pendant le chargement de la librairie
Ce, afin de ne pas à avoir à gérer les fichiers importés. Ceci étant dit, c'est une solution temporaire. Dans le futur, il faudrait plutôt se baser sur les balise og des sources
* Use @typescript-eslint/parser
* Add npm/yarn scripts: prettier check and eslint on all files
* Run all of this in CI (along with eslintrc checker)
* Use typescript parser only for ts{x,} files
* Fix test & cypress sub-configs
* Fix .test.js + off explicit-function-return-type
La libraire n'était utilisée qu'une seule fois sans qu'elle soit
vraiment nécessaire. Elle était à l'origine des avertissements
"componentWillMount has been renamed" dans la console.
Avec l'objectif de supporter les sources maps. Je n'ai pas bien compris
si le support est automatique ou s'il faut uploader les source maps
avec sentry/cli.
- Correction de quelques bugs
- Améliration des perfs du studio
- Ajout de la visualisation des variables temporelles dans le studio
- Ajout d'un exemple de régularisation plus complet
- Complète la doc du mécanisme de régularisation
Suite à la crise du coronavirus le gouvernement a élargi le dispositif
d'activité partielle et encouragé son recours massif.
Ce commit contient les modifications suivantes :
* Intégration de l'activité partielle sur le simulateur salarié ;
* Création d'une page /coronavirus incluant un simulateur spécifique pour le
chômage partiel ainsi que des informations générale sur les dispositifs
gouvernementaux. Référencement de cette page sur la page d'accueil et sur
le simulateur salarié ;
* Grosse refacto du calcul de la CSG/CRDS pour y inclure le calcul des revenus
de remplacement. Corrige aussi des erreurs pour la CSG des salariés
bénéficiant de la DFS, et intègre l'exonération de CSG à Mayotte ;
* Légères modifications de la fenêtre « prochaines question » ;
* Affichage d'un placeholder sur les inputs des questions.
Co-authored-by: Johan Girod <johangirod@gmail.com>
* Personnalise la configuration ESLint pour les scripts
* 👽 Déplace la traduction de l'explication SEO
sur le simulateur salarié
* Ajout d'une fonction rule dans sitePaths
Permet de type-checker le nom de la règle pour éviter les liens morts
* 👽 Ajoute un test pour la traduction des unités
* 👽 Traduction BNC
* 👽 fix translations
- Plus d'indications/aides dans l'UI pour expliquer ce que l'on attend
- Version mobile avec la barre de droite en bas
- Ajouter l'intégralité des champs concernés
- Latence quand on clique sur une option
- Gestion des erreurs de saisie
- Navigation au clavier, gestion du focus
Est-ce le bon modèle ?
Tous les éléments à traduire (via la balise <Trans> ou la fonction 't')
sont analysé statiquement. Si il manque une traduction, la PR est bloquée
Ajoute un script de traduction automatique via `yarn run i18n:ui:translate`
Met à jour CONTRIBUTING.md avec les infos sur la traduction
Cette nouvelle section s'accompagne d'un bandeau qui s'affiche quand une
nouvelle version est publiée sur GitHub.
Les données sont téléchargées depuis l'API GitHub en GraphQL au moment
du build du site puis persistées dans un fichier Json statique.
Cela permet l'inférence de type à partir des fichiers js qui ne sont pas
encore convertis en TypeScript.
Par ailleurs suppression des dernières traces de Flow.
Ajout d'options plus strictes pour dans la config tsconfig.js
* Utilisation de la version stable de TypeScript 3.7
* Début de migration du State Redux. Plutôt que de redéfinir les types
en doublon par rapport aux actions et reducers, on utilise les valeurs
retournées par ces fonctions comme source pour les types globaux.
* Modification de tsconfig pour meilleur typage dans VS Code
* Meilleur typage de l'environnement : suppression de @types/node qui
était trop large (contient tout l'environnement serveur), et
remplacement par @types/webpack-env. Par ailleurs typage des variables
d'environnement utilisées.
* Début de migration de l'économie collaborative
* Migration de nombreux composants UI
* Mise à jour de dépendances pour récupérer un meilleur typage
* Ajout d'un hook pour configurer les simulateurs
* Suppression du higher-order component "withSitePaths", on utilise
systématiquement le hook useContext.
L'essentiel de l'application est maintenant migré, reste le moteur !
Outils
======
Ce commit retire le tooling de Flow, et ajoute le support de TypeScript
pour les fichiers .ts et .tsx. Il n'est pas nécessaire de tout migrer
d'un coup ce qui facilite la transition. On garde en effet le
compilateur Babel avec un preset TypeScript (ce qui permet donc de
retirer à la fois les types Flow et TypeScript) plutôt que d'utiliser le
compilateur standard pour la conversion du code. Cela permet aussi de
mieux s'intégrer avec d'autres outils, notamment les test-runners.
Ajout d'une nouvelle commande `yarn run type-check`, intégrée dans
CircleCI.
Par ailleurs ajout du support de l'opérateur ?? pour donner des valeurs
par défaut (nullish-coalescing-operator).
Typage des libraires tierces
============================
Les principales libraires que nous utilisons ont un typage TypeScript de
bon niveau, ce qui facilite l'intégration. J'ai mis à jour react-i18next
et i18next afin de corriger un problème de typage.
Typage du code
==============
Le typage est loin d'être complet dans ce commit, en particulier il
manque les types relatifs au state Redux, ainsi qu'au moteur (règle,
explication). Néanmoins le typage des contextes fonctionne, en
particulier sitePaths (avec un type récursif non trivial !) qui a déjà
permis de détecter un lien mort.
Le typage des "paths" (Components/, Règles/, etc.) fonctionne bien, y
compris avec l'auto-complétion automatique des import par Typescript.
TypeScript se révèle déjà bien agréable dans VSCode (auto-complétion,
refacto, etc.) ! Reste à migrer progressivement le reste du code !
Vu qu'on utilise un serviceworker, lorsque la requête ne passe pas jusqu'au serveur, la redirection n'est pas effective
On parse les règles de redirection netlify coté front et on les ajoute à l'app
Ajout de tests de non-regressions des calculs afin d'éviter de déployer
silencieusement des effets de bord non-désirés dans les règles de calculs.
J'ai ajouté Jest pour sa fonction de snapshot testing qui est
particulièrement adaptée pour ce type de cas (voir #717). J'ai essayé
avec mocha-snapshot sans succès.
J'ai eu un petit peu de mal à configurer Jest, car il n'est pas possible
de ré-utiliser la configuration Webpack, qu'il faut alors dupliquer. C'est
pourquoi j'ai limité l'utilisation de Jest aux seuls tests de snapshot.
À voir s'il y a un intérêt à migrer les tests Mocha vers Jest ultérieurement.
Fixes#717
⬆ MAJ de react-spring vers version 8
Quelques changements d'API. Par ailleurs la version 8 exporte deux modules
l'un avec les "render-props" et l'autres avec les "hooks"
🔥 Suppression de @researchgate/react-intersection-observer
Remplacement par un custom hook
- On utilise un nouveau composant qui se base sur la dernière version de l'api SIRENE
- On sépare les données entre la simulation des cotisations et la création d'entreprise
- On gagne des lignes !