From 7d2c02cde8d75c4ed9cb58595a5b38601e50dad8 Mon Sep 17 00:00:00 2001 From: Pierluigi D'Uffizi Date: Tue, 30 Sep 2025 17:21:11 +0200 Subject: [PATCH] [SELC-7423] feat: added live region in UserDataSection in AddUserForm --- .../components/AddUserForm/AddUserForm.tsx | 57 ++++++++++++++++--- .../components/UserDataSection.tsx | 37 +++++++----- 2 files changed, 74 insertions(+), 20 deletions(-) diff --git a/src/pages/addUserFlow/addUser/components/AddUserForm/AddUserForm.tsx b/src/pages/addUserFlow/addUser/components/AddUserForm/AddUserForm.tsx index 28c2283..644f98b 100644 --- a/src/pages/addUserFlow/addUser/components/AddUserForm/AddUserForm.tsx +++ b/src/pages/addUserFlow/addUser/components/AddUserForm/AddUserForm.tsx @@ -1,4 +1,5 @@ import { + Box, Button, FormControlLabel, Grid, @@ -338,6 +339,47 @@ export default function AddUserForm({ }); }; + const LiveRegion = ({ fieldName, message }: { fieldName: string; message?: string }) => { + const [delayedMessage, setDelayedMessage] = useState(''); + + useEffect(() => { + if (!message || message === requiredError) { + setDelayedMessage(''); + return; + } + + const timer = setTimeout(() => { + setDelayedMessage(message); + }, 1000); + + return () => clearTimeout(timer); + }, [message]); + + if (!delayedMessage) { + return null; + } + + return ( + + {delayedMessage} + + ); + }; + const baseTextFieldProps = ( field: keyof PartyUserOnCreation, label: string, @@ -386,6 +428,7 @@ export default function AddUserForm({ validTaxcode={validTaxcode} isMobile={isMobile} t={t} + LiveRegion={LiveRegion} /> )} @@ -446,13 +489,13 @@ export default function AddUserForm({ /> } aria-label={t(titleKey)} - /* - onClick={async () => { - // TODO set isAddINBulkEAFlow only for role admin not operator - setIsAddInBulkEAFlow(value); - await formik.setFieldValue('toAddOnAggregates', value, true); - }} - */ + /* + onClick={async () => { + // TODO set isAddINBulkEAFlow only for role admin not operator + setIsAddInBulkEAFlow(value); + await formik.setFieldValue('toAddOnAggregates', value, true); + }} + */ /> ))} diff --git a/src/pages/addUserFlow/addUser/components/AddUserForm/components/UserDataSection.tsx b/src/pages/addUserFlow/addUser/components/AddUserForm/components/UserDataSection.tsx index 6a91d70..a913f5d 100644 --- a/src/pages/addUserFlow/addUser/components/AddUserForm/components/UserDataSection.tsx +++ b/src/pages/addUserFlow/addUser/components/AddUserForm/components/UserDataSection.tsx @@ -1,4 +1,4 @@ -import { Grid } from '@mui/material'; +import { Box, Grid } from '@mui/material'; import { theme } from '@pagopa/mui-italia'; import { TitleBox } from '@pagopa/selfcare-common-frontend/lib'; import { FormikProps } from 'formik'; @@ -16,6 +16,7 @@ type UserDataSectionProps = { validTaxcode: string | undefined; isMobile: boolean; t: (key: string) => string; + LiveRegion?: React.FC<{ fieldName: string; message?: string }>; }; export const UserDataSection = ({ @@ -24,6 +25,7 @@ export const UserDataSection = ({ validTaxcode, isMobile, t, + LiveRegion, }: UserDataSectionProps) => ( @@ -41,6 +43,7 @@ export const UserDataSection = ({ size="small" {...baseTextFieldProps('taxCode', t('userEdit.addForm.fiscalCode.label'), '', 'uppercase')} /> + {LiveRegion && } - - + + + {LiveRegion && } + + + + {LiveRegion && } + + {LiveRegion && } + {LiveRegion && } );