push(`/settings/review-workflows/${workflow.id}`)}
+ {...onRowClick({
+ fn(event) {
+ // Abort row onClick event when the user click on the delete button
+ if (event.target.nodeName === 'BUTTON') {
+ return;
+ }
+
+ push(`/settings/review-workflows/${workflow.id}`);
+ },
+ })}
key={`workflow-${workflow.id}`}
>
@@ -180,24 +208,12 @@ export function ReviewWorkflowsListView() {
{workflow.stages.length}
|
-
- {workflowsData.data.length > 1 && (
- }
- noBorder
- onClick={() => {
- handleDeleteWorkflow(workflow.id);
- }}
- />
- )}
-
+
+ {(workflow?.contentTypes ?? []).join(', ')}
+
+ |
+
+
+
+ }
+ noBorder
+ onClick={() => {
+ handleDeleteWorkflow(workflow.id);
+ }}
+ />
|
diff --git a/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js b/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js
index 5b7de0e94e..2b7f891bda 100644
--- a/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js
+++ b/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/index.js
@@ -20,10 +20,13 @@ export const initialState = {
clientState: {
currentWorkflow: {
data: {
+ name: '',
+ contentTypes: [],
stages: [
{
color: STAGE_COLOR_DEFAULT,
name: '',
+ __temp_key__: 1,
},
],
},
@@ -159,8 +162,8 @@ export function reducer(state = initialState, action) {
draft.serverState.workflow
);
} else {
- // if there is no workflow on the server, the workflow can never be dirty
- draft.clientState.currentWorkflow.isDirty = false;
+ // if there is no workflow on the server, the workflow is awalys considered dirty
+ draft.clientState.currentWorkflow.isDirty = true;
}
});
}
diff --git a/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/tests/index.test.js b/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/tests/index.test.js
index d47bbac275..ebbf477499 100644
--- a/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/tests/index.test.js
+++ b/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/reducer/tests/index.test.js
@@ -553,15 +553,11 @@ describe('Admin | Settings | Review Workflows | reducer', () => {
expect.objectContaining({
clientState: expect.objectContaining({
currentWorkflow: expect.objectContaining({
- data: {
- stages: [
- {
- color: '#4945ff',
- name: '',
- },
- ],
- },
- isDirty: false,
+ data: expect.objectContaining({
+ name: '',
+ stages: [expect.objectContaining({ name: '', __temp_key__: 1 })],
+ }),
+ isDirty: true,
}),
}),
})
diff --git a/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/getWorkflowValidationSchema.js b/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/getWorkflowValidationSchema.js
index 31f80daf33..e7b2368b61 100644
--- a/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/getWorkflowValidationSchema.js
+++ b/packages/core/admin/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/getWorkflowValidationSchema.js
@@ -2,36 +2,48 @@ import * as yup from 'yup';
export function getWorkflowValidationSchema({ formatMessage }) {
return yup.object({
- contentTypes: yup.array().of(yup.string()).required(),
- name: yup.string().required(),
+ contentTypes: yup.array().of(yup.string()),
+ name: yup
+ .string()
+ .max(
+ 255,
+ formatMessage({
+ id: 'Settings.review-workflows.validation.name.max-length',
+ defaultMessage: 'Name can not be longer than 255 characters',
+ })
+ )
+ .required(),
- stages: yup.array().of(
- yup.object().shape({
- name: yup
- .string()
- .required(
- formatMessage({
- id: 'Settings.review-workflows.validation.stage.name',
- defaultMessage: 'Name is required',
- })
- )
- .max(
- 255,
- formatMessage({
- id: 'Settings.review-workflows.validation.stage.max-length',
- defaultMessage: 'Name can not be longer than 255 characters',
- })
- ),
- color: yup
- .string()
- .required(
- formatMessage({
- id: 'Settings.review-workflows.validation.stage.color',
- defaultMessage: 'Color is required',
- })
- )
- .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),
- })
- ),
+ stages: yup
+ .array()
+ .of(
+ yup.object().shape({
+ name: yup
+ .string()
+ .required(
+ formatMessage({
+ id: 'Settings.review-workflows.validation.stage.name',
+ defaultMessage: 'Name is required',
+ })
+ )
+ .max(
+ 255,
+ formatMessage({
+ id: 'Settings.review-workflows.validation.stage.max-length',
+ defaultMessage: 'Name can not be longer than 255 characters',
+ })
+ ),
+ color: yup
+ .string()
+ .required(
+ formatMessage({
+ id: 'Settings.review-workflows.validation.stage.color',
+ defaultMessage: 'Color is required',
+ })
+ )
+ .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),
+ })
+ )
+ .min(1),
});
}