From 27a6d186eaabbfa302bdebac6f09d0d6a2282340 Mon Sep 17 00:00:00 2001 From: Manas Kenge <110519001+Manas-Kenge@users.noreply.github.com> Date: Fri, 29 Aug 2025 00:27:20 +0530 Subject: [PATCH 1/4] Added delete buttons for state and transitions --- .../src/components/States/State.tsx | 36 +++++++++++++++++- .../src/components/Transitions/Transition.tsx | 38 ++++++++++++++++++- .../src/components/Workflow/WorkflowView.tsx | 19 +++++++++- 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx index 846af94..da31ccf 100644 --- a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx @@ -2,6 +2,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Accordion, + Button, Disclosure, DisclosureTitle, DisclosurePanel, @@ -11,8 +12,12 @@ import { Picker, Item, ProgressCircle, + AlertDialog, + DialogTrigger, } from '@adobe/react-spectrum'; -import { listStates } from '../../actions/state'; +import Icon from '@plone/volto/components/theme/Icon/Icon'; +import deleteIcon from '@plone/volto/icons/delete.svg'; +import { listStates, deleteState } from '../../actions/state'; import { listTransitions } from '../../actions/transition'; import PropertiesTab from './Tabs/PropertiesTab'; import TransitionsTab from './Tabs/TransitionsTab'; @@ -137,6 +142,17 @@ const State: React.FC = ({ }); }, []); + const handleDeleteState = useCallback( + (stateId: string) => { + dispatch(deleteState(workflowId, stateId)); + setSelectedStateId(null); + setLocalStateData(null); + setInitialStateData(null); + onDataChange(null); + }, + [dispatch, workflowId, onDataChange], + ); + if (isLoadingData && !statesInfo.loaded) { return ; } @@ -180,6 +196,24 @@ const State: React.FC = ({ isDisabled={areTabsDisabled} /> + + + + handleDeleteState(selectedStateId)} + > + Are you sure you want to delete this state? This action + cannot be undone. + + + Transitions diff --git a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx index f3da088..4971d71 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx @@ -11,8 +11,13 @@ import { Item, Heading, ProgressCircle, + Button, + AlertDialog, + DialogTrigger, } from '@adobe/react-spectrum'; -import { listTransitions } from '../../actions/transition'; +import Icon from '@plone/volto/components/theme/Icon/Icon'; +import deleteIcon from '@plone/volto/icons/delete.svg'; +import { listTransitions, deleteTransition } from '../../actions/transition'; import { listStates } from '../../actions/state'; import PropertiesTab from './Tabs/PropertiesTab'; import GuardsTab from './Tabs/GuardsTab'; @@ -144,6 +149,17 @@ const Transition: React.FC = ({ setSelectedTransitionId(key as string); }; + const handleDeleteTransition = useCallback( + (transitionId: string) => { + dispatch(deleteTransition(workflowId, transitionId)); + setSelectedTransitionId(null); + setLocalTransitionData(null); + setInitialTransitionData(null); + onDataChange(null); + }, + [dispatch, workflowId, onDataChange], + ); + const propertiesSchema = useMemo( () => ({ title: 'Transition Properties', @@ -221,6 +237,26 @@ const Transition: React.FC = ({ isDisabled={isTabDisabled} /> + + + + + handleDeleteTransition(selectedTransitionId) + } + > + Are you sure you want to delete this transition? This action + cannot be undone. + + + Guard Configuration diff --git a/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx b/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx index fafb4ee..bc42a4e 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx @@ -57,10 +57,19 @@ const WorkflowView: React.FC = ({ const isSavingWorkflow = useAppSelector( (state) => state.workflow.operation.loading, ); + const isDeletingState = useAppSelector( + (state) => state.state.delete?.loading || false, + ); + const isDeletingTransition = useAppSelector( + (state) => state.transition.delete?.loading || false, + ); const isSaving = isSavingState || isSavingTransition || isSavingWorkflow; + const isDeleting = isDeletingState || isDeletingTransition; const prevIsSaving = useRef(isSaving); + const prevIsDeleting = useRef(isDeleting); + useEffect(() => { if (prevIsSaving.current && !isSaving) { toast.success(); @@ -69,6 +78,14 @@ const WorkflowView: React.FC = ({ prevIsSaving.current = isSaving; }, [isSaving, dispatch, workflowId]); + useEffect(() => { + if (prevIsDeleting.current && !isDeleting) { + toast.success(); + dispatch(getWorkflow(workflowId)); + } + prevIsDeleting.current = isDeleting; + }, [isDeleting, dispatch, workflowId]); + const handleDataChange = useCallback( (payload: any | null, kind: 'workflow' | 'state' | 'transition') => { if (payload) { @@ -171,7 +188,7 @@ const WorkflowView: React.FC = ({ From 2b291d0f8848fc217f72cc2ad61cb17cc19df5bb Mon Sep 17 00:00:00 2001 From: Manas Kenge <110519001+Manas-Kenge@users.noreply.github.com> Date: Fri, 29 Aug 2025 12:46:14 +0530 Subject: [PATCH 2/4] use widget --- .../src/components/States/State.tsx | 40 +++++----------- .../src/components/Transitions/Transition.tsx | 1 - .../src/components/Widgets/Buttons.tsx | 48 +++++++++++++++++++ .../volto-workflow-manager/src/index.js | 8 ++-- 4 files changed, 64 insertions(+), 33 deletions(-) create mode 100644 frontend/packages/volto-workflow-manager/src/components/Widgets/Buttons.tsx diff --git a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx index da31ccf..073abd8 100644 --- a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx @@ -2,7 +2,6 @@ import React, { useState, useEffect, useCallback } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Accordion, - Button, Disclosure, DisclosureTitle, DisclosurePanel, @@ -12,11 +11,7 @@ import { Picker, Item, ProgressCircle, - AlertDialog, - DialogTrigger, } from '@adobe/react-spectrum'; -import Icon from '@plone/volto/components/theme/Icon/Icon'; -import deleteIcon from '@plone/volto/icons/delete.svg'; import { listStates, deleteState } from '../../actions/state'; import { listTransitions } from '../../actions/transition'; import PropertiesTab from './Tabs/PropertiesTab'; @@ -32,10 +27,19 @@ const propertiesSchema = { { id: 'default', title: 'Default', - fields: ['title', 'description', 'isInitialState'], + fields: ['delete_action', 'title', 'description', 'isInitialState'], }, ], properties: { + delete_action: { + widget: 'action', + title: '', + buttonTitle: '', + dialogTitle: 'Delete State', + dialogText: + 'Are you sure you want to delete this state? This action cannot be undone.', + onPrimaryAction: () => handleDeleteState(selectedStateId), + }, title: { title: 'Title', type: 'string', @@ -144,13 +148,11 @@ const State: React.FC = ({ const handleDeleteState = useCallback( (stateId: string) => { + if (!stateId) return; dispatch(deleteState(workflowId, stateId)); setSelectedStateId(null); - setLocalStateData(null); - setInitialStateData(null); - onDataChange(null); }, - [dispatch, workflowId, onDataChange], + [dispatch, workflowId], ); if (isLoadingData && !statesInfo.loaded) { @@ -196,24 +198,6 @@ const State: React.FC = ({ isDisabled={areTabsDisabled} /> - - - - handleDeleteState(selectedStateId)} - > - Are you sure you want to delete this state? This action - cannot be undone. - - - Transitions diff --git a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx index 4971d71..ade13cb 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx @@ -241,7 +241,6 @@ const Transition: React.FC = ({ { + const { + isDisabled, + buttonTitle = 'Delete', + variant = 'negative', + icon = deleteIcon, + dialogTitle = 'Confirm Action', + dialogText = 'Are you sure you want to proceed? This action cannot be undone.', + onPrimaryAction, + } = props; + + if (!onPrimaryAction) { + return null; + } + + return ( + + + + + {dialogText} + + + + ); +}; + +export default Buttons; diff --git a/frontend/packages/volto-workflow-manager/src/index.js b/frontend/packages/volto-workflow-manager/src/index.js index 27f41f0..f975d84 100644 --- a/frontend/packages/volto-workflow-manager/src/index.js +++ b/frontend/packages/volto-workflow-manager/src/index.js @@ -1,6 +1,8 @@ import WorkflowControlPanel from './components/Controlpanel/WorkflowPanel'; import { workflow, state, transition } from './reducers'; +import Buttons from './components/Widgets/Buttons'; import './theme/main.scss'; + const applyConfig = (config) => { config.settings.isMultilingual = false; config.settings.supportedLanguages = ['en']; @@ -28,10 +30,8 @@ const applyConfig = (config) => { state, transition, }; - config.views = { - ...config.views, - contentTypesViews: {}, - }; + config.widgets.widget.action = Buttons; + return config; }; From 492558db57a2202ecf50e00905e2b1ab54f905fc Mon Sep 17 00:00:00 2001 From: Tishasoumya-02 Date: Fri, 29 Aug 2025 16:58:30 +0530 Subject: [PATCH 3/4] fix: add the delete icon inside the blocksdataform for state and transitions --- .../src/components/States/State.tsx | 24 +++++------ .../components/States/Tabs/PropertiesTab.tsx | 39 ++++++++++++++--- .../Transitions/Tabs/PropertiesTab.tsx | 43 +++++++++++++++++-- .../src/components/Transitions/Transition.tsx | 21 +-------- .../volto-workflow-manager/src/types/state.ts | 2 + .../src/types/transition.ts | 2 + 6 files changed, 90 insertions(+), 41 deletions(-) diff --git a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx index 073abd8..00407ba 100644 --- a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx @@ -2,6 +2,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Accordion, + Button, Disclosure, DisclosureTitle, DisclosurePanel, @@ -11,7 +12,11 @@ import { Picker, Item, ProgressCircle, + AlertDialog, + DialogTrigger, } from '@adobe/react-spectrum'; +import Icon from '@plone/volto/components/theme/Icon/Icon'; +import deleteIcon from '@plone/volto/icons/delete.svg'; import { listStates, deleteState } from '../../actions/state'; import { listTransitions } from '../../actions/transition'; import PropertiesTab from './Tabs/PropertiesTab'; @@ -27,19 +32,10 @@ const propertiesSchema = { { id: 'default', title: 'Default', - fields: ['delete_action', 'title', 'description', 'isInitialState'], + fields: ['title', 'description', 'isInitialState'], }, ], properties: { - delete_action: { - widget: 'action', - title: '', - buttonTitle: '', - dialogTitle: 'Delete State', - dialogText: - 'Are you sure you want to delete this state? This action cannot be undone.', - onPrimaryAction: () => handleDeleteState(selectedStateId), - }, title: { title: 'Title', type: 'string', @@ -148,11 +144,13 @@ const State: React.FC = ({ const handleDeleteState = useCallback( (stateId: string) => { - if (!stateId) return; dispatch(deleteState(workflowId, stateId)); setSelectedStateId(null); + setLocalStateData(null); + setInitialStateData(null); + onDataChange(null); }, - [dispatch, workflowId], + [dispatch, workflowId, onDataChange], ); if (isLoadingData && !statesInfo.loaded) { @@ -193,6 +191,8 @@ const State: React.FC = ({ handleStateChange({ properties })} isDisabled={areTabsDisabled} diff --git a/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx b/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx index 58f60b0..e108a34 100644 --- a/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx @@ -1,12 +1,24 @@ import React, { useCallback } from 'react'; -import { View, Text } from '@adobe/react-spectrum'; -import Form from '@plone/volto/components/manage/Form/Form'; +import { + View, + Text, + Flex, + DialogTrigger, + AlertDialog, + Button, +} from '@adobe/react-spectrum'; +import { BlockDataForm } from '@plone/volto/components/manage/Form'; +import Icon from '@plone/volto/components/theme/Icon/Icon'; +import deleteIcon from '@plone/volto/icons/delete.svg'; + import type { PropertiesTabProps } from '../../../types/state'; const PropertiesTab: React.FC = ({ data, schema, onChange, + handleDeleteState, + selectedStateId, isDisabled, }) => { const handleChangeField = useCallback( @@ -25,12 +37,27 @@ const PropertiesTab: React.FC = ({ return ( -
+ + + handleDeleteState(selectedStateId)} + > + Are you sure you want to delete this state? This action cannot be + undone. + + + + ); diff --git a/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx b/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx index 96d1944..457ff8c 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx @@ -1,13 +1,26 @@ import React, { useCallback } from 'react'; -import { View, Text } from '@adobe/react-spectrum'; -import Form from '@plone/volto/components/manage/Form/Form'; + import type { PropertiesTabProps } from '../../../types/transition'; +import BlockDataForm from '@plone/volto/components/manage/Form/BlockDataForm'; +import { + View, + Text, + Flex, + DialogTrigger, + AlertDialog, + Button, +} from '@adobe/react-spectrum'; + +import Icon from '@plone/volto/components/theme/Icon/Icon'; +import deleteIcon from '@plone/volto/icons/delete.svg'; const PropertiesTab: React.FC = ({ data, schema, onChange, isDisabled, + handleDeleteTransition, + selectedTransitionId, }) => { const handleChangeField = useCallback( (id: string, value: any) => { @@ -25,14 +38,36 @@ const PropertiesTab: React.FC = ({ return ( - + + + handleDeleteTransition(selectedTransitionId)} + > + Are you sure you want to delete this transition? This action cannot + be undone. + + + + + {/* + /> */} ); }; diff --git a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx index ade13cb..bbb521e 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx @@ -231,31 +231,14 @@ const Transition: React.FC = ({ key={`properties-${selectedTransitionId}`} data={localTransitionData?.properties} schema={propertiesSchema} + handleDeleteTransition={handleDeleteTransition} + selectedTransitionId={selectedTransitionId} onChange={(properties) => handleTransitionChange({ properties }) } isDisabled={isTabDisabled} /> - - - - - handleDeleteTransition(selectedTransitionId) - } - > - Are you sure you want to delete this transition? This action - cannot be undone. - - - Guard Configuration diff --git a/frontend/packages/volto-workflow-manager/src/types/state.ts b/frontend/packages/volto-workflow-manager/src/types/state.ts index 8a17256..313d4b8 100644 --- a/frontend/packages/volto-workflow-manager/src/types/state.ts +++ b/frontend/packages/volto-workflow-manager/src/types/state.ts @@ -46,6 +46,8 @@ export interface PropertiesTabProps { schema: any; onChange: (newData: PropertiesData) => void; isDisabled: boolean; + handleDeleteState: (stateId: string) => void; + selectedStateId: string | null; } export interface TransitionsData { diff --git a/frontend/packages/volto-workflow-manager/src/types/transition.ts b/frontend/packages/volto-workflow-manager/src/types/transition.ts index 16f5524..b864f20 100644 --- a/frontend/packages/volto-workflow-manager/src/types/transition.ts +++ b/frontend/packages/volto-workflow-manager/src/types/transition.ts @@ -37,6 +37,8 @@ export interface PropertiesTabProps { schema: any; onChange: (newData: PropertiesData) => void; isDisabled: boolean; + handleDeleteTransition: (transitionId: string | null) => void; + selectedTransitionId: string | null; } export interface SourceStatesData { From c9e039438dc722b086f33e0722f96c57dfd74aaf Mon Sep 17 00:00:00 2001 From: Manas Kenge <110519001+Manas-Kenge@users.noreply.github.com> Date: Fri, 29 Aug 2025 16:13:13 +0530 Subject: [PATCH 4/4] remove widget, change toast --- .../src/components/States/State.tsx | 5 -- .../components/States/Tabs/PropertiesTab.tsx | 4 +- .../Transitions/Tabs/PropertiesTab.tsx | 12 +---- .../src/components/Transitions/Transition.tsx | 5 -- .../src/components/Widgets/Buttons.tsx | 48 ------------------- .../src/components/Workflow/WorkflowTab.tsx | 6 +-- .../src/components/Workflow/WorkflowView.tsx | 22 ++++++++- .../volto-workflow-manager/src/index.js | 2 - 8 files changed, 26 insertions(+), 78 deletions(-) delete mode 100644 frontend/packages/volto-workflow-manager/src/components/Widgets/Buttons.tsx diff --git a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx index 00407ba..3dc5bb7 100644 --- a/frontend/packages/volto-workflow-manager/src/components/States/State.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/States/State.tsx @@ -2,7 +2,6 @@ import React, { useState, useEffect, useCallback } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { Accordion, - Button, Disclosure, DisclosureTitle, DisclosurePanel, @@ -12,11 +11,7 @@ import { Picker, Item, ProgressCircle, - AlertDialog, - DialogTrigger, } from '@adobe/react-spectrum'; -import Icon from '@plone/volto/components/theme/Icon/Icon'; -import deleteIcon from '@plone/volto/icons/delete.svg'; import { listStates, deleteState } from '../../actions/state'; import { listTransitions } from '../../actions/transition'; import PropertiesTab from './Tabs/PropertiesTab'; diff --git a/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx b/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx index e108a34..99c4715 100644 --- a/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/States/Tabs/PropertiesTab.tsx @@ -49,8 +49,8 @@ const PropertiesTab: React.FC = ({ cancelLabel="Cancel" onPrimaryAction={() => handleDeleteState(selectedStateId)} > - Are you sure you want to delete this state? This action cannot be - undone. + Are you sure you want to delete '{data.title}' state? This action + cannot be undone. diff --git a/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx b/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx index 457ff8c..4273c4d 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Transitions/Tabs/PropertiesTab.tsx @@ -50,8 +50,8 @@ const PropertiesTab: React.FC = ({ cancelLabel="Cancel" onPrimaryAction={() => handleDeleteTransition(selectedTransitionId)} > - Are you sure you want to delete this transition? This action cannot - be undone. + Are you sure you want to delete '{data.title}' transition? This + action cannot be undone. @@ -60,14 +60,6 @@ const PropertiesTab: React.FC = ({ schema={schema} onChangeField={handleChangeField} /> - {/* */} ); }; diff --git a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx index bbb521e..2cb3790 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Transitions/Transition.tsx @@ -11,12 +11,7 @@ import { Item, Heading, ProgressCircle, - Button, - AlertDialog, - DialogTrigger, } from '@adobe/react-spectrum'; -import Icon from '@plone/volto/components/theme/Icon/Icon'; -import deleteIcon from '@plone/volto/icons/delete.svg'; import { listTransitions, deleteTransition } from '../../actions/transition'; import { listStates } from '../../actions/state'; import PropertiesTab from './Tabs/PropertiesTab'; diff --git a/frontend/packages/volto-workflow-manager/src/components/Widgets/Buttons.tsx b/frontend/packages/volto-workflow-manager/src/components/Widgets/Buttons.tsx deleted file mode 100644 index 97e2be4..0000000 --- a/frontend/packages/volto-workflow-manager/src/components/Widgets/Buttons.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; -import { - Button, - AlertDialog, - DialogTrigger, - Text, -} from '@adobe/react-spectrum'; -import FormFieldWrapper from '@plone/volto/components/manage/Widgets/FormFieldWrapper'; -import Icon from '@plone/volto/components/theme/Icon/Icon'; -import deleteIcon from '@plone/volto/icons/delete.svg'; - -const Buttons = (props) => { - const { - isDisabled, - buttonTitle = 'Delete', - variant = 'negative', - icon = deleteIcon, - dialogTitle = 'Confirm Action', - dialogText = 'Are you sure you want to proceed? This action cannot be undone.', - onPrimaryAction, - } = props; - - if (!onPrimaryAction) { - return null; - } - - return ( - - - - - {dialogText} - - - - ); -}; - -export default Buttons; diff --git a/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowTab.tsx b/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowTab.tsx index 37a59c0..46b35aa 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowTab.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowTab.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect, useCallback } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { View, ProgressCircle } from '@adobe/react-spectrum'; -import Form from '@plone/volto/components/manage/Form/Form'; +import BlockDataForm from '@plone/volto/components/manage/Form/BlockDataForm'; import { getWorkflow } from '../../actions/workflow'; import type { GlobalRootState } from '../../types'; import type { WorkflowTabProps } from '../../types/workflow'; @@ -84,13 +84,11 @@ const WorkflowTab: React.FC = ({ return ( - ); diff --git a/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx b/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx index bc42a4e..2e80c9c 100644 --- a/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx +++ b/frontend/packages/volto-workflow-manager/src/components/Workflow/WorkflowView.tsx @@ -69,6 +69,8 @@ const WorkflowView: React.FC = ({ const prevIsSaving = useRef(isSaving); const prevIsDeleting = useRef(isDeleting); + const prevIsDeletingState = useRef(isDeletingState); + const prevIsDeletingTransition = useRef(isDeletingTransition); useEffect(() => { if (prevIsSaving.current && !isSaving) { @@ -80,11 +82,27 @@ const WorkflowView: React.FC = ({ useEffect(() => { if (prevIsDeleting.current && !isDeleting) { - toast.success(); + const stateDeleteSuccess = + !isDeletingState && prevIsDeletingState.current; + const transitionDeleteSuccess = + !isDeletingTransition && prevIsDeletingTransition.current; + + if (stateDeleteSuccess) { + toast.success( + , + ); + } else if (transitionDeleteSuccess) { + toast.success( + , + ); + } + dispatch(getWorkflow(workflowId)); } prevIsDeleting.current = isDeleting; - }, [isDeleting, dispatch, workflowId]); + prevIsDeletingState.current = isDeletingState; + prevIsDeletingTransition.current = isDeletingTransition; + }, [isDeleting, isDeletingState, isDeletingTransition, dispatch, workflowId]); const handleDataChange = useCallback( (payload: any | null, kind: 'workflow' | 'state' | 'transition') => { diff --git a/frontend/packages/volto-workflow-manager/src/index.js b/frontend/packages/volto-workflow-manager/src/index.js index f975d84..8f851bd 100644 --- a/frontend/packages/volto-workflow-manager/src/index.js +++ b/frontend/packages/volto-workflow-manager/src/index.js @@ -1,6 +1,5 @@ import WorkflowControlPanel from './components/Controlpanel/WorkflowPanel'; import { workflow, state, transition } from './reducers'; -import Buttons from './components/Widgets/Buttons'; import './theme/main.scss'; const applyConfig = (config) => { @@ -30,7 +29,6 @@ const applyConfig = (config) => { state, transition, }; - config.widgets.widget.action = Buttons; return config; };