@strapi/review-workflows 0.0.0-experimental.cb311d9fcfbd8e441f790aea232f0a39bdd90e16 → 0.0.0-experimental.cb74730ce5154c26404d4dccca14976a22319002
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-Dx59M7TT.mjs → Layout-BGC42hTJ.mjs} +3 -3
- package/dist/_chunks/Layout-BGC42hTJ.mjs.map +1 -0
- package/dist/_chunks/{Layout-B8FL2x6-.js → Layout-DcZnQxp9.js} +4 -5
- package/dist/_chunks/Layout-DcZnQxp9.js.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-C-SYBc57.js → id-BI6AAFQF.js} +83 -28
- package/dist/_chunks/id-BI6AAFQF.js.map +1 -0
- package/dist/_chunks/{_id-AtadE_bb.mjs → id-FuGqdNs8.mjs} +82 -26
- package/dist/_chunks/id-FuGqdNs8.mjs.map +1 -0
- package/dist/_chunks/{index-CI4KFjfU.js → index-B05ot-RJ.js} +12 -34
- package/dist/_chunks/index-B05ot-RJ.js.map +1 -0
- package/dist/_chunks/{index-CtpGMTO2.mjs → index-C_-s412E.mjs} +36 -30
- package/dist/_chunks/index-C_-s412E.mjs.map +1 -0
- package/dist/_chunks/{index-0pB4f3ex.mjs → index-D0D7uQQv.mjs} +13 -34
- package/dist/_chunks/index-D0D7uQQv.mjs.map +1 -0
- package/dist/_chunks/{index-Dj2vG7H2.js → index-Nf1qO5tM.js} +37 -32
- package/dist/_chunks/index-Nf1qO5tM.js.map +1 -0
- package/dist/_chunks/purchase-review-workflows-BN-5Ube7.mjs.map +1 -1
- package/dist/_chunks/purchase-review-workflows-DlCDg0fD.js.map +1 -1
- package/dist/_chunks/{router-C6NXX9-N.mjs → router-BslCQGgZ.mjs} +3 -3
- package/dist/_chunks/router-BslCQGgZ.mjs.map +1 -0
- package/dist/_chunks/{router-Co81pRA9.js → router-DXipg2gI.js} +3 -3
- package/dist/_chunks/router-DXipg2gI.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 +7 -3
- package/dist/server/index.js +455 -587
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +455 -587
- 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/stages.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +28 -6
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/register.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 +8 -3
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
- package/package.json +13 -13
- package/dist/_chunks/Layout-B8FL2x6-.js.map +0 -1
- package/dist/_chunks/Layout-Dx59M7TT.mjs.map +0 -1
- package/dist/_chunks/_id-AtadE_bb.mjs.map +0 -1
- package/dist/_chunks/_id-C-SYBc57.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-0pB4f3ex.mjs.map +0 -1
- package/dist/_chunks/index-CI4KFjfU.js.map +0 -1
- package/dist/_chunks/index-CtpGMTO2.mjs.map +0 -1
- package/dist/_chunks/index-Dj2vG7H2.js.map +0 -1
- package/dist/_chunks/router-C6NXX9-N.mjs.map +0 -1
- package/dist/_chunks/router-Co81pRA9.js.map +0 -1
- package/strapi-server.js +0 -3
- /package/dist/admin/src/routes/settings/{:id.d.ts → id.d.ts} +0 -0
|
@@ -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-C_-s412E.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";
|
|
@@ -17,7 +17,7 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
17
17
|
const { skip = false, ...queryParams } = params;
|
|
18
18
|
const { data, isLoading, error } = useGetWorkflowsQuery(
|
|
19
19
|
{
|
|
20
|
-
populate: "stages",
|
|
20
|
+
populate: ["stages", "stageRequiredToPublish"],
|
|
21
21
|
...queryParams
|
|
22
22
|
},
|
|
23
23
|
{
|
|
@@ -230,4 +230,4 @@ export {
|
|
|
230
230
|
DragLayerRendered as a,
|
|
231
231
|
useReviewWorkflows as u
|
|
232
232
|
};
|
|
233
|
-
//# sourceMappingURL=Layout-
|
|
233
|
+
//# sourceMappingURL=Layout-BGC42hTJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout-BGC42hTJ.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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"}
|
|
@@ -2,14 +2,13 @@
|
|
|
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-Nf1qO5tM.js");
|
|
6
6
|
const jsxRuntime = require("react/jsx-runtime");
|
|
7
7
|
const designSystem = require("@strapi/design-system");
|
|
8
8
|
const reactDnd = require("react-dnd");
|
|
9
9
|
const icons = require("@strapi/icons");
|
|
10
10
|
function _interopNamespace(e) {
|
|
11
|
-
if (e && e.__esModule)
|
|
12
|
-
return e;
|
|
11
|
+
if (e && e.__esModule) return e;
|
|
13
12
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
14
13
|
if (e) {
|
|
15
14
|
for (const k in e) {
|
|
@@ -37,7 +36,7 @@ const useReviewWorkflows = (params = {}) => {
|
|
|
37
36
|
const { skip = false, ...queryParams } = params;
|
|
38
37
|
const { data, isLoading, error } = index.useGetWorkflowsQuery(
|
|
39
38
|
{
|
|
40
|
-
populate: "stages",
|
|
39
|
+
populate: ["stages", "stageRequiredToPublish"],
|
|
41
40
|
...queryParams
|
|
42
41
|
},
|
|
43
42
|
{
|
|
@@ -248,4 +247,4 @@ exports.DragLayerRendered = DragLayerRendered;
|
|
|
248
247
|
exports.Header = Header;
|
|
249
248
|
exports.Root = Root;
|
|
250
249
|
exports.useReviewWorkflows = useReviewWorkflows;
|
|
251
|
-
//# sourceMappingURL=Layout-
|
|
250
|
+
//# sourceMappingURL=Layout-DcZnQxp9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout-DcZnQxp9.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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"}
|
|
@@ -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":";;;;;;;;;;;"}
|
|
@@ -10,14 +10,13 @@ const fractionalIndexing = require("fractional-indexing");
|
|
|
10
10
|
const reactIntl = require("react-intl");
|
|
11
11
|
const reactRouterDom = require("react-router-dom");
|
|
12
12
|
const yup = require("yup");
|
|
13
|
-
const index = require("./index-
|
|
14
|
-
const Layout = require("./Layout-
|
|
13
|
+
const index = require("./index-Nf1qO5tM.js");
|
|
14
|
+
const Layout = require("./Layout-DcZnQxp9.js");
|
|
15
15
|
const reactDndHtml5Backend = require("react-dnd-html5-backend");
|
|
16
16
|
const styledComponents = require("styled-components");
|
|
17
17
|
const reactDnd = require("react-dnd");
|
|
18
18
|
function _interopNamespace(e) {
|
|
19
|
-
if (e && e.__esModule)
|
|
20
|
-
return e;
|
|
19
|
+
if (e && e.__esModule) return e;
|
|
21
20
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
22
21
|
if (e) {
|
|
23
22
|
for (const k in e) {
|
|
@@ -159,8 +158,7 @@ const useDragAndDrop = (active, {
|
|
|
159
158
|
const hoverBoundingRect = objectRef.current?.getBoundingClientRect();
|
|
160
159
|
const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;
|
|
161
160
|
const clientOffset = monitor.getClientOffset();
|
|
162
|
-
if (!clientOffset)
|
|
163
|
-
return;
|
|
161
|
+
if (!clientOffset) return;
|
|
164
162
|
const hoverClientY = clientOffset && clientOffset.y - hoverBoundingRect.top;
|
|
165
163
|
if (typeof dragIndex === "number" && typeof newIndex === "number") {
|
|
166
164
|
if (dragIndex === newIndex) {
|
|
@@ -213,10 +211,8 @@ const useDragAndDrop = (active, {
|
|
|
213
211
|
const getDragDirection = (monitor) => {
|
|
214
212
|
if (monitor && monitor.isDragging() && !monitor.didDrop() && monitor.getInitialClientOffset() && monitor.getClientOffset()) {
|
|
215
213
|
const deltaY = monitor.getInitialClientOffset().y - monitor.getClientOffset().y;
|
|
216
|
-
if (deltaY > 0)
|
|
217
|
-
|
|
218
|
-
if (deltaY < 0)
|
|
219
|
-
return DIRECTIONS.DOWNWARD;
|
|
214
|
+
if (deltaY > 0) return DIRECTIONS.UPWARD;
|
|
215
|
+
if (deltaY < 0) return DIRECTIONS.DOWNWARD;
|
|
220
216
|
return null;
|
|
221
217
|
}
|
|
222
218
|
return null;
|
|
@@ -324,7 +320,7 @@ const Stages = ({ canDelete = true, canUpdate = true, isCreating }) => {
|
|
|
324
320
|
canReorder: stages.length > 1,
|
|
325
321
|
canUpdate,
|
|
326
322
|
stagesCount: stages.length,
|
|
327
|
-
defaultOpen:
|
|
323
|
+
defaultOpen: !stage.id,
|
|
328
324
|
...stage
|
|
329
325
|
}
|
|
330
326
|
) }, stage.__temp_key__);
|
|
@@ -496,7 +492,7 @@ const Stage = ({
|
|
|
496
492
|
{
|
|
497
493
|
background: "transparent",
|
|
498
494
|
hasRadius: true,
|
|
499
|
-
|
|
495
|
+
variant: "ghost",
|
|
500
496
|
"data-handler-id": handlerId,
|
|
501
497
|
ref: dragRef,
|
|
502
498
|
label: formatMessage({
|
|
@@ -548,7 +544,7 @@ const Stage = ({
|
|
|
548
544
|
size: 6,
|
|
549
545
|
type: "permissions"
|
|
550
546
|
}
|
|
551
|
-
].map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, children: /* @__PURE__ */ jsxRuntime.jsx(InputRenderer, { ...field }) }, field.name)) }) })
|
|
547
|
+
].map(({ size, ...field }) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(InputRenderer, { ...field }) }, field.name)) }) })
|
|
552
548
|
] })
|
|
553
549
|
}
|
|
554
550
|
)
|
|
@@ -793,7 +789,7 @@ const PermissionWrapper = styledComponents.styled(designSystem.Flex)`
|
|
|
793
789
|
const WorkflowAttributes = ({ canUpdate = true }) => {
|
|
794
790
|
const { formatMessage } = reactIntl.useIntl();
|
|
795
791
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid.Root, { background: "neutral0", hasRadius: true, gap: 4, padding: 6, shadow: "tableShadow", children: [
|
|
796
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
792
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
797
793
|
strapiAdmin.InputRenderer,
|
|
798
794
|
{
|
|
799
795
|
disabled: !canUpdate,
|
|
@@ -806,7 +802,8 @@ const WorkflowAttributes = ({ canUpdate = true }) => {
|
|
|
806
802
|
type: "string"
|
|
807
803
|
}
|
|
808
804
|
) }),
|
|
809
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(ContentTypesSelector, { disabled: !canUpdate }) })
|
|
805
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(ContentTypesSelector, { disabled: !canUpdate }) }),
|
|
806
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsxRuntime.jsx(StageSelector, { disabled: !canUpdate }) })
|
|
810
807
|
] });
|
|
811
808
|
};
|
|
812
809
|
const ContentTypesSelector = ({ disabled }) => {
|
|
@@ -910,15 +907,63 @@ const NestedOption = styledComponents.styled(designSystem.MultiSelectOption)`
|
|
|
910
907
|
const ContentTypeTakeNotice = styledComponents.styled(designSystem.Typography)`
|
|
911
908
|
font-style: italic;
|
|
912
909
|
`;
|
|
910
|
+
const StageSelector = ({ disabled }) => {
|
|
911
|
+
const { value: stages = [] } = strapiAdmin.useField("stages");
|
|
912
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
913
|
+
const { error, value, onChange } = strapiAdmin.useField("stageRequiredToPublish");
|
|
914
|
+
const validStages = stages.filter((stage) => stage.name);
|
|
915
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
916
|
+
designSystem.Field.Root,
|
|
917
|
+
{
|
|
918
|
+
error,
|
|
919
|
+
name: "stageRequiredToPublish",
|
|
920
|
+
hint: formatMessage({
|
|
921
|
+
id: "settings.review-workflows.workflow.stageRequiredToPublish.hint",
|
|
922
|
+
defaultMessage: "Prevents entries from being published if they are not at the required stage."
|
|
923
|
+
}),
|
|
924
|
+
children: [
|
|
925
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: formatMessage({
|
|
926
|
+
id: "settings.review-workflows.workflow.stageRequiredToPublish.label",
|
|
927
|
+
defaultMessage: "Required stage for publishing"
|
|
928
|
+
}) }),
|
|
929
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
930
|
+
designSystem.SingleSelect,
|
|
931
|
+
{
|
|
932
|
+
disabled,
|
|
933
|
+
onChange: (value2) => {
|
|
934
|
+
onChange("stageRequiredToPublish", value2);
|
|
935
|
+
},
|
|
936
|
+
value,
|
|
937
|
+
children: [
|
|
938
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: "", children: formatMessage({
|
|
939
|
+
id: "settings.review-workflows.workflow.stageRequiredToPublish.any",
|
|
940
|
+
defaultMessage: "Any stage"
|
|
941
|
+
}) }),
|
|
942
|
+
validStages.map((stage, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
943
|
+
designSystem.SingleSelectOption,
|
|
944
|
+
{
|
|
945
|
+
value: stage.id?.toString() || stage.__temp_key__,
|
|
946
|
+
children: stage.name
|
|
947
|
+
},
|
|
948
|
+
`requiredToPublishStage-${stage.id || stage.__temp_key__}`
|
|
949
|
+
))
|
|
950
|
+
]
|
|
951
|
+
}
|
|
952
|
+
),
|
|
953
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
|
|
954
|
+
]
|
|
955
|
+
}
|
|
956
|
+
);
|
|
957
|
+
};
|
|
913
958
|
const WORKFLOW_SCHEMA = yup__namespace.object({
|
|
914
959
|
contentTypes: yup__namespace.array().of(yup__namespace.string()),
|
|
915
960
|
name: yup__namespace.string().max(255, {
|
|
916
961
|
id: "review-workflows.validation.name.max-length",
|
|
917
962
|
defaultMessage: "Name can not be longer than 255 characters"
|
|
918
|
-
}).required(),
|
|
963
|
+
}).required().nullable(),
|
|
919
964
|
stages: yup__namespace.array().of(
|
|
920
965
|
yup__namespace.object().shape({
|
|
921
|
-
name: yup__namespace.string().required({
|
|
966
|
+
name: yup__namespace.string().nullable().required({
|
|
922
967
|
id: "review-workflows.validation.stage.name",
|
|
923
968
|
defaultMessage: "Name is required"
|
|
924
969
|
}).max(255, {
|
|
@@ -935,7 +980,7 @@ const WORKFLOW_SCHEMA = yup__namespace.object({
|
|
|
935
980
|
return stages.filter((stage) => stage.name === stageName).length === 1;
|
|
936
981
|
}
|
|
937
982
|
),
|
|
938
|
-
color: yup__namespace.string().required({
|
|
983
|
+
color: yup__namespace.string().nullable().required({
|
|
939
984
|
id: "review-workflows.validation.stage.color",
|
|
940
985
|
defaultMessage: "Color is required"
|
|
941
986
|
}).matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),
|
|
@@ -952,7 +997,8 @@ const WORKFLOW_SCHEMA = yup__namespace.object({
|
|
|
952
997
|
})
|
|
953
998
|
).strict()
|
|
954
999
|
})
|
|
955
|
-
).min(1)
|
|
1000
|
+
).min(1),
|
|
1001
|
+
stageRequiredToPublish: yup__namespace.string().nullable()
|
|
956
1002
|
});
|
|
957
1003
|
const EditPage = () => {
|
|
958
1004
|
const { id = "" } = reactRouterDom.useParams();
|
|
@@ -985,13 +1031,17 @@ const EditPage = () => {
|
|
|
985
1031
|
const stagesPerWorkflow = limits?.[index.CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];
|
|
986
1032
|
const submitForm = async (data, helpers) => {
|
|
987
1033
|
try {
|
|
1034
|
+
const { stageRequiredToPublish, ...rest } = data;
|
|
1035
|
+
const stageRequiredToPublishName = stageRequiredToPublish === "" ? null : rest.stages.find(
|
|
1036
|
+
(stage) => stage.id === Number(stageRequiredToPublish) || stage.__temp_key__ === stageRequiredToPublish
|
|
1037
|
+
)?.name;
|
|
988
1038
|
if (!isCreatingWorkflow) {
|
|
989
1039
|
const res = await update(id, {
|
|
990
|
-
...
|
|
1040
|
+
...rest,
|
|
991
1041
|
// compare permissions of stages and only submit them if at least one has
|
|
992
1042
|
// changed; this enables partial updates e.g. for users who don't have
|
|
993
1043
|
// permissions to see roles
|
|
994
|
-
stages:
|
|
1044
|
+
stages: rest.stages.map((stage) => {
|
|
995
1045
|
let hasUpdatedPermissions = true;
|
|
996
1046
|
const serverStage = currentWorkflow?.stages?.find(
|
|
997
1047
|
(serverStage2) => serverStage2.id === stage?.id
|
|
@@ -1007,13 +1057,17 @@ const EditPage = () => {
|
|
|
1007
1057
|
...stage,
|
|
1008
1058
|
permissions: hasUpdatedPermissions ? stage.permissions : void 0
|
|
1009
1059
|
};
|
|
1010
|
-
})
|
|
1060
|
+
}),
|
|
1061
|
+
stageRequiredToPublishName
|
|
1011
1062
|
});
|
|
1012
1063
|
if ("error" in res && index.isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
|
1013
1064
|
helpers.setErrors(formatValidationErrors(res.error));
|
|
1014
1065
|
}
|
|
1015
1066
|
} else {
|
|
1016
|
-
const res = await create(
|
|
1067
|
+
const res = await create({
|
|
1068
|
+
...rest,
|
|
1069
|
+
stageRequiredToPublishName
|
|
1070
|
+
});
|
|
1017
1071
|
if ("error" in res && index.isBaseQueryError(res.error) && res.error.name === "ValidationError") {
|
|
1018
1072
|
helpers.setErrors(formatValidationErrors(res.error));
|
|
1019
1073
|
} else if ("data" in res) {
|
|
@@ -1081,13 +1135,15 @@ const EditPage = () => {
|
|
|
1081
1135
|
return {
|
|
1082
1136
|
name: "",
|
|
1083
1137
|
stages: [],
|
|
1084
|
-
contentTypes: []
|
|
1138
|
+
contentTypes: [],
|
|
1139
|
+
stageRequiredToPublish: ""
|
|
1085
1140
|
};
|
|
1086
1141
|
} else {
|
|
1087
1142
|
return {
|
|
1088
1143
|
name: currentWorkflow.name,
|
|
1089
1144
|
stages: addTmpKeysToStages(currentWorkflow.stages),
|
|
1090
|
-
contentTypes: currentWorkflow.contentTypes
|
|
1145
|
+
contentTypes: currentWorkflow.contentTypes,
|
|
1146
|
+
stageRequiredToPublish: currentWorkflow.stageRequiredToPublish?.id.toString() ?? ""
|
|
1091
1147
|
};
|
|
1092
1148
|
}
|
|
1093
1149
|
}, [currentWorkflow, isCreatingWorkflow]);
|
|
@@ -1110,13 +1166,12 @@ const EditPage = () => {
|
|
|
1110
1166
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1111
1167
|
Layout.Header,
|
|
1112
1168
|
{
|
|
1113
|
-
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, {}),
|
|
1169
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.BackButton, { fallback: ".." }),
|
|
1114
1170
|
primaryAction: canUpdate || canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1115
1171
|
designSystem.Button,
|
|
1116
1172
|
{
|
|
1117
1173
|
startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
|
|
1118
1174
|
type: "submit",
|
|
1119
|
-
size: "M",
|
|
1120
1175
|
disabled: !modified || isSubmitting || values.stages.length === 0,
|
|
1121
1176
|
loading: !Boolean(Object.keys(savePrompts).length > 0) && isSubmitting,
|
|
1122
1177
|
children: formatMessage({
|
|
@@ -1235,4 +1290,4 @@ const ProtectedEditPage = () => {
|
|
|
1235
1290
|
return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Protect, { permissions, children: /* @__PURE__ */ jsxRuntime.jsx(EditPage, {}) });
|
|
1236
1291
|
};
|
|
1237
1292
|
exports.ProtectedEditPage = ProtectedEditPage;
|
|
1238
|
-
//# sourceMappingURL=
|
|
1293
|
+
//# sourceMappingURL=id-BI6AAFQF.js.map
|