From 6d2553465d9bf4f550ed5a4740cd1f7183dced0e Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Fri, 26 Jul 2024 23:24:41 +0530 Subject: [PATCH] feat: handle user input --- src/components/organisms/RightSidePanel.tsx | 52 ++++++++++++++++----- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/src/components/organisms/RightSidePanel.tsx b/src/components/organisms/RightSidePanel.tsx index 7020b0b0..67a9429f 100644 --- a/src/components/organisms/RightSidePanel.tsx +++ b/src/components/organisms/RightSidePanel.tsx @@ -26,6 +26,8 @@ export const RightSidePanel = ({ pairForEdit }: RightSidePanelProps) => { const [action, setAction] = useState(''); const [isSettingsDisplayed, setIsSettingsDisplayed] = useState(false); const [labels, setLabels] = useState<{ [id: number]: string }>({}); + const [errors, setErrors] = useState<{ [id: number]: string }>({}); + const [confirmedSteps, setConfirmedSteps] = useState<{ [id: number]: boolean }>({}); const { lastAction } = useGlobalInfoStore(); @@ -42,19 +44,36 @@ export const RightSidePanel = ({ pairForEdit }: RightSidePanelProps) => { setIsSettingsDisplayed(true); }; - + const handleLabelChange = (id: number, label: string) => { setLabels(prevLabels => ({ ...prevLabels, [id]: label })); + if (!label.trim()) { + setErrors(prevErrors => ({ ...prevErrors, [id]: 'Label cannot be empty' })); + } else { + setErrors(prevErrors => ({ ...prevErrors, [id]: '' })); + } }; const handleConfirm = (id: number) => { - if (labels[id]) { - updateBrowserStepLabel(id, labels[id]); + const label = labels[id]?.trim(); + if (label) { + updateBrowserStepLabel(id, label); + setConfirmedSteps(prev => ({ ...prev, [id]: true })); + } else { + setErrors(prevErrors => ({ ...prevErrors, [id]: 'Label cannot be empty' })); } }; const handleDiscard = (id: number) => { deleteBrowserStep(id); + setLabels(prevLabels => { + const { [id]: _, ...rest } = prevLabels; + return rest; + }); + setErrors(prevErrors => { + const { [id]: _, ...rest } = prevErrors; + return rest; + }); }; return ( @@ -131,16 +150,25 @@ const handleDiscard = (id: number) => { onChange={(e) => handleLabelChange(step.id, e.target.value)} fullWidth margin="normal" + error={!!errors[step.id]} + helperText={errors[step.id]} + disabled={confirmedSteps[step.id]} /> - Description: {step.value} - - - - + Description: {step.value} + {!confirmedSteps[step.id] && ( + + + + + )} ))}