@strapi/review-workflows 0.0.0-experimental.defd8568ae03ef8d52f86e1f3541979f953c3941 → 0.0.0-experimental.df298029ec6478763dcca7d59fafe8d2ae4ed60a

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 (73) hide show
  1. package/LICENSE +12 -17
  2. package/dist/_chunks/{Layout-Py8gxQW2.js → Layout-8i0EXRRs.js} +11 -20
  3. package/dist/_chunks/Layout-8i0EXRRs.js.map +1 -0
  4. package/dist/_chunks/{Layout-B_cKmQA3.mjs → Layout-C9m07iTY.mjs} +13 -20
  5. package/dist/_chunks/Layout-C9m07iTY.mjs.map +1 -0
  6. package/dist/_chunks/{_id-BeUU-t6D.js → id-CmtaTf1x.js} +325 -420
  7. package/dist/_chunks/id-CmtaTf1x.js.map +1 -0
  8. package/dist/_chunks/{_id-C_HRFhcV.mjs → id-DV0Ndeav.mjs} +319 -412
  9. package/dist/_chunks/id-DV0Ndeav.mjs.map +1 -0
  10. package/dist/_chunks/{index-DyJcIA81.js → index-B8WmHbCU.js} +19 -53
  11. package/dist/_chunks/index-B8WmHbCU.js.map +1 -0
  12. package/dist/_chunks/{index-D3AvHSbj.js → index-BCUO98DV.js} +186 -226
  13. package/dist/_chunks/index-BCUO98DV.js.map +1 -0
  14. package/dist/_chunks/{index-CAgnun9R.mjs → index-CA5Axcoc.mjs} +21 -53
  15. package/dist/_chunks/index-CA5Axcoc.mjs.map +1 -0
  16. package/dist/_chunks/{index-DjHtLGgq.mjs → index-CqYVkW3E.mjs} +189 -227
  17. package/dist/_chunks/index-CqYVkW3E.mjs.map +1 -0
  18. package/dist/_chunks/{purchase-review-workflows-DyffLpyz.mjs → purchase-review-workflows-BN-5Ube7.mjs} +5 -4
  19. package/dist/_chunks/purchase-review-workflows-BN-5Ube7.mjs.map +1 -0
  20. package/dist/_chunks/{purchase-review-workflows-BaOk5p_m.js → purchase-review-workflows-DlCDg0fD.js} +4 -3
  21. package/dist/_chunks/purchase-review-workflows-DlCDg0fD.js.map +1 -0
  22. package/dist/_chunks/{router-BwVSq4yF.js → router-BOXlNnrU.js} +3 -3
  23. package/dist/_chunks/router-BOXlNnrU.js.map +1 -0
  24. package/dist/_chunks/{router-zN3-SLwz.mjs → router-Jdt6SbIA.mjs} +3 -3
  25. package/dist/_chunks/router-Jdt6SbIA.mjs.map +1 -0
  26. package/dist/admin/index.js +1 -1
  27. package/dist/admin/index.mjs +1 -1
  28. package/dist/admin/src/components/LimitsModal.d.ts +2 -4
  29. package/dist/admin/src/routes/content-manager/[model]/[id]/components/Panel.d.ts +1 -1
  30. package/dist/admin/src/routes/settings/hooks/useDragAndDrop.d.ts +4 -4
  31. package/dist/admin/src/routes/settings/hooks/useKeyboardDragAndDrop.d.ts +1 -1
  32. package/dist/admin/src/routes/settings/hooks/useReviewWorkflows.d.ts +3 -3
  33. package/dist/admin/src/services/admin.d.ts +2 -2
  34. package/dist/admin/src/services/api.d.ts +2 -3
  35. package/dist/admin/src/services/content-manager.d.ts +7 -7
  36. package/dist/admin/src/services/settings.d.ts +1734 -8
  37. package/dist/admin/src/utils/api.d.ts +4 -19
  38. package/dist/admin/src/utils/cm-hooks.d.ts +1 -1
  39. package/dist/server/index.js +49 -68
  40. package/dist/server/index.js.map +1 -1
  41. package/dist/server/index.mjs +49 -68
  42. package/dist/server/index.mjs.map +1 -1
  43. package/dist/server/src/controllers/assignees.d.ts.map +1 -1
  44. package/dist/server/src/controllers/index.d.ts +0 -1
  45. package/dist/server/src/controllers/index.d.ts.map +1 -1
  46. package/dist/server/src/controllers/stages.d.ts.map +1 -1
  47. package/dist/server/src/controllers/workflows.d.ts +0 -7
  48. package/dist/server/src/controllers/workflows.d.ts.map +1 -1
  49. package/dist/server/src/index.d.ts +1 -2
  50. package/dist/server/src/index.d.ts.map +1 -1
  51. package/dist/server/src/routes/review-workflows.d.ts.map +1 -1
  52. package/dist/server/src/services/document-service-middleware.d.ts.map +1 -1
  53. package/dist/server/src/services/index.d.ts +1 -1
  54. package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -1
  55. package/dist/server/src/services/stages.d.ts +2 -7
  56. package/dist/server/src/services/stages.d.ts.map +1 -1
  57. package/dist/shared/contracts/review-workflows.d.ts +1 -14
  58. package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
  59. package/package.json +16 -17
  60. package/dist/_chunks/Layout-B_cKmQA3.mjs.map +0 -1
  61. package/dist/_chunks/Layout-Py8gxQW2.js.map +0 -1
  62. package/dist/_chunks/_id-BeUU-t6D.js.map +0 -1
  63. package/dist/_chunks/_id-C_HRFhcV.mjs.map +0 -1
  64. package/dist/_chunks/index-CAgnun9R.mjs.map +0 -1
  65. package/dist/_chunks/index-D3AvHSbj.js.map +0 -1
  66. package/dist/_chunks/index-DjHtLGgq.mjs.map +0 -1
  67. package/dist/_chunks/index-DyJcIA81.js.map +0 -1
  68. package/dist/_chunks/purchase-review-workflows-BaOk5p_m.js.map +0 -1
  69. package/dist/_chunks/purchase-review-workflows-DyffLpyz.mjs.map +0 -1
  70. package/dist/_chunks/router-BwVSq4yF.js.map +0 -1
  71. package/dist/_chunks/router-zN3-SLwz.mjs.map +0 -1
  72. package/strapi-server.js +0 -3
  73. /package/dist/admin/src/routes/settings/{:id.d.ts → id.d.ts} +0 -0
@@ -2,22 +2,21 @@ 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, IconButton, MultiSelectOption, useComposedRefs, VisuallyHidden, Accordion, AccordionToggle, AccordionContent, Grid, GridItem, SingleSelect, SingleSelectOption, TextInput, MultiSelect, MultiSelectGroup, useCollator, Button } from "@strapi/design-system";
6
- import { PlusCircle, EyeStriked, More, Drag, Duplicate, Check } from "@strapi/icons";
5
+ import { Box, Typography, Flex, Accordion, MenuItem, Menu, MultiSelectOption, useComposedRefs, VisuallyHidden, IconButton, Grid, Field, SingleSelect, SingleSelectOption, TextInput, MultiSelect, MultiSelectGroup, Dialog, 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
- import { useDispatch } from "react-redux";
10
9
  import { useParams, useNavigate } from "react-router-dom";
11
10
  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-DjHtLGgq.mjs";
13
- import { D as DRAG_DROP_TYPES, u as useReviewWorkflows, a as DragLayerRendered, H as Header, R as Root } from "./Layout-B_cKmQA3.mjs";
11
+ 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-CqYVkW3E.mjs";
12
+ import { D as DRAG_DROP_TYPES, u as useReviewWorkflows, a as DragLayerRendered, H as Header, R as Root } from "./Layout-C9m07iTY.mjs";
14
13
  import { getEmptyImage } from "react-dnd-html5-backend";
15
- import styled from "styled-components";
14
+ import { styled } from "styled-components";
16
15
  import { useDrop, useDrag } from "react-dnd";
17
16
  const adminApi = reviewWorkflowsApi.injectEndpoints({
18
17
  endpoints(builder) {
19
18
  return {
20
- getRoles: builder.query({
19
+ getAdminRoles: builder.query({
21
20
  query: () => ({
22
21
  url: `/admin/roles`,
23
22
  method: "GET"
@@ -29,7 +28,7 @@ const adminApi = reviewWorkflowsApi.injectEndpoints({
29
28
  };
30
29
  }
31
30
  });
32
- const { useGetRolesQuery } = adminApi;
31
+ const { useGetAdminRolesQuery } = adminApi;
33
32
  const useKeyboardDragAndDrop = (active, index, { onCancel, onDropItem, onGrabItem, onMoveItem }) => {
34
33
  const [isSelected, setIsSelected] = React.useState(false);
35
34
  const handleMove = (movement) => {
@@ -248,74 +247,35 @@ const AddStage = ({ children, ...props }) => {
248
247
  return /* @__PURE__ */ jsx(
249
248
  StyledButton,
250
249
  {
251
- as: "button",
250
+ tag: "button",
252
251
  background: "neutral0",
253
- border: "neutral150",
252
+ borderColor: "neutral150",
254
253
  paddingBottom: 3,
255
254
  paddingLeft: 4,
256
255
  paddingRight: 4,
257
256
  paddingTop: 3,
258
257
  shadow: "filterShadow",
259
258
  ...props,
260
- children: /* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
261
- /* @__PURE__ */ jsx(StyledAddIcon, { "aria-hidden": true }),
262
- /* @__PURE__ */ jsx(Typography, { variant: "pi", fontWeight: "bold", textColor: "neutral500", children })
263
- ] })
259
+ children: /* @__PURE__ */ jsx(Typography, { variant: "pi", fontWeight: "bold", children: /* @__PURE__ */ jsxs(Flex, { tag: "span", gap: 2, children: [
260
+ /* @__PURE__ */ jsx(PlusCircle, { width: "2.4rem", height: "2.4rem", "aria-hidden": true }),
261
+ children
262
+ ] }) })
264
263
  }
265
264
  );
266
265
  };
267
- const StyledAddIcon = styled(PlusCircle)`
268
- > circle {
269
- fill: ${({ theme }) => theme.colors.neutral150};
270
- }
271
- > path {
272
- fill: ${({ theme }) => theme.colors.neutral600};
273
- }
274
- `;
275
266
  const StyledButton = styled(Box)`
276
267
  border-radius: 26px;
277
-
278
- svg {
279
- height: ${({ theme }) => theme.spaces[6]};
280
- width: ${({ theme }) => theme.spaces[6]};
281
-
282
- > path {
283
- fill: ${({ theme }) => theme.colors.neutral600};
284
- }
285
- }
268
+ color: ${({ theme }) => theme.colors.neutral500};
286
269
 
287
270
  &:hover {
288
- color: ${({ theme }) => theme.colors.primary600} !important;
289
- ${Typography} {
290
- color: ${({ theme }) => theme.colors.primary600} !important;
291
- }
292
-
293
- ${StyledAddIcon} {
294
- > circle {
295
- fill: ${({ theme }) => theme.colors.primary600};
296
- }
297
- > path {
298
- fill: ${({ theme }) => theme.colors.neutral100};
299
- }
300
- }
271
+ color: ${({ theme }) => theme.colors.primary600};
301
272
  }
302
273
 
303
274
  &:active {
304
- ${Typography} {
305
- color: ${({ theme }) => theme.colors.primary600};
306
- }
307
-
308
- ${StyledAddIcon} {
309
- > circle {
310
- fill: ${({ theme }) => theme.colors.primary600};
311
- }
312
- > path {
313
- fill: ${({ theme }) => theme.colors.neutral100};
314
- }
315
- }
275
+ color: ${({ theme }) => theme.colors.primary600};
316
276
  }
317
277
  `;
318
- const Stages = ({ canDelete = true, canUpdate = true, isCreating = false }) => {
278
+ const Stages = ({ canDelete = true, canUpdate = true, isCreating }) => {
319
279
  const { formatMessage } = useIntl();
320
280
  const { trackUsage } = useTracking();
321
281
  const addFieldRow = useForm("Stages", (state) => state.addFieldRow);
@@ -330,35 +290,23 @@ const Stages = ({ canDelete = true, canUpdate = true, isCreating = false }) => {
330
290
  left: "50%",
331
291
  position: "absolute",
332
292
  top: "0",
333
- width: 2,
334
- zIndex: 1
293
+ width: 2
335
294
  }
336
295
  ),
337
- /* @__PURE__ */ jsx(
338
- Flex,
339
- {
340
- direction: "column",
341
- alignItems: "stretch",
342
- gap: 6,
343
- zIndex: 2,
344
- position: "relative",
345
- as: "ol",
346
- children: stages.map((stage, index) => {
347
- return /* @__PURE__ */ jsx(Box, { as: "li", children: /* @__PURE__ */ jsx(
348
- Stage,
349
- {
350
- index,
351
- canDelete: stages.length > 1 && canDelete,
352
- canReorder: stages.length > 1,
353
- canUpdate,
354
- stagesCount: stages.length,
355
- isOpen: isCreating,
356
- ...stage
357
- }
358
- ) }, stage.__temp_key__);
359
- })
360
- }
361
- )
296
+ /* @__PURE__ */ jsx(Flex, { direction: "column", alignItems: "stretch", gap: 6, position: "relative", tag: "ol", children: stages.map((stage, index) => {
297
+ return /* @__PURE__ */ jsx(Box, { tag: "li", children: /* @__PURE__ */ jsx(
298
+ Stage,
299
+ {
300
+ index,
301
+ canDelete: stages.length > 1 && canDelete,
302
+ canReorder: stages.length > 1,
303
+ canUpdate,
304
+ stagesCount: stages.length,
305
+ defaultOpen: isCreating,
306
+ ...stage
307
+ }
308
+ ) }, stage.__temp_key__);
309
+ }) })
362
310
  ] }),
363
311
  canUpdate && /* @__PURE__ */ jsx(
364
312
  AddStage,
@@ -384,16 +332,15 @@ const Stage = ({
384
332
  canDelete = false,
385
333
  canReorder = false,
386
334
  canUpdate = false,
387
- isOpen: isOpenDefault = false,
388
335
  stagesCount,
389
336
  name,
390
337
  permissions,
391
- color
338
+ color,
339
+ defaultOpen
392
340
  }) => {
393
341
  const [liveText, setLiveText] = React.useState();
394
342
  const { formatMessage } = useIntl();
395
343
  const { trackUsage } = useTracking();
396
- const [isOpen, setIsOpen] = React.useState(isOpenDefault);
397
344
  const stageErrors = useForm("Stages", (state) => state.errors.stages);
398
345
  const error = stageErrors?.[index];
399
346
  const addFieldRow = useForm("Stage", (state) => state.addFieldRow);
@@ -475,7 +422,8 @@ const Stage = ({
475
422
  const handleCloneClick = () => {
476
423
  addFieldRow("stages", { name, color, permissions });
477
424
  };
478
- return /* @__PURE__ */ jsxs(Box, { ref: (ref) => composedRef(ref), children: [
425
+ const id = React.useId();
426
+ return /* @__PURE__ */ jsxs(Box, { ref: composedRef, shadow: "tableShadow", children: [
479
427
  liveText && /* @__PURE__ */ jsx(VisuallyHidden, { "aria-live": "assertive", children: liveText }),
480
428
  isDragging ? /* @__PURE__ */ jsx(
481
429
  Box,
@@ -486,74 +434,61 @@ const Stage = ({
486
434
  borderWidth: "1px",
487
435
  display: "block",
488
436
  hasRadius: true,
489
- padding: 6,
490
- shadow: "tableShadow"
437
+ padding: 6
491
438
  }
492
- ) : /* @__PURE__ */ jsxs(
493
- Accordion,
439
+ ) : /* @__PURE__ */ jsx(
440
+ AccordionRoot,
494
441
  {
495
- size: "S",
496
- variant: "primary",
497
- onToggle: () => {
498
- setIsOpen(!isOpen);
499
- if (!isOpen) {
442
+ onValueChange: (value) => {
443
+ if (value) {
500
444
  trackUsage("willEditStage");
501
445
  }
502
446
  },
503
- expanded: isOpen,
504
- shadow: "tableShadow",
505
- error: Object.values(error ?? {})[0],
506
- hasErrorMessage: false,
507
- children: [
508
- /* @__PURE__ */ jsx(
509
- AccordionToggle,
510
- {
511
- title: name,
512
- togglePosition: "left",
513
- action: (canDelete || canUpdate) && /* @__PURE__ */ jsxs(Flex, { children: [
514
- /* @__PURE__ */ jsxs(Menu.Root, { children: [
515
- /* @__PURE__ */ jsxs(ContextMenuTrigger, { size: "S", endIcon: null, paddingLeft: 2, paddingRight: 2, children: [
516
- /* @__PURE__ */ jsx(More, { "aria-hidden": true, focusable: false }),
517
- /* @__PURE__ */ jsx(VisuallyHidden, { as: "span", children: formatMessage({
518
- id: "[tbdb].components.DynamicZone.more-actions",
519
- defaultMessage: "More actions"
520
- }) })
521
- ] }),
522
- /* @__PURE__ */ jsx(Menu.Content, { popoverPlacement: "bottom-end", zIndex: 2, children: /* @__PURE__ */ jsxs(Menu.SubRoot, { children: [
523
- canUpdate && /* @__PURE__ */ jsx(MenuItem, { onClick: handleCloneClick, children: formatMessage({
524
- id: "Settings.review-workflows.stage.delete",
525
- defaultMessage: "Duplicate stage"
526
- }) }),
527
- canDelete && /* @__PURE__ */ jsx(DeleteMenuItem, { onClick: () => removeFieldRow("stages", index), children: formatMessage({
528
- id: "Settings.review-workflows.stage.delete",
529
- defaultMessage: "Delete"
530
- }) })
531
- ] }) })
447
+ defaultValue: defaultOpen ? id : void 0,
448
+ $error: Object.values(error ?? {}).length > 0,
449
+ children: /* @__PURE__ */ jsxs(Accordion.Item, { value: id, children: [
450
+ /* @__PURE__ */ jsxs(Accordion.Header, { children: [
451
+ /* @__PURE__ */ jsx(Accordion.Trigger, { children: name }),
452
+ /* @__PURE__ */ jsx(Accordion.Actions, { children: canDelete || canUpdate ? /* @__PURE__ */ jsxs(Fragment, { children: [
453
+ /* @__PURE__ */ jsxs(Menu.Root, { children: [
454
+ /* @__PURE__ */ jsxs(ContextMenuTrigger, { size: "S", endIcon: null, paddingLeft: 2, paddingRight: 2, children: [
455
+ /* @__PURE__ */ jsx(More, { "aria-hidden": true, focusable: false }),
456
+ /* @__PURE__ */ jsx(VisuallyHidden, { tag: "span", children: formatMessage({
457
+ id: "[tbdb].components.DynamicZone.more-actions",
458
+ defaultMessage: "More actions"
459
+ }) })
532
460
  ] }),
533
- canUpdate && /* @__PURE__ */ jsx(
534
- DragIconButton,
535
- {
536
- background: "transparent",
537
- forwardedAs: "div",
538
- hasRadius: true,
539
- role: "button",
540
- noBorder: true,
541
- tabIndex: 0,
542
- "data-handler-id": handlerId,
543
- ref: dragRef,
544
- label: formatMessage({
545
- id: "Settings.review-workflows.stage.drag",
546
- defaultMessage: "Drag"
547
- }),
548
- onClick: (e) => e.stopPropagation(),
549
- onKeyDown: handleKeyDown,
550
- children: /* @__PURE__ */ jsx(Drag, {})
551
- }
552
- )
553
- ] })
554
- }
555
- ),
556
- /* @__PURE__ */ jsx(AccordionContent, { padding: 6, background: "neutral0", hasRadius: true, children: /* @__PURE__ */ jsx(Grid, { gap: 4, children: [
461
+ /* @__PURE__ */ jsx(Menu.Content, { popoverPlacement: "bottom-end", zIndex: 2, children: /* @__PURE__ */ jsxs(Menu.SubRoot, { children: [
462
+ canUpdate && /* @__PURE__ */ jsx(MenuItem, { onClick: handleCloneClick, children: formatMessage({
463
+ id: "Settings.review-workflows.stage.delete",
464
+ defaultMessage: "Duplicate stage"
465
+ }) }),
466
+ canDelete && /* @__PURE__ */ jsx(DeleteMenuItem, { onClick: () => removeFieldRow("stages", index), children: formatMessage({
467
+ id: "Settings.review-workflows.stage.delete",
468
+ defaultMessage: "Delete"
469
+ }) })
470
+ ] }) })
471
+ ] }),
472
+ canUpdate && /* @__PURE__ */ jsx(
473
+ IconButton,
474
+ {
475
+ background: "transparent",
476
+ hasRadius: true,
477
+ variant: "ghost",
478
+ "data-handler-id": handlerId,
479
+ ref: dragRef,
480
+ label: formatMessage({
481
+ id: "Settings.review-workflows.stage.drag",
482
+ defaultMessage: "Drag"
483
+ }),
484
+ onClick: (e) => e.stopPropagation(),
485
+ onKeyDown: handleKeyDown,
486
+ children: /* @__PURE__ */ jsx(Drag, {})
487
+ }
488
+ )
489
+ ] }) : null })
490
+ ] }),
491
+ /* @__PURE__ */ jsx(Accordion.Content, { children: /* @__PURE__ */ jsx(Grid.Root, { gap: 4, padding: 6, children: [
557
492
  {
558
493
  disabled: !canUpdate,
559
494
  label: formatMessage({
@@ -591,12 +526,16 @@ const Stage = ({
591
526
  size: 6,
592
527
  type: "permissions"
593
528
  }
594
- ].map(({ size, ...field }) => /* @__PURE__ */ jsx(GridItem, { col: size, children: /* @__PURE__ */ jsx(InputRenderer, { ...field }) }, field.name)) }) })
595
- ]
529
+ ].map(({ size, ...field }) => /* @__PURE__ */ jsx(Grid.Item, { col: size, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsx(InputRenderer, { ...field }) }, field.name)) }) })
530
+ ] })
596
531
  }
597
532
  )
598
533
  ] });
599
534
  };
535
+ const AccordionRoot = styled(Accordion.Root)`
536
+ border: 1px solid
537
+ ${({ theme, $error }) => $error ? theme.colors.danger600 : theme.colors.neutral200};
538
+ `;
600
539
  const DeleteMenuItem = styled(MenuItem)`
601
540
  color: ${({ theme }) => theme.colors.danger600};
602
541
  `;
@@ -610,22 +549,6 @@ const ContextMenuTrigger = styled(Menu.Trigger)`
610
549
  font-size: 0;
611
550
  }
612
551
  `;
613
- const DragIconButton = styled(IconButton)`
614
- align-items: center;
615
- border-radius: ${({ theme }) => theme.borderRadius};
616
- display: flex;
617
- justify-content: center;
618
-
619
- &:hover,
620
- &:focus {
621
- background-color: ${({ theme }) => theme.colors.neutral100};
622
- }
623
-
624
- svg {
625
- height: auto;
626
- width: ${({ theme }) => theme.spaces[3]};
627
- }
628
- `;
629
552
  const InputRenderer = (props) => {
630
553
  switch (props.type) {
631
554
  case "color":
@@ -651,54 +574,55 @@ const ColorSelector = ({ disabled, label, name, required }) => {
651
574
  color: hex
652
575
  }));
653
576
  const { themeColorName } = getStageColorByHex(value) ?? {};
654
- return /* @__PURE__ */ jsx(
655
- SingleSelect,
656
- {
657
- disabled,
658
- error,
659
- required,
660
- label,
661
- onChange: (v) => {
662
- onChange(name, v.toString());
663
- },
664
- value: value?.toUpperCase(),
665
- startIcon: /* @__PURE__ */ jsx(
666
- Flex,
667
- {
668
- as: "span",
669
- height: 2,
670
- background: value,
671
- borderColor: themeColorName === "neutral0" ? "neutral150" : "transparent",
672
- hasRadius: true,
673
- shrink: 0,
674
- width: 2
675
- }
676
- ),
677
- children: colorOptions.map(({ value: value2, label: label2, color }) => {
678
- const { themeColorName: themeColorName2 } = getStageColorByHex(color) || {};
679
- return /* @__PURE__ */ jsx(
680
- SingleSelectOption,
577
+ return /* @__PURE__ */ jsxs(Field.Root, { error, name, required, children: [
578
+ /* @__PURE__ */ jsx(Field.Label, { children: label }),
579
+ /* @__PURE__ */ jsx(
580
+ SingleSelect,
581
+ {
582
+ disabled,
583
+ onChange: (v) => {
584
+ onChange(name, v.toString());
585
+ },
586
+ value: value?.toUpperCase(),
587
+ startIcon: /* @__PURE__ */ jsx(
588
+ Flex,
681
589
  {
682
- value: value2,
683
- startIcon: /* @__PURE__ */ jsx(
684
- Flex,
685
- {
686
- as: "span",
687
- height: 2,
688
- background: color,
689
- borderColor: themeColorName2 === "neutral0" ? "neutral150" : "transparent",
690
- hasRadius: true,
691
- shrink: 0,
692
- width: 2
693
- }
694
- ),
695
- children: label2
696
- },
697
- value2
698
- );
699
- })
700
- }
701
- );
590
+ tag: "span",
591
+ height: 2,
592
+ background: value,
593
+ borderColor: themeColorName === "neutral0" ? "neutral150" : "transparent",
594
+ hasRadius: true,
595
+ shrink: 0,
596
+ width: 2
597
+ }
598
+ ),
599
+ children: colorOptions.map(({ value: value2, label: label2, color }) => {
600
+ const { themeColorName: themeColorName2 } = getStageColorByHex(color) || {};
601
+ return /* @__PURE__ */ jsx(
602
+ SingleSelectOption,
603
+ {
604
+ value: value2,
605
+ startIcon: /* @__PURE__ */ jsx(
606
+ Flex,
607
+ {
608
+ tag: "span",
609
+ height: 2,
610
+ background: color,
611
+ borderColor: themeColorName2 === "neutral0" ? "neutral150" : "transparent",
612
+ hasRadius: true,
613
+ shrink: 0,
614
+ width: 2
615
+ }
616
+ ),
617
+ children: label2
618
+ },
619
+ value2
620
+ );
621
+ })
622
+ }
623
+ ),
624
+ /* @__PURE__ */ jsx(Field.Error, {})
625
+ ] });
702
626
  };
703
627
  const PermissionsField = ({ disabled, name, placeholder, required }) => {
704
628
  const { formatMessage } = useIntl();
@@ -707,57 +631,65 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
707
631
  const { value = [], error, onChange } = useField(name);
708
632
  const allStages = useForm("PermissionsField", (state) => state.values.stages);
709
633
  const onFormValueChange = useForm("PermissionsField", (state) => state.onChange);
710
- const { data: roles = [], isLoading } = useGetRolesQuery();
634
+ const rolesErrorCount = React.useRef(0);
635
+ const { data: roles = [], isLoading, error: getRolesError } = useGetAdminRolesQuery();
711
636
  const filteredRoles = roles?.filter((role) => role.code !== "strapi-super-admin") ?? [];
712
637
  React.useEffect(() => {
713
- if (!isLoading && roles.length === 0) {
638
+ if (!isLoading && getRolesError && "status" in getRolesError && getRolesError.status == 403 && rolesErrorCount.current === 0) {
639
+ rolesErrorCount.current = 1;
714
640
  toggleNotification({
715
641
  blockTransition: true,
716
642
  type: "danger",
717
643
  message: formatMessage({
718
644
  id: "review-workflows.stage.permissions.noPermissions.description",
719
- defaultMessage: "You don’t have the permission to see roles"
645
+ defaultMessage: "You don’t have the permission to see roles. Contact your administrator."
720
646
  })
721
647
  });
722
648
  }
723
- }, [formatMessage, isLoading, roles, toggleNotification]);
649
+ }, [formatMessage, isLoading, roles, toggleNotification, getRolesError]);
724
650
  if (!isLoading && filteredRoles.length === 0) {
725
- return /* @__PURE__ */ jsx(
726
- TextInput,
651
+ return /* @__PURE__ */ jsxs(
652
+ Field.Root,
727
653
  {
728
- disabled: true,
729
654
  name,
730
655
  hint: formatMessage({
731
656
  id: "Settings.review-workflows.stage.permissions.noPermissions.description",
732
657
  defaultMessage: "You don’t have the permission to see roles"
733
658
  }),
734
- label: formatMessage({
735
- id: "Settings.review-workflows.stage.permissions.label",
736
- defaultMessage: "Roles that can change this stage"
737
- }),
738
- placeholder: formatMessage({
739
- id: "components.NotAllowedInput.text",
740
- defaultMessage: "No permissions to see this field"
741
- }),
742
659
  required,
743
- startAction: /* @__PURE__ */ jsx(StyledIcon, {}),
744
- type: "text",
745
- value: ""
660
+ children: [
661
+ /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
662
+ id: "Settings.review-workflows.stage.permissions.label",
663
+ defaultMessage: "Roles that can change this stage"
664
+ }) }),
665
+ /* @__PURE__ */ jsx(
666
+ TextInput,
667
+ {
668
+ disabled: true,
669
+ placeholder: formatMessage({
670
+ id: "components.NotAllowedInput.text",
671
+ defaultMessage: "No permissions to see this field"
672
+ }),
673
+ startAction: /* @__PURE__ */ jsx(EyeStriked, { fill: "neutral600" }),
674
+ type: "text",
675
+ value: ""
676
+ }
677
+ ),
678
+ /* @__PURE__ */ jsx(Field.Hint, {})
679
+ ]
746
680
  }
747
681
  );
748
682
  }
749
- return /* @__PURE__ */ jsxs(Fragment, { children: [
750
- /* @__PURE__ */ jsxs(Flex, { alignItems: "flex-end", gap: 3, children: [
751
- /* @__PURE__ */ jsx(PermissionWrapper, { grow: 1, children: /* @__PURE__ */ jsx(
683
+ return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Flex, { alignItems: "flex-end", gap: 3, children: [
684
+ /* @__PURE__ */ jsx(PermissionWrapper, { grow: 1, children: /* @__PURE__ */ jsxs(Field.Root, { error, name, required: true, children: [
685
+ /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
686
+ id: "Settings.review-workflows.stage.permissions.label",
687
+ defaultMessage: "Roles that can change this stage"
688
+ }) }),
689
+ /* @__PURE__ */ jsx(
752
690
  MultiSelect,
753
691
  {
754
692
  disabled,
755
- error,
756
- id: name,
757
- label: formatMessage({
758
- id: "Settings.review-workflows.stage.permissions.label",
759
- defaultMessage: "Roles that can change this stage"
760
- }),
761
693
  onChange: (values) => {
762
694
  const permissions = values.map((value2) => ({
763
695
  role: parseInt(value2, 10),
@@ -766,7 +698,6 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
766
698
  onChange(name, permissions);
767
699
  },
768
700
  placeholder,
769
- required: true,
770
701
  value: value.map((permission) => `${permission.role}`),
771
702
  withTags: true,
772
703
  children: /* @__PURE__ */ jsx(
@@ -783,58 +714,52 @@ const PermissionsField = ({ disabled, name, placeholder, required }) => {
783
714
  }
784
715
  )
785
716
  }
786
- ) }),
787
- /* @__PURE__ */ jsx(
717
+ ),
718
+ /* @__PURE__ */ jsx(Field.Error, {})
719
+ ] }) }),
720
+ /* @__PURE__ */ jsxs(Dialog.Root, { open: isApplyAllConfirmationOpen, onOpenChange: setIsApplyAllConfirmationOpen, children: [
721
+ /* @__PURE__ */ jsx(Dialog.Trigger, { children: /* @__PURE__ */ jsx(
788
722
  IconButton,
789
723
  {
790
724
  disabled,
791
- icon: /* @__PURE__ */ jsx(Duplicate, {}),
792
725
  label: formatMessage({
793
726
  id: "Settings.review-workflows.stage.permissions.apply.label",
794
727
  defaultMessage: "Apply to all stages"
795
728
  }),
796
729
  size: "L",
797
- variant: "secondary",
798
- onClick: () => setIsApplyAllConfirmationOpen(true)
730
+ children: /* @__PURE__ */ jsx(Duplicate, {})
731
+ }
732
+ ) }),
733
+ /* @__PURE__ */ jsx(
734
+ ConfirmDialog,
735
+ {
736
+ onConfirm: () => {
737
+ onFormValueChange(
738
+ "stages",
739
+ allStages.map((stage) => ({
740
+ ...stage,
741
+ permissions: value
742
+ }))
743
+ );
744
+ setIsApplyAllConfirmationOpen(false);
745
+ toggleNotification({
746
+ type: "success",
747
+ message: formatMessage({
748
+ id: "Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success",
749
+ defaultMessage: "Applied roles to all other stages of the workflow"
750
+ })
751
+ });
752
+ },
753
+ variant: "default",
754
+ children: formatMessage({
755
+ id: "Settings.review-workflows.page.edit.confirm.stages.permissions.copy",
756
+ defaultMessage: "Roles that can change that stage will be applied to all the other stages."
757
+ })
799
758
  }
800
759
  )
801
- ] }),
802
- /* @__PURE__ */ jsx(
803
- ConfirmDialog,
804
- {
805
- isOpen: isApplyAllConfirmationOpen,
806
- onClose: () => setIsApplyAllConfirmationOpen(false),
807
- onConfirm: () => {
808
- onFormValueChange(
809
- "stages",
810
- allStages.map((stage) => ({
811
- ...stage,
812
- permissions: value
813
- }))
814
- );
815
- setIsApplyAllConfirmationOpen(false);
816
- toggleNotification({
817
- type: "success",
818
- message: formatMessage({
819
- id: "Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success",
820
- defaultMessage: "Applied roles to all other stages of the workflow"
821
- })
822
- });
823
- },
824
- variant: "default",
825
- children: formatMessage({
826
- id: "Settings.review-workflows.page.edit.confirm.stages.permissions.copy",
827
- defaultMessage: "Roles that can change that stage will be applied to all the other stages."
828
- })
829
- }
830
- )
831
- ] });
760
+ ] })
761
+ ] }) });
832
762
  };
833
- const StyledIcon = styled(EyeStriked)`
834
- & > path {
835
- fill: ${({ theme }) => theme.colors.neutral600};
836
- }
837
- `;
838
763
  const NestedOption$1 = styled(MultiSelectOption)`
839
764
  padding-left: ${({ theme }) => theme.spaces[7]};
840
765
  `;
@@ -845,8 +770,8 @@ const PermissionWrapper = styled(Flex)`
845
770
  `;
846
771
  const WorkflowAttributes = ({ canUpdate = true }) => {
847
772
  const { formatMessage } = useIntl();
848
- return /* @__PURE__ */ jsxs(Grid, { background: "neutral0", hasRadius: true, gap: 4, padding: 6, shadow: "tableShadow", children: [
849
- /* @__PURE__ */ jsx(GridItem, { col: 6, children: /* @__PURE__ */ jsx(
773
+ return /* @__PURE__ */ jsxs(Grid.Root, { background: "neutral0", hasRadius: true, gap: 4, padding: 6, shadow: "tableShadow", children: [
774
+ /* @__PURE__ */ jsx(Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsx(
850
775
  InputRenderer$1,
851
776
  {
852
777
  disabled: !canUpdate,
@@ -859,7 +784,7 @@ const WorkflowAttributes = ({ canUpdate = true }) => {
859
784
  type: "string"
860
785
  }
861
786
  ) }),
862
- /* @__PURE__ */ jsx(GridItem, { col: 6, children: /* @__PURE__ */ jsx(ContentTypesSelector, { disabled: !canUpdate }) })
787
+ /* @__PURE__ */ jsx(Grid.Item, { col: 6, direction: "column", alignItems: "stretch", children: /* @__PURE__ */ jsx(ContentTypesSelector, { disabled: !canUpdate }) })
863
788
  ] });
864
789
  };
865
790
  const ContentTypesSelector = ({ disabled }) => {
@@ -880,81 +805,82 @@ const ContentTypesSelector = ({ disabled }) => {
880
805
  label: contentType.info.displayName,
881
806
  value: contentType.uid
882
807
  }));
883
- return /* @__PURE__ */ jsx(
884
- MultiSelect,
885
- {
886
- customizeContent: (value2) => formatMessage(
887
- {
888
- id: "Settings.review-workflows.workflow.contentTypes.displayValue",
889
- defaultMessage: "{count} {count, plural, one {content type} other {content types}} selected"
890
- },
891
- { count: value2?.length }
892
- ),
893
- disabled: isDisabled,
894
- error,
895
- label: formatMessage({
896
- id: "Settings.review-workflows.workflow.contentTypes.label",
897
- defaultMessage: "Associated to"
898
- }),
899
- onChange: (values) => {
900
- onChange("contentTypes", values);
901
- },
902
- value,
903
- placeholder: formatMessage({
904
- id: "Settings.review-workflows.workflow.contentTypes.placeholder",
905
- defaultMessage: "Select"
906
- }),
907
- children: [
908
- ...collectionTypes.length > 0 ? [
909
- {
910
- label: formatMessage({
911
- id: "Settings.review-workflows.workflow.contentTypes.collectionTypes.label",
912
- defaultMessage: "Collection Types"
913
- }),
914
- children: collectionTypes
915
- }
916
- ] : [],
917
- ...singleTypes.length > 0 ? [
918
- {
919
- label: formatMessage({
920
- id: "Settings.review-workflows.workflow.contentTypes.singleTypes.label",
921
- defaultMessage: "Single Types"
922
- }),
923
- children: singleTypes
924
- }
925
- ] : []
926
- ].map((opt) => {
927
- return /* @__PURE__ */ jsx(
928
- MultiSelectGroup,
808
+ return /* @__PURE__ */ jsxs(Field.Root, { error, name: "contentTypes", children: [
809
+ /* @__PURE__ */ jsx(Field.Label, { children: formatMessage({
810
+ id: "Settings.review-workflows.workflow.contentTypes.label",
811
+ defaultMessage: "Associated to"
812
+ }) }),
813
+ /* @__PURE__ */ jsx(
814
+ MultiSelect,
815
+ {
816
+ customizeContent: (value2) => formatMessage(
929
817
  {
930
- label: opt.label,
931
- values: opt.children.map((child) => child.value.toString()),
932
- children: opt.children.map((child) => {
933
- const { name: assignedWorkflowName } = workflows?.find(
934
- (workflow) => (currentWorkflow && workflow.id !== currentWorkflow.id || !currentWorkflow) && workflow.contentTypes.includes(child.value)
935
- ) ?? {};
936
- return /* @__PURE__ */ jsx(NestedOption, { value: child.value, children: /* @__PURE__ */ jsx(Typography, {
937
- // @ts-expect-error - formatMessage options doesn't expect to be a React component but that's what we need actually for the <i> and <em> components
938
- children: formatMessage(
939
- {
940
- id: "Settings.review-workflows.workflow.contentTypes.assigned.notice",
941
- defaultMessage: "{label} {name, select, undefined {} other {<i>(assigned to <em>{name}</em> workflow)</i>}}"
942
- },
943
- {
944
- label: child.label,
945
- name: assignedWorkflowName,
946
- em: (...children) => /* @__PURE__ */ jsx(Typography, { as: "em", fontWeight: "bold", children }),
947
- i: (...children) => /* @__PURE__ */ jsx(ContentTypeTakeNotice, { children })
948
- }
949
- )
950
- }) }, child.value);
951
- })
818
+ id: "Settings.review-workflows.workflow.contentTypes.displayValue",
819
+ defaultMessage: "{count} {count, plural, one {content type} other {content types}} selected"
952
820
  },
953
- opt.label
954
- );
955
- })
956
- }
957
- );
821
+ { count: value2?.length }
822
+ ),
823
+ disabled: isDisabled,
824
+ onChange: (values) => {
825
+ onChange("contentTypes", values);
826
+ },
827
+ value,
828
+ placeholder: formatMessage({
829
+ id: "Settings.review-workflows.workflow.contentTypes.placeholder",
830
+ defaultMessage: "Select"
831
+ }),
832
+ children: [
833
+ ...collectionTypes.length > 0 ? [
834
+ {
835
+ label: formatMessage({
836
+ id: "Settings.review-workflows.workflow.contentTypes.collectionTypes.label",
837
+ defaultMessage: "Collection Types"
838
+ }),
839
+ children: collectionTypes
840
+ }
841
+ ] : [],
842
+ ...singleTypes.length > 0 ? [
843
+ {
844
+ label: formatMessage({
845
+ id: "Settings.review-workflows.workflow.contentTypes.singleTypes.label",
846
+ defaultMessage: "Single Types"
847
+ }),
848
+ children: singleTypes
849
+ }
850
+ ] : []
851
+ ].map((opt) => {
852
+ return /* @__PURE__ */ jsx(
853
+ MultiSelectGroup,
854
+ {
855
+ label: opt.label,
856
+ values: opt.children.map((child) => child.value.toString()),
857
+ children: opt.children.map((child) => {
858
+ const { name: assignedWorkflowName } = workflows?.find(
859
+ (workflow) => (currentWorkflow && workflow.id !== currentWorkflow.id || !currentWorkflow) && workflow.contentTypes.includes(child.value)
860
+ ) ?? {};
861
+ return /* @__PURE__ */ jsx(NestedOption, { value: child.value, children: /* @__PURE__ */ jsx(Typography, {
862
+ // @ts-expect-error - formatMessage options doesn't expect to be a React component but that's what we need actually for the <i> and <em> components
863
+ children: formatMessage(
864
+ {
865
+ id: "Settings.review-workflows.workflow.contentTypes.assigned.notice",
866
+ defaultMessage: "{label} {name, select, undefined {} other {<i>(assigned to <em>{name}</em> workflow)</i>}}"
867
+ },
868
+ {
869
+ label: child.label,
870
+ name: assignedWorkflowName,
871
+ em: (...children) => /* @__PURE__ */ jsx(Typography, { tag: "em", fontWeight: "bold", children }),
872
+ i: (...children) => /* @__PURE__ */ jsx(ContentTypeTakeNotice, { children })
873
+ }
874
+ )
875
+ }) }, child.value);
876
+ })
877
+ },
878
+ opt.label
879
+ );
880
+ })
881
+ }
882
+ )
883
+ ] });
958
884
  };
959
885
  const NestedOption = styled(MultiSelectOption)`
960
886
  padding-left: ${({ theme }) => theme.spaces[7]};
@@ -967,10 +893,10 @@ const WORKFLOW_SCHEMA = yup.object({
967
893
  name: yup.string().max(255, {
968
894
  id: "review-workflows.validation.name.max-length",
969
895
  defaultMessage: "Name can not be longer than 255 characters"
970
- }).required(),
896
+ }).required().nullable(),
971
897
  stages: yup.array().of(
972
898
  yup.object().shape({
973
- name: yup.string().required({
899
+ name: yup.string().nullable().required({
974
900
  id: "review-workflows.validation.stage.name",
975
901
  defaultMessage: "Name is required"
976
902
  }).max(255, {
@@ -987,7 +913,7 @@ const WORKFLOW_SCHEMA = yup.object({
987
913
  return stages.filter((stage) => stage.name === stageName).length === 1;
988
914
  }
989
915
  ),
990
- color: yup.string().required({
916
+ color: yup.string().nullable().required({
991
917
  id: "review-workflows.validation.stage.color",
992
918
  defaultMessage: "Color is required"
993
919
  }).matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),
@@ -1013,7 +939,6 @@ const EditPage = () => {
1013
939
  const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
1014
940
  const navigate = useNavigate();
1015
941
  const { toggleNotification } = useNotification();
1016
- const dispatch = useDispatch();
1017
942
  const {
1018
943
  isLoading: isLoadingWorkflow,
1019
944
  meta,
@@ -1021,7 +946,7 @@ const EditPage = () => {
1021
946
  error,
1022
947
  update,
1023
948
  create
1024
- } = useReviewWorkflows({ id: isCreatingWorkflow ? void 0 : id });
949
+ } = useReviewWorkflows();
1025
950
  const permissions = useTypedSelector(
1026
951
  (state) => state.admin_app.permissions["settings"]?.["review-workflows"]
1027
952
  );
@@ -1064,36 +989,13 @@ const EditPage = () => {
1064
989
  });
1065
990
  if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
1066
991
  helpers.setErrors(formatValidationErrors(res.error));
1067
- } else if ("data" in res) {
1068
- for (const uid of res.data.contentTypes) {
1069
- dispatch({
1070
- type: "contentManagerApi/invalidateTags",
1071
- payload: [
1072
- {
1073
- type: "ContentTypesConfiguration",
1074
- id: uid
1075
- }
1076
- ]
1077
- });
1078
- }
1079
992
  }
1080
993
  } else {
1081
994
  const res = await create(data);
1082
995
  if ("error" in res && isBaseQueryError(res.error) && res.error.name === "ValidationError") {
1083
996
  helpers.setErrors(formatValidationErrors(res.error));
1084
997
  } else if ("data" in res) {
1085
- for (const uid of res.data.contentTypes) {
1086
- dispatch({
1087
- type: "contentManagerApi/invalidateTags",
1088
- payload: [
1089
- {
1090
- type: "ContentTypesConfiguration",
1091
- id: uid
1092
- }
1093
- ]
1094
- });
1095
- }
1096
- navigate(`../${res.data.id}`);
998
+ navigate(`../${res.data.id}`, { replace: true });
1097
999
  }
1098
1000
  }
1099
1001
  } catch (error2) {
@@ -1192,7 +1094,6 @@ const EditPage = () => {
1192
1094
  {
1193
1095
  startIcon: /* @__PURE__ */ jsx(Check, {}),
1194
1096
  type: "submit",
1195
- size: "M",
1196
1097
  disabled: !modified || isSubmitting || values.stages.length === 0,
1197
1098
  loading: !Boolean(Object.keys(savePrompts).length > 0) && isSubmitting,
1198
1099
  children: formatMessage({
@@ -1215,23 +1116,22 @@ const EditPage = () => {
1215
1116
  }
1216
1117
  ),
1217
1118
  /* @__PURE__ */ jsx(Root, { children: /* @__PURE__ */ jsxs(Flex, { alignItems: "stretch", direction: "column", gap: 7, children: [
1218
- /* @__PURE__ */ jsx(WorkflowAttributes, { canUpdate }),
1119
+ /* @__PURE__ */ jsx(WorkflowAttributes, { canUpdate: canUpdate || canCreate }),
1219
1120
  /* @__PURE__ */ jsx(
1220
1121
  Stages,
1221
1122
  {
1222
1123
  canDelete,
1223
- canUpdate,
1124
+ canUpdate: canUpdate || canCreate,
1224
1125
  isCreating: isCreatingWorkflow
1225
1126
  }
1226
1127
  )
1227
1128
  ] }) }),
1228
1129
  /* @__PURE__ */ jsx(
1229
- ConfirmDialog,
1130
+ Dialog.Root,
1230
1131
  {
1231
- isOpen: Object.keys(savePrompts).length > 0,
1232
- onClose: handleConfirmClose,
1233
- onConfirm: handleConfirmDeleteDialog(values, { setErrors }),
1234
- children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 5, children: [
1132
+ open: Object.keys(savePrompts).length > 0,
1133
+ onOpenChange: handleConfirmClose,
1134
+ children: /* @__PURE__ */ jsx(ConfirmDialog, { onConfirm: handleConfirmDeleteDialog(values, { setErrors }), children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: 5, children: [
1235
1135
  savePrompts.hasDeletedServerStages && /* @__PURE__ */ jsx(Typography, { textAlign: "center", variant: "omega", children: formatMessage({
1236
1136
  id: "review-workflows.page.delete.confirm.stages.body",
1237
1137
  defaultMessage: "All entries assigned to deleted stages will be moved to the previous stage."
@@ -1243,7 +1143,7 @@ const EditPage = () => {
1243
1143
  },
1244
1144
  {
1245
1145
  count: contentTypesFromOtherWorkflows?.filter(
1246
- (contentType) => currentWorkflow?.contentTypes?.includes(contentType)
1146
+ (contentType) => values.contentTypes.includes(contentType)
1247
1147
  ).length ?? 0
1248
1148
  }
1249
1149
  ) }),
@@ -1251,7 +1151,7 @@ const EditPage = () => {
1251
1151
  id: "review-workflows.page.delete.confirm.confirm",
1252
1152
  defaultMessage: "Are you sure you want to save?"
1253
1153
  }) })
1254
- ] })
1154
+ ] }) })
1255
1155
  }
1256
1156
  )
1257
1157
  ] })
@@ -1260,8 +1160,8 @@ const EditPage = () => {
1260
1160
  /* @__PURE__ */ jsxs(
1261
1161
  LimitsModal.Root,
1262
1162
  {
1263
- isOpen: showLimitModal === "workflow",
1264
- onClose: () => setShowLimitModal(null),
1163
+ open: showLimitModal === "workflow",
1164
+ onOpenChange: () => setShowLimitModal(null),
1265
1165
  children: [
1266
1166
  /* @__PURE__ */ jsx(LimitsModal.Title, { children: formatMessage({
1267
1167
  id: "review-workflows.edit.page.workflows.limit.title",
@@ -1274,16 +1174,23 @@ const EditPage = () => {
1274
1174
  ]
1275
1175
  }
1276
1176
  ),
1277
- /* @__PURE__ */ jsxs(LimitsModal.Root, { isOpen: showLimitModal === "stage", onClose: () => setShowLimitModal(null), children: [
1278
- /* @__PURE__ */ jsx(LimitsModal.Title, { children: formatMessage({
1279
- id: "review-workflows.edit.page.stages.limit.title",
1280
- defaultMessage: "You have reached the limit of stages for this workflow in your plan"
1281
- }) }),
1282
- /* @__PURE__ */ jsx(LimitsModal.Body, { children: formatMessage({
1283
- id: "review-workflows.edit.page.stages.limit.body",
1284
- defaultMessage: "Try deleting some stages or contact Sales to enable more stages."
1285
- }) })
1286
- ] })
1177
+ /* @__PURE__ */ jsxs(
1178
+ LimitsModal.Root,
1179
+ {
1180
+ open: showLimitModal === "stage",
1181
+ onOpenChange: () => setShowLimitModal(null),
1182
+ children: [
1183
+ /* @__PURE__ */ jsx(LimitsModal.Title, { children: formatMessage({
1184
+ id: "review-workflows.edit.page.stages.limit.title",
1185
+ defaultMessage: "You have reached the limit of stages for this workflow in your plan"
1186
+ }) }),
1187
+ /* @__PURE__ */ jsx(LimitsModal.Body, { children: formatMessage({
1188
+ id: "review-workflows.edit.page.stages.limit.body",
1189
+ defaultMessage: "Try deleting some stages or contact Sales to enable more stages."
1190
+ }) })
1191
+ ]
1192
+ }
1193
+ )
1287
1194
  ] });
1288
1195
  };
1289
1196
  const addTmpKeysToStages = (data) => {
@@ -1307,4 +1214,4 @@ const ProtectedEditPage = () => {
1307
1214
  export {
1308
1215
  ProtectedEditPage
1309
1216
  };
1310
- //# sourceMappingURL=_id-C_HRFhcV.mjs.map
1217
+ //# sourceMappingURL=id-DV0Ndeav.mjs.map