@strapi/review-workflows 0.0.0-next.39c0188c3aa01bec7b64b948211571d5159e811d → 0.0.0-next.3a1d87a9c3b1d4d89f741c6ecd7f501230fd8d76

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.
Files changed (77) hide show
  1. package/dist/_chunks/Layout-C3IORH2n.js +250 -0
  2. package/dist/_chunks/Layout-C3IORH2n.js.map +1 -0
  3. package/dist/_chunks/Layout-DNKR5bym.mjs +233 -0
  4. package/dist/_chunks/Layout-DNKR5bym.mjs.map +1 -0
  5. package/dist/_chunks/en-CYgjfSep.js +15 -0
  6. package/dist/_chunks/en-CYgjfSep.js.map +1 -0
  7. package/dist/_chunks/en-D9dxziEb.mjs +15 -0
  8. package/dist/_chunks/en-D9dxziEb.mjs.map +1 -0
  9. package/dist/_chunks/id-C9Ku9Br9.mjs +1274 -0
  10. package/dist/_chunks/id-C9Ku9Br9.mjs.map +1 -0
  11. package/dist/_chunks/id-oOE1bYls.js +1293 -0
  12. package/dist/_chunks/id-oOE1bYls.js.map +1 -0
  13. package/dist/_chunks/index-ByXbOW-R.mjs +815 -0
  14. package/dist/_chunks/index-ByXbOW-R.mjs.map +1 -0
  15. package/dist/_chunks/index-CmHHjN95.js +231 -0
  16. package/dist/_chunks/index-CmHHjN95.js.map +1 -0
  17. package/dist/_chunks/index-CyhaJuJG.mjs +213 -0
  18. package/dist/_chunks/index-CyhaJuJG.mjs.map +1 -0
  19. package/dist/_chunks/index-DMT27jNE.js +832 -0
  20. package/dist/_chunks/index-DMT27jNE.js.map +1 -0
  21. package/dist/_chunks/purchase-review-workflows-BxoDFxQ5.js +52 -0
  22. package/dist/_chunks/purchase-review-workflows-BxoDFxQ5.js.map +1 -0
  23. package/dist/_chunks/purchase-review-workflows-DyFV_H0I.mjs +52 -0
  24. package/dist/_chunks/purchase-review-workflows-DyFV_H0I.mjs.map +1 -0
  25. package/dist/_chunks/router-BPl2HZMq.mjs +24 -0
  26. package/dist/_chunks/router-BPl2HZMq.mjs.map +1 -0
  27. package/dist/_chunks/router-vDfGt9bq.js +24 -0
  28. package/dist/_chunks/router-vDfGt9bq.js.map +1 -0
  29. package/dist/admin/index.js +2 -17
  30. package/dist/admin/index.js.map +1 -1
  31. package/dist/admin/index.mjs +4 -12
  32. package/dist/admin/index.mjs.map +1 -1
  33. package/dist/server/index.js +7838 -2108
  34. package/dist/server/index.js.map +1 -1
  35. package/dist/server/index.mjs +7844 -2111
  36. package/dist/server/index.mjs.map +1 -1
  37. package/dist/server/src/services/document-service-middleware.d.ts +1 -1
  38. package/dist/server/src/services/document-service-middleware.d.ts.map +1 -1
  39. package/dist/shared/contracts/review-workflows.d.ts +1 -0
  40. package/package.json +8 -12
  41. package/dist/admin/chunks/Layout-B4l91S3p.js +0 -290
  42. package/dist/admin/chunks/Layout-B4l91S3p.js.map +0 -1
  43. package/dist/admin/chunks/Layout-CXRcBLOx.js +0 -265
  44. package/dist/admin/chunks/Layout-CXRcBLOx.js.map +0 -1
  45. package/dist/admin/chunks/en-BixG7IBu.js +0 -14
  46. package/dist/admin/chunks/en-BixG7IBu.js.map +0 -1
  47. package/dist/admin/chunks/en-C6SESe-Y.js +0 -16
  48. package/dist/admin/chunks/en-C6SESe-Y.js.map +0 -1
  49. package/dist/admin/chunks/id-DnRGfGvc.js +0 -1442
  50. package/dist/admin/chunks/id-DnRGfGvc.js.map +0 -1
  51. package/dist/admin/chunks/id-SiBUWtYE.js +0 -1420
  52. package/dist/admin/chunks/id-SiBUWtYE.js.map +0 -1
  53. package/dist/admin/chunks/index-C5IeISWp.js +0 -960
  54. package/dist/admin/chunks/index-C5IeISWp.js.map +0 -1
  55. package/dist/admin/chunks/index-D-2M8KV9.js +0 -271
  56. package/dist/admin/chunks/index-D-2M8KV9.js.map +0 -1
  57. package/dist/admin/chunks/index-DZpcSUvc.js +0 -293
  58. package/dist/admin/chunks/index-DZpcSUvc.js.map +0 -1
  59. package/dist/admin/chunks/index-Df6sZesT.js +0 -926
  60. package/dist/admin/chunks/index-Df6sZesT.js.map +0 -1
  61. package/dist/admin/chunks/purchase-review-workflows-CEP8kvxZ.js +0 -53
  62. package/dist/admin/chunks/purchase-review-workflows-CEP8kvxZ.js.map +0 -1
  63. package/dist/admin/chunks/purchase-review-workflows-Drlxm8yP.js +0 -55
  64. package/dist/admin/chunks/purchase-review-workflows-Drlxm8yP.js.map +0 -1
  65. package/dist/admin/chunks/router-C9Jpl4gL.js +0 -28
  66. package/dist/admin/chunks/router-C9Jpl4gL.js.map +0 -1
  67. package/dist/admin/chunks/router-CrN8UbpP.js +0 -30
  68. package/dist/admin/chunks/router-CrN8UbpP.js.map +0 -1
  69. /package/dist/admin/src/routes/content-manager/{model/id → [model]/[id]}/components/AssigneeSelect.d.ts +0 -0
  70. /package/dist/admin/src/routes/content-manager/{model/id → [model]/[id]}/components/Panel.d.ts +0 -0
  71. /package/dist/admin/src/routes/content-manager/{model/id → [model]/[id]}/components/StageSelect.d.ts +0 -0
  72. /package/dist/admin/src/routes/content-manager/{model/id → [model]/[id]}/components/constants.d.ts +0 -0
  73. /package/dist/admin/src/routes/content-manager/{model → [model]}/components/AssigneeFilter.d.ts +0 -0
  74. /package/dist/admin/src/routes/content-manager/{model → [model]}/components/StageFilter.d.ts +0 -0
  75. /package/dist/admin/src/routes/content-manager/{model → [model]}/components/TableColumns.d.ts +0 -0
  76. /package/dist/admin/src/routes/content-manager/{model → [model]}/configure/constants.d.ts +0 -0
  77. /package/dist/admin/src/routes/content-manager/{model → [model]}/constants.d.ts +0 -0
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ const React = require("react");
3
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
4
+ const reactIntl = require("react-intl");
5
+ const index = require("./index-DMT27jNE.js");
6
+ const jsxRuntime = require("react/jsx-runtime");
7
+ const designSystem = require("@strapi/design-system");
8
+ const reactDnd = require("react-dnd");
9
+ const icons = require("@strapi/icons");
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
13
+ if (e) {
14
+ for (const k in e) {
15
+ if (k !== "default") {
16
+ const d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: () => e[k]
20
+ });
21
+ }
22
+ }
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
28
+ const DEFAULT_UNEXPECTED_ERROR_MSG = {
29
+ id: "notification.error",
30
+ defaultMessage: "An error occurred, please try again"
31
+ };
32
+ const useReviewWorkflows = (params = {}) => {
33
+ const { toggleNotification } = strapiAdmin.useNotification();
34
+ const { formatMessage } = reactIntl.useIntl();
35
+ const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
36
+ const { skip = false, ...queryParams } = params;
37
+ const { data, isLoading, error } = index.useGetWorkflowsQuery(
38
+ {
39
+ populate: ["stages", "stageRequiredToPublish"],
40
+ ...queryParams
41
+ },
42
+ {
43
+ skip
44
+ }
45
+ );
46
+ React__namespace.useEffect(() => {
47
+ if (error) {
48
+ toggleNotification({
49
+ type: "danger",
50
+ message: formatAPIError(error)
51
+ });
52
+ }
53
+ }, [error, formatAPIError, toggleNotification]);
54
+ const [createWorkflow] = index.useCreateWorkflowMutation();
55
+ const create = React__namespace.useCallback(
56
+ async (data2) => {
57
+ try {
58
+ const res = await createWorkflow({ data: data2 });
59
+ if ("error" in res) {
60
+ toggleNotification({
61
+ type: "danger",
62
+ message: formatAPIError(res.error)
63
+ });
64
+ return res;
65
+ }
66
+ toggleNotification({
67
+ type: "success",
68
+ message: formatMessage({ id: "actions.created", defaultMessage: "Created workflow" })
69
+ });
70
+ return res;
71
+ } catch (err) {
72
+ toggleNotification({
73
+ type: "danger",
74
+ message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
75
+ });
76
+ throw err;
77
+ }
78
+ },
79
+ [createWorkflow, formatAPIError, formatMessage, toggleNotification]
80
+ );
81
+ const [updateWorkflow] = index.useUpdateWorkflowMutation();
82
+ const update = React__namespace.useCallback(
83
+ async (id, data2) => {
84
+ try {
85
+ const res = await updateWorkflow({ id, data: data2 });
86
+ if ("error" in res) {
87
+ toggleNotification({
88
+ type: "danger",
89
+ message: formatAPIError(res.error)
90
+ });
91
+ return res;
92
+ }
93
+ toggleNotification({
94
+ type: "success",
95
+ message: formatMessage({ id: "actions.updated", defaultMessage: "Updated workflow" })
96
+ });
97
+ return res;
98
+ } catch (err) {
99
+ toggleNotification({
100
+ type: "danger",
101
+ message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
102
+ });
103
+ throw err;
104
+ }
105
+ },
106
+ [formatAPIError, formatMessage, toggleNotification, updateWorkflow]
107
+ );
108
+ const [deleteWorkflow] = index.useDeleteWorkflowMutation();
109
+ const deleteAction = React__namespace.useCallback(
110
+ async (id) => {
111
+ try {
112
+ const res = await deleteWorkflow({ id });
113
+ if ("error" in res) {
114
+ toggleNotification({
115
+ type: "danger",
116
+ message: formatAPIError(res.error)
117
+ });
118
+ return;
119
+ }
120
+ toggleNotification({
121
+ type: "success",
122
+ message: formatMessage({ id: "actions.deleted", defaultMessage: "Deleted workflow" })
123
+ });
124
+ return res.data;
125
+ } catch (err) {
126
+ toggleNotification({
127
+ type: "danger",
128
+ message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
129
+ });
130
+ throw err;
131
+ }
132
+ },
133
+ [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]
134
+ );
135
+ const { workflows = [], meta } = data ?? {};
136
+ return {
137
+ // meta contains e.g. the total of all workflows. we can not use
138
+ // the pagination object here, because the list is not paginated.
139
+ meta,
140
+ workflows,
141
+ isLoading,
142
+ error,
143
+ create,
144
+ delete: deleteAction,
145
+ update
146
+ };
147
+ };
148
+ const DRAG_DROP_TYPES = {
149
+ STAGE: "stage"
150
+ };
151
+ const StageDragPreview = ({ name }) => {
152
+ return /* @__PURE__ */ jsxRuntime.jsxs(
153
+ designSystem.Flex,
154
+ {
155
+ background: "primary100",
156
+ borderStyle: "dashed",
157
+ borderColor: "primary600",
158
+ borderWidth: "1px",
159
+ gap: 3,
160
+ hasRadius: true,
161
+ padding: 3,
162
+ shadow: "tableShadow",
163
+ width: "30rem",
164
+ children: [
165
+ /* @__PURE__ */ jsxRuntime.jsx(
166
+ designSystem.Flex,
167
+ {
168
+ alignItems: "center",
169
+ background: "neutral200",
170
+ borderRadius: "50%",
171
+ height: 6,
172
+ justifyContent: "center",
173
+ width: 6,
174
+ children: /* @__PURE__ */ jsxRuntime.jsx(icons.CaretDown, { width: "0.8rem", fill: "neutral600" })
175
+ }
176
+ ),
177
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "bold", children: name })
178
+ ]
179
+ }
180
+ );
181
+ };
182
+ function getStyle(initialOffset, currentOffset, mouseOffset) {
183
+ if (!initialOffset || !currentOffset || !mouseOffset) {
184
+ return { display: "none" };
185
+ }
186
+ const { x, y } = mouseOffset;
187
+ return {
188
+ transform: `translate(${x}px, ${y}px)`
189
+ };
190
+ }
191
+ const DragLayerRendered = () => {
192
+ const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = reactDnd.useDragLayer(
193
+ (monitor) => ({
194
+ item: monitor.getItem(),
195
+ itemType: monitor.getItemType(),
196
+ initialOffset: monitor.getInitialSourceClientOffset(),
197
+ currentOffset: monitor.getSourceClientOffset(),
198
+ isDragging: monitor.isDragging(),
199
+ mouseOffset: monitor.getClientOffset()
200
+ })
201
+ );
202
+ if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {
203
+ return null;
204
+ }
205
+ return /* @__PURE__ */ jsxRuntime.jsx(
206
+ designSystem.Box,
207
+ {
208
+ height: "100%",
209
+ left: 0,
210
+ position: "fixed",
211
+ pointerEvents: "none",
212
+ top: 0,
213
+ zIndex: 100,
214
+ width: "100%",
215
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Box, { style: getStyle(initialOffset, currentOffset, mouseOffset), children: [
216
+ /* @__PURE__ */ jsxRuntime.jsx(StageDragPreview, { name: typeof item.item === "string" ? item.item : null }),
217
+ ";"
218
+ ] })
219
+ }
220
+ );
221
+ };
222
+ const Root = ({ children }) => {
223
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Main, { children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children }) });
224
+ };
225
+ const Header = ({ title, subtitle, navigationAction, primaryAction }) => {
226
+ const { formatMessage } = reactIntl.useIntl();
227
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
228
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Title, { children: formatMessage(
229
+ { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
230
+ {
231
+ name: title
232
+ }
233
+ ) }),
234
+ /* @__PURE__ */ jsxRuntime.jsx(
235
+ strapiAdmin.Layouts.BaseHeader,
236
+ {
237
+ navigationAction,
238
+ primaryAction,
239
+ title,
240
+ subtitle
241
+ }
242
+ )
243
+ ] });
244
+ };
245
+ exports.DRAG_DROP_TYPES = DRAG_DROP_TYPES;
246
+ exports.DragLayerRendered = DragLayerRendered;
247
+ exports.Header = Header;
248
+ exports.Root = Root;
249
+ exports.useReviewWorkflows = useReviewWorkflows;
250
+ //# sourceMappingURL=Layout-C3IORH2n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout-C3IORH2n.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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"}
@@ -0,0 +1,233 @@
1
+ import * as React from "react";
2
+ import { useNotification, useAPIErrorHandler, Page, Layouts } from "@strapi/admin/strapi-admin";
3
+ import { useIntl } from "react-intl";
4
+ import { c as useGetWorkflowsQuery, d as useCreateWorkflowMutation, e as useUpdateWorkflowMutation, f as useDeleteWorkflowMutation } from "./index-ByXbOW-R.mjs";
5
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
6
+ import { Flex, Typography, Box } from "@strapi/design-system";
7
+ import { useDragLayer } from "react-dnd";
8
+ import { CaretDown } from "@strapi/icons";
9
+ const DEFAULT_UNEXPECTED_ERROR_MSG = {
10
+ id: "notification.error",
11
+ defaultMessage: "An error occurred, please try again"
12
+ };
13
+ const useReviewWorkflows = (params = {}) => {
14
+ const { toggleNotification } = useNotification();
15
+ const { formatMessage } = useIntl();
16
+ const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();
17
+ const { skip = false, ...queryParams } = params;
18
+ const { data, isLoading, error } = useGetWorkflowsQuery(
19
+ {
20
+ populate: ["stages", "stageRequiredToPublish"],
21
+ ...queryParams
22
+ },
23
+ {
24
+ skip
25
+ }
26
+ );
27
+ React.useEffect(() => {
28
+ if (error) {
29
+ toggleNotification({
30
+ type: "danger",
31
+ message: formatAPIError(error)
32
+ });
33
+ }
34
+ }, [error, formatAPIError, toggleNotification]);
35
+ const [createWorkflow] = useCreateWorkflowMutation();
36
+ const create = React.useCallback(
37
+ async (data2) => {
38
+ try {
39
+ const res = await createWorkflow({ data: data2 });
40
+ if ("error" in res) {
41
+ toggleNotification({
42
+ type: "danger",
43
+ message: formatAPIError(res.error)
44
+ });
45
+ return res;
46
+ }
47
+ toggleNotification({
48
+ type: "success",
49
+ message: formatMessage({ id: "actions.created", defaultMessage: "Created workflow" })
50
+ });
51
+ return res;
52
+ } catch (err) {
53
+ toggleNotification({
54
+ type: "danger",
55
+ message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
56
+ });
57
+ throw err;
58
+ }
59
+ },
60
+ [createWorkflow, formatAPIError, formatMessage, toggleNotification]
61
+ );
62
+ const [updateWorkflow] = useUpdateWorkflowMutation();
63
+ const update = React.useCallback(
64
+ async (id, data2) => {
65
+ try {
66
+ const res = await updateWorkflow({ id, data: data2 });
67
+ if ("error" in res) {
68
+ toggleNotification({
69
+ type: "danger",
70
+ message: formatAPIError(res.error)
71
+ });
72
+ return res;
73
+ }
74
+ toggleNotification({
75
+ type: "success",
76
+ message: formatMessage({ id: "actions.updated", defaultMessage: "Updated workflow" })
77
+ });
78
+ return res;
79
+ } catch (err) {
80
+ toggleNotification({
81
+ type: "danger",
82
+ message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
83
+ });
84
+ throw err;
85
+ }
86
+ },
87
+ [formatAPIError, formatMessage, toggleNotification, updateWorkflow]
88
+ );
89
+ const [deleteWorkflow] = useDeleteWorkflowMutation();
90
+ const deleteAction = React.useCallback(
91
+ async (id) => {
92
+ try {
93
+ const res = await deleteWorkflow({ id });
94
+ if ("error" in res) {
95
+ toggleNotification({
96
+ type: "danger",
97
+ message: formatAPIError(res.error)
98
+ });
99
+ return;
100
+ }
101
+ toggleNotification({
102
+ type: "success",
103
+ message: formatMessage({ id: "actions.deleted", defaultMessage: "Deleted workflow" })
104
+ });
105
+ return res.data;
106
+ } catch (err) {
107
+ toggleNotification({
108
+ type: "danger",
109
+ message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG)
110
+ });
111
+ throw err;
112
+ }
113
+ },
114
+ [deleteWorkflow, formatAPIError, formatMessage, toggleNotification]
115
+ );
116
+ const { workflows = [], meta } = data ?? {};
117
+ return {
118
+ // meta contains e.g. the total of all workflows. we can not use
119
+ // the pagination object here, because the list is not paginated.
120
+ meta,
121
+ workflows,
122
+ isLoading,
123
+ error,
124
+ create,
125
+ delete: deleteAction,
126
+ update
127
+ };
128
+ };
129
+ const DRAG_DROP_TYPES = {
130
+ STAGE: "stage"
131
+ };
132
+ const StageDragPreview = ({ name }) => {
133
+ return /* @__PURE__ */ jsxs(
134
+ Flex,
135
+ {
136
+ background: "primary100",
137
+ borderStyle: "dashed",
138
+ borderColor: "primary600",
139
+ borderWidth: "1px",
140
+ gap: 3,
141
+ hasRadius: true,
142
+ padding: 3,
143
+ shadow: "tableShadow",
144
+ width: "30rem",
145
+ children: [
146
+ /* @__PURE__ */ jsx(
147
+ Flex,
148
+ {
149
+ alignItems: "center",
150
+ background: "neutral200",
151
+ borderRadius: "50%",
152
+ height: 6,
153
+ justifyContent: "center",
154
+ width: 6,
155
+ children: /* @__PURE__ */ jsx(CaretDown, { width: "0.8rem", fill: "neutral600" })
156
+ }
157
+ ),
158
+ /* @__PURE__ */ jsx(Typography, { fontWeight: "bold", children: name })
159
+ ]
160
+ }
161
+ );
162
+ };
163
+ function getStyle(initialOffset, currentOffset, mouseOffset) {
164
+ if (!initialOffset || !currentOffset || !mouseOffset) {
165
+ return { display: "none" };
166
+ }
167
+ const { x, y } = mouseOffset;
168
+ return {
169
+ transform: `translate(${x}px, ${y}px)`
170
+ };
171
+ }
172
+ const DragLayerRendered = () => {
173
+ const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(
174
+ (monitor) => ({
175
+ item: monitor.getItem(),
176
+ itemType: monitor.getItemType(),
177
+ initialOffset: monitor.getInitialSourceClientOffset(),
178
+ currentOffset: monitor.getSourceClientOffset(),
179
+ isDragging: monitor.isDragging(),
180
+ mouseOffset: monitor.getClientOffset()
181
+ })
182
+ );
183
+ if (!isDragging || itemType !== DRAG_DROP_TYPES.STAGE) {
184
+ return null;
185
+ }
186
+ return /* @__PURE__ */ jsx(
187
+ Box,
188
+ {
189
+ height: "100%",
190
+ left: 0,
191
+ position: "fixed",
192
+ pointerEvents: "none",
193
+ top: 0,
194
+ zIndex: 100,
195
+ width: "100%",
196
+ children: /* @__PURE__ */ jsxs(Box, { style: getStyle(initialOffset, currentOffset, mouseOffset), children: [
197
+ /* @__PURE__ */ jsx(StageDragPreview, { name: typeof item.item === "string" ? item.item : null }),
198
+ ";"
199
+ ] })
200
+ }
201
+ );
202
+ };
203
+ const Root = ({ children }) => {
204
+ return /* @__PURE__ */ jsx(Page.Main, { children: /* @__PURE__ */ jsx(Layouts.Content, { children }) });
205
+ };
206
+ const Header = ({ title, subtitle, navigationAction, primaryAction }) => {
207
+ const { formatMessage } = useIntl();
208
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
209
+ /* @__PURE__ */ jsx(Page.Title, { children: formatMessage(
210
+ { id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
211
+ {
212
+ name: title
213
+ }
214
+ ) }),
215
+ /* @__PURE__ */ jsx(
216
+ Layouts.BaseHeader,
217
+ {
218
+ navigationAction,
219
+ primaryAction,
220
+ title,
221
+ subtitle
222
+ }
223
+ )
224
+ ] });
225
+ };
226
+ export {
227
+ DRAG_DROP_TYPES as D,
228
+ Header as H,
229
+ Root as R,
230
+ DragLayerRendered as a,
231
+ useReviewWorkflows as u
232
+ };
233
+ //# sourceMappingURL=Layout-DNKR5bym.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Layout-DNKR5bym.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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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const en = {
4
+ "settings.page.title": "Review Workflows",
5
+ "settings.page.subtitle": "{count, plural, one {# stage} other {# stages}}",
6
+ "settings.page.isLoading": "Workflow is loading",
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
+ "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.",
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."
13
+ };
14
+ exports.default = en;
15
+ //# sourceMappingURL=en-CYgjfSep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-CYgjfSep.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
@@ -0,0 +1,15 @@
1
+ const en = {
2
+ "settings.page.title": "Review Workflows",
3
+ "settings.page.subtitle": "{count, plural, one {# stage} other {# stages}}",
4
+ "settings.page.isLoading": "Workflow is loading",
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
+ "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.",
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."
11
+ };
12
+ export {
13
+ en as default
14
+ };
15
+ //# sourceMappingURL=en-D9dxziEb.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-D9dxziEb.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}