From e47e8945d8ab5941d9bbb587b1651ffd804f5722 Mon Sep 17 00:00:00 2001 From: Johan Girod Date: Mon, 24 Jul 2023 17:49:54 +0200 Subject: [PATCH] =?UTF-8?q?D=C3=A9sactive=20les=20associations=20pour=20le?= =?UTF-8?q?s=20PLR,=20et=20r=C3=A9pare=20la=20selection=20pour=20les=20pha?= =?UTF-8?q?rmaciens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entreprise/catégorie-juridique.yaml | 2 + .../design-system/field/Radio/Radio.tsx | 40 ++++++++++----- .../choix-du-statut/association.tsx | 49 ++++++++++++++----- .../choix-du-statut/détails-activité.tsx | 5 +- site/source/utils/guichetToPLMétier.ts | 2 +- 5 files changed, 69 insertions(+), 29 deletions(-) diff --git a/modele-social/règles/entreprise/catégorie-juridique.yaml b/modele-social/règles/entreprise/catégorie-juridique.yaml index e898e2f59..55ed8df41 100644 --- a/modele-social/règles/entreprise/catégorie-juridique.yaml +++ b/modele-social/règles/entreprise/catégorie-juridique.yaml @@ -191,6 +191,8 @@ entreprise . catégorie juridique . SELAS: entreprise . catégorie juridique . association: valeur: catégorie juridique = 'association' + par défaut: + non applicable si: activité . nature . libérale . réglementée entreprise . catégorie juridique . autre: valeur: catégorie juridique = 'autre' diff --git a/site/source/design-system/field/Radio/Radio.tsx b/site/source/design-system/field/Radio/Radio.tsx index d579fd358..bbbe784de 100644 --- a/site/source/design-system/field/Radio/Radio.tsx +++ b/site/source/design-system/field/Radio/Radio.tsx @@ -51,7 +51,9 @@ export const RadioSkeleton = (props: RadioProps) => { ref={ref} id={id} /> - {children} + + {children} + ) } @@ -113,7 +115,7 @@ export const RadioButton = styled.span` } ` -export const VisibleRadio = styled.span` +export const VisibleRadio = styled.span<{ $inert?: boolean }>` display: inline-flex; align-items: center; text-align: initial; @@ -121,17 +123,31 @@ export const VisibleRadio = styled.span` margin: 0 calc(-1 * ${({ theme }) => theme.spacings.sm}); border-radius: ${({ theme }) => theme.box.borderRadius}; z-index: 1; - :hover > ${RadioButton}::before { - opacity: 1; - transform: scale(1); - } + ${({ theme, $inert }) => + !$inert + ? css` + :hover > ${RadioButton}::before { + opacity: 1; + transform: scale(1); + } - :hover ${OutsideCircle} { - border-color: ${({ theme }) => - theme.darkMode - ? theme.colors.bases.primary[500] - : theme.colors.bases.primary[700]}; - } + :hover ${OutsideCircle} { + border-color: ${ + theme.darkMode + ? theme.colors.bases.primary[500] + : theme.colors.bases.primary[700] + }; + } : + ` + : css` + &:hover { + background-color: ${theme.colors.extended.grey[200]} !important; + } + &:hover, + &:hover * { + cursor: default !important; + } + `} ` const Label = styled.label<{ htmlFor?: string }>`` diff --git a/site/source/pages/assistants/choix-du-statut/association.tsx b/site/source/pages/assistants/choix-du-statut/association.tsx index 8397965d6..2cb217964 100644 --- a/site/source/pages/assistants/choix-du-statut/association.tsx +++ b/site/source/pages/assistants/choix-du-statut/association.tsx @@ -1,12 +1,13 @@ -import { useEffect } from 'react' +import { useEffect, useMemo } from 'react' import { Trans, useTranslation } from 'react-i18next' import { useDispatch } from 'react-redux' +import { useEngine } from '@/components/utils/EngineContext' import { usePersistingState } from '@/components/utils/persistState' -import { RadioCard, RadioCardGroup } from '@/design-system' +import { Message, RadioCard, RadioCardGroup } from '@/design-system' import { HelpButtonWithPopover } from '@/design-system/buttons' import { Strong } from '@/design-system/typography' -import { Body } from '@/design-system/typography/paragraphs' +import { Body, SmallBody } from '@/design-system/typography/paragraphs' import { batchUpdateSituation } from '@/store/actions/actions' import Layout from './_components/Layout' @@ -14,7 +15,7 @@ import Navigation from './_components/Navigation' export default function Association() { const { t } = useTranslation() - const [currentSelection, setCurrentSelection, reset] = + const [currentSelection, setCurrentSelection, reset, associationPossible] = useAssociationSelection() return ( @@ -63,15 +64,29 @@ export default function Association() { Dans un but non lucratif } - description={t( - 'choix-statut.association.question.non-lucratif.description', - 'Par exemple, en créant une association' - )} + description={ + associationPossible ? ( + t( + 'choix-statut.association.question.non-lucratif.description', + 'Par exemple, en créant une association' + ) + ) : ( + + + + Cette option n'est pas disponible car votre activité ne + peut pas être exercée sous forme d’association + + + + ) + } /> void, - () => void + () => void, + boolean ] { const [{ state: currentSelection }, setCurrentSelection] = usePersistingState<{ state: RadioOption }>('choix-statut:association', { @@ -98,10 +114,17 @@ function useAssociationSelection(): [ }) const dispatch = useDispatch() - + const engine = useEngine() + const associationPossible = useMemo( + () => + engine.evaluate({ + 'est applicable': 'entreprise . catégorie juridique . association', + }).nodeValue === true, + [] + ) const handleChange = (value: RadioOption) => { setCurrentSelection({ state: value }) - + if (!associationPossible) return switch (value) { case 'gagner-argent': dispatch( @@ -131,11 +154,11 @@ function useAssociationSelection(): [ } useEffect(() => { - handleChange(currentSelection) + handleChange(associationPossible ? currentSelection : 'gagner-argent') }, []) const reset = () => { handleChange(undefined) } - return [currentSelection, handleChange, reset] + return [currentSelection, handleChange, reset, associationPossible] } diff --git a/site/source/pages/assistants/choix-du-statut/détails-activité.tsx b/site/source/pages/assistants/choix-du-statut/détails-activité.tsx index ded373537..156d36bb3 100644 --- a/site/source/pages/assistants/choix-du-statut/détails-activité.tsx +++ b/site/source/pages/assistants/choix-du-statut/détails-activité.tsx @@ -51,7 +51,7 @@ export default function DétailsActivité() { ) { setCodeGuichet(defaultCodeGuichet) } - }, [guichetEntries, defaultCodeGuichet]) + }, []) // Wait for the update to be done before rendering the component const isIdle = useEngineIsIdle() @@ -83,7 +83,7 @@ export default function DétailsActivité() { { - updateSituationWithGuichet(codeGuichet) + updateSituationWithGuichet(code) setCodeGuichet(code) }} codeGuichet={codeGuichet} @@ -91,7 +91,6 @@ export default function DétailsActivité() { )} updateSituationWithGuichet(codeGuichet)} nextStepLabel={ guichetEntries?.length === 1 && t('créer.activité-détails.next1', 'Continuer avec cette activité') diff --git a/site/source/utils/guichetToPLMétier.ts b/site/source/utils/guichetToPLMétier.ts index 913a85587..a931e8a18 100644 --- a/site/source/utils/guichetToPLMétier.ts +++ b/site/source/utils/guichetToPLMétier.ts @@ -24,7 +24,7 @@ export function guichetToPLMétier( ? guichet.code === '07140111' ? "'santé . sage-femme'" : "'santé . chirurgien-dentiste'" - : caisse === 'CARPV' + : caisse === 'CAVP' ? "'santé . pharmacien'" : caisse === 'CARPIMKO' ? "'santé . auxiliaire médical'"