diff --git a/src/components/organisms/BrowserWindow.tsx b/src/components/organisms/BrowserWindow.tsx index 929eb06f..f14c7024 100644 --- a/src/components/organisms/BrowserWindow.tsx +++ b/src/components/organisms/BrowserWindow.tsx @@ -216,7 +216,7 @@ export const BrowserWindow = () => { const newField: TextStep = { id: Date.now(), type: 'text', - label: ``, + label: `Label ${Object.keys(fields).length + 1}`, data: data, selectorObj: { selector: highlighterData.selector, @@ -228,14 +228,14 @@ export const BrowserWindow = () => { setFields(prevFields => { const updatedFields = { ...prevFields, - [newField.label]: newField + [newField.id]: newField }; console.log(updatedFields) return updatedFields; }); if (listSelector) { - addListStep(listSelector, { ...fields, [newField.label]: newField }, currentListId, { type: '', selector: paginationSelector }); + addListStep(listSelector, { ...fields, [newField.id]: newField }, currentListId, { type: '', selector: paginationSelector }); } } else { @@ -276,7 +276,7 @@ export const BrowserWindow = () => { const newField: TextStep = { id: Date.now(), type: 'text', - label: ``, + label: `Label ${Object.keys(fields).length + 1}`, data: data, selectorObj: { selector: selectedElement.selector, @@ -288,17 +288,14 @@ export const BrowserWindow = () => { setFields(prevFields => { const updatedFields = { ...prevFields, - [newField.label]: newField + [newField.id]: newField }; - console.log(updatedFields) - return updatedFields; }); if (listSelector) { - addListStep(listSelector, { ...fields, [newField.label]: newField }, currentListId, { type: '', selector: paginationSelector }); + addListStep(listSelector, { ...fields, [newField.id]: newField }, currentListId, { type: '', selector: paginationSelector }); } - } } } diff --git a/src/components/organisms/RightSidePanel.tsx b/src/components/organisms/RightSidePanel.tsx index 36986203..0cf0cb90 100644 --- a/src/components/organisms/RightSidePanel.tsx +++ b/src/components/organisms/RightSidePanel.tsx @@ -41,6 +41,10 @@ export const RightSidePanel: React.FC = ({ onFinishCapture const handleTextLabelChange = (id: number, label: string, listId?: number, fieldKey?: string) => { if (listId !== undefined && fieldKey !== undefined) { + // Prevent editing if the field is confirmed + if (confirmedListTextFields[listId]?.[fieldKey]) { + return; + } // This is a text field within a list step updateListTextFieldLabel(listId, fieldKey, label); } else { @@ -162,7 +166,7 @@ export const RightSidePanel: React.FC = ({ onFinishCapture return settings; }, [browserSteps, paginationType, limitType, customLimit]); - + const resetListState = useCallback(() => { setShowPaginationOptions(false); @@ -238,10 +242,33 @@ export const RightSidePanel: React.FC = ({ onFinishCapture const handlePaginationSettingSelect = (option: PaginationType) => { updatePaginationType(option); - if (['clickNext', 'clickLoadMore'].includes(option)) { - } }; + const discardGetText = useCallback(() => { + stopGetText(); + browserSteps.forEach(step => { + if (step.type === 'text') { + deleteBrowserStep(step.id); + } + }); + setTextLabels({}); + setErrors({}); + setConfirmedTextSteps({}); + notify('info', 'Capture Text steps discarded'); + }, [browserSteps, stopGetText, deleteBrowserStep]); + + const discardGetList = useCallback(() => { + stopGetList(); + browserSteps.forEach(step => { + if (step.type === 'list') { + deleteBrowserStep(step.id); + } + }); + resetListState(); + notify('info', 'Capture List steps discarded'); + }, [browserSteps, stopGetList, deleteBrowserStep, resetListState]); + + const captureScreenshot = (fullPage: boolean) => { const screenshotSettings: ScreenshotSettings = { fullPage, @@ -272,7 +299,7 @@ export const RightSidePanel: React.FC = ({ onFinishCapture captureStage === 'pagination' ? 'Confirm Pagination' : captureStage === 'limit' ? 'Confirm Limit' : 'Finish Capture'} - + )} @@ -327,7 +354,7 @@ export const RightSidePanel: React.FC = ({ onFinishCapture <> - + } @@ -405,6 +432,7 @@ export const RightSidePanel: React.FC = ({ onFinishCapture fullWidth margin="normal" InputProps={{ + readOnly: confirmedListTextFields[field.id]?.[key], startAdornment: ( diff --git a/src/context/browserSteps.tsx b/src/context/browserSteps.tsx index c2cab814..4af37df0 100644 --- a/src/context/browserSteps.tsx +++ b/src/context/browserSteps.tsx @@ -91,6 +91,7 @@ export const BrowserStepsProvider: React.FC<{ children: React.ReactNode }> = ({ } }); }; + const addScreenshotStep = (fullPage: boolean) => { setBrowserSteps(prevSteps => [ ...prevSteps,