diff --git a/site/source/pages/simulateurs/reduction-generale/RéductionGénérale.tsx b/site/source/pages/simulateurs/reduction-generale/RéductionGénérale.tsx index ae65619c6..4bb9ae6fb 100644 --- a/site/source/pages/simulateurs/reduction-generale/RéductionGénérale.tsx +++ b/site/source/pages/simulateurs/reduction-generale/RéductionGénérale.tsx @@ -22,6 +22,7 @@ import { ajusteLaSituation } from '@/store/actions/actions' import { situationSelector } from '@/store/selectors/simulationSelectors' import EffectifSwitch from './components/EffectifSwitch' +import RégularisationSwitch from './components/RégularisationSwitch' import Répartition from './components/Répartition' import Warnings from './components/Warnings' import WarningSalaireTrans from './components/WarningSalaireTrans' @@ -32,6 +33,7 @@ import { MonthState, réductionGénéraleDottedName, reevaluateRéductionGénéraleMoisParMois, + RégularisationMethod, rémunérationBruteDottedName, } from './utils' @@ -56,6 +58,9 @@ export default function RéductionGénéraleSimulation() { setMonthByMonth(unit === '€') }, []) + const [régularisationMethod, setRégularisationMethod] = + useState('progressive') + return ( <> }> @@ -65,10 +70,15 @@ export default function RéductionGénéraleSimulation() { legend="Salaire brut du salarié et réduction générale applicable" toggles={ <> + } + régularisationMethod={régularisationMethod} /> @@ -77,17 +87,14 @@ export default function RéductionGénéraleSimulation() { function RéductionGénéraleSimulationGoals({ monthByMonth, - toggles = ( - <> - - - - ), + toggles, legend, + régularisationMethod, }: { monthByMonth: boolean toggles?: React.ReactNode legend: string + régularisationMethod: RégularisationMethod }) { const engine = useEngine() const dispatch = useDispatch() @@ -109,10 +116,14 @@ function RéductionGénéraleSimulationGoals({ const situation = useSelector(situationSelector) useEffect(() => { - setData((previousData) => - reevaluateRéductionGénéraleMoisParMois(previousData, engine) - ) - }, [engine, situation]) + setData((previousData) => { + return reevaluateRéductionGénéraleMoisParMois( + previousData, + engine, + régularisationMethod + ) + }) + }, [engine, situation, régularisationMethod]) const updateRémunérationBruteAnnuelle = (data: MonthState[]): void => { const rémunérationBruteAnnuelle = data.reduce( diff --git a/site/source/pages/simulateurs/reduction-generale/components/RégularisationSwitch.tsx b/site/source/pages/simulateurs/reduction-generale/components/RégularisationSwitch.tsx new file mode 100644 index 000000000..63c8c1d68 --- /dev/null +++ b/site/source/pages/simulateurs/reduction-generale/components/RégularisationSwitch.tsx @@ -0,0 +1,30 @@ +import { useTranslation } from 'react-i18next' + +import { Radio, ToggleGroup } from '@/design-system' + +import { RégularisationMethod } from '../utils' + +type Props = { + régularisationMethod: RégularisationMethod + setRégularisationMethod: (value: RégularisationMethod) => void +} + +export default function RégularisationSwitch({ + régularisationMethod, + setRégularisationMethod, +}: Props) { + const { t } = useTranslation() + + return ( + { + setRégularisationMethod(value as RégularisationMethod) + }} + aria-label={t('Type de régularisation')} + > + {t('Régularisation annuelle')} + {t('Régularisation progressive')} + + ) +}