@strapi/review-workflows 5.11.0 → 5.12.0-beta.0

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 (37) hide show
  1. package/dist/admin/chunks/{Layout-BMBeVPYC.js → Layout-COWXwu3C.js} +2 -2
  2. package/dist/admin/chunks/{Layout-BMBeVPYC.js.map → Layout-COWXwu3C.js.map} +1 -1
  3. package/dist/admin/chunks/{Layout-CVtYAQm6.mjs → Layout-CsShRydy.mjs} +2 -2
  4. package/dist/admin/chunks/{Layout-CVtYAQm6.mjs.map → Layout-CsShRydy.mjs.map} +1 -1
  5. package/dist/admin/chunks/{en-C6SESe-Y.js → en-BNGiWajd.js} +6 -2
  6. package/dist/admin/chunks/en-BNGiWajd.js.map +1 -0
  7. package/dist/admin/chunks/{en-BixG7IBu.mjs → en-BrZXFtVv.mjs} +6 -2
  8. package/dist/admin/chunks/en-BrZXFtVv.mjs.map +1 -0
  9. package/dist/admin/chunks/{id-CDTuaHeo.js → id-D8zbh_Y8.js} +3 -3
  10. package/dist/admin/chunks/{id-CDTuaHeo.js.map → id-D8zbh_Y8.js.map} +1 -1
  11. package/dist/admin/chunks/{id-BVE88ORy.mjs → id-afdVynVx.mjs} +3 -3
  12. package/dist/admin/chunks/{id-BVE88ORy.mjs.map → id-afdVynVx.mjs.map} +1 -1
  13. package/dist/admin/chunks/{index-Bwgyfg-u.mjs → index-2VGAYchq.mjs} +5 -5
  14. package/dist/admin/chunks/{index-Bwgyfg-u.mjs.map → index-2VGAYchq.mjs.map} +1 -1
  15. package/dist/admin/chunks/{index-BdonoyEU.js → index-7Tk-SHLf.js} +3 -3
  16. package/dist/admin/chunks/{index-BdonoyEU.js.map → index-7Tk-SHLf.js.map} +1 -1
  17. package/dist/admin/chunks/{index-Bo6RFHMy.mjs → index-BXlkcM4s.mjs} +3 -3
  18. package/dist/admin/chunks/{index-Bo6RFHMy.mjs.map → index-BXlkcM4s.mjs.map} +1 -1
  19. package/dist/admin/chunks/{index-o5qgjdDk.js → index-CEABZUwQ.js} +4 -4
  20. package/dist/admin/chunks/{index-o5qgjdDk.js.map → index-CEABZUwQ.js.map} +1 -1
  21. package/dist/admin/chunks/purchase-review-workflows-BJkm1_Dd.mjs +180 -0
  22. package/dist/admin/chunks/purchase-review-workflows-BJkm1_Dd.mjs.map +1 -0
  23. package/dist/admin/chunks/purchase-review-workflows-BQL0PbmB.js +182 -0
  24. package/dist/admin/chunks/purchase-review-workflows-BQL0PbmB.js.map +1 -0
  25. package/dist/admin/chunks/{router-B0yP_sPs.js → router-Cc8VcSCc.js} +3 -3
  26. package/dist/admin/chunks/{router-B0yP_sPs.js.map → router-Cc8VcSCc.js.map} +1 -1
  27. package/dist/admin/chunks/{router-tE19YOje.mjs → router-JyFAzv9_.mjs} +3 -3
  28. package/dist/admin/chunks/{router-tE19YOje.mjs.map → router-JyFAzv9_.mjs.map} +1 -1
  29. package/dist/admin/index.js +1 -1
  30. package/dist/admin/index.mjs +1 -1
  31. package/package.json +5 -5
  32. package/dist/admin/chunks/en-BixG7IBu.mjs.map +0 -1
  33. package/dist/admin/chunks/en-C6SESe-Y.js.map +0 -1
  34. package/dist/admin/chunks/purchase-review-workflows-CEP8kvxZ.mjs +0 -53
  35. package/dist/admin/chunks/purchase-review-workflows-CEP8kvxZ.mjs.map +0 -1
  36. package/dist/admin/chunks/purchase-review-workflows-Drlxm8yP.js +0 -55
  37. package/dist/admin/chunks/purchase-review-workflows-Drlxm8yP.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"id-CDTuaHeo.js","sources":["../../../admin/src/services/admin.ts","../../../admin/src/routes/settings/hooks/useKeyboardDragAndDrop.ts","../../../admin/src/routes/settings/hooks/useDragAndDrop.ts","../../../admin/src/routes/settings/components/AddStage.tsx","../../../admin/src/routes/settings/components/Stages.tsx","../../../admin/src/routes/settings/components/WorkflowAttributes.tsx","../../../admin/src/routes/settings/id.tsx"],"sourcesContent":["import { SanitizedAdminUser } from '@strapi/admin/strapi-admin';\n\nimport { reviewWorkflowsApi } from './api';\n\ntype Roles = SanitizedAdminUser['roles'];\ntype RolesResponse = { data: Roles };\n\nconst adminApi = reviewWorkflowsApi.injectEndpoints({\n endpoints(builder) {\n return {\n getAdminRoles: builder.query<Roles, void>({\n query: () => ({\n url: `/admin/roles`,\n method: 'GET',\n }),\n transformResponse: (res: RolesResponse) => {\n return res.data;\n },\n }),\n };\n },\n});\n\nconst { useGetAdminRolesQuery } = adminApi;\n\nexport { useGetAdminRolesQuery };\nexport type { SanitizedAdminUser, Roles };\n","import * as React from 'react';\n\nexport type UseKeyboardDragAndDropCallbacks<TIndex extends number | Array<number> = number> = {\n onCancel?: (index: TIndex) => void;\n onDropItem?: (currentIndex: TIndex, newIndex?: TIndex) => void;\n onGrabItem?: (index: TIndex) => void;\n onMoveItem?: (newIndex: TIndex, currentIndex: TIndex) => void;\n};\n\n/**\n * Utility hook designed to implement keyboard accessibile drag and drop by\n * returning an onKeyDown handler to be passed to the drag icon button.\n *\n * @internal - You should use `useDragAndDrop` instead.\n */\nexport const useKeyboardDragAndDrop = <TIndex extends number | Array<number> = number>(\n active: boolean,\n index: TIndex,\n { onCancel, onDropItem, onGrabItem, onMoveItem }: UseKeyboardDragAndDropCallbacks<TIndex>\n) => {\n const [isSelected, setIsSelected] = React.useState(false);\n\n const handleMove = (movement: 'UP' | 'DOWN') => {\n if (!isSelected) {\n return;\n }\n if (typeof index === 'number' && onMoveItem) {\n if (movement === 'UP') {\n onMoveItem((index - 1) as TIndex, index);\n } else if (movement === 'DOWN') {\n onMoveItem((index + 1) as TIndex, index);\n }\n }\n };\n\n const handleDragClick = () => {\n if (isSelected) {\n if (onDropItem) {\n onDropItem(index);\n }\n setIsSelected(false);\n } else {\n if (onGrabItem) {\n onGrabItem(index);\n }\n setIsSelected(true);\n }\n };\n\n const handleCancel = () => {\n if (isSelected) {\n setIsSelected(false);\n\n if (onCancel) {\n onCancel(index);\n }\n }\n };\n\n const handleKeyDown = <E extends Element>(e: React.KeyboardEvent<E>) => {\n if (!active) {\n return;\n }\n\n if (e.key === 'Tab' && !isSelected) {\n return;\n }\n\n e.preventDefault();\n\n switch (e.key) {\n case ' ':\n case 'Enter':\n handleDragClick();\n break;\n\n case 'Escape':\n handleCancel();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n handleMove('DOWN');\n break;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n handleMove('UP');\n break;\n\n default:\n }\n };\n\n return handleKeyDown;\n};\n","import * as React from 'react';\n\nimport {\n useDrag,\n useDrop,\n type HandlerManager,\n type ConnectDragSource,\n type ConnectDropTarget,\n type ConnectDragPreview,\n type DragSourceMonitor,\n} from 'react-dnd';\n\nimport {\n useKeyboardDragAndDrop,\n type UseKeyboardDragAndDropCallbacks,\n} from './useKeyboardDragAndDrop';\n\nimport type { Data } from '@strapi/types';\n\nconst DIRECTIONS = {\n UPWARD: 'upward',\n DOWNWARD: 'downward',\n} as const;\n\nconst DROP_SENSITIVITY = {\n REGULAR: 'regular',\n IMMEDIATE: 'immediate',\n} as const;\n\ninterface UseDragAndDropOptions<\n TIndex extends number | Array<number> = number,\n TItem extends { index: TIndex } = { index: TIndex },\n> extends UseKeyboardDragAndDropCallbacks<TIndex> {\n type?: string;\n index: TIndex;\n item?: TItem;\n onStart?: () => void;\n onEnd?: () => void;\n dropSensitivity?: (typeof DROP_SENSITIVITY)[keyof typeof DROP_SENSITIVITY];\n}\n\ntype Identifier = ReturnType<HandlerManager['getHandlerId']>;\n\ntype UseDragAndDropReturn<E extends Element = HTMLElement> = [\n props: {\n handlerId: Identifier;\n isDragging: boolean;\n handleKeyDown: <E extends Element>(event: React.KeyboardEvent<E>) => void;\n isOverDropTarget: boolean;\n direction: (typeof DIRECTIONS)[keyof typeof DIRECTIONS] | null;\n },\n objectRef: React.RefObject<E>,\n dropRef: ConnectDropTarget,\n dragRef: ConnectDragSource,\n dragPreviewRef: ConnectDragPreview,\n];\n\ntype DropCollectedProps = {\n handlerId: Identifier;\n isOver: boolean;\n};\n\n/**\n * A utility hook abstracting the general drag and drop hooks from react-dnd.\n * Centralising the same behaviours and by default offering keyboard support.\n */\nconst useDragAndDrop = <\n TIndex extends number | Array<number>,\n TItem extends { index: TIndex; id?: Data.ID; [key: string]: unknown } = {\n index: TIndex;\n [key: string]: unknown;\n },\n E extends Element = HTMLElement,\n>(\n active: boolean,\n {\n type = 'STRAPI_DND',\n index,\n item,\n onStart,\n onEnd,\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n dropSensitivity = DROP_SENSITIVITY.REGULAR,\n }: UseDragAndDropOptions<TIndex, TItem>\n): UseDragAndDropReturn<E> => {\n const objectRef = React.useRef<E>(null);\n\n const [{ handlerId, isOver }, dropRef] = useDrop<TItem, void, DropCollectedProps>({\n accept: type,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n isOver: monitor.isOver({ shallow: true }),\n };\n },\n drop(item) {\n const draggedIndex = item.index;\n const newIndex = index;\n\n if (isOver && onDropItem) {\n onDropItem(draggedIndex, newIndex);\n }\n },\n hover(item, monitor) {\n if (!objectRef.current || !onMoveItem) {\n return;\n }\n\n const dragIndex = item.index;\n const newIndex = index;\n\n const hoverBoundingRect = objectRef.current?.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n if (!clientOffset) return;\n\n const hoverClientY = clientOffset && clientOffset.y - hoverBoundingRect.top;\n if (typeof dragIndex === 'number' && typeof newIndex === 'number') {\n if (dragIndex === newIndex) {\n // Don't replace items with themselves\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (dragIndex < newIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > newIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n\n // Time to actually perform the action\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n } else {\n // Using numbers as indices doesn't work for nested list items with path like [1, 1, 0]\n if (Array.isArray(dragIndex) && Array.isArray(newIndex)) {\n // Indices comparison to find item position in nested list\n const minLength = Math.min(dragIndex.length, newIndex.length);\n let areEqual = true;\n let isLessThan = false;\n let isGreaterThan = false;\n\n for (let i = 0; i < minLength; i++) {\n if (dragIndex[i] < newIndex[i]) {\n isLessThan = true;\n areEqual = false;\n break;\n } else if (dragIndex[i] > newIndex[i]) {\n isGreaterThan = true;\n areEqual = false;\n break;\n }\n }\n\n // Don't replace items with themselves\n if (areEqual && dragIndex.length === newIndex.length) {\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (isLessThan && !isGreaterThan && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (isGreaterThan && !isLessThan && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n }\n\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n }\n },\n });\n\n const getDragDirection = (monitor: DragSourceMonitor<TItem, void>) => {\n if (\n monitor &&\n monitor.isDragging() &&\n !monitor.didDrop() &&\n monitor.getInitialClientOffset() &&\n monitor.getClientOffset()\n ) {\n const deltaY = monitor.getInitialClientOffset()!.y - monitor.getClientOffset()!.y;\n\n if (deltaY > 0) return DIRECTIONS.UPWARD;\n\n if (deltaY < 0) return DIRECTIONS.DOWNWARD;\n\n return null;\n }\n\n return null;\n };\n\n const [{ isDragging, direction }, dragRef, dragPreviewRef] = useDrag({\n type,\n item() {\n if (onStart) {\n onStart();\n }\n\n /**\n * This will be attached and it helps define the preview sizes\n * when a component is flexy e.g. Relations\n */\n const { width } = objectRef.current?.getBoundingClientRect() ?? {};\n\n return { index, width, ...item };\n },\n end() {\n if (onEnd) {\n onEnd();\n }\n },\n canDrag: active,\n /**\n * This is useful when the item is in a virtualized list.\n * However, if we don't have an ID then we want the libraries\n * defaults to take care of this.\n */\n isDragging: item?.id\n ? (monitor) => {\n return item.id === monitor.getItem().id;\n }\n : undefined,\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n initialOffset: monitor.getInitialClientOffset(),\n currentOffset: monitor.getClientOffset(),\n direction: getDragDirection(monitor),\n }),\n });\n\n const handleKeyDown = useKeyboardDragAndDrop(active, index, {\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n });\n\n return [\n { handlerId, isDragging, handleKeyDown, isOverDropTarget: isOver, direction },\n objectRef,\n dropRef,\n dragRef,\n dragPreviewRef,\n ];\n};\n\nexport {\n useDragAndDrop,\n UseDragAndDropReturn,\n UseDragAndDropOptions,\n DIRECTIONS,\n DROP_SENSITIVITY,\n};\n","import { Box, BoxComponent, ButtonProps, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nexport const AddStage = ({ children, ...props }: ButtonProps) => {\n return (\n <StyledButton\n tag=\"button\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={3}\n shadow=\"filterShadow\"\n {...props}\n >\n <Typography variant=\"pi\" fontWeight=\"bold\">\n <Flex tag=\"span\" gap={2}>\n <PlusCircle width=\"2.4rem\" height=\"2.4rem\" aria-hidden />\n {children}\n </Flex>\n </Typography>\n </StyledButton>\n );\n};\n\nconst StyledButton = styled<BoxComponent<'button'>>(Box)`\n border-radius: 26px;\n color: ${({ theme }) => theme.colors.neutral500};\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary600};\n }\n\n &:active {\n color: ${({ theme }) => theme.colors.primary600};\n }\n`;\n","import * as React from 'react';\n\nimport {\n useField,\n useForm,\n useTracking,\n ConfirmDialog,\n useNotification,\n InputRenderer as AdminInputRenderer,\n InputProps,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n MultiSelectOption,\n Accordion,\n Grid,\n IconButton,\n MultiSelect,\n MultiSelectGroup,\n SingleSelect,\n SingleSelectOption,\n TextInput,\n VisuallyHidden,\n useComposedRefs,\n Menu,\n MenuItem,\n Field,\n Dialog,\n} from '@strapi/design-system';\nimport { Duplicate, Drag, More, EyeStriked } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Stage as IStage, StagePermission } from '../../../../../shared/contracts/review-workflows';\nimport { useGetAdminRolesQuery } from '../../../services/admin';\nimport { AVAILABLE_COLORS, getStageColorByHex } from '../../../utils/colors';\nimport { DRAG_DROP_TYPES } from '../constants';\nimport { useDragAndDrop } from '../hooks/useDragAndDrop';\n\nimport { AddStage } from './AddStage';\n\ninterface WorkflowStage extends Pick<IStage, 'id' | 'name' | 'permissions' | 'color'> {\n __temp_key__: string;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Stages\n * -----------------------------------------------------------------------------------------------*/\ninterface StagesProps {\n canDelete?: boolean;\n canUpdate?: boolean;\n isCreating?: boolean;\n}\n\nconst Stages = ({ canDelete = true, canUpdate = true, isCreating }: StagesProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const addFieldRow = useForm('Stages', (state) => state.addFieldRow);\n const { value: stages = [] } = useField<WorkflowStage[]>('stages');\n\n return (\n <Flex direction=\"column\" gap={6} width=\"100%\">\n <Box position=\"relative\" width=\"100%\">\n <Background\n background=\"neutral200\"\n height=\"100%\"\n left=\"50%\"\n position=\"absolute\"\n top=\"0\"\n width={2}\n />\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\" tag=\"ol\">\n {stages.map((stage, index) => {\n return (\n <Box key={stage.__temp_key__} tag=\"li\">\n <Stage\n index={index}\n canDelete={stages.length > 1 && canDelete}\n canReorder={stages.length > 1}\n canUpdate={canUpdate}\n stagesCount={stages.length}\n defaultOpen={!stage.id}\n {...stage}\n />\n </Box>\n );\n })}\n </Flex>\n </Box>\n\n {canUpdate && (\n <AddStage\n type=\"button\"\n onClick={() => {\n addFieldRow('stages', { name: '' });\n trackUsage('willCreateStage');\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.stage.add',\n defaultMessage: 'Add new stage',\n })}\n </AddStage>\n )}\n </Flex>\n );\n};\n\nconst Background = styled(Box)`\n transform: translateX(-50%);\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Stage\n * -----------------------------------------------------------------------------------------------*/\ninterface StageProps extends WorkflowStage {\n canDelete?: boolean;\n canReorder?: boolean;\n canUpdate?: boolean;\n index: number;\n stagesCount: number;\n defaultOpen?: boolean;\n}\n\nconst Stage = ({\n index,\n canDelete = false,\n canReorder = false,\n canUpdate = false,\n stagesCount,\n name,\n permissions,\n color,\n defaultOpen,\n}: StageProps) => {\n const [liveText, setLiveText] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const stageErrors = useForm('Stages', (state) => state.errors.stages as object[]);\n const error = stageErrors?.[index];\n const addFieldRow = useForm('Stage', (state) => state.addFieldRow);\n const moveFieldRow = useForm('Stage', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('Stage', (state) => state.removeFieldRow);\n\n const getItemPos = (index: number) => `${index + 1} of ${stagesCount}`;\n\n const handleGrabStage = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.grab-item',\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: name,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropStage = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.drop-item',\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: name,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleCancelDragStage = () => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.cancel-item',\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: name,\n }\n )\n );\n };\n\n const handleMoveStage = (newIndex: number, oldIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.reorder',\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: name,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow('stages', oldIndex, newIndex);\n };\n\n const [{ handlerId, isDragging, handleKeyDown }, stageRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(canReorder, {\n index,\n item: {\n index,\n name,\n },\n onGrabItem: handleGrabStage,\n onDropItem: handleDropStage,\n onMoveItem: handleMoveStage,\n onCancel: handleCancelDragStage,\n type: DRAG_DROP_TYPES.STAGE,\n });\n\n // @ts-expect-error – the stageRef is incorrectly typed.\n const composedRef = useComposedRefs<HTMLDivElement>(stageRef, dropRef);\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const handleCloneClick = () => {\n addFieldRow('stages', { name, color, permissions });\n };\n\n const id = React.useId();\n\n return (\n <Box ref={composedRef} shadow=\"tableShadow\">\n {liveText && <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>}\n\n {isDragging ? (\n <Box\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n display=\"block\"\n hasRadius\n padding={6}\n />\n ) : (\n <AccordionRoot\n onValueChange={(value) => {\n if (value) {\n trackUsage('willEditStage');\n }\n }}\n defaultValue={defaultOpen ? id : undefined}\n $error={Object.values(error ?? {}).length > 0}\n >\n <Accordion.Item value={id}>\n <Accordion.Header>\n <Accordion.Trigger>{name}</Accordion.Trigger>\n <Accordion.Actions>\n {canDelete || canUpdate ? (\n <>\n <Menu.Root>\n <ContextMenuTrigger size=\"S\" endIcon={null} paddingLeft={2} paddingRight={2}>\n <More aria-hidden focusable={false} />\n <VisuallyHidden tag=\"span\">\n {formatMessage({\n id: '[tbdb].components.DynamicZone.more-actions',\n defaultMessage: 'More actions',\n })}\n </VisuallyHidden>\n </ContextMenuTrigger>\n {/* z-index needs to be as big as the one defined for the wrapper in Stages, otherwise the menu\n * disappears behind the accordion\n */}\n <Menu.Content popoverPlacement=\"bottom-end\" zIndex={2}>\n <Menu.SubRoot>\n {canUpdate && (\n <MenuItem onClick={handleCloneClick}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Duplicate stage',\n })}\n </MenuItem>\n )}\n\n {canDelete && (\n <DeleteMenuItem onClick={() => removeFieldRow('stages', index)}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Delete',\n })}\n </DeleteMenuItem>\n )}\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n\n {canUpdate && (\n <IconButton\n background=\"transparent\"\n hasRadius\n variant=\"ghost\"\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.drag',\n defaultMessage: 'Drag',\n })}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n </>\n ) : null}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Grid.Root gap={4} padding={6}>\n {[\n {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'Settings.review-workflows.stage.name.label',\n defaultMessage: 'Stage name',\n }),\n name: `stages.${index}.name`,\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'content-manager.reviewWorkflows.stage.color',\n defaultMessage: 'Color',\n }),\n name: `stages.${index}.color`,\n required: true,\n size: 6,\n type: 'color' as const,\n },\n {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n }),\n name: `stages.${index}.permissions`,\n placeholder: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.placeholder',\n defaultMessage: 'Select a role',\n }),\n required: true,\n size: 6,\n type: 'permissions' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Accordion.Content>\n </Accordion.Item>\n </AccordionRoot>\n )}\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: boolean }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst DeleteMenuItem = styled(MenuItem)`\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\n// Removing the font-size from the child-span aligns the\n// more icon vertically\nconst ContextMenuTrigger = styled(Menu.Trigger)`\n :hover,\n :focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n > span {\n font-size: 0;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * InputRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ntype InputRendererProps = InputProps | ColorSelectorProps | PermissionsFieldProps;\n\nconst InputRenderer = (props: InputRendererProps) => {\n switch (props.type) {\n case 'color':\n return <ColorSelector {...props} />;\n case 'permissions':\n return <PermissionsField {...props} />;\n default:\n return <AdminInputRenderer {...props} />;\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ColorSelector\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ColorSelectorProps\n extends Omit<Extract<InputProps, { type: 'enumeration' }>, 'type' | 'options'> {\n type: 'color';\n}\n\nconst ColorSelector = ({ disabled, label, name, required }: ColorSelectorProps) => {\n const { formatMessage } = useIntl();\n const { value, error, onChange } = useField<string>(name);\n\n const colorOptions = AVAILABLE_COLORS.map(({ hex, name }) => ({\n value: hex,\n label: formatMessage(\n {\n id: 'Settings.review-workflows.stage.color.name',\n defaultMessage: '{name}',\n },\n { name }\n ),\n color: hex,\n }));\n\n const { themeColorName } = getStageColorByHex(value) ?? {};\n\n return (\n <Field.Root error={error} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={disabled}\n onChange={(v) => {\n onChange(name, v.toString());\n }}\n value={value?.toUpperCase()}\n startIcon={\n <Flex\n tag=\"span\"\n height={2}\n background={value}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {colorOptions.map(({ value, label, color }) => {\n const { themeColorName } = getStageColorByHex(color) || {};\n\n return (\n <SingleSelectOption\n value={value}\n key={value}\n startIcon={\n <Flex\n tag=\"span\"\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PermissionsField\n * -----------------------------------------------------------------------------------------------*/\ninterface PermissionsFieldProps\n extends Omit<Extract<InputProps, { type: 'enumeration' }>, 'type' | 'options'> {\n type: 'permissions';\n}\n\nconst PermissionsField = ({ disabled, name, placeholder, required }: PermissionsFieldProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const [isApplyAllConfirmationOpen, setIsApplyAllConfirmationOpen] = React.useState(false);\n const { value = [], error, onChange } = useField<StagePermission[]>(name);\n const allStages = useForm<WorkflowStage[]>('PermissionsField', (state) => state.values.stages);\n const onFormValueChange = useForm('PermissionsField', (state) => state.onChange);\n const rolesErrorCount = React.useRef(0);\n\n const { data: roles = [], isLoading, error: getRolesError } = useGetAdminRolesQuery();\n\n // Super admins always have permissions to do everything and therefore\n // there is no point for this role to show up in the role combobox\n const filteredRoles = roles?.filter((role) => role.code !== 'strapi-super-admin') ?? [];\n\n React.useEffect(() => {\n if (\n !isLoading &&\n getRolesError &&\n 'status' in getRolesError &&\n getRolesError.status == 403 &&\n rolesErrorCount.current === 0\n ) {\n rolesErrorCount.current = 1;\n\n toggleNotification({\n blockTransition: true,\n type: 'danger',\n message: formatMessage({\n id: 'review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles. Contact your administrator.',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification, getRolesError]);\n\n if (!isLoading && filteredRoles.length === 0) {\n return (\n <Field.Root\n name={name}\n hint={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n })}\n required={required}\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n </Field.Label>\n <TextInput\n disabled\n placeholder={formatMessage({\n id: 'components.NotAllowedInput.text',\n defaultMessage: 'No permissions to see this field',\n })}\n startAction={<EyeStriked fill=\"neutral600\" />}\n type=\"text\"\n value=\"\"\n />\n <Field.Hint />\n </Field.Root>\n );\n }\n\n return (\n <>\n <Flex alignItems=\"flex-end\" gap={3}>\n <PermissionWrapper grow={1}>\n <Field.Root error={error} name={name} required>\n <Field.Label>\n {formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n </Field.Label>\n <MultiSelect\n disabled={disabled}\n onChange={(values) => {\n // Because the select components expects strings for values, but\n // the yup schema validates we are sending full permission objects to the API,\n // we must coerce the string value back to an object\n const permissions = values.map((value) => ({\n role: parseInt(value, 10),\n action: 'admin::review-workflows.stage.transition',\n }));\n\n onChange(name, permissions);\n }}\n placeholder={placeholder}\n // The Select component expects strings for values\n value={value.map((permission) => `${permission.role}`)}\n withTags\n >\n <MultiSelectGroup\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.allRoles.label',\n defaultMessage: 'All roles',\n })}\n values={filteredRoles.map((r) => `${r.id}`)}\n >\n {filteredRoles.map((role) => {\n return (\n <NestedOption key={role.id} value={`${role.id}`}>\n {role.name}\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n </MultiSelect>\n <Field.Error />\n </Field.Root>\n </PermissionWrapper>\n <Dialog.Root open={isApplyAllConfirmationOpen} onOpenChange={setIsApplyAllConfirmationOpen}>\n <Dialog.Trigger>\n <IconButton\n disabled={disabled}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.apply.label',\n defaultMessage: 'Apply to all stages',\n })}\n size=\"L\"\n >\n <Duplicate />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog\n onConfirm={() => {\n onFormValueChange(\n 'stages',\n allStages.map((stage) => ({\n ...stage,\n permissions: value,\n }))\n );\n\n setIsApplyAllConfirmationOpen(false);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success',\n defaultMessage: 'Applied roles to all other stages of the workflow',\n }),\n });\n }}\n variant=\"default\"\n >\n {formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy',\n defaultMessage:\n 'Roles that can change that stage will be applied to all the other stages.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n </>\n );\n};\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\n// Grow the size of the permission Select\nconst PermissionWrapper = styled(Flex)`\n > * {\n flex-grow: 1;\n }\n`;\n\nexport { Stages };\nexport type { StagesProps, WorkflowStage };\n","import { InputRenderer, useField, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Field,\n Grid,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n Typography,\n useCollator,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetContentTypesQuery } from '../../../services/content-manager';\nimport { useReviewWorkflows } from '../hooks/useReviewWorkflows';\n\nimport type { WorkflowStage } from './Stages';\n\n/* -------------------------------------------------------------------------------------------------\n * WorkflowAttributes\n * -----------------------------------------------------------------------------------------------*/\ninterface WorkflowAttributesProps {\n canUpdate?: boolean;\n}\n\nconst WorkflowAttributes = ({ canUpdate = true }: WorkflowAttributesProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root background=\"neutral0\" hasRadius gap={4} padding={6} shadow=\"tableShadow\">\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.name.label',\n defaultMessage: 'Workflow Name',\n })}\n name=\"name\"\n required\n type=\"string\"\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <ContentTypesSelector disabled={!canUpdate} />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <StageSelector disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypesSelector\n * -----------------------------------------------------------------------------------------------*/\ninterface ContentTypesSelectorProps {\n disabled?: boolean;\n}\n\nconst ContentTypesSelector = ({ disabled }: ContentTypesSelectorProps) => {\n const { formatMessage, locale } = useIntl();\n const { data: contentTypes, isLoading } = useGetContentTypesQuery();\n const { workflows } = useReviewWorkflows();\n const currentWorkflow = useForm('ContentTypesSelector', (state) => state.values);\n\n const { error, value, onChange } = useField('contentTypes');\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isDisabled =\n disabled ||\n isLoading ||\n !contentTypes ||\n (contentTypes.collectionType.length === 0 && contentTypes.singleType.length === 0);\n\n const collectionTypes = (contentTypes?.collectionType ?? [])\n .toSorted((a, b) => formatter.compare(a.info.displayName, b.info.displayName))\n .map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n }));\n\n const singleTypes = (contentTypes?.singleType ?? []).map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n }));\n\n return (\n <Field.Root error={error} name={'contentTypes'}>\n <Field.Label>\n {formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.label',\n defaultMessage: 'Associated to',\n })}\n </Field.Label>\n <MultiSelect\n customizeContent={(value) =>\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.displayValue',\n defaultMessage:\n '{count} {count, plural, one {content type} other {content types}} selected',\n },\n { count: value?.length }\n )\n }\n disabled={isDisabled}\n onChange={(values) => {\n onChange('contentTypes', values);\n }}\n value={value}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.placeholder',\n defaultMessage: 'Select',\n })}\n >\n {[\n ...(collectionTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.collectionTypes.label',\n defaultMessage: 'Collection Types',\n }),\n children: collectionTypes,\n },\n ]\n : []),\n\n ...(singleTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.singleTypes.label',\n defaultMessage: 'Single Types',\n }),\n children: singleTypes,\n },\n ]\n : []),\n ].map((opt) => {\n return (\n <MultiSelectGroup\n key={opt.label}\n label={opt.label}\n values={opt.children.map((child) => child.value.toString())}\n >\n {opt.children.map((child) => {\n const { name: assignedWorkflowName } =\n workflows?.find(\n (workflow) =>\n ((currentWorkflow && workflow.id !== currentWorkflow.id) ||\n !currentWorkflow) &&\n workflow.contentTypes.includes(child.value)\n ) ?? {};\n\n return (\n <NestedOption key={child.value} value={child.value}>\n <Typography>\n {\n // @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\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.assigned.notice',\n defaultMessage:\n '{label} {name, select, undefined {} other {<i>(assigned to <em>{name}</em> workflow)</i>}}',\n },\n {\n label: child.label,\n name: assignedWorkflowName,\n em: (...children) => (\n <Typography tag=\"em\" fontWeight=\"bold\">\n {children}\n </Typography>\n ),\n i: (...children) => (\n <ContentTypeTakeNotice>{children}</ContentTypeTakeNotice>\n ),\n }\n )\n }\n </Typography>\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n );\n })}\n </MultiSelect>\n </Field.Root>\n );\n};\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\nconst ContentTypeTakeNotice = styled(Typography)`\n font-style: italic;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * StageSelector\n * -----------------------------------------------------------------------------------------------*/\ninterface StageSelectorProps {\n disabled?: boolean;\n}\n\nconst StageSelector = ({ disabled }: StageSelectorProps) => {\n const { value: stages = [] } = useField<WorkflowStage[]>('stages');\n const { formatMessage } = useIntl();\n\n const { error, value, onChange } = useField('stageRequiredToPublish');\n\n // stages with empty names are not valid, so we avoid them from being used to avoid errors\n const validStages = stages.filter((stage) => stage.name);\n\n return (\n <Field.Root\n error={error}\n name=\"stageRequiredToPublish\"\n hint={formatMessage({\n id: 'settings.review-workflows.workflow.stageRequiredToPublish.hint',\n defaultMessage:\n 'Prevents entries from being published if they are not at the required stage.',\n })}\n >\n <Field.Label>\n {formatMessage({\n id: 'settings.review-workflows.workflow.stageRequiredToPublish.label',\n defaultMessage: 'Required stage for publishing',\n })}\n </Field.Label>\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange('stageRequiredToPublish', value);\n }}\n value={value}\n >\n <SingleSelectOption value={''}>\n {formatMessage({\n id: 'settings.review-workflows.workflow.stageRequiredToPublish.any',\n defaultMessage: 'Any stage',\n })}\n </SingleSelectOption>\n {validStages.map((stage, i) => (\n <SingleSelectOption\n key={`requiredToPublishStage-${stage.id || stage.__temp_key__}`}\n value={stage.id?.toString() || stage.__temp_key__}\n >\n {stage.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { WorkflowAttributes };\nexport type { WorkflowAttributesProps };\n","import * as React from 'react';\n\nimport {\n ConfirmDialog,\n BackButton,\n useNotification,\n useAPIErrorHandler,\n useRBAC,\n Form,\n Page,\n FormProps,\n FormHelpers,\n} from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Button, Dialog, Flex, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { LimitsModal } from '../../components/LimitsModal';\nimport {\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../constants';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { isBaseQueryError } from '../../utils/api';\n\nimport * as Layout from './components/Layout';\nimport { Stages, WorkflowStage } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\n\nimport type { Stage, Workflow } from '../../../../shared/contracts/review-workflows';\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst WORKFLOW_SCHEMA = yup.object({\n contentTypes: yup.array().of(yup.string()),\n name: yup\n .string()\n .max(255, {\n id: 'review-workflows.validation.name.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n .required()\n .nullable(),\n stages: yup\n .array()\n .of(\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required({\n id: 'review-workflows.validation.stage.name',\n defaultMessage: 'Name is required',\n })\n .max(255, {\n id: 'review-workflows.validation.stage.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n .test(\n 'unique-name',\n {\n id: 'review-workflows.validation.stage.duplicate',\n defaultMessage: 'Stage name must be unique',\n },\n (stageName, context) => {\n // @ts-expect-error it does exist.\n const { stages } = context.from[1].value;\n\n return stages.filter((stage: Stage) => stage.name === stageName).length === 1;\n }\n ),\n color: yup\n .string()\n .nullable()\n .required({\n id: 'review-workflows.validation.stage.color',\n defaultMessage: 'Color is required',\n })\n .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),\n\n permissions: yup\n .array(\n yup.object({\n role: yup\n .number()\n .strict()\n .typeError({\n id: 'review-workflows.validation.stage.permissions.role.number',\n defaultMessage: 'Role must be of type number',\n })\n .required(),\n action: yup.string().required({\n id: 'review-workflows.validation.stage.permissions.action.required',\n defaultMessage: 'Action is a required argument',\n }),\n })\n )\n .strict(),\n })\n )\n .min(1),\n stageRequiredToPublish: yup.string().nullable(),\n});\n\nconst EditPage = () => {\n const { id = '' } = useParams<{ id: string }>();\n const isCreatingWorkflow = id === 'create';\n const { formatMessage } = useIntl();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const {\n isLoading: isLoadingWorkflow,\n meta,\n workflows,\n error,\n update,\n create,\n } = useReviewWorkflows();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['review-workflows']\n );\n const {\n allowedActions: { canDelete, canUpdate, canCreate },\n } = useRBAC(permissions);\n\n const [savePrompts, setSavePrompts] = React.useState<{\n hasDeletedServerStages?: boolean;\n hasReassignedContentTypes?: boolean;\n }>({});\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n\n const currentWorkflow = workflows?.find((workflow) => workflow.id === parseInt(id, 10));\n const contentTypesFromOtherWorkflows = workflows\n ?.filter((workflow) => workflow.id !== parseInt(id, 10))\n .flatMap((workflow) => workflow.contentTypes);\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n\n interface FormValues {\n name: string;\n stages: WorkflowStage[];\n contentTypes: string[];\n stageRequiredToPublish: string | null;\n }\n\n const submitForm = async (data: FormValues, helpers: Pick<FormHelpers, 'setErrors'>) => {\n try {\n const { stageRequiredToPublish, ...rest } = data;\n const stageRequiredToPublishName =\n stageRequiredToPublish === ''\n ? null\n : rest.stages.find(\n (stage) =>\n stage.id === Number(stageRequiredToPublish) ||\n stage.__temp_key__ === stageRequiredToPublish\n )?.name;\n\n if (!isCreatingWorkflow) {\n const res = await update(id, {\n ...rest,\n // compare permissions of stages and only submit them if at least one has\n // changed; this enables partial updates e.g. for users who don't have\n // permissions to see roles\n stages: rest.stages.map((stage) => {\n let hasUpdatedPermissions = true;\n const serverStage = currentWorkflow?.stages?.find(\n (serverStage) => serverStage.id === stage?.id\n );\n if (serverStage) {\n hasUpdatedPermissions =\n serverStage.permissions?.length !== stage.permissions?.length ||\n !serverStage.permissions?.every(\n (serverPermission) =>\n !!stage.permissions?.find(\n (permission) => permission.role === serverPermission.role\n )\n );\n }\n return {\n ...stage,\n permissions: hasUpdatedPermissions ? stage.permissions : undefined,\n } satisfies Stage;\n }),\n stageRequiredToPublishName,\n });\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n }\n } else {\n const res = await create({\n ...rest,\n stageRequiredToPublishName,\n });\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else if ('data' in res) {\n navigate(`../${res.data.id}`, { replace: true });\n }\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n setSavePrompts({});\n };\n\n const handleConfirmDeleteDialog =\n (data: FormValues, helpers: Pick<FormHelpers, 'setErrors'>) => async () => {\n await submitForm(data, helpers);\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const handleSubmit: FormProps<FormValues>['onSubmit'] = async (data, helpers) => {\n const isContentTypeReassignment = data.contentTypes.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n const hasDeletedServerStages =\n !isCreatingWorkflow &&\n !currentWorkflow?.stages.every((stage) =>\n data.stages.some((newStage) => newStage.id === stage.id)\n );\n\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n data.stages &&\n stagesPerWorkflow &&\n data.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (hasDeletedServerStages || isContentTypeReassignment) {\n if (hasDeletedServerStages) {\n setSavePrompts((prev) => ({ ...prev, hasDeletedServerStages: true }));\n }\n\n if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n }\n } else {\n await submitForm(data, helpers);\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n } else if (\n currentWorkflow &&\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [\n currentWorkflow,\n isLicenseLoading,\n isLoadingWorkflow,\n limits,\n meta,\n numberOfWorkflows,\n stagesPerWorkflow,\n ]);\n\n const initialValues: FormValues = React.useMemo(() => {\n if (isCreatingWorkflow || !currentWorkflow) {\n return {\n name: '',\n stages: [],\n contentTypes: [],\n stageRequiredToPublish: '',\n };\n } else {\n return {\n name: currentWorkflow.name,\n stages: addTmpKeysToStages(currentWorkflow.stages),\n contentTypes: currentWorkflow.contentTypes,\n stageRequiredToPublish: currentWorkflow.stageRequiredToPublish?.id.toString() ?? '',\n };\n }\n }, [currentWorkflow, isCreatingWorkflow]);\n\n if (isLoadingWorkflow) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Layout.DragLayerRendered />\n\n <Form\n method={isCreatingWorkflow ? 'POST' : 'PUT'}\n initialValues={initialValues}\n validationSchema={WORKFLOW_SCHEMA}\n onSubmit={handleSubmit}\n >\n {({ modified, isSubmitting, values, setErrors }) => (\n <>\n <Layout.Header\n navigationAction={<BackButton fallback=\"..\" />}\n primaryAction={\n canUpdate || canCreate ? (\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified || isSubmitting || values.stages.length === 0}\n // if the confirm dialog is open the loading state is on\n // the confirm button already\n loading={!Boolean(Object.keys(savePrompts).length > 0) && isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: 'review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n title={\n currentWorkflow?.name ||\n formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })\n }\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes canUpdate={canUpdate || canCreate} />\n <Stages\n canDelete={canDelete}\n canUpdate={canUpdate || canCreate}\n isCreating={isCreatingWorkflow}\n />\n </Flex>\n </Layout.Root>\n <Dialog.Root\n open={Object.keys(savePrompts).length > 0}\n onOpenChange={handleConfirmClose}\n >\n <ConfirmDialog onConfirm={handleConfirmDeleteDialog(values, { setErrors })}>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasDeletedServerStages && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'review-workflows.page.delete.confirm.stages.body',\n defaultMessage:\n 'All entries assigned to deleted stages will be moved to the previous stage.',\n })}\n </Typography>\n )}\n\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count:\n contentTypesFromOtherWorkflows?.filter((contentType) =>\n values.contentTypes.includes(contentType)\n ).length ?? 0,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n )}\n </Form>\n\n <LimitsModal.Root\n open={showLimitModal === 'workflow'}\n onOpenChange={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.edit.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.edit.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n open={showLimitModal === 'stage'}\n onOpenChange={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.edit.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.edit.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n\nconst addTmpKeysToStages = (data: Workflow['stages']) => {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => {\n const {\n create = [],\n update = [],\n read = [],\n } = state.admin_app.permissions.settings?.['review-workflows'] ?? {};\n\n return [...create, ...update, ...read];\n });\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditPage };\n"],"names":["adminApi","reviewWorkflowsApi","injectEndpoints","endpoints","builder","getAdminRoles","query","url","method","transformResponse","res","data","useGetAdminRolesQuery","useKeyboardDragAndDrop","active","index","onCancel","onDropItem","onGrabItem","onMoveItem","isSelected","setIsSelected","React","useState","handleMove","movement","handleDragClick","handleCancel","handleKeyDown","e","key","preventDefault","DIRECTIONS","UPWARD","DOWNWARD","DROP_SENSITIVITY","REGULAR","IMMEDIATE","useDragAndDrop","type","item","onStart","onEnd","dropSensitivity","objectRef","useRef","handlerId","isOver","dropRef","useDrop","accept","collect","monitor","getHandlerId","shallow","drop","draggedIndex","newIndex","hover","current","dragIndex","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","bottom","top","clientOffset","getClientOffset","hoverClientY","y","Array","isArray","minLength","Math","min","length","areEqual","isLessThan","isGreaterThan","i","getDragDirection","isDragging","didDrop","getInitialClientOffset","deltaY","direction","dragRef","dragPreviewRef","useDrag","width","end","canDrag","id","getItem","undefined","initialOffset","currentOffset","isOverDropTarget","AddStage","children","props","_jsx","StyledButton","tag","background","borderColor","paddingBottom","paddingLeft","paddingRight","paddingTop","shadow","Typography","variant","fontWeight","_jsxs","Flex","gap","PlusCircle","height","aria-hidden","styled","Box","theme","colors","neutral500","primary600","Stages","canDelete","canUpdate","isCreating","formatMessage","useIntl","trackUsage","useTracking","addFieldRow","useForm","state","value","stages","useField","position","Background","left","alignItems","map","stage","Stage","canReorder","stagesCount","defaultOpen","__temp_key__","onClick","name","defaultMessage","permissions","color","liveText","setLiveText","stageErrors","errors","error","moveFieldRow","removeFieldRow","getItemPos","handleGrabStage","handleDropStage","handleCancelDragStage","handleMoveStage","oldIndex","stageRef","DRAG_DROP_TYPES","STAGE","composedRef","useComposedRefs","useEffect","getEmptyImage","captureDraggingState","handleCloneClick","useId","ref","VisuallyHidden","aria-live","borderStyle","borderWidth","display","hasRadius","padding","AccordionRoot","onValueChange","defaultValue","$error","Object","values","Accordion","Item","Header","Trigger","Actions","_Fragment","Menu","Root","ContextMenuTrigger","size","endIcon","More","focusable","Content","popoverPlacement","zIndex","SubRoot","MenuItem","DeleteMenuItem","IconButton","data-handler-id","label","stopPropagation","onKeyDown","Drag","Grid","disabled","required","placeholder","field","col","InputRenderer","danger600","neutral200","neutral100","ColorSelector","PermissionsField","AdminInputRenderer","onChange","colorOptions","AVAILABLE_COLORS","hex","themeColorName","getStageColorByHex","Field","Label","SingleSelect","v","toString","toUpperCase","startIcon","shrink","SingleSelectOption","Error","toggleNotification","useNotification","isApplyAllConfirmationOpen","setIsApplyAllConfirmationOpen","allStages","onFormValueChange","rolesErrorCount","roles","isLoading","getRolesError","filteredRoles","filter","role","code","status","blockTransition","message","hint","TextInput","startAction","EyeStriked","fill","Hint","PermissionWrapper","grow","MultiSelect","parseInt","action","permission","withTags","MultiSelectGroup","r","NestedOption","Dialog","open","onOpenChange","Duplicate","ConfirmDialog","onConfirm","MultiSelectOption","spaces","WorkflowAttributes","ContentTypesSelector","StageSelector","locale","contentTypes","useGetContentTypesQuery","workflows","useReviewWorkflows","currentWorkflow","formatter","useCollator","sensitivity","isDisabled","collectionType","singleType","collectionTypes","toSorted","a","b","compare","info","displayName","contentType","uid","singleTypes","customizeContent","count","opt","child","assignedWorkflowName","find","workflow","includes","em","ContentTypeTakeNotice","validStages","WORKFLOW_SCHEMA","yup","object","array","of","string","max","nullable","shape","test","stageName","context","from","matches","number","strict","typeError","stageRequiredToPublish","EditPage","useParams","isCreatingWorkflow","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","navigate","useNavigate","isLoadingWorkflow","meta","update","create","useTypedSelector","admin_app","allowedActions","canCreate","useRBAC","savePrompts","setSavePrompts","getFeature","isLicenseLoading","useLicenseLimits","showLimitModal","setShowLimitModal","contentTypesFromOtherWorkflows","flatMap","limits","numberOfWorkflows","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","stagesPerWorkflow","CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME","submitForm","helpers","rest","stageRequiredToPublishName","Number","hasUpdatedPermissions","serverStage","every","serverPermission","isBaseQueryError","setErrors","replace","handleConfirmDeleteDialog","handleConfirmClose","handleSubmit","isContentTypeReassignment","some","hasDeletedServerStages","newStage","workflowCount","prev","hasReassignedContentTypes","initialValues","useMemo","addTmpKeysToStages","Page","Loading","Layout","Form","validationSchema","onSubmit","modified","isSubmitting","navigationAction","BackButton","fallback","primaryAction","Button","Check","loading","Boolean","keys","subtitle","title","textAlign","LimitsModal","Title","Body","generateNKeysBetween","datum","ProtectedEditPage","read","settings","Protect"],"mappings":"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"}
1
+ {"version":3,"file":"id-D8zbh_Y8.js","sources":["../../../admin/src/services/admin.ts","../../../admin/src/routes/settings/hooks/useKeyboardDragAndDrop.ts","../../../admin/src/routes/settings/hooks/useDragAndDrop.ts","../../../admin/src/routes/settings/components/AddStage.tsx","../../../admin/src/routes/settings/components/Stages.tsx","../../../admin/src/routes/settings/components/WorkflowAttributes.tsx","../../../admin/src/routes/settings/id.tsx"],"sourcesContent":["import { SanitizedAdminUser } from '@strapi/admin/strapi-admin';\n\nimport { reviewWorkflowsApi } from './api';\n\ntype Roles = SanitizedAdminUser['roles'];\ntype RolesResponse = { data: Roles };\n\nconst adminApi = reviewWorkflowsApi.injectEndpoints({\n endpoints(builder) {\n return {\n getAdminRoles: builder.query<Roles, void>({\n query: () => ({\n url: `/admin/roles`,\n method: 'GET',\n }),\n transformResponse: (res: RolesResponse) => {\n return res.data;\n },\n }),\n };\n },\n});\n\nconst { useGetAdminRolesQuery } = adminApi;\n\nexport { useGetAdminRolesQuery };\nexport type { SanitizedAdminUser, Roles };\n","import * as React from 'react';\n\nexport type UseKeyboardDragAndDropCallbacks<TIndex extends number | Array<number> = number> = {\n onCancel?: (index: TIndex) => void;\n onDropItem?: (currentIndex: TIndex, newIndex?: TIndex) => void;\n onGrabItem?: (index: TIndex) => void;\n onMoveItem?: (newIndex: TIndex, currentIndex: TIndex) => void;\n};\n\n/**\n * Utility hook designed to implement keyboard accessibile drag and drop by\n * returning an onKeyDown handler to be passed to the drag icon button.\n *\n * @internal - You should use `useDragAndDrop` instead.\n */\nexport const useKeyboardDragAndDrop = <TIndex extends number | Array<number> = number>(\n active: boolean,\n index: TIndex,\n { onCancel, onDropItem, onGrabItem, onMoveItem }: UseKeyboardDragAndDropCallbacks<TIndex>\n) => {\n const [isSelected, setIsSelected] = React.useState(false);\n\n const handleMove = (movement: 'UP' | 'DOWN') => {\n if (!isSelected) {\n return;\n }\n if (typeof index === 'number' && onMoveItem) {\n if (movement === 'UP') {\n onMoveItem((index - 1) as TIndex, index);\n } else if (movement === 'DOWN') {\n onMoveItem((index + 1) as TIndex, index);\n }\n }\n };\n\n const handleDragClick = () => {\n if (isSelected) {\n if (onDropItem) {\n onDropItem(index);\n }\n setIsSelected(false);\n } else {\n if (onGrabItem) {\n onGrabItem(index);\n }\n setIsSelected(true);\n }\n };\n\n const handleCancel = () => {\n if (isSelected) {\n setIsSelected(false);\n\n if (onCancel) {\n onCancel(index);\n }\n }\n };\n\n const handleKeyDown = <E extends Element>(e: React.KeyboardEvent<E>) => {\n if (!active) {\n return;\n }\n\n if (e.key === 'Tab' && !isSelected) {\n return;\n }\n\n e.preventDefault();\n\n switch (e.key) {\n case ' ':\n case 'Enter':\n handleDragClick();\n break;\n\n case 'Escape':\n handleCancel();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n handleMove('DOWN');\n break;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n handleMove('UP');\n break;\n\n default:\n }\n };\n\n return handleKeyDown;\n};\n","import * as React from 'react';\n\nimport {\n useDrag,\n useDrop,\n type HandlerManager,\n type ConnectDragSource,\n type ConnectDropTarget,\n type ConnectDragPreview,\n type DragSourceMonitor,\n} from 'react-dnd';\n\nimport {\n useKeyboardDragAndDrop,\n type UseKeyboardDragAndDropCallbacks,\n} from './useKeyboardDragAndDrop';\n\nimport type { Data } from '@strapi/types';\n\nconst DIRECTIONS = {\n UPWARD: 'upward',\n DOWNWARD: 'downward',\n} as const;\n\nconst DROP_SENSITIVITY = {\n REGULAR: 'regular',\n IMMEDIATE: 'immediate',\n} as const;\n\ninterface UseDragAndDropOptions<\n TIndex extends number | Array<number> = number,\n TItem extends { index: TIndex } = { index: TIndex },\n> extends UseKeyboardDragAndDropCallbacks<TIndex> {\n type?: string;\n index: TIndex;\n item?: TItem;\n onStart?: () => void;\n onEnd?: () => void;\n dropSensitivity?: (typeof DROP_SENSITIVITY)[keyof typeof DROP_SENSITIVITY];\n}\n\ntype Identifier = ReturnType<HandlerManager['getHandlerId']>;\n\ntype UseDragAndDropReturn<E extends Element = HTMLElement> = [\n props: {\n handlerId: Identifier;\n isDragging: boolean;\n handleKeyDown: <E extends Element>(event: React.KeyboardEvent<E>) => void;\n isOverDropTarget: boolean;\n direction: (typeof DIRECTIONS)[keyof typeof DIRECTIONS] | null;\n },\n objectRef: React.RefObject<E>,\n dropRef: ConnectDropTarget,\n dragRef: ConnectDragSource,\n dragPreviewRef: ConnectDragPreview,\n];\n\ntype DropCollectedProps = {\n handlerId: Identifier;\n isOver: boolean;\n};\n\n/**\n * A utility hook abstracting the general drag and drop hooks from react-dnd.\n * Centralising the same behaviours and by default offering keyboard support.\n */\nconst useDragAndDrop = <\n TIndex extends number | Array<number>,\n TItem extends { index: TIndex; id?: Data.ID; [key: string]: unknown } = {\n index: TIndex;\n [key: string]: unknown;\n },\n E extends Element = HTMLElement,\n>(\n active: boolean,\n {\n type = 'STRAPI_DND',\n index,\n item,\n onStart,\n onEnd,\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n dropSensitivity = DROP_SENSITIVITY.REGULAR,\n }: UseDragAndDropOptions<TIndex, TItem>\n): UseDragAndDropReturn<E> => {\n const objectRef = React.useRef<E>(null);\n\n const [{ handlerId, isOver }, dropRef] = useDrop<TItem, void, DropCollectedProps>({\n accept: type,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n isOver: monitor.isOver({ shallow: true }),\n };\n },\n drop(item) {\n const draggedIndex = item.index;\n const newIndex = index;\n\n if (isOver && onDropItem) {\n onDropItem(draggedIndex, newIndex);\n }\n },\n hover(item, monitor) {\n if (!objectRef.current || !onMoveItem) {\n return;\n }\n\n const dragIndex = item.index;\n const newIndex = index;\n\n const hoverBoundingRect = objectRef.current?.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n if (!clientOffset) return;\n\n const hoverClientY = clientOffset && clientOffset.y - hoverBoundingRect.top;\n if (typeof dragIndex === 'number' && typeof newIndex === 'number') {\n if (dragIndex === newIndex) {\n // Don't replace items with themselves\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (dragIndex < newIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > newIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n\n // Time to actually perform the action\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n } else {\n // Using numbers as indices doesn't work for nested list items with path like [1, 1, 0]\n if (Array.isArray(dragIndex) && Array.isArray(newIndex)) {\n // Indices comparison to find item position in nested list\n const minLength = Math.min(dragIndex.length, newIndex.length);\n let areEqual = true;\n let isLessThan = false;\n let isGreaterThan = false;\n\n for (let i = 0; i < minLength; i++) {\n if (dragIndex[i] < newIndex[i]) {\n isLessThan = true;\n areEqual = false;\n break;\n } else if (dragIndex[i] > newIndex[i]) {\n isGreaterThan = true;\n areEqual = false;\n break;\n }\n }\n\n // Don't replace items with themselves\n if (areEqual && dragIndex.length === newIndex.length) {\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (isLessThan && !isGreaterThan && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (isGreaterThan && !isLessThan && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n }\n\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n }\n },\n });\n\n const getDragDirection = (monitor: DragSourceMonitor<TItem, void>) => {\n if (\n monitor &&\n monitor.isDragging() &&\n !monitor.didDrop() &&\n monitor.getInitialClientOffset() &&\n monitor.getClientOffset()\n ) {\n const deltaY = monitor.getInitialClientOffset()!.y - monitor.getClientOffset()!.y;\n\n if (deltaY > 0) return DIRECTIONS.UPWARD;\n\n if (deltaY < 0) return DIRECTIONS.DOWNWARD;\n\n return null;\n }\n\n return null;\n };\n\n const [{ isDragging, direction }, dragRef, dragPreviewRef] = useDrag({\n type,\n item() {\n if (onStart) {\n onStart();\n }\n\n /**\n * This will be attached and it helps define the preview sizes\n * when a component is flexy e.g. Relations\n */\n const { width } = objectRef.current?.getBoundingClientRect() ?? {};\n\n return { index, width, ...item };\n },\n end() {\n if (onEnd) {\n onEnd();\n }\n },\n canDrag: active,\n /**\n * This is useful when the item is in a virtualized list.\n * However, if we don't have an ID then we want the libraries\n * defaults to take care of this.\n */\n isDragging: item?.id\n ? (monitor) => {\n return item.id === monitor.getItem().id;\n }\n : undefined,\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n initialOffset: monitor.getInitialClientOffset(),\n currentOffset: monitor.getClientOffset(),\n direction: getDragDirection(monitor),\n }),\n });\n\n const handleKeyDown = useKeyboardDragAndDrop(active, index, {\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n });\n\n return [\n { handlerId, isDragging, handleKeyDown, isOverDropTarget: isOver, direction },\n objectRef,\n dropRef,\n dragRef,\n dragPreviewRef,\n ];\n};\n\nexport {\n useDragAndDrop,\n UseDragAndDropReturn,\n UseDragAndDropOptions,\n DIRECTIONS,\n DROP_SENSITIVITY,\n};\n","import { Box, BoxComponent, ButtonProps, Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nexport const AddStage = ({ children, ...props }: ButtonProps) => {\n return (\n <StyledButton\n tag=\"button\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n paddingBottom={3}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={3}\n shadow=\"filterShadow\"\n {...props}\n >\n <Typography variant=\"pi\" fontWeight=\"bold\">\n <Flex tag=\"span\" gap={2}>\n <PlusCircle width=\"2.4rem\" height=\"2.4rem\" aria-hidden />\n {children}\n </Flex>\n </Typography>\n </StyledButton>\n );\n};\n\nconst StyledButton = styled<BoxComponent<'button'>>(Box)`\n border-radius: 26px;\n color: ${({ theme }) => theme.colors.neutral500};\n\n &:hover {\n color: ${({ theme }) => theme.colors.primary600};\n }\n\n &:active {\n color: ${({ theme }) => theme.colors.primary600};\n }\n`;\n","import * as React from 'react';\n\nimport {\n useField,\n useForm,\n useTracking,\n ConfirmDialog,\n useNotification,\n InputRenderer as AdminInputRenderer,\n InputProps,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n MultiSelectOption,\n Accordion,\n Grid,\n IconButton,\n MultiSelect,\n MultiSelectGroup,\n SingleSelect,\n SingleSelectOption,\n TextInput,\n VisuallyHidden,\n useComposedRefs,\n Menu,\n MenuItem,\n Field,\n Dialog,\n} from '@strapi/design-system';\nimport { Duplicate, Drag, More, EyeStriked } from '@strapi/icons';\nimport { getEmptyImage } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Stage as IStage, StagePermission } from '../../../../../shared/contracts/review-workflows';\nimport { useGetAdminRolesQuery } from '../../../services/admin';\nimport { AVAILABLE_COLORS, getStageColorByHex } from '../../../utils/colors';\nimport { DRAG_DROP_TYPES } from '../constants';\nimport { useDragAndDrop } from '../hooks/useDragAndDrop';\n\nimport { AddStage } from './AddStage';\n\ninterface WorkflowStage extends Pick<IStage, 'id' | 'name' | 'permissions' | 'color'> {\n __temp_key__: string;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Stages\n * -----------------------------------------------------------------------------------------------*/\ninterface StagesProps {\n canDelete?: boolean;\n canUpdate?: boolean;\n isCreating?: boolean;\n}\n\nconst Stages = ({ canDelete = true, canUpdate = true, isCreating }: StagesProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const addFieldRow = useForm('Stages', (state) => state.addFieldRow);\n const { value: stages = [] } = useField<WorkflowStage[]>('stages');\n\n return (\n <Flex direction=\"column\" gap={6} width=\"100%\">\n <Box position=\"relative\" width=\"100%\">\n <Background\n background=\"neutral200\"\n height=\"100%\"\n left=\"50%\"\n position=\"absolute\"\n top=\"0\"\n width={2}\n />\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\" tag=\"ol\">\n {stages.map((stage, index) => {\n return (\n <Box key={stage.__temp_key__} tag=\"li\">\n <Stage\n index={index}\n canDelete={stages.length > 1 && canDelete}\n canReorder={stages.length > 1}\n canUpdate={canUpdate}\n stagesCount={stages.length}\n defaultOpen={!stage.id}\n {...stage}\n />\n </Box>\n );\n })}\n </Flex>\n </Box>\n\n {canUpdate && (\n <AddStage\n type=\"button\"\n onClick={() => {\n addFieldRow('stages', { name: '' });\n trackUsage('willCreateStage');\n }}\n >\n {formatMessage({\n id: 'Settings.review-workflows.stage.add',\n defaultMessage: 'Add new stage',\n })}\n </AddStage>\n )}\n </Flex>\n );\n};\n\nconst Background = styled(Box)`\n transform: translateX(-50%);\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Stage\n * -----------------------------------------------------------------------------------------------*/\ninterface StageProps extends WorkflowStage {\n canDelete?: boolean;\n canReorder?: boolean;\n canUpdate?: boolean;\n index: number;\n stagesCount: number;\n defaultOpen?: boolean;\n}\n\nconst Stage = ({\n index,\n canDelete = false,\n canReorder = false,\n canUpdate = false,\n stagesCount,\n name,\n permissions,\n color,\n defaultOpen,\n}: StageProps) => {\n const [liveText, setLiveText] = React.useState<string>();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const stageErrors = useForm('Stages', (state) => state.errors.stages as object[]);\n const error = stageErrors?.[index];\n const addFieldRow = useForm('Stage', (state) => state.addFieldRow);\n const moveFieldRow = useForm('Stage', (state) => state.moveFieldRow);\n const removeFieldRow = useForm('Stage', (state) => state.removeFieldRow);\n\n const getItemPos = (index: number) => `${index + 1} of ${stagesCount}`;\n\n const handleGrabStage = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.grab-item',\n defaultMessage: `{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel.`,\n },\n {\n item: name,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleDropStage = (index: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.drop-item',\n defaultMessage: `{item}, dropped. Final position in list: {position}.`,\n },\n {\n item: name,\n position: getItemPos(index),\n }\n )\n );\n };\n\n const handleCancelDragStage = () => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.cancel-item',\n defaultMessage: '{item}, dropped. Re-order cancelled.',\n },\n {\n item: name,\n }\n )\n );\n };\n\n const handleMoveStage = (newIndex: number, oldIndex: number) => {\n setLiveText(\n formatMessage(\n {\n id: 'dnd.reorder',\n defaultMessage: '{item}, moved. New position in list: {position}.',\n },\n {\n item: name,\n position: getItemPos(newIndex),\n }\n )\n );\n\n moveFieldRow('stages', oldIndex, newIndex);\n };\n\n const [{ handlerId, isDragging, handleKeyDown }, stageRef, dropRef, dragRef, dragPreviewRef] =\n useDragAndDrop(canReorder, {\n index,\n item: {\n index,\n name,\n },\n onGrabItem: handleGrabStage,\n onDropItem: handleDropStage,\n onMoveItem: handleMoveStage,\n onCancel: handleCancelDragStage,\n type: DRAG_DROP_TYPES.STAGE,\n });\n\n // @ts-expect-error – the stageRef is incorrectly typed.\n const composedRef = useComposedRefs<HTMLDivElement>(stageRef, dropRef);\n\n React.useEffect(() => {\n dragPreviewRef(getEmptyImage(), { captureDraggingState: false });\n }, [dragPreviewRef, index]);\n\n const handleCloneClick = () => {\n addFieldRow('stages', { name, color, permissions });\n };\n\n const id = React.useId();\n\n return (\n <Box ref={composedRef} shadow=\"tableShadow\">\n {liveText && <VisuallyHidden aria-live=\"assertive\">{liveText}</VisuallyHidden>}\n\n {isDragging ? (\n <Box\n background=\"primary100\"\n borderStyle=\"dashed\"\n borderColor=\"primary600\"\n borderWidth=\"1px\"\n display=\"block\"\n hasRadius\n padding={6}\n />\n ) : (\n <AccordionRoot\n onValueChange={(value) => {\n if (value) {\n trackUsage('willEditStage');\n }\n }}\n defaultValue={defaultOpen ? id : undefined}\n $error={Object.values(error ?? {}).length > 0}\n >\n <Accordion.Item value={id}>\n <Accordion.Header>\n <Accordion.Trigger>{name}</Accordion.Trigger>\n <Accordion.Actions>\n {canDelete || canUpdate ? (\n <>\n <Menu.Root>\n <ContextMenuTrigger size=\"S\" endIcon={null} paddingLeft={2} paddingRight={2}>\n <More aria-hidden focusable={false} />\n <VisuallyHidden tag=\"span\">\n {formatMessage({\n id: '[tbdb].components.DynamicZone.more-actions',\n defaultMessage: 'More actions',\n })}\n </VisuallyHidden>\n </ContextMenuTrigger>\n {/* z-index needs to be as big as the one defined for the wrapper in Stages, otherwise the menu\n * disappears behind the accordion\n */}\n <Menu.Content popoverPlacement=\"bottom-end\" zIndex={2}>\n <Menu.SubRoot>\n {canUpdate && (\n <MenuItem onClick={handleCloneClick}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Duplicate stage',\n })}\n </MenuItem>\n )}\n\n {canDelete && (\n <DeleteMenuItem onClick={() => removeFieldRow('stages', index)}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Delete',\n })}\n </DeleteMenuItem>\n )}\n </Menu.SubRoot>\n </Menu.Content>\n </Menu.Root>\n\n {canUpdate && (\n <IconButton\n background=\"transparent\"\n hasRadius\n variant=\"ghost\"\n data-handler-id={handlerId}\n ref={dragRef}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.drag',\n defaultMessage: 'Drag',\n })}\n onClick={(e) => e.stopPropagation()}\n onKeyDown={handleKeyDown}\n >\n <Drag />\n </IconButton>\n )}\n </>\n ) : null}\n </Accordion.Actions>\n </Accordion.Header>\n <Accordion.Content>\n <Grid.Root gap={4} padding={6}>\n {[\n {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'Settings.review-workflows.stage.name.label',\n defaultMessage: 'Stage name',\n }),\n name: `stages.${index}.name`,\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'content-manager.reviewWorkflows.stage.color',\n defaultMessage: 'Color',\n }),\n name: `stages.${index}.color`,\n required: true,\n size: 6,\n type: 'color' as const,\n },\n {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n }),\n name: `stages.${index}.permissions`,\n placeholder: formatMessage({\n id: 'Settings.review-workflows.stage.permissions.placeholder',\n defaultMessage: 'Select a role',\n }),\n required: true,\n size: 6,\n type: 'permissions' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item key={field.name} col={size} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Accordion.Content>\n </Accordion.Item>\n </AccordionRoot>\n )}\n </Box>\n );\n};\n\nconst AccordionRoot = styled(Accordion.Root)<{ $error?: boolean }>`\n border: 1px solid\n ${({ theme, $error }) => ($error ? theme.colors.danger600 : theme.colors.neutral200)};\n`;\n\nconst DeleteMenuItem = styled(MenuItem)`\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\n// Removing the font-size from the child-span aligns the\n// more icon vertically\nconst ContextMenuTrigger = styled(Menu.Trigger)`\n :hover,\n :focus {\n background-color: ${({ theme }) => theme.colors.neutral100};\n }\n\n > span {\n font-size: 0;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * InputRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ntype InputRendererProps = InputProps | ColorSelectorProps | PermissionsFieldProps;\n\nconst InputRenderer = (props: InputRendererProps) => {\n switch (props.type) {\n case 'color':\n return <ColorSelector {...props} />;\n case 'permissions':\n return <PermissionsField {...props} />;\n default:\n return <AdminInputRenderer {...props} />;\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ColorSelector\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ColorSelectorProps\n extends Omit<Extract<InputProps, { type: 'enumeration' }>, 'type' | 'options'> {\n type: 'color';\n}\n\nconst ColorSelector = ({ disabled, label, name, required }: ColorSelectorProps) => {\n const { formatMessage } = useIntl();\n const { value, error, onChange } = useField<string>(name);\n\n const colorOptions = AVAILABLE_COLORS.map(({ hex, name }) => ({\n value: hex,\n label: formatMessage(\n {\n id: 'Settings.review-workflows.stage.color.name',\n defaultMessage: '{name}',\n },\n { name }\n ),\n color: hex,\n }));\n\n const { themeColorName } = getStageColorByHex(value) ?? {};\n\n return (\n <Field.Root error={error} name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <SingleSelect\n disabled={disabled}\n onChange={(v) => {\n onChange(name, v.toString());\n }}\n value={value?.toUpperCase()}\n startIcon={\n <Flex\n tag=\"span\"\n height={2}\n background={value}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {colorOptions.map(({ value, label, color }) => {\n const { themeColorName } = getStageColorByHex(color) || {};\n\n return (\n <SingleSelectOption\n value={value}\n key={value}\n startIcon={\n <Flex\n tag=\"span\"\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n >\n {label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PermissionsField\n * -----------------------------------------------------------------------------------------------*/\ninterface PermissionsFieldProps\n extends Omit<Extract<InputProps, { type: 'enumeration' }>, 'type' | 'options'> {\n type: 'permissions';\n}\n\nconst PermissionsField = ({ disabled, name, placeholder, required }: PermissionsFieldProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const [isApplyAllConfirmationOpen, setIsApplyAllConfirmationOpen] = React.useState(false);\n const { value = [], error, onChange } = useField<StagePermission[]>(name);\n const allStages = useForm<WorkflowStage[]>('PermissionsField', (state) => state.values.stages);\n const onFormValueChange = useForm('PermissionsField', (state) => state.onChange);\n const rolesErrorCount = React.useRef(0);\n\n const { data: roles = [], isLoading, error: getRolesError } = useGetAdminRolesQuery();\n\n // Super admins always have permissions to do everything and therefore\n // there is no point for this role to show up in the role combobox\n const filteredRoles = roles?.filter((role) => role.code !== 'strapi-super-admin') ?? [];\n\n React.useEffect(() => {\n if (\n !isLoading &&\n getRolesError &&\n 'status' in getRolesError &&\n getRolesError.status == 403 &&\n rolesErrorCount.current === 0\n ) {\n rolesErrorCount.current = 1;\n\n toggleNotification({\n blockTransition: true,\n type: 'danger',\n message: formatMessage({\n id: 'review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles. Contact your administrator.',\n }),\n });\n }\n }, [formatMessage, isLoading, roles, toggleNotification, getRolesError]);\n\n if (!isLoading && filteredRoles.length === 0) {\n return (\n <Field.Root\n name={name}\n hint={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.noPermissions.description',\n defaultMessage: 'You don’t have the permission to see roles',\n })}\n required={required}\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n </Field.Label>\n <TextInput\n disabled\n placeholder={formatMessage({\n id: 'components.NotAllowedInput.text',\n defaultMessage: 'No permissions to see this field',\n })}\n startAction={<EyeStriked fill=\"neutral600\" />}\n type=\"text\"\n value=\"\"\n />\n <Field.Hint />\n </Field.Root>\n );\n }\n\n return (\n <>\n <Flex alignItems=\"flex-end\" gap={3}>\n <PermissionWrapper grow={1}>\n <Field.Root error={error} name={name} required>\n <Field.Label>\n {formatMessage({\n id: 'Settings.review-workflows.stage.permissions.label',\n defaultMessage: 'Roles that can change this stage',\n })}\n </Field.Label>\n <MultiSelect\n disabled={disabled}\n onChange={(values) => {\n // Because the select components expects strings for values, but\n // the yup schema validates we are sending full permission objects to the API,\n // we must coerce the string value back to an object\n const permissions = values.map((value) => ({\n role: parseInt(value, 10),\n action: 'admin::review-workflows.stage.transition',\n }));\n\n onChange(name, permissions);\n }}\n placeholder={placeholder}\n // The Select component expects strings for values\n value={value.map((permission) => `${permission.role}`)}\n withTags\n >\n <MultiSelectGroup\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.allRoles.label',\n defaultMessage: 'All roles',\n })}\n values={filteredRoles.map((r) => `${r.id}`)}\n >\n {filteredRoles.map((role) => {\n return (\n <NestedOption key={role.id} value={`${role.id}`}>\n {role.name}\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n </MultiSelect>\n <Field.Error />\n </Field.Root>\n </PermissionWrapper>\n <Dialog.Root open={isApplyAllConfirmationOpen} onOpenChange={setIsApplyAllConfirmationOpen}>\n <Dialog.Trigger>\n <IconButton\n disabled={disabled}\n label={formatMessage({\n id: 'Settings.review-workflows.stage.permissions.apply.label',\n defaultMessage: 'Apply to all stages',\n })}\n size=\"L\"\n >\n <Duplicate />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog\n onConfirm={() => {\n onFormValueChange(\n 'stages',\n allStages.map((stage) => ({\n ...stage,\n permissions: value,\n }))\n );\n\n setIsApplyAllConfirmationOpen(false);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy.success',\n defaultMessage: 'Applied roles to all other stages of the workflow',\n }),\n });\n }}\n variant=\"default\"\n >\n {formatMessage({\n id: 'Settings.review-workflows.page.edit.confirm.stages.permissions.copy',\n defaultMessage:\n 'Roles that can change that stage will be applied to all the other stages.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n </>\n );\n};\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\n// Grow the size of the permission Select\nconst PermissionWrapper = styled(Flex)`\n > * {\n flex-grow: 1;\n }\n`;\n\nexport { Stages };\nexport type { StagesProps, WorkflowStage };\n","import { InputRenderer, useField, useForm } from '@strapi/admin/strapi-admin';\nimport {\n Field,\n Grid,\n MultiSelect,\n MultiSelectGroup,\n MultiSelectOption,\n Typography,\n useCollator,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useGetContentTypesQuery } from '../../../services/content-manager';\nimport { useReviewWorkflows } from '../hooks/useReviewWorkflows';\n\nimport type { WorkflowStage } from './Stages';\n\n/* -------------------------------------------------------------------------------------------------\n * WorkflowAttributes\n * -----------------------------------------------------------------------------------------------*/\ninterface WorkflowAttributesProps {\n canUpdate?: boolean;\n}\n\nconst WorkflowAttributes = ({ canUpdate = true }: WorkflowAttributesProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Grid.Root background=\"neutral0\" hasRadius gap={4} padding={6} shadow=\"tableShadow\">\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <InputRenderer\n disabled={!canUpdate}\n label={formatMessage({\n id: 'Settings.review-workflows.workflow.name.label',\n defaultMessage: 'Workflow Name',\n })}\n name=\"name\"\n required\n type=\"string\"\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <ContentTypesSelector disabled={!canUpdate} />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <StageSelector disabled={!canUpdate} />\n </Grid.Item>\n </Grid.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ContentTypesSelector\n * -----------------------------------------------------------------------------------------------*/\ninterface ContentTypesSelectorProps {\n disabled?: boolean;\n}\n\nconst ContentTypesSelector = ({ disabled }: ContentTypesSelectorProps) => {\n const { formatMessage, locale } = useIntl();\n const { data: contentTypes, isLoading } = useGetContentTypesQuery();\n const { workflows } = useReviewWorkflows();\n const currentWorkflow = useForm('ContentTypesSelector', (state) => state.values);\n\n const { error, value, onChange } = useField('contentTypes');\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isDisabled =\n disabled ||\n isLoading ||\n !contentTypes ||\n (contentTypes.collectionType.length === 0 && contentTypes.singleType.length === 0);\n\n const collectionTypes = (contentTypes?.collectionType ?? [])\n .toSorted((a, b) => formatter.compare(a.info.displayName, b.info.displayName))\n .map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n }));\n\n const singleTypes = (contentTypes?.singleType ?? []).map((contentType) => ({\n label: contentType.info.displayName,\n value: contentType.uid,\n }));\n\n return (\n <Field.Root error={error} name={'contentTypes'}>\n <Field.Label>\n {formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.label',\n defaultMessage: 'Associated to',\n })}\n </Field.Label>\n <MultiSelect\n customizeContent={(value) =>\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.displayValue',\n defaultMessage:\n '{count} {count, plural, one {content type} other {content types}} selected',\n },\n { count: value?.length }\n )\n }\n disabled={isDisabled}\n onChange={(values) => {\n onChange('contentTypes', values);\n }}\n value={value}\n placeholder={formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.placeholder',\n defaultMessage: 'Select',\n })}\n >\n {[\n ...(collectionTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.collectionTypes.label',\n defaultMessage: 'Collection Types',\n }),\n children: collectionTypes,\n },\n ]\n : []),\n\n ...(singleTypes.length > 0\n ? [\n {\n label: formatMessage({\n id: 'Settings.review-workflows.workflow.contentTypes.singleTypes.label',\n defaultMessage: 'Single Types',\n }),\n children: singleTypes,\n },\n ]\n : []),\n ].map((opt) => {\n return (\n <MultiSelectGroup\n key={opt.label}\n label={opt.label}\n values={opt.children.map((child) => child.value.toString())}\n >\n {opt.children.map((child) => {\n const { name: assignedWorkflowName } =\n workflows?.find(\n (workflow) =>\n ((currentWorkflow && workflow.id !== currentWorkflow.id) ||\n !currentWorkflow) &&\n workflow.contentTypes.includes(child.value)\n ) ?? {};\n\n return (\n <NestedOption key={child.value} value={child.value}>\n <Typography>\n {\n // @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\n formatMessage(\n {\n id: 'Settings.review-workflows.workflow.contentTypes.assigned.notice',\n defaultMessage:\n '{label} {name, select, undefined {} other {<i>(assigned to <em>{name}</em> workflow)</i>}}',\n },\n {\n label: child.label,\n name: assignedWorkflowName,\n em: (...children) => (\n <Typography tag=\"em\" fontWeight=\"bold\">\n {children}\n </Typography>\n ),\n i: (...children) => (\n <ContentTypeTakeNotice>{children}</ContentTypeTakeNotice>\n ),\n }\n )\n }\n </Typography>\n </NestedOption>\n );\n })}\n </MultiSelectGroup>\n );\n })}\n </MultiSelect>\n </Field.Root>\n );\n};\n\nconst NestedOption = styled(MultiSelectOption)`\n padding-left: ${({ theme }) => theme.spaces[7]};\n`;\n\nconst ContentTypeTakeNotice = styled(Typography)`\n font-style: italic;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * StageSelector\n * -----------------------------------------------------------------------------------------------*/\ninterface StageSelectorProps {\n disabled?: boolean;\n}\n\nconst StageSelector = ({ disabled }: StageSelectorProps) => {\n const { value: stages = [] } = useField<WorkflowStage[]>('stages');\n const { formatMessage } = useIntl();\n\n const { error, value, onChange } = useField('stageRequiredToPublish');\n\n // stages with empty names are not valid, so we avoid them from being used to avoid errors\n const validStages = stages.filter((stage) => stage.name);\n\n return (\n <Field.Root\n error={error}\n name=\"stageRequiredToPublish\"\n hint={formatMessage({\n id: 'settings.review-workflows.workflow.stageRequiredToPublish.hint',\n defaultMessage:\n 'Prevents entries from being published if they are not at the required stage.',\n })}\n >\n <Field.Label>\n {formatMessage({\n id: 'settings.review-workflows.workflow.stageRequiredToPublish.label',\n defaultMessage: 'Required stage for publishing',\n })}\n </Field.Label>\n <SingleSelect\n disabled={disabled}\n onChange={(value) => {\n onChange('stageRequiredToPublish', value);\n }}\n value={value}\n >\n <SingleSelectOption value={''}>\n {formatMessage({\n id: 'settings.review-workflows.workflow.stageRequiredToPublish.any',\n defaultMessage: 'Any stage',\n })}\n </SingleSelectOption>\n {validStages.map((stage, i) => (\n <SingleSelectOption\n key={`requiredToPublishStage-${stage.id || stage.__temp_key__}`}\n value={stage.id?.toString() || stage.__temp_key__}\n >\n {stage.name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n );\n};\n\nexport { WorkflowAttributes };\nexport type { WorkflowAttributesProps };\n","import * as React from 'react';\n\nimport {\n ConfirmDialog,\n BackButton,\n useNotification,\n useAPIErrorHandler,\n useRBAC,\n Form,\n Page,\n FormProps,\n FormHelpers,\n} from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { Button, Dialog, Flex, Typography } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { LimitsModal } from '../../components/LimitsModal';\nimport {\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../constants';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { isBaseQueryError } from '../../utils/api';\n\nimport * as Layout from './components/Layout';\nimport { Stages, WorkflowStage } from './components/Stages';\nimport { WorkflowAttributes } from './components/WorkflowAttributes';\nimport { useReviewWorkflows } from './hooks/useReviewWorkflows';\n\nimport type { Stage, Workflow } from '../../../../shared/contracts/review-workflows';\n\n/* -------------------------------------------------------------------------------------------------\n * EditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst WORKFLOW_SCHEMA = yup.object({\n contentTypes: yup.array().of(yup.string()),\n name: yup\n .string()\n .max(255, {\n id: 'review-workflows.validation.name.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n .required()\n .nullable(),\n stages: yup\n .array()\n .of(\n yup.object().shape({\n name: yup\n .string()\n .nullable()\n .required({\n id: 'review-workflows.validation.stage.name',\n defaultMessage: 'Name is required',\n })\n .max(255, {\n id: 'review-workflows.validation.stage.max-length',\n defaultMessage: 'Name can not be longer than 255 characters',\n })\n .test(\n 'unique-name',\n {\n id: 'review-workflows.validation.stage.duplicate',\n defaultMessage: 'Stage name must be unique',\n },\n (stageName, context) => {\n // @ts-expect-error it does exist.\n const { stages } = context.from[1].value;\n\n return stages.filter((stage: Stage) => stage.name === stageName).length === 1;\n }\n ),\n color: yup\n .string()\n .nullable()\n .required({\n id: 'review-workflows.validation.stage.color',\n defaultMessage: 'Color is required',\n })\n .matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i),\n\n permissions: yup\n .array(\n yup.object({\n role: yup\n .number()\n .strict()\n .typeError({\n id: 'review-workflows.validation.stage.permissions.role.number',\n defaultMessage: 'Role must be of type number',\n })\n .required(),\n action: yup.string().required({\n id: 'review-workflows.validation.stage.permissions.action.required',\n defaultMessage: 'Action is a required argument',\n }),\n })\n )\n .strict(),\n })\n )\n .min(1),\n stageRequiredToPublish: yup.string().nullable(),\n});\n\nconst EditPage = () => {\n const { id = '' } = useParams<{ id: string }>();\n const isCreatingWorkflow = id === 'create';\n const { formatMessage } = useIntl();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const {\n isLoading: isLoadingWorkflow,\n meta,\n workflows,\n error,\n update,\n create,\n } = useReviewWorkflows();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions['settings']?.['review-workflows']\n );\n const {\n allowedActions: { canDelete, canUpdate, canCreate },\n } = useRBAC(permissions);\n\n const [savePrompts, setSavePrompts] = React.useState<{\n hasDeletedServerStages?: boolean;\n hasReassignedContentTypes?: boolean;\n }>({});\n const { getFeature, isLoading: isLicenseLoading } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState<'workflow' | 'stage' | null>(null);\n\n const currentWorkflow = workflows?.find((workflow) => workflow.id === parseInt(id, 10));\n const contentTypesFromOtherWorkflows = workflows\n ?.filter((workflow) => workflow.id !== parseInt(id, 10))\n .flatMap((workflow) => workflow.contentTypes);\n\n const limits = getFeature<string>('review-workflows');\n const numberOfWorkflows = limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME];\n const stagesPerWorkflow = limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME];\n\n interface FormValues {\n name: string;\n stages: WorkflowStage[];\n contentTypes: string[];\n stageRequiredToPublish: string | null;\n }\n\n const submitForm = async (data: FormValues, helpers: Pick<FormHelpers, 'setErrors'>) => {\n try {\n const { stageRequiredToPublish, ...rest } = data;\n const stageRequiredToPublishName =\n stageRequiredToPublish === ''\n ? null\n : rest.stages.find(\n (stage) =>\n stage.id === Number(stageRequiredToPublish) ||\n stage.__temp_key__ === stageRequiredToPublish\n )?.name;\n\n if (!isCreatingWorkflow) {\n const res = await update(id, {\n ...rest,\n // compare permissions of stages and only submit them if at least one has\n // changed; this enables partial updates e.g. for users who don't have\n // permissions to see roles\n stages: rest.stages.map((stage) => {\n let hasUpdatedPermissions = true;\n const serverStage = currentWorkflow?.stages?.find(\n (serverStage) => serverStage.id === stage?.id\n );\n if (serverStage) {\n hasUpdatedPermissions =\n serverStage.permissions?.length !== stage.permissions?.length ||\n !serverStage.permissions?.every(\n (serverPermission) =>\n !!stage.permissions?.find(\n (permission) => permission.role === serverPermission.role\n )\n );\n }\n return {\n ...stage,\n permissions: hasUpdatedPermissions ? stage.permissions : undefined,\n } satisfies Stage;\n }),\n stageRequiredToPublishName,\n });\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n }\n } else {\n const res = await create({\n ...rest,\n stageRequiredToPublishName,\n });\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n helpers.setErrors(formatValidationErrors(res.error));\n } else if ('data' in res) {\n navigate(`../${res.data.id}`, { replace: true });\n }\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n }\n setSavePrompts({});\n };\n\n const handleConfirmDeleteDialog =\n (data: FormValues, helpers: Pick<FormHelpers, 'setErrors'>) => async () => {\n await submitForm(data, helpers);\n };\n\n const handleConfirmClose = () => {\n setSavePrompts({});\n };\n\n const handleSubmit: FormProps<FormValues>['onSubmit'] = async (data, helpers) => {\n const isContentTypeReassignment = data.contentTypes.some((contentType) =>\n contentTypesFromOtherWorkflows?.includes(contentType)\n );\n const hasDeletedServerStages =\n !isCreatingWorkflow &&\n !currentWorkflow?.stages.every((stage) =>\n data.stages.some((newStage) => newStage.id === stage.id)\n );\n\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n /**\n * If the current license has a limit, check if the total count of workflows\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit, check if the total count of stages\n * exceeds that limit and display the limits modal instead of sending the\n * update, because it would throw an API error.\n */\n } else if (\n data.stages &&\n stagesPerWorkflow &&\n data.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n } else if (hasDeletedServerStages || isContentTypeReassignment) {\n if (hasDeletedServerStages) {\n setSavePrompts((prev) => ({ ...prev, hasDeletedServerStages: true }));\n }\n\n if (isContentTypeReassignment) {\n setSavePrompts((prev) => ({ ...prev, hasReassignedContentTypes: true }));\n }\n } else {\n await submitForm(data, helpers);\n }\n };\n\n /**\n * If the current license has a limit:\n * check if the total count of workflows or stages exceeds that limit and display\n * the limits modal on page load. It can be closed by the user, but the\n * API will throw an error in case they try to create a new workflow or update the\n * stages.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now). In case they are trying to create the 201st workflow/ stage\n * the API will throw an error.\n *\n */\n React.useEffect(() => {\n if (!isLoadingWorkflow && !isLicenseLoading) {\n if (meta && numberOfWorkflows && meta?.workflowCount > parseInt(numberOfWorkflows, 10)) {\n setShowLimitModal('workflow');\n } else if (\n currentWorkflow &&\n currentWorkflow.stages &&\n stagesPerWorkflow &&\n currentWorkflow.stages.length > parseInt(stagesPerWorkflow, 10)\n ) {\n setShowLimitModal('stage');\n }\n }\n }, [\n currentWorkflow,\n isLicenseLoading,\n isLoadingWorkflow,\n limits,\n meta,\n numberOfWorkflows,\n stagesPerWorkflow,\n ]);\n\n const initialValues: FormValues = React.useMemo(() => {\n if (isCreatingWorkflow || !currentWorkflow) {\n return {\n name: '',\n stages: [],\n contentTypes: [],\n stageRequiredToPublish: '',\n };\n } else {\n return {\n name: currentWorkflow.name,\n stages: addTmpKeysToStages(currentWorkflow.stages),\n contentTypes: currentWorkflow.contentTypes,\n stageRequiredToPublish: currentWorkflow.stageRequiredToPublish?.id.toString() ?? '',\n };\n }\n }, [currentWorkflow, isCreatingWorkflow]);\n\n if (isLoadingWorkflow) {\n return <Page.Loading />;\n }\n\n if (error) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Layout.DragLayerRendered />\n\n <Form\n method={isCreatingWorkflow ? 'POST' : 'PUT'}\n initialValues={initialValues}\n validationSchema={WORKFLOW_SCHEMA}\n onSubmit={handleSubmit}\n >\n {({ modified, isSubmitting, values, setErrors }) => (\n <>\n <Layout.Header\n navigationAction={<BackButton fallback=\"..\" />}\n primaryAction={\n canUpdate || canCreate ? (\n <Button\n startIcon={<Check />}\n type=\"submit\"\n disabled={!modified || isSubmitting || values.stages.length === 0}\n // if the confirm dialog is open the loading state is on\n // the confirm button already\n loading={!Boolean(Object.keys(savePrompts).length > 0) && isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n ) : null\n }\n subtitle={formatMessage(\n {\n id: 'review-workflows.page.subtitle',\n defaultMessage: '{count, plural, one {# stage} other {# stages}}',\n },\n { count: currentWorkflow?.stages?.length ?? 0 }\n )}\n title={\n currentWorkflow?.name ||\n formatMessage({\n id: 'Settings.review-workflows.create.page.title',\n defaultMessage: 'Create Review Workflow',\n })\n }\n />\n <Layout.Root>\n <Flex alignItems=\"stretch\" direction=\"column\" gap={7}>\n <WorkflowAttributes canUpdate={canUpdate || canCreate} />\n <Stages\n canDelete={canDelete}\n canUpdate={canUpdate || canCreate}\n isCreating={isCreatingWorkflow}\n />\n </Flex>\n </Layout.Root>\n <Dialog.Root\n open={Object.keys(savePrompts).length > 0}\n onOpenChange={handleConfirmClose}\n >\n <ConfirmDialog onConfirm={handleConfirmDeleteDialog(values, { setErrors })}>\n <Flex direction=\"column\" gap={5}>\n {savePrompts.hasDeletedServerStages && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'review-workflows.page.delete.confirm.stages.body',\n defaultMessage:\n 'All entries assigned to deleted stages will be moved to the previous stage.',\n })}\n </Typography>\n )}\n\n {savePrompts.hasReassignedContentTypes && (\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage(\n {\n id: 'review-workflows.page.delete.confirm.contentType.body',\n defaultMessage:\n '{count} {count, plural, one {content-type} other {content-types}} {count, plural, one {is} other {are}} already mapped to {count, plural, one {another workflow} other {other workflows}}. If you save changes, {count, plural, one {this} other {these}} {count, plural, one {content-type} other {{count} content-types}} will no more be mapped to the {count, plural, one {another workflow} other {other workflows}} and all corresponding information will be removed.',\n },\n {\n count:\n contentTypesFromOtherWorkflows?.filter((contentType) =>\n values.contentTypes.includes(contentType)\n ).length ?? 0,\n }\n )}\n </Typography>\n )}\n\n <Typography textAlign=\"center\" variant=\"omega\">\n {formatMessage({\n id: 'review-workflows.page.delete.confirm.confirm',\n defaultMessage: 'Are you sure you want to save?',\n })}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n )}\n </Form>\n\n <LimitsModal.Root\n open={showLimitModal === 'workflow'}\n onOpenChange={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.edit.page.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.edit.page.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n open={showLimitModal === 'stage'}\n onOpenChange={() => setShowLimitModal(null)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.edit.page.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.edit.page.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n};\n\nconst addTmpKeysToStages = (data: Workflow['stages']) => {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditPage = () => {\n const permissions = useTypedSelector((state) => {\n const {\n create = [],\n update = [],\n read = [],\n } = state.admin_app.permissions.settings?.['review-workflows'] ?? {};\n\n return [...create, ...update, ...read];\n });\n\n return (\n <Page.Protect permissions={permissions}>\n <EditPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedEditPage };\n"],"names":["adminApi","reviewWorkflowsApi","injectEndpoints","endpoints","builder","getAdminRoles","query","url","method","transformResponse","res","data","useGetAdminRolesQuery","useKeyboardDragAndDrop","active","index","onCancel","onDropItem","onGrabItem","onMoveItem","isSelected","setIsSelected","React","useState","handleMove","movement","handleDragClick","handleCancel","handleKeyDown","e","key","preventDefault","DIRECTIONS","UPWARD","DOWNWARD","DROP_SENSITIVITY","REGULAR","IMMEDIATE","useDragAndDrop","type","item","onStart","onEnd","dropSensitivity","objectRef","useRef","handlerId","isOver","dropRef","useDrop","accept","collect","monitor","getHandlerId","shallow","drop","draggedIndex","newIndex","hover","current","dragIndex","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","bottom","top","clientOffset","getClientOffset","hoverClientY","y","Array","isArray","minLength","Math","min","length","areEqual","isLessThan","isGreaterThan","i","getDragDirection","isDragging","didDrop","getInitialClientOffset","deltaY","direction","dragRef","dragPreviewRef","useDrag","width","end","canDrag","id","getItem","undefined","initialOffset","currentOffset","isOverDropTarget","AddStage","children","props","_jsx","StyledButton","tag","background","borderColor","paddingBottom","paddingLeft","paddingRight","paddingTop","shadow","Typography","variant","fontWeight","_jsxs","Flex","gap","PlusCircle","height","aria-hidden","styled","Box","theme","colors","neutral500","primary600","Stages","canDelete","canUpdate","isCreating","formatMessage","useIntl","trackUsage","useTracking","addFieldRow","useForm","state","value","stages","useField","position","Background","left","alignItems","map","stage","Stage","canReorder","stagesCount","defaultOpen","__temp_key__","onClick","name","defaultMessage","permissions","color","liveText","setLiveText","stageErrors","errors","error","moveFieldRow","removeFieldRow","getItemPos","handleGrabStage","handleDropStage","handleCancelDragStage","handleMoveStage","oldIndex","stageRef","DRAG_DROP_TYPES","STAGE","composedRef","useComposedRefs","useEffect","getEmptyImage","captureDraggingState","handleCloneClick","useId","ref","VisuallyHidden","aria-live","borderStyle","borderWidth","display","hasRadius","padding","AccordionRoot","onValueChange","defaultValue","$error","Object","values","Accordion","Item","Header","Trigger","Actions","_Fragment","Menu","Root","ContextMenuTrigger","size","endIcon","More","focusable","Content","popoverPlacement","zIndex","SubRoot","MenuItem","DeleteMenuItem","IconButton","data-handler-id","label","stopPropagation","onKeyDown","Drag","Grid","disabled","required","placeholder","field","col","InputRenderer","danger600","neutral200","neutral100","ColorSelector","PermissionsField","AdminInputRenderer","onChange","colorOptions","AVAILABLE_COLORS","hex","themeColorName","getStageColorByHex","Field","Label","SingleSelect","v","toString","toUpperCase","startIcon","shrink","SingleSelectOption","Error","toggleNotification","useNotification","isApplyAllConfirmationOpen","setIsApplyAllConfirmationOpen","allStages","onFormValueChange","rolesErrorCount","roles","isLoading","getRolesError","filteredRoles","filter","role","code","status","blockTransition","message","hint","TextInput","startAction","EyeStriked","fill","Hint","PermissionWrapper","grow","MultiSelect","parseInt","action","permission","withTags","MultiSelectGroup","r","NestedOption","Dialog","open","onOpenChange","Duplicate","ConfirmDialog","onConfirm","MultiSelectOption","spaces","WorkflowAttributes","ContentTypesSelector","StageSelector","locale","contentTypes","useGetContentTypesQuery","workflows","useReviewWorkflows","currentWorkflow","formatter","useCollator","sensitivity","isDisabled","collectionType","singleType","collectionTypes","toSorted","a","b","compare","info","displayName","contentType","uid","singleTypes","customizeContent","count","opt","child","assignedWorkflowName","find","workflow","includes","em","ContentTypeTakeNotice","validStages","WORKFLOW_SCHEMA","yup","object","array","of","string","max","nullable","shape","test","stageName","context","from","matches","number","strict","typeError","stageRequiredToPublish","EditPage","useParams","isCreatingWorkflow","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","navigate","useNavigate","isLoadingWorkflow","meta","update","create","useTypedSelector","admin_app","allowedActions","canCreate","useRBAC","savePrompts","setSavePrompts","getFeature","isLicenseLoading","useLicenseLimits","showLimitModal","setShowLimitModal","contentTypesFromOtherWorkflows","flatMap","limits","numberOfWorkflows","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","stagesPerWorkflow","CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME","submitForm","helpers","rest","stageRequiredToPublishName","Number","hasUpdatedPermissions","serverStage","every","serverPermission","isBaseQueryError","setErrors","replace","handleConfirmDeleteDialog","handleConfirmClose","handleSubmit","isContentTypeReassignment","some","hasDeletedServerStages","newStage","workflowCount","prev","hasReassignedContentTypes","initialValues","useMemo","addTmpKeysToStages","Page","Loading","Layout","Form","validationSchema","onSubmit","modified","isSubmitting","navigationAction","BackButton","fallback","primaryAction","Button","Check","loading","Boolean","keys","subtitle","title","textAlign","LimitsModal","Title","Body","generateNKeysBetween","datum","ProtectedEditPage","read","settings","Protect"],"mappings":"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"}
@@ -8,8 +8,8 @@ import { generateNKeysBetween } from 'fractional-indexing';
8
8
  import { useIntl } from 'react-intl';
9
9
  import { useParams, useNavigate } from 'react-router-dom';
10
10
  import * as yup from 'yup';
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-Bwgyfg-u.mjs';
12
- import { D as DRAG_DROP_TYPES, u as useReviewWorkflows, a as DragLayerRendered, H as Header, R as Root } from './Layout-CVtYAQm6.mjs';
11
+ import { r as reviewWorkflowsApi, A as AVAILABLE_COLORS, g as getStageColorByHex, a as useGetContentTypesQuery, u as useTypedSelector, C as CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME, b as CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME, L as LimitsModal, i as isBaseQueryError } from './index-2VGAYchq.mjs';
12
+ import { D as DRAG_DROP_TYPES, u as useReviewWorkflows, a as DragLayerRendered, H as Header, R as Root } from './Layout-CsShRydy.mjs';
13
13
  import { getEmptyImage } from 'react-dnd-html5-backend';
14
14
  import { styled } from 'styled-components';
15
15
  import { useDrop, useDrag } from 'react-dnd';
@@ -1417,4 +1417,4 @@ const addTmpKeysToStages = (data)=>{
1417
1417
  };
1418
1418
 
1419
1419
  export { ProtectedEditPage };
1420
- //# sourceMappingURL=id-BVE88ORy.mjs.map
1420
+ //# sourceMappingURL=id-afdVynVx.mjs.map