fc6748de0a
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
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
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
|
|
/>
|
|
}
|
|
/>
|
|
</>
|
|
);
|
|
};
|