From bbdfa151c65659278eb084fe8ed343cf192f9040 Mon Sep 17 00:00:00 2001
From: Johan Girod
Date: Thu, 25 Jun 2020 19:41:58 +0200
Subject: [PATCH] =?UTF-8?q?:sparkles:=20Termine=20le=20formulaire=20de=20d?=
=?UTF-8?q?emande=20de=20mobilit=C3=A9=20en=20Europe?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 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)
---
mon-entreprise/package.json | 1 +
.../components/conversation/DateInput.tsx | 3 +
.../conversation/ParagrapheInput.tsx | 33 ++
.../components/conversation/RuleInput.tsx | 7 +
.../select/SelectEuropeCountry.tsx | 53 +++
.../source/components/ui/Checkbox/index.css | 6 +-
.../source/components/ui/Checkbox/index.tsx | 23 +-
mon-entreprise/source/components/ui/index.css | 17 +-
.../iframe-integration-script.js | 10 +-
.../pages/Gérer/DemandeMobilite/EndBlock.tsx | 204 +++++++++++
.../pages/Gérer/DemandeMobilite/FieldsPDF.tsx | 57 +++
.../Montserrat-SemiBold.ttf | Bin
.../Gérer/DemandeMobilite/PDFDocument.tsx | 131 +++++++
.../Roboto-Regular.ttf | Bin
.../formulaire-détachement.yaml | 324 ++++++++++++++++++
.../index.tsx | 87 ++---
.../Gérer/DétachementIndépendant/FormPDF.tsx | 163 ---------
.../formulaire-détachement.yaml | 212 ------------
.../mon-entreprise.fr/pages/Gérer/Home.tsx | 18 +-
.../mon-entreprise.fr/pages/Gérer/index.tsx | 6 +-
.../mon-entreprise.fr/pages/Iframes/index.tsx | 3 +
.../pages/integration/Iframe.tsx | 32 +-
.../sites/mon-entreprise.fr/sitePaths.ts | 4 +-
publicodes/source/format.ts | 2 +-
publicodes/source/grammar.ne | 2 +-
yarn.lock | 28 ++
26 files changed, 959 insertions(+), 467 deletions(-)
create mode 100644 mon-entreprise/source/components/conversation/ParagrapheInput.tsx
create mode 100644 mon-entreprise/source/components/conversation/select/SelectEuropeCountry.tsx
create mode 100644 mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DemandeMobilite/EndBlock.tsx
create mode 100644 mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DemandeMobilite/FieldsPDF.tsx
rename mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/{DétachementIndépendant => DemandeMobilite}/Montserrat-SemiBold.ttf (100%)
create mode 100644 mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DemandeMobilite/PDFDocument.tsx
rename mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/{DétachementIndépendant => DemandeMobilite}/Roboto-Regular.ttf (100%)
create mode 100644 mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DemandeMobilite/formulaire-détachement.yaml
rename mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/{DétachementIndépendant => DemandeMobilite}/index.tsx (66%)
delete mode 100644 mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx
delete mode 100644 mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml
diff --git a/mon-entreprise/package.json b/mon-entreprise/package.json
index 86fc06463..8397d7820 100644
--- a/mon-entreprise/package.json
+++ b/mon-entreprise/package.json
@@ -52,6 +52,7 @@
"react-redux": "^7.0.3",
"react-router-dom": "^5.1.1",
"react-router-hash-link": "^1.2.2",
+ "react-signature-pad-wrapper": "^1.2.11",
"react-spring": "=8.0.27",
"react-syntax-highlighter": "^10.1.1",
"react-transition-group": "^2.2.1",
diff --git a/mon-entreprise/source/components/conversation/DateInput.tsx b/mon-entreprise/source/components/conversation/DateInput.tsx
index 8e74874c8..0ee20b6f2 100644
--- a/mon-entreprise/source/components/conversation/DateInput.tsx
+++ b/mon-entreprise/source/components/conversation/DateInput.tsx
@@ -32,6 +32,9 @@ export default function DateInput({
if (+year < 1700) {
return
}
+ if (year.length > 4) {
+ return
+ }
if ([day, month, year].some(x => Number.isNaN(+x))) {
return
}
diff --git a/mon-entreprise/source/components/conversation/ParagrapheInput.tsx b/mon-entreprise/source/components/conversation/ParagrapheInput.tsx
new file mode 100644
index 000000000..63309e10e
--- /dev/null
+++ b/mon-entreprise/source/components/conversation/ParagrapheInput.tsx
@@ -0,0 +1,33 @@
+import React, { useCallback } from 'react'
+import { debounce } from '../../utils'
+
+export default function ParagrapheInput({
+ onChange,
+ dottedName,
+ value,
+ defaultValue,
+ autoFocus
+}) {
+ const debouncedOnChange = useCallback(debounce(1000, onChange), [])
+
+ return (
+
+
+ )
+}
diff --git a/mon-entreprise/source/components/conversation/RuleInput.tsx b/mon-entreprise/source/components/conversation/RuleInput.tsx
index cc4d7d7a1..bfbbb289c 100644
--- a/mon-entreprise/source/components/conversation/RuleInput.tsx
+++ b/mon-entreprise/source/components/conversation/RuleInput.tsx
@@ -12,6 +12,8 @@ import { useTranslation } from 'react-i18next'
import { DottedName } from 'Rules'
import DateInput from './DateInput'
import TextInput from './TextInput'
+import SelectEuropeCountry from './select/SelectEuropeCountry'
+import ParagrapheInput from './ParagrapheInput'
type Value = string | number | object | boolean | null
export type RuleInputProps = {
@@ -68,6 +70,8 @@ export default function RuleInput({
}
if (rule.API && rule.API === 'commune')
return
+ if (rule.API && rule.API === 'pays européen')
+ return
if (rule.API) throw new Error("Les seules API implémentées sont 'commune'")
if (rule.dottedName == 'contrat salarié . ATMP . taux collectif ATMP')
@@ -130,6 +134,9 @@ export default function RuleInput({
if (rule.type === 'texte') {
return
}
+ if (rule.type === 'paragraphe') {
+ return
+ }
return
}
diff --git a/mon-entreprise/source/components/conversation/select/SelectEuropeCountry.tsx b/mon-entreprise/source/components/conversation/select/SelectEuropeCountry.tsx
new file mode 100644
index 000000000..8bd966c1b
--- /dev/null
+++ b/mon-entreprise/source/components/conversation/select/SelectEuropeCountry.tsx
@@ -0,0 +1,53 @@
+import React from 'react'
+const STATES = [
+ 'Allemagne',
+ 'Autriche',
+ 'Belgique',
+ 'Bulgarie',
+ 'Chypre',
+ 'Croatie',
+ 'Danemark',
+ 'Espagne',
+ 'Estonie',
+ 'Finlande',
+ 'Grèce',
+ 'Hongrie',
+ 'Irlande',
+ 'Islande',
+ 'Italie',
+ 'Lettonie',
+ 'Liechtenstein',
+ 'Lituanie',
+ 'Luxembourg',
+ 'Malte',
+ 'Norvège',
+ 'Pays-Bas',
+ 'Pologne',
+ 'Portugal',
+ 'République Tchèque',
+ 'Roumanie',
+ 'Royaume-Uni',
+ 'Slovaquie',
+ 'Slovénie',
+ 'Suède',
+ 'Suisse'
+]
+
+export default function SelectEuropeCountry({ value, onChange, onSubmit }) {
+ return (
+
+
+
+ )
+}
diff --git a/mon-entreprise/source/components/ui/Checkbox/index.css b/mon-entreprise/source/components/ui/Checkbox/index.css
index e4d8d4457..ab176d31a 100644
--- a/mon-entreprise/source/components/ui/Checkbox/index.css
+++ b/mon-entreprise/source/components/ui/Checkbox/index.css
@@ -49,14 +49,14 @@
.ui__.checkbox:hover svg {
stroke: var(--color);
}
-.ui__.checkbox-input:checked + .ui__.checkbox svg {
+.ui__.checkbox-input:checked + label .ui__.checkbox svg {
stroke: var(--color);
}
-.ui__.checkbox-input:checked + .ui__.checkbox svg path {
+.ui__.checkbox-input:checked + label .ui__.checkbox svg path {
stroke-dashoffset: 60;
transition: all 0.15s linear;
}
-.ui__.checkbox-input:checked + .ui__.checkbox svg polyline {
+.ui__.checkbox-input:checked + label .ui__.checkbox svg polyline {
stroke-dashoffset: 42;
transition: all 0.1s linear;
transition-delay: 0.075s;
diff --git a/mon-entreprise/source/components/ui/Checkbox/index.tsx b/mon-entreprise/source/components/ui/Checkbox/index.tsx
index 372bcae57..58335b039 100644
--- a/mon-entreprise/source/components/ui/Checkbox/index.tsx
+++ b/mon-entreprise/source/components/ui/Checkbox/index.tsx
@@ -1,7 +1,9 @@
import React from 'react'
import './index.css'
-export default function Checkbox(props: React.ComponentProps<'input'>) {
+export default function Checkbox(
+ props: React.ComponentProps<'input'> & { label?: string }
+) {
return (
<>
) {
style={{ display: 'none' }}
{...props}
/>
-
+
+
+ Ce document nécessite votre signature {emoji('✍️')}
+
+
+ Nous vous suggérons d'utiliser un appareil avec écran tactile pour
+ compléter ce formulaire (téléphone, tablette, etc.).{' '}
+
+
+ Autremenent, il vous faudra imprimer, signer et scanner le document
+ généré.
+
+
>
)
@@ -33,7 +48,12 @@ export default function FormulaireDétachementIndépendant() {
const useFields = (engine: Engine, fieldNames: Array) => {
const fields = fieldNames
.map(name => engine.evaluate(name))
- .filter(node => node.isApplicable !== false && node.isApplicable !== null)
+ .filter(
+ node =>
+ node.isApplicable !== false &&
+ node.isApplicable !== null &&
+ (node.question || node.type || node.API)
+ )
return fields
}
@@ -79,20 +99,21 @@ function FormulairePublicodes({ engine }) {
`}
>
{field.question ? (
-
{field.question}
-
+
) : (
{field.title}
)}{' '}
{field.description && (
-
+
+ {field.title}
-
+
)}
))}
-
- Générer la demande
-
- {isMissingValues && (
-
- Vous devez compléter l'intégralité du formulaire pour générer la
- demande.{' '}
-
- )}
+
+
+
)
}
-
-const LazyPDFDownloadLink = React.lazy(() => import('./FormPDF'))
-function LazyPDFButton({ fields, className, disabled, children }) {
- const fieldsDebounced = useDebounce(fields.slice(1), 1000)
-
- return (
-
- {children}
-
- }
- >
-
- {children}
-
-
- )
-}
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx
deleted file mode 100644
index 57910d7df..000000000
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx
+++ /dev/null
@@ -1,163 +0,0 @@
-import {
- Document,
- Page,
- Text,
- View,
- StyleSheet,
- Font,
- PDFViewer,
- PDFDownloadLink
-} from '@react-pdf/renderer'
-import React from 'react'
-import robotoUrl from './Roboto-Regular.ttf'
-import montserratUrl from './Montserrat-SemiBold.ttf'
-import { formatValue } from 'publicodes'
-import emoji from 'react-easy-emoji'
-
-// function FormPDFViewer({ fields, title, description }) {
-// return (
-//
-// )
-// }
-
-export default function FormPDFDownloadLink({
- fields,
- title,
- className,
- description,
- fileName,
- disabled,
- children
-}) {
- if (disabled) {
- return (
-
- )
- }
- return (
-
- }
- fileName={fileName}
- className={className}
- >
- {({ blob, url, loading, error }) => children}
-
- )
- // } fileName="somename.pdf">
- // {({ blob, url, loading, error }) => (loading ? 'Loading document...' : 'Download now!')}
- //
-}
-
-function FormPDF({ fields, title, description }) {
- return (
-
-
-
- {title}
- {description}
-
- {fields.map(field => (
-
- {field.type === 'groupe' ? (
- <>
-
- {field.title}{' '}
- {field.note && (
- ({field.note})
- )}
-
- >
- ) : (
- <>
-
- {field.question ?? field.title}{' '}
- {field.note && (
- ({field.note})
- )}
-
- {field.nodeValue != null && (
- {formatValue(field)}
- )}
- >
- )}
-
- ))}
-
-
- )
-}
-
-Font.register({
- family: 'Roboto',
- src: robotoUrl
-})
-
-Font.register({
- family: 'Montserrat',
- src: montserratUrl
-})
-const styles = StyleSheet.create({
- body: {
- paddingTop: 35,
- color: '#18457B',
- lineHeight: 1.5,
- paddingBottom: 65,
- paddingHorizontal: 35
- },
- fieldNumber: {
- opacity: 0.7
- },
- title: {
- fontSize: 20,
- marginBottom: 20,
- fontFamily: 'Montserrat'
- },
- description: {
- fontFamily: 'Roboto',
- marginBottom: 12,
- fontSize: 14
- },
- subtitle: {
- paddingTop: 10,
- fontFamily: 'Montserrat',
- fontSize: 16
- },
- field: {
- marginBottom: 12,
- lineHeight: 1.2
- },
- name: {
- fontSize: 11,
- marginBottom: 4,
- opacity: 0.7,
- fontFamily: 'Roboto'
- },
- value: {
- fontSize: 14,
- fontFamily: 'Roboto'
- }
-})
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml
deleted file mode 100644
index 971685a8d..000000000
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml
+++ /dev/null
@@ -1,212 +0,0 @@
-coordonnées assuré:
- titre: Vos coordonnées
- type: groupe
- formule: oui
- note: 1
-coordonnées assuré . nom:
- type: texte
- note: 1.2
-coordonnées assuré . prénoms:
- type: texte
- note: 1.3
-coordonnées assuré . nationalité:
- type: texte
- note: 1.6
-coordonnées assuré . date de naissance:
- type: date
- note: 1.5
-coordonnées assuré . commune de naissance:
- API: commune
- note: 1.7
-coordonnées assuré . numéro de sécurité sociale:
- type: texte
- note: 1.1
-coordonnées assuré . organisme urssaf:
- type: texte
- description: >
- Nom de l'organisme Urssaf dont vous relevez en france
-
-coordonnées assuré . domicile personnel:
- type: groupe
- formule: oui
- note: 1.8
-coordonnées assuré . domicile personnel . adresse:
- type: texte
- note: 1.9.1
-coordonnées assuré . domicile personnel . commune:
- API: commune
- note: 1.9.2 / 1.9.3
-
-activité france:
- note: 4 / 4.1.2
- type: groupe
- formule: oui
- titre: Votre activité indépendante en France
-activité france . SIREN:
- note: 4.2
- type: texte
-activité france . nom:
- note: 4.3
- titre: Nom de l'entreprise
- type: texte
-activité france . adresse:
- note: 4.4.1
- type: texte
-activité france . commune:
- API: commune
- note:: 4.4.3 / 4.4.4
-
-demande:
- question: Quelle demande souhaitez-vous effectuer ?
- formule:
- une possibilité:
- choix obligatoire: oui
- possibilités:
- - détachement
- - activité transfrontalière simultanée
-
-demande . détachement:
- note: 3.3
- type: groupe
- formule: oui
- applicable si: demande = 'détachement'
- description: >
- Vous vous détachez temporairement dans un autre état (pays) de l’union
- europeenne (ou eee ou suisse).
-
-demande . détachement . infrastructure sauvegardée:
- question: >
- Pendant votre travail en dehors de la France, l'infrastructure de votre
- entreprise en France, qui est nécessaire pour poursuivre votre travail en
- France après votre retour, reste-elle en place ?
-
-demande . détachement . activité identique:
- question: >
- L'activité que vous exercez temporairement dans un autre Etat membre
- est-elle la même que celle que vous exercez en France ?
-
-demande . détachement . activité:
- titre: Activité non salarié dans le pays étranger
- type: groupe
- formule: oui
-demande . détachement . activité . nature:
- titre: Nature de l'activité
- type: texte
- applicable si: activité identique = non
- description: >
- La nature de l’activité pendant la période de détachement (ex: plombier)
-demande . détachement . activité . localisation:
- type: groupe
- formule: oui
-demande . détachement . activité . localisation . pays:
- type: texte
-demande . détachement . activité . localisation . adresse:
- type: texte
-demande . détachement . activité . localisation . code postal:
- type: texte
-demande . détachement . activité . localisation . commune:
- type: texte
-demande . détachement . période:
- type: groupe
- formule: oui
- titre: Période du détachement
-demande . détachement . période . date de début:
- type: date
-demande . détachement . période . date de fin:
- type: date
-
-demande . activité transfrontalière simultanée:
- note: 3.4
- applicable si: demande = 'activité transfrontalière simultanée'
- type: groupe
- formule: oui
- description: >
- Vous êtes actif en tant qu'indépendant en France et travaillez également
- dans un ou plusieurs autres Etats membres de l'Espace Economique Européen
-
-demande . activité transfrontalière simultanée . indépendant hors France:
- question: >
- Êtes-vous actif en tant qu'indépendant dans un pays autre que la France ?
-
-demande . activité transfrontalière simultanée . pourcentage en France:
- applicable si: indépendant hors France
- question: >
- Est-ce que votre activité en France représente au moins 25% de votre
- temps de travail global et/ou de votre rémunération / revenu ?
-
-demande . activité transfrontalière simultanée . nombre pays:
- unité: pays
- applicable si: indépendant hors France
- question: >
- Dans combien de pays (autre que la France) exercez vous une activité
- non salariée ?
- contrôles:
- - si: nombre pays > 3
- message: >
- Ce formulaire ne permet pas de déclarer une activité dans plus de
- 3 pays
- niveau: avertissement
- - si: nombre pays < 1
- message: >
- Vous devez déclarer un pays au moins
- niveau: avertissement
-
-demande . activité transfrontalière simultanée . pays 1:
- type: groupe
- applicable si: nombre pays >= 1
- formule: oui
-demande . activité transfrontalière simultanée . pays 1 . pays:
- type: texte
-demande . activité transfrontalière simultanée . pays 1 . adresse:
- type: texte
-demande . activité transfrontalière simultanée . pays 1 . code postal:
- type: texte
-demande . activité transfrontalière simultanée . pays 1 . commune:
- type: texte
-demande . activité transfrontalière simultanée . pays 1 . date de début:
- titre: date de début d'activité dans ce pays
- type: date
-demande . activité transfrontalière simultanée . pays 1 . pourcentage:
- question: >
- Est-ce que votre activité dans ce pays représente au moins 25% de votre
- temps de travail global et/ou de votre rémunération / revenu ?
-
-demande . activité transfrontalière simultanée . pays 2:
- type: groupe
- applicable si: nombre pays >= 2
- formule: oui
-demande . activité transfrontalière simultanée . pays 2 . pays:
- type: texte
-demande . activité transfrontalière simultanée . pays 2 . adresse:
- type: texte
-demande . activité transfrontalière simultanée . pays 2 . code postal:
- type: texte
-demande . activité transfrontalière simultanée . pays 2 . commune:
- type: texte
-demande . activité transfrontalière simultanée . pays 2 . date de début:
- titre: date de début d'activité dans ce pays
- type: date
-demande . activité transfrontalière simultanée . pays 2 . pourcentage:
- question: >
- Est-ce que votre activité dans ce pays représente au moins 25% de votre
- temps de travail global et/ou de votre rémunération / revenu ?
-
-demande . activité transfrontalière simultanée . pays 3:
- type: groupe
- applicable si: nombre pays >= 3
- formule: oui
-demande . activité transfrontalière simultanée . pays 3 . pays:
- type: texte
-demande . activité transfrontalière simultanée . pays 3 . adresse:
- type: texte
-demande . activité transfrontalière simultanée . pays 3 . code postal:
- type: texte
-demande . activité transfrontalière simultanée . pays 3 . commune:
- type: texte
-demande . activité transfrontalière simultanée . pays 3 . date de début:
- titre: date de début d'activité dans ce pays
- type: date
-demande . activité transfrontalière simultanée . pays 3 . pourcentage:
- question: >
- Est-ce que votre activité dans ce pays représente au moins 25% de votre
- temps de travail global et/ou de votre rémunération / revenu ?
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/Home.tsx b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/Home.tsx
index 9d4d72bd3..2cdc9a360 100644
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/Home.tsx
+++ b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/Home.tsx
@@ -45,7 +45,7 @@ const infereRégimeFromCompanyDetails = (company: Company | null) => {
}
export default function SocialSecurity() {
- const { t } = useTranslation()
+ const { t, i18n } = useTranslation()
const company = useSelector(
(state: RootState) => state.inFranceApp.existingCompany
)
@@ -189,6 +189,22 @@ export default function SocialSecurity() {
}
`}
>
+ {régime === 'indépendant' &&
+ i18n.language === 'fr' &&
+ process.env.HEAD !== 'master' && (
+
+
+ Exporter son activité en Europe
+
+ Le formulaire pour effectuer une demande de mobilité en
+ Europe (détachement ou pluriactivité)
+
+
+
+ )}
{!company?.isAutoEntrepreneur && (
>
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Iframes/index.tsx b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Iframes/index.tsx
index 6aa7508df..ef61c0e85 100644
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Iframes/index.tsx
+++ b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Iframes/index.tsx
@@ -7,6 +7,7 @@ import SimulateurArtisteAuteur from '../Simulateurs/ArtisteAuteur'
import SimulateurAssimiléSalarié from '../Simulateurs/AssimiléSalarié'
import SimulateurAutoEntrepreneur from '../Simulateurs/AutoEntrepreneur'
import SimulateurIndépendant from '../Simulateurs/Indépendant'
+import DemandeMobilite from '../Gérer/DemandeMobilite'
import IframeFooter from './IframeFooter'
import SimulateurEmbauche from './SimulateurEmbauche'
@@ -42,6 +43,8 @@ export default function Iframes() {
path="/iframes/simulateur-chomage-partiel"
component={SimulateurChômagePartiel}
/>
+
+
{inIframe() && }
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Iframe.tsx b/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Iframe.tsx
index 15238a279..792406221 100644
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Iframe.tsx
+++ b/mon-entreprise/source/sites/mon-entreprise.fr/pages/integration/Iframe.tsx
@@ -48,10 +48,8 @@ function IntegrationCustomizer() {
margin: auto;
.ui__.left-side {
- width: 40%;
- padding-right: 25px;
- margin-right: 35px;
- border-right: 2px solid var(--lighterColor);
+ width: 30%;
+ padding-right: 1rem;
select {
padding: 7px;
@@ -59,7 +57,8 @@ function IntegrationCustomizer() {
}
.ui__.right-side {
- width: 60%;
+ width: 70%;
+ padding-left: 1rem;
}
@media (max-width: 800px) {
@@ -127,14 +126,23 @@ function IntegrationCustomizer() {
Prévisualisation
-
-
-
-
-
+
+
+
+
+
+
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/sitePaths.ts b/mon-entreprise/source/sites/mon-entreprise.fr/sitePaths.ts
index 17f6ab5f6..6203f75ed 100644
--- a/mon-entreprise/source/sites/mon-entreprise.fr/sitePaths.ts
+++ b/mon-entreprise/source/sites/mon-entreprise.fr/sitePaths.ts
@@ -45,7 +45,7 @@ const sitePathsFr = {
embaucher: '/embaucher',
sécuritéSociale: '/sécurité-sociale',
déclarationIndépendant: '/aide-declaration-independants',
- formulaireDétachement: '/demande-détachement'
+ formulaireMobilité: '/demande-mobilité'
},
simulateurs: {
index: '/simulateurs',
@@ -95,7 +95,7 @@ const sitePathsEn = {
embaucher: '/hiring',
sécuritéSociale: '/social-security',
déclarationIndépendant: '/declaration-aid-independent',
- formulaireDétachement: '/posting-demand'
+ formulaireMobilité: '/posting-demand'
},
simulateurs: {
index: '/simulators',
diff --git a/publicodes/source/format.ts b/publicodes/source/format.ts
index 6f3d293c8..43446b5d6 100644
--- a/publicodes/source/format.ts
+++ b/publicodes/source/format.ts
@@ -148,7 +148,7 @@ export function formatValue(
return '-'
}
return typeof nodeValue === 'string'
- ? capitalise0(nodeValue)
+ ? capitalise0(nodeValue.replace('\\n', '\n'))
: typeof value === 'object' && 'API' in value && value.API === 'commune'
? formatCommune(nodeValue as Commune)
: typeof nodeValue === 'object'
diff --git a/publicodes/source/grammar.ne b/publicodes/source/grammar.ne
index 2e8508bf7..a6b679fb3 100644
--- a/publicodes/source/grammar.ne
+++ b/publicodes/source/grammar.ne
@@ -16,7 +16,7 @@ const moo = require("moo");
const dateRegexp = `(?:(?:0?[1-9]|[12][0-9]|3[01])\\/)?(?:0?[1-9]|1[012])\\/\\d{4}`
const letter = '[a-zA-Z\u00C0-\u017F€$%]';
-const letterOrNumber = '[a-zA-Z\u00C0-\u017F0-9\']';
+const letterOrNumber = '[a-zA-Z\u00C0-\u017F0-9\'°]';
const word = `${letter}(?:[-']?${letterOrNumber}+)*`;
const wordOrNumber = `(?:${word}|${letterOrNumber}+)`
const words = `${word}(?:[\\s]?${wordOrNumber}+)*`
diff --git a/yarn.lock b/yarn.lock
index 2a7a3306f..2cc859d1b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -847,6 +847,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.9.6":
+ version "7.10.3"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364"
+ integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
version "7.8.6"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
@@ -9992,6 +9999,17 @@ react-side-effect@^1.1.0:
dependencies:
shallowequal "^1.0.1"
+react-signature-pad-wrapper@^1.2.11:
+ version "1.2.11"
+ resolved "https://registry.yarnpkg.com/react-signature-pad-wrapper/-/react-signature-pad-wrapper-1.2.11.tgz#fb017012611e2e5c09b5210d35d56c1180f19137"
+ integrity sha512-SPa5LtK6K9gvaAUx1w7Qek8U1GTeSv4mGWqZUpj7bDCzAKkM4g4XIXx6V89odV8VGVWHjjllRzkcFM6talmOsA==
+ dependencies:
+ "@babel/runtime" "^7.9.6"
+ prop-types "^15.7.2"
+ react "^16.13.1"
+ signature_pad "^2.3.2"
+ throttle-debounce "^2.1.0"
+
react-smooth@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/react-smooth/-/react-smooth-1.0.5.tgz#94ae161d7951cdd893ccb7099d031d342cb762ad"
@@ -10927,6 +10945,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
+signature_pad@^2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/signature_pad/-/signature_pad-2.3.2.tgz#ca7230021c89cedeead27b33d8d16ff254e5f04a"
+ integrity sha512-peYXLxOsIY6MES2TrRLDiNg2T++8gGbpP2yaC+6Ohtxr+a2dzoaqWosWDY9sWqTAAk6E/TyQO+LJw9zQwyu5kA==
+
simple-concat@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
@@ -11672,6 +11695,11 @@ throat@^4.0.0:
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=
+throttle-debounce@^2.1.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-2.2.1.tgz#fbd933ae6793448816f7d5b3cae259d464c98137"
+ integrity sha512-i9hAVld1f+woAiyNGqWelpDD5W1tpMroL3NofTz9xzwq6acWBlO2dC8k5EFSZepU6oOINtV5Q3aSPoRg7o4+fA==
+
throttleit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"