@strapi/review-workflows 5.0.0-beta.7 → 5.0.0-beta.8
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-60gjGInX.js → Layout-BMqtFafC.js} +4 -10
- package/dist/_chunks/Layout-BMqtFafC.js.map +1 -0
- package/dist/_chunks/{Layout-CJYuYwXO.mjs → Layout-lg3hbwGL.mjs} +4 -10
- package/dist/_chunks/Layout-lg3hbwGL.mjs.map +1 -0
- package/dist/_chunks/{_id-UJ-8gken.mjs → _id-B3jMqqMH.mjs} +71 -101
- package/dist/_chunks/_id-B3jMqqMH.mjs.map +1 -0
- package/dist/_chunks/{_id-BO7wNLt1.js → _id-B853wt9z.js} +69 -99
- package/dist/_chunks/_id-B853wt9z.js.map +1 -0
- package/dist/_chunks/{index-DhEhUlv9.mjs → index-BhJmjDbj.mjs} +7 -6
- package/dist/_chunks/{index-DhEhUlv9.mjs.map → index-BhJmjDbj.mjs.map} +1 -1
- package/dist/_chunks/{index-DnXnsrOM.js → index-CdU1x9cZ.js} +7 -6
- package/dist/_chunks/index-CdU1x9cZ.js.map +1 -0
- package/dist/_chunks/{index-CfiZnfhM.js → index-Ujtj1Rcp.js} +28 -96
- package/dist/_chunks/index-Ujtj1Rcp.js.map +1 -0
- package/dist/_chunks/{index-DmQNXb0P.mjs → index-lebOqdrv.mjs} +29 -97
- package/dist/_chunks/index-lebOqdrv.mjs.map +1 -0
- package/dist/_chunks/{router-BiQI7EcM.js → router-BboD243b.js} +3 -3
- package/dist/_chunks/{router-BiQI7EcM.js.map → router-BboD243b.js.map} +1 -1
- package/dist/_chunks/{router-DFD0S0ey.mjs → router-CvMnSjb9.mjs} +3 -3
- package/dist/_chunks/{router-DFD0S0ey.mjs.map → router-CvMnSjb9.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/routes/settings/hooks/useReviewWorkflows.d.ts +3 -3
- package/dist/admin/src/services/admin.d.ts +2 -2
- package/dist/admin/src/services/api.d.ts +2 -3
- package/dist/admin/src/services/content-manager.d.ts +6 -6
- package/dist/admin/src/services/settings.d.ts +4 -4
- package/dist/admin/src/utils/api.d.ts +3 -17
- package/package.json +11 -11
- package/dist/_chunks/Layout-60gjGInX.js.map +0 -1
- package/dist/_chunks/Layout-CJYuYwXO.mjs.map +0 -1
- package/dist/_chunks/_id-BO7wNLt1.js.map +0 -1
- package/dist/_chunks/_id-UJ-8gken.mjs.map +0 -1
- package/dist/_chunks/index-CfiZnfhM.js.map +0 -1
- package/dist/_chunks/index-DmQNXb0P.mjs.map +0 -1
- package/dist/_chunks/index-DnXnsrOM.js.map +0 -1
|
@@ -2,12 +2,11 @@
|
|
|
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-Ujtj1Rcp.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
|
-
const styledComponents = require("styled-components");
|
|
11
10
|
function _interopNamespace(e) {
|
|
12
11
|
if (e && e.__esModule)
|
|
13
12
|
return e;
|
|
@@ -166,7 +165,7 @@ const StageDragPreview = ({ name }) => {
|
|
|
166
165
|
width: "30rem",
|
|
167
166
|
children: [
|
|
168
167
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
169
|
-
|
|
168
|
+
designSystem.Flex,
|
|
170
169
|
{
|
|
171
170
|
alignItems: "center",
|
|
172
171
|
background: "neutral200",
|
|
@@ -174,7 +173,7 @@ const StageDragPreview = ({ name }) => {
|
|
|
174
173
|
height: 6,
|
|
175
174
|
justifyContent: "center",
|
|
176
175
|
width: 6,
|
|
177
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, { width: "0.8rem" })
|
|
176
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, { width: "0.8rem", fill: "neutral600" })
|
|
178
177
|
}
|
|
179
178
|
),
|
|
180
179
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: name })
|
|
@@ -182,11 +181,6 @@ const StageDragPreview = ({ name }) => {
|
|
|
182
181
|
}
|
|
183
182
|
);
|
|
184
183
|
};
|
|
185
|
-
const Toggle = styledComponents.styled(designSystem.Flex)`
|
|
186
|
-
svg path {
|
|
187
|
-
fill: ${({ theme }) => theme.colors.neutral600};
|
|
188
|
-
}
|
|
189
|
-
`;
|
|
190
184
|
function getStyle(initialOffset, currentOffset, mouseOffset) {
|
|
191
185
|
if (!initialOffset || !currentOffset || !mouseOffset) {
|
|
192
186
|
return { display: "none" };
|
|
@@ -255,4 +249,4 @@ exports.DragLayerRendered = DragLayerRendered;
|
|
|
255
249
|
exports.Header = Header;
|
|
256
250
|
exports.Root = Root;
|
|
257
251
|
exports.useReviewWorkflows = useReviewWorkflows;
|
|
258
|
-
//# sourceMappingURL=Layout-
|
|
252
|
+
//# sourceMappingURL=Layout-BMqtFafC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout-BMqtFafC.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 { id = '', skip = false, ...queryParams } = params;\n\n const { data, isLoading, error } = useGetWorkflowsQuery(\n {\n id,\n populate: 'stages',\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.Header\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","id","useDeleteWorkflowMutation","jsxs","Flex","jsx","CaretDown","Typography","useDragLayer","Box","Page","Layouts","Fragment"],"mappings":"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"}
|
|
@@ -1,12 +1,11 @@
|
|
|
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-lebOqdrv.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";
|
|
8
8
|
import { CaretDown } from "@strapi/icons";
|
|
9
|
-
import { styled } from "styled-components";
|
|
10
9
|
const DEFAULT_UNEXPECTED_ERROR_MSG = {
|
|
11
10
|
id: "notification.error",
|
|
12
11
|
defaultMessage: "An error occurred, please try again"
|
|
@@ -146,7 +145,7 @@ const StageDragPreview = ({ name }) => {
|
|
|
146
145
|
width: "30rem",
|
|
147
146
|
children: [
|
|
148
147
|
/* @__PURE__ */ jsx(
|
|
149
|
-
|
|
148
|
+
Flex,
|
|
150
149
|
{
|
|
151
150
|
alignItems: "center",
|
|
152
151
|
background: "neutral200",
|
|
@@ -154,7 +153,7 @@ const StageDragPreview = ({ name }) => {
|
|
|
154
153
|
height: 6,
|
|
155
154
|
justifyContent: "center",
|
|
156
155
|
width: 6,
|
|
157
|
-
children: /* @__PURE__ */ jsx(CaretDown, { width: "0.8rem" })
|
|
156
|
+
children: /* @__PURE__ */ jsx(CaretDown, { width: "0.8rem", fill: "neutral600" })
|
|
158
157
|
}
|
|
159
158
|
),
|
|
160
159
|
/* @__PURE__ */ jsx(Typography, { fontWeight: "bold", children: name })
|
|
@@ -162,11 +161,6 @@ const StageDragPreview = ({ name }) => {
|
|
|
162
161
|
}
|
|
163
162
|
);
|
|
164
163
|
};
|
|
165
|
-
const Toggle = styled(Flex)`
|
|
166
|
-
svg path {
|
|
167
|
-
fill: ${({ theme }) => theme.colors.neutral600};
|
|
168
|
-
}
|
|
169
|
-
`;
|
|
170
164
|
function getStyle(initialOffset, currentOffset, mouseOffset) {
|
|
171
165
|
if (!initialOffset || !currentOffset || !mouseOffset) {
|
|
172
166
|
return { display: "none" };
|
|
@@ -237,4 +231,4 @@ export {
|
|
|
237
231
|
DragLayerRendered as a,
|
|
238
232
|
useReviewWorkflows as u
|
|
239
233
|
};
|
|
240
|
-
//# sourceMappingURL=Layout-
|
|
234
|
+
//# sourceMappingURL=Layout-lg3hbwGL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Layout-lg3hbwGL.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 { id = '', skip = false, ...queryParams } = params;\n\n const { data, isLoading, error } = useGetWorkflowsQuery(\n {\n id,\n populate: 'stages',\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.Header\n navigationAction={navigationAction}\n primaryAction={primaryAction}\n title={title}\n subtitle={subtitle}\n />\n </>\n );\n};\n\nexport { DragLayerRendered, Header, Root };\n"],"names":["data","id"],"mappings":"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"}
|
|
@@ -2,22 +2,22 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { useTracking, useForm, useField, InputRenderer as InputRenderer$1, useNotification, ConfirmDialog, Page, useAPIErrorHandler, useRBAC, Form, BackButton } from "@strapi/admin/strapi-admin";
|
|
4
4
|
import { useLicenseLimits } from "@strapi/admin/strapi-admin/ee";
|
|
5
|
-
import { Box, Typography, Flex, MenuItem, Menu,
|
|
6
|
-
import { PlusCircle,
|
|
5
|
+
import { Box, Typography, Flex, Accordion, MenuItem, Menu, MultiSelectOption, useComposedRefs, VisuallyHidden, IconButton, Grid, GridItem, Field, SingleSelect, SingleSelectOption, TextInput, MultiSelect, MultiSelectGroup, useCollator, Button } from "@strapi/design-system";
|
|
6
|
+
import { PlusCircle, More, Drag, EyeStriked, Duplicate, Check } from "@strapi/icons";
|
|
7
7
|
import { generateNKeysBetween } from "fractional-indexing";
|
|
8
8
|
import { useIntl } from "react-intl";
|
|
9
9
|
import { useDispatch } from "react-redux";
|
|
10
10
|
import { useParams, useNavigate } from "react-router-dom";
|
|
11
11
|
import * as yup from "yup";
|
|
12
|
-
import { r as reviewWorkflowsApi, A as AVAILABLE_COLORS, g as getStageColorByHex, u as useGetContentTypesQuery, a as useTypedSelector, C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, b as CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME, L as LimitsModal, i as isBaseQueryError } from "./index-
|
|
13
|
-
import { D as DRAG_DROP_TYPES, u as useReviewWorkflows, a as DragLayerRendered, H as Header, R as Root } from "./Layout-
|
|
12
|
+
import { r as reviewWorkflowsApi, A as AVAILABLE_COLORS, g as getStageColorByHex, u as useGetContentTypesQuery, a as useTypedSelector, C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, b as CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME, L as LimitsModal, i as isBaseQueryError } from "./index-lebOqdrv.mjs";
|
|
13
|
+
import { D as DRAG_DROP_TYPES, u as useReviewWorkflows, a as DragLayerRendered, H as Header, R as Root } from "./Layout-lg3hbwGL.mjs";
|
|
14
14
|
import { getEmptyImage } from "react-dnd-html5-backend";
|
|
15
15
|
import { styled } from "styled-components";
|
|
16
16
|
import { useDrop, useDrag } from "react-dnd";
|
|
17
17
|
const adminApi = reviewWorkflowsApi.injectEndpoints({
|
|
18
18
|
endpoints(builder) {
|
|
19
19
|
return {
|
|
20
|
-
|
|
20
|
+
getAdminRoles: builder.query({
|
|
21
21
|
query: () => ({
|
|
22
22
|
url: `/admin/roles`,
|
|
23
23
|
method: "GET"
|
|
@@ -29,7 +29,7 @@ const adminApi = reviewWorkflowsApi.injectEndpoints({
|
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
|
-
const {
|
|
32
|
+
const { useGetAdminRolesQuery } = adminApi;
|
|
33
33
|
const useKeyboardDragAndDrop = (active, index, { onCancel, onDropItem, onGrabItem, onMoveItem }) => {
|
|
34
34
|
const [isSelected, setIsSelected] = React.useState(false);
|
|
35
35
|
const handleMove = (movement) => {
|
|
@@ -250,7 +250,7 @@ const AddStage = ({ children, ...props }) => {
|
|
|
250
250
|
{
|
|
251
251
|
tag: "button",
|
|
252
252
|
background: "neutral0",
|
|
253
|
-
|
|
253
|
+
borderColor: "neutral150",
|
|
254
254
|
paddingBottom: 3,
|
|
255
255
|
paddingLeft: 4,
|
|
256
256
|
paddingRight: 4,
|
|
@@ -276,7 +276,7 @@ const StyledButton = styled(Box)`
|
|
|
276
276
|
color: ${({ theme }) => theme.colors.primary600};
|
|
277
277
|
}
|
|
278
278
|
`;
|
|
279
|
-
const Stages = ({ canDelete = true, canUpdate = true, isCreating
|
|
279
|
+
const Stages = ({ canDelete = true, canUpdate = true, isCreating }) => {
|
|
280
280
|
const { formatMessage } = useIntl();
|
|
281
281
|
const { trackUsage } = useTracking();
|
|
282
282
|
const addFieldRow = useForm("Stages", (state) => state.addFieldRow);
|
|
@@ -313,7 +313,7 @@ const Stages = ({ canDelete = true, canUpdate = true, isCreating = false }) => {
|
|
|
313
313
|
canReorder: stages.length > 1,
|
|
314
314
|
canUpdate,
|
|
315
315
|
stagesCount: stages.length,
|
|
316
|
-
|
|
316
|
+
defaultOpen: isCreating,
|
|
317
317
|
...stage
|
|
318
318
|
}
|
|
319
319
|
) }, stage.__temp_key__);
|
|
@@ -345,16 +345,15 @@ const Stage = ({
|
|
|
345
345
|
canDelete = false,
|
|
346
346
|
canReorder = false,
|
|
347
347
|
canUpdate = false,
|
|
348
|
-
isOpen: isOpenDefault = false,
|
|
349
348
|
stagesCount,
|
|
350
349
|
name,
|
|
351
350
|
permissions,
|
|
352
|
-
color
|
|
351
|
+
color,
|
|
352
|
+
defaultOpen
|
|
353
353
|
}) => {
|
|
354
354
|
const [liveText, setLiveText] = React.useState();
|
|
355
355
|
const { formatMessage } = useIntl();
|
|
356
356
|
const { trackUsage } = useTracking();
|
|
357
|
-
const [isOpen, setIsOpen] = React.useState(isOpenDefault);
|
|
358
357
|
const stageErrors = useForm("Stages", (state) => state.errors.stages);
|
|
359
358
|
const error = stageErrors?.[index];
|
|
360
359
|
const addFieldRow = useForm("Stage", (state) => state.addFieldRow);
|
|
@@ -436,6 +435,7 @@ const Stage = ({
|
|
|
436
435
|
const handleCloneClick = () => {
|
|
437
436
|
addFieldRow("stages", { name, color, permissions });
|
|
438
437
|
};
|
|
438
|
+
const id = React.useId();
|
|
439
439
|
return /* @__PURE__ */ jsxs(Box, { ref: composedRef, children: [
|
|
440
440
|
liveText && /* @__PURE__ */ jsx(VisuallyHidden, { "aria-live": "assertive", children: liveText }),
|
|
441
441
|
isDragging ? /* @__PURE__ */ jsx(
|
|
@@ -447,74 +447,61 @@ const Stage = ({
|
|
|
447
447
|
borderWidth: "1px",
|
|
448
448
|
display: "block",
|
|
449
449
|
hasRadius: true,
|
|
450
|
-
padding: 6
|
|
451
|
-
shadow: "tableShadow"
|
|
450
|
+
padding: 6
|
|
452
451
|
}
|
|
453
|
-
) : /* @__PURE__ */
|
|
454
|
-
|
|
452
|
+
) : /* @__PURE__ */ jsx(
|
|
453
|
+
AccordionRoot,
|
|
455
454
|
{
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
onToggle: () => {
|
|
459
|
-
setIsOpen(!isOpen);
|
|
460
|
-
if (!isOpen) {
|
|
455
|
+
onValueChange: (value) => {
|
|
456
|
+
if (value) {
|
|
461
457
|
trackUsage("willEditStage");
|
|
462
458
|
}
|
|
463
459
|
},
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
/* @__PURE__ */ jsx(More, { "aria-hidden": true, focusable: false }),
|
|
478
|
-
/* @__PURE__ */ jsx(VisuallyHidden, { tag: "span", children: formatMessage({
|
|
479
|
-
id: "[tbdb].components.DynamicZone.more-actions",
|
|
480
|
-
defaultMessage: "More actions"
|
|
481
|
-
}) })
|
|
482
|
-
] }),
|
|
483
|
-
/* @__PURE__ */ jsx(Menu.Content, { popoverPlacement: "bottom-end", zIndex: 2, children: /* @__PURE__ */ jsxs(Menu.SubRoot, { children: [
|
|
484
|
-
canUpdate && /* @__PURE__ */ jsx(MenuItem, { onClick: handleCloneClick, children: formatMessage({
|
|
485
|
-
id: "Settings.review-workflows.stage.delete",
|
|
486
|
-
defaultMessage: "Duplicate stage"
|
|
487
|
-
}) }),
|
|
488
|
-
canDelete && /* @__PURE__ */ jsx(DeleteMenuItem, { onClick: () => removeFieldRow("stages", index), children: formatMessage({
|
|
489
|
-
id: "Settings.review-workflows.stage.delete",
|
|
490
|
-
defaultMessage: "Delete"
|
|
491
|
-
}) })
|
|
492
|
-
] }) })
|
|
460
|
+
defaultValue: defaultOpen ? id : void 0,
|
|
461
|
+
$error: Object.values(error ?? {}).length > 0,
|
|
462
|
+
children: /* @__PURE__ */ jsxs(Accordion.Item, { value: id, children: [
|
|
463
|
+
/* @__PURE__ */ jsxs(Accordion.Header, { children: [
|
|
464
|
+
/* @__PURE__ */ jsx(Accordion.Trigger, { children: name }),
|
|
465
|
+
/* @__PURE__ */ jsx(Accordion.Actions, { children: canDelete || canUpdate ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
466
|
+
/* @__PURE__ */ jsxs(Menu.Root, { children: [
|
|
467
|
+
/* @__PURE__ */ jsxs(ContextMenuTrigger, { size: "S", endIcon: null, paddingLeft: 2, paddingRight: 2, children: [
|
|
468
|
+
/* @__PURE__ */ jsx(More, { "aria-hidden": true, focusable: false }),
|
|
469
|
+
/* @__PURE__ */ jsx(VisuallyHidden, { tag: "span", children: formatMessage({
|
|
470
|
+
id: "[tbdb].components.DynamicZone.more-actions",
|
|
471
|
+
defaultMessage: "More actions"
|
|
472
|
+
}) })
|
|
493
473
|
] }),
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
474
|
+
/* @__PURE__ */ jsx(Menu.Content, { popoverPlacement: "bottom-end", zIndex: 2, children: /* @__PURE__ */ jsxs(Menu.SubRoot, { children: [
|
|
475
|
+
canUpdate && /* @__PURE__ */ jsx(MenuItem, { onClick: handleCloneClick, children: formatMessage({
|
|
476
|
+
id: "Settings.review-workflows.stage.delete",
|
|
477
|
+
defaultMessage: "Duplicate stage"
|
|
478
|
+
}) }),
|
|
479
|
+
canDelete && /* @__PURE__ */ jsx(DeleteMenuItem, { onClick: () => removeFieldRow("stages", index), children: formatMessage({
|
|
480
|
+
id: "Settings.review-workflows.stage.delete",
|
|
481
|
+
defaultMessage: "Delete"
|
|
482
|
+
}) })
|
|
483
|
+
] }) })
|
|
484
|
+
] }),
|
|
485
|
+
canUpdate && /* @__PURE__ */ jsx(
|
|
486
|
+
IconButton,
|
|
487
|
+
{
|
|
488
|
+
background: "transparent",
|
|
489
|
+
hasRadius: true,
|
|
490
|
+
borderWidth: 0,
|
|
491
|
+
"data-handler-id": handlerId,
|
|
492
|
+
ref: dragRef,
|
|
493
|
+
label: formatMessage({
|
|
494
|
+
id: "Settings.review-workflows.stage.drag",
|
|
495
|
+
defaultMessage: "Drag"
|
|
496
|
+
}),
|
|
497
|
+
onClick: (e) => e.stopPropagation(),
|
|
498
|
+
onKeyDown: handleKeyDown,
|
|
499
|
+
children: /* @__PURE__ */ jsx(Drag, {})
|
|
500
|
+
}
|
|
501
|
+
)
|
|
502
|
+
] }) : null })
|
|
503
|
+
] }),
|
|
504
|
+
/* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(Grid, { gap: 4, padding: 6, children: [
|
|
518
505
|
{
|
|
519
506
|
disabled: !canUpdate,
|
|
520
507
|
label: formatMessage({
|
|
@@ -553,11 +540,15 @@ const Stage = ({
|
|
|
553
540
|
type: "permissions"
|
|
554
541
|
}
|
|
555
542
|
].map(({ size, ...field }) => /* @__PURE__ */ jsx(GridItem, { col: size, children: /* @__PURE__ */ jsx(InputRenderer, { ...field }) }, field.name)) }) })
|
|
556
|
-
]
|
|
543
|
+
] })
|
|
557
544
|
}
|
|
558
545
|
)
|
|
559
546
|
] });
|
|
560
547
|
};
|
|
548
|
+
const AccordionRoot = styled(Accordion.Root)`
|
|
549
|
+
border: 1px solid
|
|
550
|
+
${({ theme, $error }) => $error ? theme.colors.danger600 : theme.colors.neutral200};
|
|
551
|
+
`;
|
|
561
552
|
const DeleteMenuItem = styled(MenuItem)`
|
|
562
553
|
color: ${({ theme }) => theme.colors.danger600};
|
|
563
554
|
`;
|
|
@@ -571,22 +562,6 @@ const ContextMenuTrigger = styled(Menu.Trigger)`
|
|
|
571
562
|
font-size: 0;
|
|
572
563
|
}
|
|
573
564
|
`;
|
|
574
|
-
const DragIconButton = styled(IconButton)`
|
|
575
|
-
align-items: center;
|
|
576
|
-
border-radius: ${({ theme }) => theme.borderRadius};
|
|
577
|
-
display: flex;
|
|
578
|
-
justify-content: center;
|
|
579
|
-
|
|
580
|
-
&:hover,
|
|
581
|
-
&:focus {
|
|
582
|
-
background-color: ${({ theme }) => theme.colors.neutral100};
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
svg {
|
|
586
|
-
height: auto;
|
|
587
|
-
width: ${({ theme }) => theme.spaces[3]};
|
|
588
|
-
}
|
|
589
|
-
`;
|
|
590
565
|
const InputRenderer = (props) => {
|
|
591
566
|
switch (props.type) {
|
|
592
567
|
case "color":
|
|
@@ -669,7 +644,7 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
|
|
|
669
644
|
const { value = [], error, onChange } = useField(name);
|
|
670
645
|
const allStages = useForm("PermissionsField", (state) => state.values.stages);
|
|
671
646
|
const onFormValueChange = useForm("PermissionsField", (state) => state.onChange);
|
|
672
|
-
const { data: roles = [], isLoading } =
|
|
647
|
+
const { data: roles = [], isLoading } = useGetAdminRolesQuery();
|
|
673
648
|
const filteredRoles = roles?.filter((role) => role.code !== "strapi-super-admin") ?? [];
|
|
674
649
|
React.useEffect(() => {
|
|
675
650
|
if (!isLoading && roles.length === 0) {
|
|
@@ -706,7 +681,7 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
|
|
|
706
681
|
id: "components.NotAllowedInput.text",
|
|
707
682
|
defaultMessage: "No permissions to see this field"
|
|
708
683
|
}),
|
|
709
|
-
startAction: /* @__PURE__ */ jsx(
|
|
684
|
+
startAction: /* @__PURE__ */ jsx(EyeStriked, { fill: "neutral600" }),
|
|
710
685
|
type: "text",
|
|
711
686
|
value: ""
|
|
712
687
|
}
|
|
@@ -758,14 +733,14 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
|
|
|
758
733
|
IconButton,
|
|
759
734
|
{
|
|
760
735
|
disabled,
|
|
761
|
-
icon: /* @__PURE__ */ jsx(Duplicate, {}),
|
|
762
736
|
label: formatMessage({
|
|
763
737
|
id: "Settings.review-workflows.stage.permissions.apply.label",
|
|
764
738
|
defaultMessage: "Apply to all stages"
|
|
765
739
|
}),
|
|
766
740
|
size: "L",
|
|
767
741
|
variant: "secondary",
|
|
768
|
-
onClick: () => setIsApplyAllConfirmationOpen(true)
|
|
742
|
+
onClick: () => setIsApplyAllConfirmationOpen(true),
|
|
743
|
+
children: /* @__PURE__ */ jsx(Duplicate, {})
|
|
769
744
|
}
|
|
770
745
|
)
|
|
771
746
|
] }),
|
|
@@ -800,11 +775,6 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
|
|
|
800
775
|
)
|
|
801
776
|
] });
|
|
802
777
|
};
|
|
803
|
-
const StyledIcon = styled(EyeStriked)`
|
|
804
|
-
& > path {
|
|
805
|
-
fill: ${({ theme }) => theme.colors.neutral600};
|
|
806
|
-
}
|
|
807
|
-
`;
|
|
808
778
|
const NestedOption$1 = styled(MultiSelectOption)`
|
|
809
779
|
padding-left: ${({ theme }) => theme.spaces[7]};
|
|
810
780
|
`;
|
|
@@ -1278,4 +1248,4 @@ const ProtectedEditPage = () => {
|
|
|
1278
1248
|
export {
|
|
1279
1249
|
ProtectedEditPage
|
|
1280
1250
|
};
|
|
1281
|
-
//# sourceMappingURL=_id-
|
|
1251
|
+
//# sourceMappingURL=_id-B3jMqqMH.mjs.map
|