@strapi/review-workflows 0.0.0-experimental.f31889311d753b5f7d95198ae84d8fce1d156cd6 → 0.0.0-experimental.f49f46a1c17445a39e8af3f63124bcccf73842e6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{Layout-Cwbb9usb.js → Layout-B4fpKB9J.js} +8 -9
- package/dist/_chunks/Layout-B4fpKB9J.js.map +1 -0
- package/dist/_chunks/{Layout-BpMLb-Oo.mjs → Layout-Dko22Aly.mjs} +8 -9
- package/dist/_chunks/Layout-Dko22Aly.mjs.map +1 -0
- package/dist/_chunks/{en-xcewH2pC.js → en-CYgjfSep.js} +5 -2
- package/dist/_chunks/en-CYgjfSep.js.map +1 -0
- package/dist/_chunks/{en-D9ZrQAV6.mjs → en-D9dxziEb.mjs} +5 -2
- package/dist/_chunks/en-D9dxziEb.mjs.map +1 -0
- package/dist/_chunks/{_id-p9NnvlMP.js → id-BKq7JAqZ.js} +82 -49
- package/dist/_chunks/id-BKq7JAqZ.js.map +1 -0
- package/dist/_chunks/{_id-KpezMzxO.mjs → id-DINFSsrh.mjs} +82 -49
- package/dist/_chunks/id-DINFSsrh.mjs.map +1 -0
- package/dist/_chunks/{index-DqT_oXGP.js → index-BpIILEs0.js} +9 -29
- package/dist/_chunks/index-BpIILEs0.js.map +1 -0
- package/dist/_chunks/{index-BTr8zF-9.js → index-BpL7C1EG.js} +54 -71
- package/dist/_chunks/index-BpL7C1EG.js.map +1 -0
- package/dist/_chunks/{index-DtJI5ZoC.mjs → index-DAcEdoqJ.mjs} +55 -72
- package/dist/_chunks/index-DAcEdoqJ.mjs.map +1 -0
- package/dist/_chunks/{index-BxkGN0Yj.mjs → index-ZcZKwmTD.mjs} +11 -31
- package/dist/_chunks/index-ZcZKwmTD.mjs.map +1 -0
- package/dist/_chunks/{router-B8G2sh6V.mjs → router-BPH_u176.mjs} +3 -3
- package/dist/_chunks/router-BPH_u176.mjs.map +1 -0
- package/dist/_chunks/{router-Bqj-105s.js → router-DeEgX8Ao.js} +3 -3
- package/dist/_chunks/router-DeEgX8Ao.js.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/services/settings.d.ts +1737 -7
- package/dist/server/index.js +180 -108
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +180 -108
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/constants/workflows.d.ts +1 -0
- package/dist/server/src/constants/workflows.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +6 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/content-types/workflow/index.d.ts +6 -0
- package/dist/server/src/content-types/workflow/index.d.ts.map +1 -1
- package/dist/server/src/controllers/assignees.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +0 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/stages.d.ts.map +1 -1
- package/dist/server/src/controllers/workflows.d.ts +0 -7
- package/dist/server/src/controllers/workflows.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +28 -7
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/review-workflows.d.ts.map +1 -1
- package/dist/server/src/services/assignees.d.ts +8 -4
- package/dist/server/src/services/assignees.d.ts.map +1 -1
- package/dist/server/src/services/document-service-middleware.d.ts +1 -0
- package/dist/server/src/services/document-service-middleware.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +16 -6
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics/index.d.ts +4 -4
- package/dist/server/src/services/metrics/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -1
- package/dist/server/src/services/stages.d.ts +7 -7
- package/dist/server/src/services/stages.d.ts.map +1 -1
- package/dist/server/src/services/workflows.d.ts.map +1 -1
- package/dist/server/src/validation/review-workflows.d.ts +4 -0
- package/dist/server/src/validation/review-workflows.d.ts.map +1 -1
- package/dist/shared/contracts/review-workflows.d.ts +9 -17
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
- package/package.json +12 -12
- package/dist/_chunks/Layout-BpMLb-Oo.mjs.map +0 -1
- package/dist/_chunks/Layout-Cwbb9usb.js.map +0 -1
- package/dist/_chunks/_id-KpezMzxO.mjs.map +0 -1
- package/dist/_chunks/_id-p9NnvlMP.js.map +0 -1
- package/dist/_chunks/en-D9ZrQAV6.mjs.map +0 -1
- package/dist/_chunks/en-xcewH2pC.js.map +0 -1
- package/dist/_chunks/index-BTr8zF-9.js.map +0 -1
- package/dist/_chunks/index-BxkGN0Yj.mjs.map +0 -1
- package/dist/_chunks/index-DqT_oXGP.js.map +0 -1
- package/dist/_chunks/index-DtJI5ZoC.mjs.map +0 -1
- package/dist/_chunks/router-B8G2sh6V.mjs.map +0 -1
- package/dist/_chunks/router-Bqj-105s.js.map +0 -1
- package/strapi-server.js +0 -3
- /package/dist/admin/src/routes/settings/{:id.d.ts → id.d.ts} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
const React = require("react");
|
|
3
3
|
const strapiAdmin = require("@strapi/admin/strapi-admin");
|
|
4
4
|
const reactIntl = require("react-intl");
|
|
5
|
-
const index = require("./index-
|
|
5
|
+
const index = require("./index-BpL7C1EG.js");
|
|
6
6
|
const jsxRuntime = require("react/jsx-runtime");
|
|
7
7
|
const designSystem = require("@strapi/design-system");
|
|
8
8
|
const reactDnd = require("react-dnd");
|
|
@@ -34,11 +34,10 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
34
34
|
const { toggleNotification } = strapiAdmin.useNotification();
|
|
35
35
|
const { formatMessage } = reactIntl.useIntl();
|
|
36
36
|
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
|
37
|
-
const {
|
|
37
|
+
const { skip = false, ...queryParams } = params;
|
|
38
38
|
const { data, isLoading, error } = index.useGetWorkflowsQuery(
|
|
39
39
|
{
|
|
40
|
-
|
|
41
|
-
populate: "stages",
|
|
40
|
+
populate: ["stages", "stageRequiredToPublish"],
|
|
42
41
|
...queryParams
|
|
43
42
|
},
|
|
44
43
|
{
|
|
@@ -82,9 +81,9 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
82
81
|
);
|
|
83
82
|
const [updateWorkflow] = index.useUpdateWorkflowMutation();
|
|
84
83
|
const update = React__namespace.useCallback(
|
|
85
|
-
async (
|
|
84
|
+
async (id, data2) => {
|
|
86
85
|
try {
|
|
87
|
-
const res = await updateWorkflow({ id
|
|
86
|
+
const res = await updateWorkflow({ id, data: data2 });
|
|
88
87
|
if ("error" in res) {
|
|
89
88
|
toggleNotification({
|
|
90
89
|
type: "danger",
|
|
@@ -109,9 +108,9 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
109
108
|
);
|
|
110
109
|
const [deleteWorkflow] = index.useDeleteWorkflowMutation();
|
|
111
110
|
const deleteAction = React__namespace.useCallback(
|
|
112
|
-
async (
|
|
111
|
+
async (id) => {
|
|
113
112
|
try {
|
|
114
|
-
const res = await deleteWorkflow({ id
|
|
113
|
+
const res = await deleteWorkflow({ id });
|
|
115
114
|
if ("error" in res) {
|
|
116
115
|
toggleNotification({
|
|
117
116
|
type: "danger",
|
|
@@ -249,4 +248,4 @@ exports.DragLayerRendered = DragLayerRendered;
|
|
|
249
248
|
exports.Header = Header;
|
|
250
249
|
exports.Root = Root;
|
|
251
250
|
exports.useReviewWorkflows = useReviewWorkflows;
|
|
252
|
-
//# sourceMappingURL=Layout-
|
|
251
|
+
//# sourceMappingURL=Layout-B4fpKB9J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout-B4fpKB9J.js","sources":["../../admin/src/routes/settings/hooks/useReviewWorkflows.ts","../../admin/src/routes/settings/constants.ts","../../admin/src/routes/settings/components/StageDragPreview.tsx","../../admin/src/routes/settings/components/Layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport {\n GetWorkflowsParams,\n useCreateWorkflowMutation,\n useDeleteWorkflowMutation,\n useGetWorkflowsQuery,\n useUpdateWorkflowMutation,\n} from '../../../services/settings';\n\nimport type { Create, Update } from '../../../../../shared/contracts/review-workflows';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype UseReviewWorkflowsArgs = GetWorkflowsParams & {\n skip?: boolean;\n};\n\nconst useReviewWorkflows = (params: UseReviewWorkflowsArgs = {}) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { skip = false, ...queryParams } = params;\n\n const { data, isLoading, error } = useGetWorkflowsQuery(\n {\n populate: ['stages', 'stageRequiredToPublish'],\n ...queryParams,\n },\n {\n skip,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [createWorkflow] = useCreateWorkflowMutation();\n const create = React.useCallback(\n async (data: Create.Request['body']['data']) => {\n try {\n const res = await createWorkflow({ data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.created', defaultMessage: 'Created workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [createWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [updateWorkflow] = useUpdateWorkflowMutation();\n const update = React.useCallback(\n async (id: string, data: Update.Request['body']['data']) => {\n try {\n const res = await updateWorkflow({ id, data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.updated', defaultMessage: 'Updated workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [formatAPIError, formatMessage, toggleNotification, updateWorkflow]\n );\n\n const [deleteWorkflow] = useDeleteWorkflowMutation();\n const deleteAction = React.useCallback(\n async (id: string) => {\n try {\n const res = await deleteWorkflow({ id });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.deleted', defaultMessage: 'Deleted workflow' }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const { workflows = [], meta } = data ?? {};\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n workflows,\n isLoading,\n error,\n create,\n delete: deleteAction,\n update,\n };\n};\n\nexport { useReviewWorkflows };\n","export type DragDropTypes = 'stage';\n\nexport const DRAG_DROP_TYPES: Record<Uppercase<DragDropTypes>, DragDropTypes> = {\n STAGE: 'stage',\n};\n","import { Flex, Typography } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\n\ninterface StageDragPreviewType {\n name: string | null;\n}\n\nconst StageDragPreview = ({ name }: StageDragPreviewType) => {\n return (\n <Flex\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n gap={3}\n hasRadius\n padding={3}\n shadow=\"tableShadow\"\n width=\"30rem\"\n >\n <Flex\n alignItems=\"center\"\n background=\"neutral200\"\n borderRadius=\"50%\"\n height={6}\n justifyContent=\"center\"\n width={6}\n >\n <CaretDown width=\"0.8rem\" fill=\"neutral600\" />\n </Flex>\n\n <Typography fontWeight=\"bold\">{name}</Typography>\n </Flex>\n );\n};\n\nexport { StageDragPreview };\nexport type { StageDragPreviewType };\n","import * as React from 'react';\n\nimport { Page, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box } from '@strapi/design-system';\nimport { XYCoord, useDragLayer } from 'react-dnd';\nimport { useIntl } from 'react-intl';\n\nimport { DRAG_DROP_TYPES } from '../constants';\n\nimport { StageDragPreview } from './StageDragPreview';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nconst DragLayerRendered = () => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n <StageDragPreview name={typeof item.item === 'string' ? item.item : null} />;\n </Box>\n </Box>\n );\n};\n\nconst Root: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Page.Main>\n <Layouts.Content>{children}</Layouts.Content>\n </Page.Main>\n );\n};\n\ninterface HeaderProps {\n title: string;\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n}\n\nconst Header: React.FC<HeaderProps> = ({ title, subtitle, navigationAction, primaryAction }) => {\n const { formatMessage } = useIntl();\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: title,\n }\n )}\n </Page.Title>\n <Layouts.BaseHeader\n navigationAction={navigationAction}\n primaryAction={primaryAction}\n title={title}\n subtitle={subtitle}\n />\n </>\n );\n};\n\nexport { DragLayerRendered, Header, Root };\n"],"names":["useNotification","useIntl","useAPIErrorHandler","useGetWorkflowsQuery","React","useCreateWorkflowMutation","data","useUpdateWorkflowMutation","useDeleteWorkflowMutation","jsxs","Flex","jsx","CaretDown","Typography","useDragLayer","Box","Page","Layouts","Fragment"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { useNotification, useAPIErrorHandler, Page, Layouts } from "@strapi/admin/strapi-admin";
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
|
-
import { c as useGetWorkflowsQuery, d as useCreateWorkflowMutation, e as useUpdateWorkflowMutation, f as useDeleteWorkflowMutation } from "./index-
|
|
4
|
+
import { c as useGetWorkflowsQuery, d as useCreateWorkflowMutation, e as useUpdateWorkflowMutation, f as useDeleteWorkflowMutation } from "./index-DAcEdoqJ.mjs";
|
|
5
5
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
6
6
|
import { Flex, Typography, Box } from "@strapi/design-system";
|
|
7
7
|
import { useDragLayer } from "react-dnd";
|
|
@@ -14,11 +14,10 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
14
14
|
const { toggleNotification } = useNotification();
|
|
15
15
|
const { formatMessage } = useIntl();
|
|
16
16
|
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
|
|
17
|
-
const {
|
|
17
|
+
const { skip = false, ...queryParams } = params;
|
|
18
18
|
const { data, isLoading, error } = useGetWorkflowsQuery(
|
|
19
19
|
{
|
|
20
|
-
|
|
21
|
-
populate: "stages",
|
|
20
|
+
populate: ["stages", "stageRequiredToPublish"],
|
|
22
21
|
...queryParams
|
|
23
22
|
},
|
|
24
23
|
{
|
|
@@ -62,9 +61,9 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
62
61
|
);
|
|
63
62
|
const [updateWorkflow] = useUpdateWorkflowMutation();
|
|
64
63
|
const update = React.useCallback(
|
|
65
|
-
async (
|
|
64
|
+
async (id, data2) => {
|
|
66
65
|
try {
|
|
67
|
-
const res = await updateWorkflow({ id
|
|
66
|
+
const res = await updateWorkflow({ id, data: data2 });
|
|
68
67
|
if ("error" in res) {
|
|
69
68
|
toggleNotification({
|
|
70
69
|
type: "danger",
|
|
@@ -89,9 +88,9 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
89
88
|
);
|
|
90
89
|
const [deleteWorkflow] = useDeleteWorkflowMutation();
|
|
91
90
|
const deleteAction = React.useCallback(
|
|
92
|
-
async (
|
|
91
|
+
async (id) => {
|
|
93
92
|
try {
|
|
94
|
-
const res = await deleteWorkflow({ id
|
|
93
|
+
const res = await deleteWorkflow({ id });
|
|
95
94
|
if ("error" in res) {
|
|
96
95
|
toggleNotification({
|
|
97
96
|
type: "danger",
|
|
@@ -231,4 +230,4 @@ export {
|
|
|
231
230
|
DragLayerRendered as a,
|
|
232
231
|
useReviewWorkflows as u
|
|
233
232
|
};
|
|
234
|
-
//# sourceMappingURL=Layout-
|
|
233
|
+
//# sourceMappingURL=Layout-Dko22Aly.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout-Dko22Aly.mjs","sources":["../../admin/src/routes/settings/hooks/useReviewWorkflows.ts","../../admin/src/routes/settings/constants.ts","../../admin/src/routes/settings/components/StageDragPreview.tsx","../../admin/src/routes/settings/components/Layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useAPIErrorHandler, useNotification } from '@strapi/admin/strapi-admin';\nimport { type MessageDescriptor, useIntl } from 'react-intl';\n\nimport {\n GetWorkflowsParams,\n useCreateWorkflowMutation,\n useDeleteWorkflowMutation,\n useGetWorkflowsQuery,\n useUpdateWorkflowMutation,\n} from '../../../services/settings';\n\nimport type { Create, Update } from '../../../../../shared/contracts/review-workflows';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype UseReviewWorkflowsArgs = GetWorkflowsParams & {\n skip?: boolean;\n};\n\nconst useReviewWorkflows = (params: UseReviewWorkflowsArgs = {}) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { skip = false, ...queryParams } = params;\n\n const { data, isLoading, error } = useGetWorkflowsQuery(\n {\n populate: ['stages', 'stageRequiredToPublish'],\n ...queryParams,\n },\n {\n skip,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [createWorkflow] = useCreateWorkflowMutation();\n const create = React.useCallback(\n async (data: Create.Request['body']['data']) => {\n try {\n const res = await createWorkflow({ data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.created', defaultMessage: 'Created workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [createWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [updateWorkflow] = useUpdateWorkflowMutation();\n const update = React.useCallback(\n async (id: string, data: Update.Request['body']['data']) => {\n try {\n const res = await updateWorkflow({ id, data });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return res;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.updated', defaultMessage: 'Updated workflow' }),\n });\n\n return res;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [formatAPIError, formatMessage, toggleNotification, updateWorkflow]\n );\n\n const [deleteWorkflow] = useDeleteWorkflowMutation();\n const deleteAction = React.useCallback(\n async (id: string) => {\n try {\n const res = await deleteWorkflow({ id });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'actions.deleted', defaultMessage: 'Deleted workflow' }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]\n );\n\n const { workflows = [], meta } = data ?? {};\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n workflows,\n isLoading,\n error,\n create,\n delete: deleteAction,\n update,\n };\n};\n\nexport { useReviewWorkflows };\n","export type DragDropTypes = 'stage';\n\nexport const DRAG_DROP_TYPES: Record<Uppercase<DragDropTypes>, DragDropTypes> = {\n STAGE: 'stage',\n};\n","import { Flex, Typography } from '@strapi/design-system';\nimport { CaretDown } from '@strapi/icons';\n\ninterface StageDragPreviewType {\n name: string | null;\n}\n\nconst StageDragPreview = ({ name }: StageDragPreviewType) => {\n return (\n <Flex\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n gap={3}\n hasRadius\n padding={3}\n shadow=\"tableShadow\"\n width=\"30rem\"\n >\n <Flex\n alignItems=\"center\"\n background=\"neutral200\"\n borderRadius=\"50%\"\n height={6}\n justifyContent=\"center\"\n width={6}\n >\n <CaretDown width=\"0.8rem\" fill=\"neutral600\" />\n </Flex>\n\n <Typography fontWeight=\"bold\">{name}</Typography>\n </Flex>\n );\n};\n\nexport { StageDragPreview };\nexport type { StageDragPreviewType };\n","import * as React from 'react';\n\nimport { Page, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box } from '@strapi/design-system';\nimport { XYCoord, useDragLayer } from 'react-dnd';\nimport { useIntl } from 'react-intl';\n\nimport { DRAG_DROP_TYPES } from '../constants';\n\nimport { StageDragPreview } from './StageDragPreview';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nconst DragLayerRendered = () => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n <StageDragPreview name={typeof item.item === 'string' ? item.item : null} />;\n </Box>\n </Box>\n );\n};\n\nconst Root: React.FC<React.PropsWithChildren> = ({ children }) => {\n return (\n <Page.Main>\n <Layouts.Content>{children}</Layouts.Content>\n </Page.Main>\n );\n};\n\ninterface HeaderProps {\n title: string;\n navigationAction?: React.ReactNode;\n primaryAction?: React.ReactNode;\n secondaryAction?: React.ReactNode;\n subtitle?: React.ReactNode;\n}\n\nconst Header: React.FC<HeaderProps> = ({ title, subtitle, navigationAction, primaryAction }) => {\n const { formatMessage } = useIntl();\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: title,\n }\n )}\n </Page.Title>\n <Layouts.BaseHeader\n navigationAction={navigationAction}\n primaryAction={primaryAction}\n title={title}\n subtitle={subtitle}\n />\n </>\n );\n};\n\nexport { DragLayerRendered, Header, Root };\n"],"names":["data"],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@ const en = {
|
|
|
6
6
|
"settings.page.isLoading": "Workflow is loading",
|
|
7
7
|
"settings.page.delete.confirm.body": "All entries assigned to deleted stages will be moved to the previous stage. Are you sure you want to save?",
|
|
8
8
|
"settings.stage.name.label": "Stage name",
|
|
9
|
-
"settings.not-available": "Review Workflows is only available as part of the Enterprise Edition. Upgrade to create and manage workflows."
|
|
9
|
+
"settings.not-available": "Review Workflows is only available as part of the Enterprise Edition. Upgrade to create and manage workflows.",
|
|
10
|
+
"settings.review-workflows.workflow.stageRequiredToPublish.label": "Required stage for publishing",
|
|
11
|
+
"settings.review-workflows.workflow.stageRequiredToPublish.any": "Any stage",
|
|
12
|
+
"settings.review-workflows.workflow.stageRequiredToPublish.hint": "Prevents entries from being published if they are not at the required stage."
|
|
10
13
|
};
|
|
11
14
|
exports.default = en;
|
|
12
|
-
//# sourceMappingURL=en-
|
|
15
|
+
//# sourceMappingURL=en-CYgjfSep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-CYgjfSep.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -4,9 +4,12 @@ const en = {
|
|
|
4
4
|
"settings.page.isLoading": "Workflow is loading",
|
|
5
5
|
"settings.page.delete.confirm.body": "All entries assigned to deleted stages will be moved to the previous stage. Are you sure you want to save?",
|
|
6
6
|
"settings.stage.name.label": "Stage name",
|
|
7
|
-
"settings.not-available": "Review Workflows is only available as part of the Enterprise Edition. Upgrade to create and manage workflows."
|
|
7
|
+
"settings.not-available": "Review Workflows is only available as part of the Enterprise Edition. Upgrade to create and manage workflows.",
|
|
8
|
+
"settings.review-workflows.workflow.stageRequiredToPublish.label": "Required stage for publishing",
|
|
9
|
+
"settings.review-workflows.workflow.stageRequiredToPublish.any": "Any stage",
|
|
10
|
+
"settings.review-workflows.workflow.stageRequiredToPublish.hint": "Prevents entries from being published if they are not at the required stage."
|
|
8
11
|
};
|
|
9
12
|
export {
|
|
10
13
|
en as default
|
|
11
14
|
};
|
|
12
|
-
//# sourceMappingURL=en-
|
|
15
|
+
//# sourceMappingURL=en-D9dxziEb.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-D9dxziEb.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -8,11 +8,10 @@ const designSystem = require("@strapi/design-system");
|
|
|
8
8
|
const icons = require("@strapi/icons");
|
|
9
9
|
const fractionalIndexing = require("fractional-indexing");
|
|
10
10
|
const reactIntl = require("react-intl");
|
|
11
|
-
const reactRedux = require("react-redux");
|
|
12
11
|
const reactRouterDom = require("react-router-dom");
|
|
13
12
|
const yup = require("yup");
|
|
14
|
-
const index = require("./index-
|
|
15
|
-
const Layout = require("./Layout-
|
|
13
|
+
const index = require("./index-BpL7C1EG.js");
|
|
14
|
+
const Layout = require("./Layout-B4fpKB9J.js");
|
|
16
15
|
const reactDndHtml5Backend = require("react-dnd-html5-backend");
|
|
17
16
|
const styledComponents = require("styled-components");
|
|
18
17
|
const reactDnd = require("react-dnd");
|
|
@@ -325,7 +324,7 @@ const Stages = ({ canDelete = true, canUpdate = true, isCreating }) => {
|
|
|
325
324
|
canReorder: stages.length > 1,
|
|
326
325
|
canUpdate,
|
|
327
326
|
stagesCount: stages.length,
|
|
328
|
-
defaultOpen:
|
|
327
|
+
defaultOpen: !stage.id,
|
|
329
328
|
...stage
|
|
330
329
|
}
|
|
331
330
|
) }, stage.__temp_key__);
|
|
@@ -497,7 +496,7 @@ const Stage = ({
|
|
|
497
496
|
{
|
|
498
497
|
background: "transparent",
|
|
499
498
|
hasRadius: true,
|
|
500
|
-
|
|
499
|
+
variant: "ghost",
|
|
501
500
|
"data-handler-id": handlerId,
|
|
502
501
|
ref: dragRef,
|
|
503
502
|
label: formatMessage({
|
|
@@ -549,7 +548,7 @@ const Stage = ({
|
|
|
549
548
|
size: 6,
|
|
550
549
|
type: "permissions"
|
|
551
550
|
}
|
|
552
|
-
].map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, children: /* @__PURE__ */ jsxRuntime.jsx(InputRenderer, { ...field }) }, field.name)) }) })
|
|
551
|
+
].map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(InputRenderer, { ...field }) }, field.name)) }) })
|
|
553
552
|
] })
|
|
554
553
|
}
|
|
555
554
|
)
|
|
@@ -750,7 +749,6 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
|
|
|
750
749
|
defaultMessage: "Apply to all stages"
|
|
751
750
|
}),
|
|
752
751
|
size: "L",
|
|
753
|
-
variant: "secondary",
|
|
754
752
|
children: /* @__PURE__ */ jsxRuntime.jsx(icons.Duplicate, {})
|
|
755
753
|
}
|
|
756
754
|
) }),
|
|
@@ -795,7 +793,7 @@ const PermissionWrapper = styledComponents.styled(designSystem.Flex)`
|
|
|
795
793
|
const WorkflowAttributes = ({ canUpdate = true }) => {
|
|
796
794
|
const { formatMessage } = reactIntl.useIntl();
|
|
797
795
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { background: "neutral0", hasRadius: true, gap: 4, padding: 6, shadow: "tableShadow", children: [
|
|
798
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
796
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
799
797
|
strapiAdmin.InputRenderer,
|
|
800
798
|
{
|
|
801
799
|
disabled: !canUpdate,
|
|
@@ -808,7 +806,8 @@ const WorkflowAttributes = ({ canUpdate = true }) => {
|
|
|
808
806
|
type: "string"
|
|
809
807
|
}
|
|
810
808
|
) }),
|
|
811
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(ContentTypesSelector, { disabled: !canUpdate }) })
|
|
809
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(ContentTypesSelector, { disabled: !canUpdate }) }),
|
|
810
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(StageSelector, { disabled: !canUpdate }) })
|
|
812
811
|
] });
|
|
813
812
|
};
|
|
814
813
|
const ContentTypesSelector = ({ disabled }) => {
|
|
@@ -912,15 +911,63 @@ const NestedOption = styledComponents.styled(designSystem.MultiSelectOption)`
|
|
|
912
911
|
const ContentTypeTakeNotice = styledComponents.styled(designSystem.Typography)`
|
|
913
912
|
font-style: italic;
|
|
914
913
|
`;
|
|
914
|
+
const StageSelector = ({ disabled }) => {
|
|
915
|
+
const { value: stages = [] } = strapiAdmin.useField("stages");
|
|
916
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
917
|
+
const { error, value, onChange } = strapiAdmin.useField("stageRequiredToPublish");
|
|
918
|
+
const validStages = stages.filter((stage) => stage.name);
|
|
919
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
920
|
+
designSystem.Field.Root,
|
|
921
|
+
{
|
|
922
|
+
error,
|
|
923
|
+
name: "stageRequiredToPublish",
|
|
924
|
+
hint: formatMessage({
|
|
925
|
+
id: "settings.review-workflows.workflow.stageRequiredToPublish.hint",
|
|
926
|
+
defaultMessage: "Prevents entries from being published if they are not at the required stage."
|
|
927
|
+
}),
|
|
928
|
+
children: [
|
|
929
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
930
|
+
id: "settings.review-workflows.workflow.stageRequiredToPublish.label",
|
|
931
|
+
defaultMessage: "Required stage for publishing"
|
|
932
|
+
}) }),
|
|
933
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
934
|
+
designSystem.SingleSelect,
|
|
935
|
+
{
|
|
936
|
+
disabled,
|
|
937
|
+
onChange: (value2) => {
|
|
938
|
+
onChange("stageRequiredToPublish", value2);
|
|
939
|
+
},
|
|
940
|
+
value,
|
|
941
|
+
children: [
|
|
942
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "", children: formatMessage({
|
|
943
|
+
id: "settings.review-workflows.workflow.stageRequiredToPublish.any",
|
|
944
|
+
defaultMessage: "Any stage"
|
|
945
|
+
}) }),
|
|
946
|
+
validStages.map((stage, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
947
|
+
designSystem.SingleSelectOption,
|
|
948
|
+
{
|
|
949
|
+
value: stage.id?.toString() || stage.__temp_key__,
|
|
950
|
+
children: stage.name
|
|
951
|
+
},
|
|
952
|
+
`requiredToPublishStage-${stage.id || stage.__temp_key__}`
|
|
953
|
+
))
|
|
954
|
+
]
|
|
955
|
+
}
|
|
956
|
+
),
|
|
957
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
|
|
958
|
+
]
|
|
959
|
+
}
|
|
960
|
+
);
|
|
961
|
+
};
|
|
915
962
|
const WORKFLOW_SCHEMA = yup__namespace.object({
|
|
916
963
|
contentTypes: yup__namespace.array().of(yup__namespace.string()),
|
|
917
964
|
name: yup__namespace.string().max(255, {
|
|
918
965
|
id: "review-workflows.validation.name.max-length",
|
|
919
966
|
defaultMessage: "Name can not be longer than 255 characters"
|
|
920
|
-
}).required(),
|
|
967
|
+
}).required().nullable(),
|
|
921
968
|
stages: yup__namespace.array().of(
|
|
922
969
|
yup__namespace.object().shape({
|
|
923
|
-
name: yup__namespace.string().required({
|
|
970
|
+
name: yup__namespace.string().nullable().required({
|
|
924
971
|
id: "review-workflows.validation.stage.name",
|
|
925
972
|
defaultMessage: "Name is required"
|
|
926
973
|
}).max(255, {
|
|
@@ -937,7 +984,7 @@ const WORKFLOW_SCHEMA = yup__namespace.object({
|
|
|
937
984
|
return stages.filter((stage) => stage.name === stageName).length === 1;
|
|
938
985
|
}
|
|
939
986
|
),
|
|
940
|
-
color: yup__namespace.string().required({
|
|
987
|
+
color: yup__namespace.string().nullable().required({
|
|
941
988
|
id: "review-workflows.validation.stage.color",
|
|
942
989
|
defaultMessage: "Color is required"
|
|
943
990
|
}).matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),
|
|
@@ -954,7 +1001,8 @@ const WORKFLOW_SCHEMA = yup__namespace.object({
|
|
|
954
1001
|
})
|
|
955
1002
|
).strict()
|
|
956
1003
|
})
|
|
957
|
-
).min(1)
|
|
1004
|
+
).min(1),
|
|
1005
|
+
stageRequiredToPublish: yup__namespace.string().nullable()
|
|
958
1006
|
});
|
|
959
1007
|
const EditPage = () => {
|
|
960
1008
|
const { id = "" } = reactRouterDom.useParams();
|
|
@@ -963,7 +1011,6 @@ const EditPage = () => {
|
|
|
963
1011
|
const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
|
|
964
1012
|
const navigate = reactRouterDom.useNavigate();
|
|
965
1013
|
const { toggleNotification } = strapiAdmin.useNotification();
|
|
966
|
-
const dispatch = reactRedux.useDispatch();
|
|
967
1014
|
const {
|
|
968
1015
|
isLoading: isLoadingWorkflow,
|
|
969
1016
|
meta,
|
|
@@ -971,7 +1018,7 @@ const EditPage = () => {
|
|
|
971
1018
|
error,
|
|
972
1019
|
update,
|
|
973
1020
|
create
|
|
974
|
-
} = Layout.useReviewWorkflows(
|
|
1021
|
+
} = Layout.useReviewWorkflows();
|
|
975
1022
|
const permissions = index.useTypedSelector(
|
|
976
1023
|
(state) => state.admin_app.permissions["settings"]?.["review-workflows"]
|
|
977
1024
|
);
|
|
@@ -988,13 +1035,17 @@ const EditPage = () => {
|
|
|
988
1035
|
const stagesPerWorkflow = limits?.[index.CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];
|
|
989
1036
|
const submitForm = async (data, helpers) => {
|
|
990
1037
|
try {
|
|
1038
|
+
const { stageRequiredToPublish, ...rest } = data;
|
|
1039
|
+
const stageRequiredToPublishName = stageRequiredToPublish === "" ? null : rest.stages.find(
|
|
1040
|
+
(stage) => stage.id === Number(stageRequiredToPublish) || stage.__temp_key__ === stageRequiredToPublish
|
|
1041
|
+
)?.name;
|
|
991
1042
|
if (!isCreatingWorkflow) {
|
|
992
1043
|
const res = await update(id, {
|
|
993
|
-
...
|
|
1044
|
+
...rest,
|
|
994
1045
|
// compare permissions of stages and only submit them if at least one has
|
|
995
1046
|
// changed; this enables partial updates e.g. for users who don't have
|
|
996
1047
|
// permissions to see roles
|
|
997
|
-
stages:
|
|
1048
|
+
stages: rest.stages.map((stage) => {
|
|
998
1049
|
let hasUpdatedPermissions = true;
|
|
999
1050
|
const serverStage = currentWorkflow?.stages?.find(
|
|
1000
1051
|
(serverStage2) => serverStage2.id === stage?.id
|
|
@@ -1010,40 +1061,21 @@ const EditPage = () => {
|
|
|
1010
1061
|
...stage,
|
|
1011
1062
|
permissions: hasUpdatedPermissions ? stage.permissions : void 0
|
|
1012
1063
|
};
|
|
1013
|
-
})
|
|
1064
|
+
}),
|
|
1065
|
+
stageRequiredToPublishName
|
|
1014
1066
|
});
|
|
1015
1067
|
if ("error" in res && index.isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
|
1016
1068
|
helpers.setErrors(formatValidationErrors(res.error));
|
|
1017
|
-
} else if ("data" in res) {
|
|
1018
|
-
for (const uid of res.data.contentTypes) {
|
|
1019
|
-
dispatch({
|
|
1020
|
-
type: "contentManagerApi/invalidateTags",
|
|
1021
|
-
payload: [
|
|
1022
|
-
{
|
|
1023
|
-
type: "ContentTypesConfiguration",
|
|
1024
|
-
id: uid
|
|
1025
|
-
}
|
|
1026
|
-
]
|
|
1027
|
-
});
|
|
1028
|
-
}
|
|
1029
1069
|
}
|
|
1030
1070
|
} else {
|
|
1031
|
-
const res = await create(
|
|
1071
|
+
const res = await create({
|
|
1072
|
+
...rest,
|
|
1073
|
+
stageRequiredToPublishName
|
|
1074
|
+
});
|
|
1032
1075
|
if ("error" in res && index.isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
|
1033
1076
|
helpers.setErrors(formatValidationErrors(res.error));
|
|
1034
1077
|
} else if ("data" in res) {
|
|
1035
|
-
|
|
1036
|
-
dispatch({
|
|
1037
|
-
type: "contentManagerApi/invalidateTags",
|
|
1038
|
-
payload: [
|
|
1039
|
-
{
|
|
1040
|
-
type: "ContentTypesConfiguration",
|
|
1041
|
-
id: uid
|
|
1042
|
-
}
|
|
1043
|
-
]
|
|
1044
|
-
});
|
|
1045
|
-
}
|
|
1046
|
-
navigate(`../${res.data.id}`);
|
|
1078
|
+
navigate(`../${res.data.id}`, { replace: true });
|
|
1047
1079
|
}
|
|
1048
1080
|
}
|
|
1049
1081
|
} catch (error2) {
|
|
@@ -1107,13 +1139,15 @@ const EditPage = () => {
|
|
|
1107
1139
|
return {
|
|
1108
1140
|
name: "",
|
|
1109
1141
|
stages: [],
|
|
1110
|
-
contentTypes: []
|
|
1142
|
+
contentTypes: [],
|
|
1143
|
+
stageRequiredToPublish: ""
|
|
1111
1144
|
};
|
|
1112
1145
|
} else {
|
|
1113
1146
|
return {
|
|
1114
1147
|
name: currentWorkflow.name,
|
|
1115
1148
|
stages: addTmpKeysToStages(currentWorkflow.stages),
|
|
1116
|
-
contentTypes: currentWorkflow.contentTypes
|
|
1149
|
+
contentTypes: currentWorkflow.contentTypes,
|
|
1150
|
+
stageRequiredToPublish: currentWorkflow.stageRequiredToPublish?.id.toString() ?? ""
|
|
1117
1151
|
};
|
|
1118
1152
|
}
|
|
1119
1153
|
}, [currentWorkflow, isCreatingWorkflow]);
|
|
@@ -1136,13 +1170,12 @@ const EditPage = () => {
|
|
|
1136
1170
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1137
1171
|
Layout.Header,
|
|
1138
1172
|
{
|
|
1139
|
-
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
|
|
1173
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, { fallback: ".." }),
|
|
1140
1174
|
primaryAction: canUpdate || canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1141
1175
|
designSystem.Button,
|
|
1142
1176
|
{
|
|
1143
1177
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
|
|
1144
1178
|
type: "submit",
|
|
1145
|
-
size: "M",
|
|
1146
1179
|
disabled: !modified || isSubmitting || values.stages.length === 0,
|
|
1147
1180
|
loading: !Boolean(Object.keys(savePrompts).length > 0) && isSubmitting,
|
|
1148
1181
|
children: formatMessage({
|
|
@@ -1192,7 +1225,7 @@ const EditPage = () => {
|
|
|
1192
1225
|
},
|
|
1193
1226
|
{
|
|
1194
1227
|
count: contentTypesFromOtherWorkflows?.filter(
|
|
1195
|
-
(contentType) =>
|
|
1228
|
+
(contentType) => values.contentTypes.includes(contentType)
|
|
1196
1229
|
).length ?? 0
|
|
1197
1230
|
}
|
|
1198
1231
|
) }),
|
|
@@ -1261,4 +1294,4 @@ const ProtectedEditPage = () => {
|
|
|
1261
1294
|
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions, children: /* @__PURE__ */ jsxRuntime.jsx(EditPage, {}) });
|
|
1262
1295
|
};
|
|
1263
1296
|
exports.ProtectedEditPage = ProtectedEditPage;
|
|
1264
|
-
//# sourceMappingURL=
|
|
1297
|
+
//# sourceMappingURL=id-BKq7JAqZ.js.map
|