Add modal to confirm workflow draft version overriding (#7758)
In this PR: - Allow the `<ConfirmationModal />` to take additional buttons to display between the cancel and the confirm buttons. - Create a modal that's displayed when the user tries wants to use a workflow version as draft while a draft version already exists. The displayed modal contains a link to the current draft version and a button to confirm the overriding of the current draft version. A demo: https://github.com/user-attachments/assets/6349f418-1b11-45b3-9f5e-061ca74c2966 Closes twentyhq/private-issues#114
This commit is contained in:
committed by
GitHub
parent
f3ec6a759f
commit
fc6748de0a
@ -0,0 +1,62 @@
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord';
|
||||
import { buildShowPageURL } from '@/object-record/record-show/utils/buildShowPageURL';
|
||||
import {
|
||||
ConfirmationModal,
|
||||
StyledCenteredButton,
|
||||
} from '@/ui/layout/modal/components/ConfirmationModal';
|
||||
import { openOverrideWorkflowDraftConfirmationModalState } from '@/workflow/states/openOverrideWorkflowDraftConfirmationModalState';
|
||||
import { WorkflowVersion } from '@/workflow/types/Workflow';
|
||||
import { useRecoilState } from 'recoil';
|
||||
|
||||
export const OverrideWorkflowDraftConfirmationModal = ({
|
||||
draftWorkflowVersionId,
|
||||
workflowVersionUpdateInput,
|
||||
}: {
|
||||
draftWorkflowVersionId: string;
|
||||
workflowVersionUpdateInput: Pick<WorkflowVersion, 'trigger' | 'steps'>;
|
||||
}) => {
|
||||
const [
|
||||
openOverrideWorkflowDraftConfirmationModal,
|
||||
setOpenOverrideWorkflowDraftConfirmationModal,
|
||||
] = useRecoilState(openOverrideWorkflowDraftConfirmationModalState);
|
||||
|
||||
const { updateOneRecord: updateOneWorkflowVersion } =
|
||||
useUpdateOneRecord<WorkflowVersion>({
|
||||
objectNameSingular: CoreObjectNameSingular.WorkflowVersion,
|
||||
});
|
||||
|
||||
const handleOverrideDraft = async () => {
|
||||
await updateOneWorkflowVersion({
|
||||
idToUpdate: draftWorkflowVersionId,
|
||||
updateOneRecordInput: workflowVersionUpdateInput,
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<ConfirmationModal
|
||||
isOpen={openOverrideWorkflowDraftConfirmationModal}
|
||||
setIsOpen={setOpenOverrideWorkflowDraftConfirmationModal}
|
||||
title="A draft already exists"
|
||||
subtitle="A draft already exists for this workflow. Are you sure you want to erase it?"
|
||||
onConfirmClick={handleOverrideDraft}
|
||||
deleteButtonText={'Override Draft'}
|
||||
AdditionalButtons={
|
||||
<StyledCenteredButton
|
||||
to={buildShowPageURL(
|
||||
CoreObjectNameSingular.WorkflowVersion,
|
||||
draftWorkflowVersionId,
|
||||
)}
|
||||
onClick={() => {
|
||||
setOpenOverrideWorkflowDraftConfirmationModal(false);
|
||||
}}
|
||||
variant="secondary"
|
||||
title="Go to Draft"
|
||||
fullWidth
|
||||
/>
|
||||
}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user