@strapi/review-workflows 5.49.0 → 5.50.1

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 (115) hide show
  1. package/dist/admin/index.js +1 -0
  2. package/dist/admin/index.js.map +1 -1
  3. package/dist/admin/index.mjs +1 -0
  4. package/dist/admin/index.mjs.map +1 -1
  5. package/dist/admin/routes/content-manager/model/components/AssigneeFilter.js +1 -1
  6. package/dist/admin/routes/content-manager/model/components/AssigneeFilter.js.map +1 -1
  7. package/dist/admin/routes/content-manager/model/components/AssigneeFilter.mjs +1 -1
  8. package/dist/admin/routes/content-manager/model/components/AssigneeFilter.mjs.map +1 -1
  9. package/dist/admin/routes/content-manager/model/components/StageFilter.js.map +1 -1
  10. package/dist/admin/routes/content-manager/model/components/StageFilter.mjs.map +1 -1
  11. package/dist/admin/routes/settings/components/Stages.js +4 -3
  12. package/dist/admin/routes/settings/components/Stages.js.map +1 -1
  13. package/dist/admin/routes/settings/components/Stages.mjs +4 -3
  14. package/dist/admin/routes/settings/components/Stages.mjs.map +1 -1
  15. package/dist/admin/routes/settings/components/WorkflowAttributes.js +2 -2
  16. package/dist/admin/routes/settings/components/WorkflowAttributes.js.map +1 -1
  17. package/dist/admin/routes/settings/components/WorkflowAttributes.mjs +2 -2
  18. package/dist/admin/routes/settings/components/WorkflowAttributes.mjs.map +1 -1
  19. package/dist/admin/src/components/LimitsModal.d.ts +2 -2
  20. package/dist/admin/src/routes/settings/components/Stages.d.ts +1 -1
  21. package/dist/admin/src/routes/settings/hooks/useDragAndDrop.d.ts +4 -4
  22. package/dist/admin/src/routes/settings/hooks/useKeyboardDragAndDrop.d.ts +1 -1
  23. package/dist/admin/src/routes/settings/hooks/useReviewWorkflows.d.ts +2 -2
  24. package/dist/admin/src/services/admin.d.ts +1 -1
  25. package/dist/admin/src/services/api.d.ts +1 -1
  26. package/dist/admin/src/services/content-manager.d.ts +11 -11
  27. package/dist/admin/src/services/settings.d.ts +78 -78
  28. package/dist/admin/src/utils/api.d.ts +2 -2
  29. package/dist/admin/src/utils/users.d.ts +1 -1
  30. package/dist/admin/translations/ja.json.js +41 -0
  31. package/dist/admin/translations/ja.json.js.map +1 -0
  32. package/dist/admin/translations/ja.json.mjs +39 -0
  33. package/dist/admin/translations/ja.json.mjs.map +1 -0
  34. package/dist/admin/translations/pl.json.js +34 -1
  35. package/dist/admin/translations/pl.json.js.map +1 -1
  36. package/dist/admin/translations/pl.json.mjs +34 -1
  37. package/dist/admin/translations/pl.json.mjs.map +1 -1
  38. package/dist/admin/utils/api.js.map +1 -1
  39. package/dist/admin/utils/api.mjs.map +1 -1
  40. package/dist/server/bootstrap.js +4 -4
  41. package/dist/server/bootstrap.js.map +1 -1
  42. package/dist/server/bootstrap.mjs +4 -4
  43. package/dist/server/bootstrap.mjs.map +1 -1
  44. package/dist/server/constants/workflows.js +1 -1
  45. package/dist/server/constants/workflows.js.map +1 -1
  46. package/dist/server/constants/workflows.mjs +1 -1
  47. package/dist/server/constants/workflows.mjs.map +1 -1
  48. package/dist/server/controllers/stages.js +0 -2
  49. package/dist/server/controllers/stages.js.map +1 -1
  50. package/dist/server/controllers/stages.mjs +0 -2
  51. package/dist/server/controllers/stages.mjs.map +1 -1
  52. package/dist/server/controllers/workflows.js +0 -4
  53. package/dist/server/controllers/workflows.js.map +1 -1
  54. package/dist/server/controllers/workflows.mjs +0 -4
  55. package/dist/server/controllers/workflows.mjs.map +1 -1
  56. package/dist/server/destroy.js +1 -1
  57. package/dist/server/destroy.js.map +1 -1
  58. package/dist/server/destroy.mjs +1 -1
  59. package/dist/server/destroy.mjs.map +1 -1
  60. package/dist/server/register.js +0 -2
  61. package/dist/server/register.js.map +1 -1
  62. package/dist/server/register.mjs +0 -2
  63. package/dist/server/register.mjs.map +1 -1
  64. package/dist/server/services/assignees.js.map +1 -1
  65. package/dist/server/services/assignees.mjs.map +1 -1
  66. package/dist/server/services/document-service-middleware.js +3 -3
  67. package/dist/server/services/document-service-middleware.js.map +1 -1
  68. package/dist/server/services/document-service-middleware.mjs +3 -3
  69. package/dist/server/services/document-service-middleware.mjs.map +1 -1
  70. package/dist/server/services/stages.js.map +1 -1
  71. package/dist/server/services/stages.mjs.map +1 -1
  72. package/dist/server/src/bootstrap.d.ts +4 -1
  73. package/dist/server/src/bootstrap.d.ts.map +1 -1
  74. package/dist/server/src/constants/workflows.d.ts +1 -1
  75. package/dist/server/src/controllers/index.d.ts +3 -4
  76. package/dist/server/src/controllers/index.d.ts.map +1 -1
  77. package/dist/server/src/controllers/stages.d.ts +1 -3
  78. package/dist/server/src/controllers/stages.d.ts.map +1 -1
  79. package/dist/server/src/controllers/workflows.d.ts +2 -6
  80. package/dist/server/src/controllers/workflows.d.ts.map +1 -1
  81. package/dist/server/src/destroy.d.ts +1 -4
  82. package/dist/server/src/destroy.d.ts.map +1 -1
  83. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  84. package/dist/server/src/homepage/controllers/index.d.ts +2 -1
  85. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -1
  86. package/dist/server/src/homepage/index.d.ts +1 -1
  87. package/dist/server/src/homepage/services/homepage.d.ts +1 -1
  88. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  89. package/dist/server/src/homepage/services/index.d.ts +1 -1
  90. package/dist/server/src/index.d.ts +13 -14
  91. package/dist/server/src/index.d.ts.map +1 -1
  92. package/dist/server/src/register.d.ts.map +1 -1
  93. package/dist/server/src/routes/utils.d.ts.map +1 -1
  94. package/dist/server/src/services/assignees.d.ts +2 -2
  95. package/dist/server/src/services/assignees.d.ts.map +1 -1
  96. package/dist/server/src/services/index.d.ts +8 -8
  97. package/dist/server/src/services/index.d.ts.map +1 -1
  98. package/dist/server/src/services/metrics/index.d.ts.map +1 -1
  99. package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -1
  100. package/dist/server/src/services/stage-permissions.d.ts.map +1 -1
  101. package/dist/server/src/services/stages.d.ts.map +1 -1
  102. package/dist/server/src/services/validation.d.ts.map +1 -1
  103. package/dist/server/src/services/workflow-content-types.d.ts.map +1 -1
  104. package/dist/server/src/services/workflows.d.ts.map +1 -1
  105. package/dist/server/src/utils/index.d.ts.map +1 -1
  106. package/dist/server/src/utils/review-workflows.d.ts.map +1 -1
  107. package/dist/server/src/validation/review-workflows.d.ts +10 -10
  108. package/dist/server/src/validation/review-workflows.d.ts.map +1 -1
  109. package/package.json +13 -7
  110. package/dist/server/migrations/shorten-stage-attribute.js +0 -49
  111. package/dist/server/migrations/shorten-stage-attribute.js.map +0 -1
  112. package/dist/server/migrations/shorten-stage-attribute.mjs +0 -43
  113. package/dist/server/migrations/shorten-stage-attribute.mjs.map +0 -1
  114. package/dist/server/src/migrations/shorten-stage-attribute.d.ts +0 -6
  115. package/dist/server/src/migrations/shorten-stage-attribute.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Stages.mjs","sources":["../../../../../admin/src/routes/settings/components/Stages.tsx"],"sourcesContent":["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 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\n extends Pick<IStage, 'id' | 'name' | 'fromPermissions' | 'toPermissions' | '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 fromPermissions,\n toPermissions,\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, fromPermissions, toPermissions });\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 <Menu.Item onClick={handleCloneClick}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Duplicate stage',\n })}\n </Menu.Item>\n )}\n\n {canDelete && (\n <Menu.Item\n onClick={() => removeFieldRow('stages', index)}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Delete',\n })}\n </Menu.Item>\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: 'review-workflows.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 from this stage',\n }),\n name: `stages.${index}.fromPermissions`,\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 {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'Settings.review-workflows.stage.toPermissions.label',\n defaultMessage: 'Roles that can move content to this stage',\n }),\n name: `stages.${index}.toPermissions`,\n placeholder: formatMessage({\n id: 'Settings.review-workflows.stage.toPermissions.placeholder',\n defaultMessage: 'Select a role',\n }),\n required: false,\n size: 6,\n type: 'permissions' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\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\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 = ({\n label,\n disabled,\n name,\n placeholder,\n required,\n}: 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\n // Derive the field key (e.g. \"fromPermissions\" or \"toPermissions\") from the full field name\n const fieldKey = name.split('.').pop() as keyof WorkflowStage;\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>{label}</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>{label}</Field.Label>\n\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 [fieldKey]: 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"],"names":["Stages","canDelete","canUpdate","isCreating","formatMessage","useIntl","trackUsage","useTracking","addFieldRow","useForm","state","value","stages","useField","_jsxs","Flex","direction","gap","width","Box","position","_jsx","Background","background","height","left","top","alignItems","tag","map","stage","index","Stage","length","canReorder","stagesCount","defaultOpen","id","__temp_key__","AddStage","type","onClick","name","defaultMessage","styled","fromPermissions","toPermissions","color","liveText","setLiveText","React","useState","stageErrors","errors","error","moveFieldRow","removeFieldRow","getItemPos","handleGrabStage","item","handleDropStage","handleCancelDragStage","handleMoveStage","newIndex","oldIndex","handlerId","isDragging","handleKeyDown","stageRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","onGrabItem","onDropItem","onMoveItem","onCancel","DRAG_DROP_TYPES","STAGE","composedRef","useComposedRefs","useEffect","getEmptyImage","captureDraggingState","handleCloneClick","useId","ref","shadow","VisuallyHidden","aria-live","borderStyle","borderColor","borderWidth","display","hasRadius","padding","AccordionRoot","onValueChange","defaultValue","undefined","$error","Object","values","Accordion","Item","Header","Trigger","Actions","_Fragment","Menu","Root","ContextMenuTrigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","Content","popoverPlacement","zIndex","SubRoot","variant","IconButton","data-handler-id","label","e","stopPropagation","onKeyDown","Drag","Grid","disabled","required","placeholder","field","col","xs","InputRenderer","theme","colors","danger600","neutral200","neutral100","props","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","fieldKey","split","pop","rolesErrorCount","useRef","data","roles","isLoading","getRolesError","useGetAdminRolesQuery","filteredRoles","filter","role","code","status","current","blockTransition","message","hint","TextInput","startAction","EyeStriked","fill","Hint","PermissionWrapper","grow","MultiSelect","permissions","parseInt","action","permission","withTags","MultiSelectGroup","r","NestedOption","Dialog","open","onOpenChange","Duplicate","ConfirmDialog","onConfirm","MultiSelectOption","spaces"],"mappings":";;;;;;;;;;;;;;AAwDA,MAAMA,MAAAA,GAAS,CAAC,EAAEC,SAAAA,GAAY,IAAI,EAAEC,SAAAA,GAAY,IAAI,EAAEC,UAAU,EAAe,GAAA;IAC7E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAMC,cAAcC,OAAAA,CAAQ,QAAA,EAAU,CAACC,KAAAA,GAAUA,MAAMF,WAAW,CAAA;AAClE,IAAA,MAAM,EAAEG,KAAAA,EAAOC,MAAAA,GAAS,EAAE,EAAE,GAAGC,QAAAA,CAA0B,QAAA,CAAA;AAEzD,IAAA,qBACEC,IAAA,CAACC,IAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,GAAAA,EAAK,CAAA;QAAGC,KAAAA,EAAM,MAAA;;0BACrCJ,IAAA,CAACK,GAAAA,EAAAA;gBAAIC,QAAAA,EAAS,UAAA;gBAAWF,KAAAA,EAAM,MAAA;;kCAC7BG,GAAA,CAACC,UAAAA,EAAAA;wBACCC,UAAAA,EAAW,YAAA;wBACXC,MAAAA,EAAO,MAAA;wBACPC,IAAAA,EAAK,KAAA;wBACLL,QAAAA,EAAS,UAAA;wBACTM,GAAAA,EAAI,GAAA;wBACJR,KAAAA,EAAO;;kCAGTG,GAAA,CAACN,IAAAA,EAAAA;wBAAKC,SAAAA,EAAU,QAAA;wBAASW,UAAAA,EAAW,SAAA;wBAAUV,GAAAA,EAAK,CAAA;wBAAGG,QAAAA,EAAS,UAAA;wBAAWQ,GAAAA,EAAI,IAAA;kCAC3EhB,MAAAA,CAAOiB,GAAG,CAAC,CAACC,KAAAA,EAAOC,KAAAA,GAAAA;AAClB,4BAAA,qBACEV,GAAA,CAACF,GAAAA,EAAAA;gCAA6BS,GAAAA,EAAI,IAAA;AAChC,gCAAA,QAAA,gBAAAP,GAAA,CAACW,KAAAA,EAAAA;oCACCD,KAAAA,EAAOA,KAAAA;oCACP9B,SAAAA,EAAWW,MAAAA,CAAOqB,MAAM,GAAG,CAAA,IAAKhC,SAAAA;oCAChCiC,UAAAA,EAAYtB,MAAAA,CAAOqB,MAAM,GAAG,CAAA;oCAC5B/B,SAAAA,EAAWA,SAAAA;AACXiC,oCAAAA,WAAAA,EAAavB,OAAOqB,MAAM;oCAC1BG,WAAAA,EAAa,CAACN,MAAMO,EAAE;AACrB,oCAAA,GAAGP;;AAREA,6BAAAA,EAAAA,KAAAA,CAAMQ,YAAY,CAAA;AAYhC,wBAAA,CAAA;;;;AAIHpC,YAAAA,SAAAA,kBACCmB,GAAA,CAACkB,QAAAA,EAAAA;gBACCC,IAAAA,EAAK,QAAA;gBACLC,OAAAA,EAAS,IAAA;AACPjC,oBAAAA,WAAAA,CAAY,QAAA,EAAU;wBAAEkC,IAAAA,EAAM;AAAG,qBAAA,CAAA;oBACjCpC,UAAAA,CAAW,iBAAA,CAAA;AACb,gBAAA,CAAA;0BAECF,aAAAA,CAAc;oBACbiC,EAAAA,EAAI,qCAAA;oBACJM,cAAAA,EAAgB;AAClB,iBAAA;;;;AAKV;AAEA,MAAMrB,UAAAA,GAAasB,MAAAA,CAAOzB,GAAAA,CAAI;;AAE9B,CAAC;AAcD,MAAMa,KAAAA,GAAQ,CAAC,EACbD,KAAK,EACL9B,YAAY,KAAK,EACjBiC,UAAAA,GAAa,KAAK,EAClBhC,SAAAA,GAAY,KAAK,EACjBiC,WAAW,EACXO,IAAI,EACJG,eAAe,EACfC,aAAa,EACbC,KAAK,EACLX,WAAW,EACA,GAAA;AACX,IAAA,MAAM,CAACY,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,MAAMC,QAAQ,EAAA;IAC9C,MAAM,EAAE/C,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM6C,WAAAA,GAAc3C,QAAQ,QAAA,EAAU,CAACC,QAAUA,KAAAA,CAAM2C,MAAM,CAACzC,MAAM,CAAA;IACpE,MAAM0C,KAAAA,GAAQF,WAAAA,GAAcrB,KAAAA,CAAM;AAClC,IAAA,MAAMvB,cAAcC,OAAAA,CAAQ,OAAA,EAAS,CAACC,KAAAA,GAAUA,MAAMF,WAAW,CAAA;AACjE,IAAA,MAAM+C,eAAe9C,OAAAA,CAAQ,OAAA,EAAS,CAACC,KAAAA,GAAUA,MAAM6C,YAAY,CAAA;AACnE,IAAA,MAAMC,iBAAiB/C,OAAAA,CAAQ,OAAA,EAAS,CAACC,KAAAA,GAAUA,MAAM8C,cAAc,CAAA;IAEvE,MAAMC,UAAAA,GAAa,CAAC1B,KAAAA,GAAkB,CAAA,EAAGA,QAAQ,CAAA,CAAE,IAAI,EAAEI,WAAAA,CAAAA,CAAa;AAEtE,IAAA,MAAMuB,kBAAkB,CAAC3B,KAAAA,GAAAA;AACvBkB,QAAAA,WAAAA,CACE7C,aAAAA,CACE;YACEiC,EAAAA,EAAI,eAAA;YACJM,cAAAA,EAAgB,CAAC,sIAAsI;SACzJ,EACA;YACEgB,IAAAA,EAAMjB,IAAAA;AACNtB,YAAAA,QAAAA,EAAUqC,UAAAA,CAAW1B,KAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,IAAA,CAAA;AAEA,IAAA,MAAM6B,kBAAkB,CAAC7B,KAAAA,GAAAA;AACvBkB,QAAAA,WAAAA,CACE7C,aAAAA,CACE;YACEiC,EAAAA,EAAI,eAAA;YACJM,cAAAA,EAAgB,CAAC,oDAAoD;SACvE,EACA;YACEgB,IAAAA,EAAMjB,IAAAA;AACNtB,YAAAA,QAAAA,EAAUqC,UAAAA,CAAW1B,KAAAA;AACvB,SAAA,CAAA,CAAA;AAGN,IAAA,CAAA;AAEA,IAAA,MAAM8B,qBAAAA,GAAwB,IAAA;AAC5BZ,QAAAA,WAAAA,CACE7C,aAAAA,CACE;YACEiC,EAAAA,EAAI,iBAAA;YACJM,cAAAA,EAAgB;SAClB,EACA;YACEgB,IAAAA,EAAMjB;AACR,SAAA,CAAA,CAAA;AAGN,IAAA,CAAA;IAEA,MAAMoB,eAAAA,GAAkB,CAACC,QAAAA,EAAkBC,QAAAA,GAAAA;AACzCf,QAAAA,WAAAA,CACE7C,aAAAA,CACE;YACEiC,EAAAA,EAAI,aAAA;YACJM,cAAAA,EAAgB;SAClB,EACA;YACEgB,IAAAA,EAAMjB,IAAAA;AACNtB,YAAAA,QAAAA,EAAUqC,UAAAA,CAAWM,QAAAA;AACvB,SAAA,CAAA,CAAA;AAIJR,QAAAA,YAAAA,CAAa,UAAUS,QAAAA,EAAUD,QAAAA,CAAAA;AACnC,IAAA,CAAA;AAEA,IAAA,MAAM,CAAC,EAAEE,SAAS,EAAEC,UAAU,EAAEC,aAAa,EAAE,EAAEC,UAAUC,OAAAA,EAASC,OAAAA,EAASC,cAAAA,CAAe,GAC1FC,eAAetC,UAAAA,EAAY;AACzBH,QAAAA,KAAAA;QACA4B,IAAAA,EAAM;AACJ5B,YAAAA,KAAAA;AACAW,YAAAA;AACF,SAAA;QACA+B,UAAAA,EAAYf,eAAAA;QACZgB,UAAAA,EAAYd,eAAAA;QACZe,UAAAA,EAAYb,eAAAA;QACZc,QAAAA,EAAUf,qBAAAA;AACVrB,QAAAA,IAAAA,EAAMqC,gBAAgBC;AACxB,KAAA,CAAA;;IAGF,MAAMC,WAAAA,GAAcC,gBAAgCZ,QAAAA,EAAUC,OAAAA,CAAAA;AAE9DnB,IAAAA,KAAAA,CAAM+B,SAAS,CAAC,IAAA;AACdV,QAAAA,cAAAA,CAAeW,aAAAA,EAAAA,EAAiB;YAAEC,oBAAAA,EAAsB;AAAM,SAAA,CAAA;IAChE,CAAA,EAAG;AAACZ,QAAAA,cAAAA;AAAgBxC,QAAAA;AAAM,KAAA,CAAA;AAE1B,IAAA,MAAMqD,gBAAAA,GAAmB,IAAA;AACvB5E,QAAAA,WAAAA,CAAY,QAAA,EAAU;AAAEkC,YAAAA,IAAAA;AAAMK,YAAAA,KAAAA;AAAOF,YAAAA,eAAAA;AAAiBC,YAAAA;AAAc,SAAA,CAAA;AACtE,IAAA,CAAA;IAEA,MAAMT,EAAAA,GAAKa,MAAMmC,KAAK,EAAA;AAEtB,IAAA,qBACEvE,IAAA,CAACK,GAAAA,EAAAA;QAAImE,GAAAA,EAAKP,WAAAA;QAAaQ,MAAAA,EAAO,aAAA;;AAC3BvC,YAAAA,QAAAA,kBAAY3B,GAAA,CAACmE,cAAAA,EAAAA;gBAAeC,WAAAA,EAAU,WAAA;AAAazC,gBAAAA,QAAAA,EAAAA;;AAEnDkB,YAAAA,UAAAA,iBACC7C,GAAA,CAACF,GAAAA,EAAAA;gBACCI,UAAAA,EAAW,YAAA;gBACXmE,WAAAA,EAAY,QAAA;gBACZC,WAAAA,EAAY,YAAA;gBACZC,WAAAA,EAAY,KAAA;gBACZC,OAAAA,EAAQ,OAAA;gBACRC,SAAS,EAAA,IAAA;gBACTC,OAAAA,EAAS;+BAGX1E,GAAA,CAAC2E,aAAAA,EAAAA;AACCC,gBAAAA,aAAAA,EAAe,CAACtF,KAAAA,GAAAA;AACd,oBAAA,IAAIA,KAAAA,EAAO;wBACTL,UAAAA,CAAW,eAAA,CAAA;AACb,oBAAA;AACF,gBAAA,CAAA;AACA4F,gBAAAA,YAAAA,EAAc9D,cAAcC,EAAAA,GAAK8D,SAAAA;AACjCC,gBAAAA,MAAAA,EAAQC,OAAOC,MAAM,CAAChD,SAAS,EAAC,CAAA,CAAGrB,MAAM,GAAG,CAAA;wCAE5CnB,IAAA,CAACyF,UAAUC,IAAI,EAAA;oBAAC7F,KAAAA,EAAO0B,EAAAA;;AACrB,sCAAAvB,IAAA,CAACyF,UAAUE,MAAM,EAAA;;AACf,8CAAApF,GAAA,CAACkF,UAAUG,OAAO,EAAA;AAAEhE,oCAAAA,QAAAA,EAAAA;;AACpB,8CAAArB,GAAA,CAACkF,UAAUI,OAAO,EAAA;AACf1G,oCAAAA,QAAAA,EAAAA,SAAAA,IAAaC,SAAAA,iBACZY,IAAA,CAAA8F,QAAA,EAAA;;AACE,0DAAA9F,IAAA,CAAC+F,KAAKC,IAAI,EAAA;;kEACRhG,IAAA,CAACiG,kBAAAA,EAAAA;wDAAmBC,IAAAA,EAAK,GAAA;wDAAIC,OAAAA,EAAS,IAAA;wDAAMC,WAAAA,EAAa,CAAA;wDAAGC,YAAAA,EAAc,CAAA;;0EACxE9F,GAAA,CAAC+F,IAAAA,EAAAA;gEAAKC,aAAW,EAAA,IAAA;gEAACC,SAAAA,EAAW;;0EAC7BjG,GAAA,CAACmE,cAAAA,EAAAA;gEAAe5D,GAAAA,EAAI,MAAA;0EACjBxB,aAAAA,CAAc;oEACbiC,EAAAA,EAAI,4CAAA;oEACJM,cAAAA,EAAgB;AAClB,iEAAA;;;;AAMJ,kEAAAtB,GAAA,CAACwF,KAAKU,OAAO,EAAA;wDAACC,gBAAAA,EAAiB,YAAA;wDAAaC,MAAAA,EAAQ,CAAA;gFAClD3G,IAAA,CAAC+F,KAAKa,OAAO,EAAA;;gEACVxH,SAAAA,kBACCmB,GAAA,CAACwF,KAAKL,IAAI,EAAA;oEAAC/D,OAAAA,EAAS2C,gBAAAA;8EACjBhF,aAAAA,CAAc;wEACbiC,EAAAA,EAAI,wCAAA;wEACJM,cAAAA,EAAgB;AAClB,qEAAA;;gEAIH1C,SAAAA,kBACCoB,GAAA,CAACwF,KAAKL,IAAI,EAAA;oEACR/D,OAAAA,EAAS,IAAMe,eAAe,QAAA,EAAUzB,KAAAA,CAAAA;oEACxC4F,OAAAA,EAAQ,QAAA;8EAEPvH,aAAAA,CAAc;wEACbiC,EAAAA,EAAI,wCAAA;wEACJM,cAAAA,EAAgB;AAClB,qEAAA;;;;;;;AAOTzC,4CAAAA,SAAAA,kBACCmB,GAAA,CAACuG,UAAAA,EAAAA;gDACCrG,UAAAA,EAAW,aAAA;gDACXuE,SAAS,EAAA,IAAA;gDACT6B,OAAAA,EAAQ,OAAA;gDACRE,iBAAAA,EAAiB5D,SAAAA;gDACjBqB,GAAAA,EAAKhB,OAAAA;AACLwD,gDAAAA,KAAAA,EAAO1H,aAAAA,CAAc;oDACnBiC,EAAAA,EAAI,sCAAA;oDACJM,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAF,OAAAA,EAAS,CAACsF,CAAAA,GAAMA,CAAAA,CAAEC,eAAe,EAAA;gDACjCC,SAAAA,EAAW9D,aAAAA;AAEX,gDAAA,QAAA,gBAAA9C,GAAA,CAAC6G,IAAAA,EAAAA,EAAAA;;;AAIL,qCAAA,CAAA,GAAA;;;;AAGR,sCAAA7G,GAAA,CAACkF,UAAUgB,OAAO,EAAA;oDAChBlG,GAAA,CAAC8G,KAAKrB,IAAI,EAAA;gCAAC7F,GAAAA,EAAK,CAAA;gCAAG8E,OAAAA,EAAS,CAAA;AACzB,gCAAA,QAAA,EAAA;AACC,oCAAA;AACEqC,wCAAAA,QAAAA,EAAU,CAAClI,SAAAA;AACX4H,wCAAAA,KAAAA,EAAO1H,aAAAA,CAAc;4CACnBiC,EAAAA,EAAI,4CAAA;4CACJM,cAAAA,EAAgB;AAClB,yCAAA,CAAA;AACAD,wCAAAA,IAAAA,EAAM,CAAC,OAAO,EAAEX,KAAAA,CAAM,KAAK,CAAC;wCAC5BsG,QAAAA,EAAU,IAAA;wCACVrB,IAAAA,EAAM,CAAA;wCACNxE,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE4F,wCAAAA,QAAAA,EAAU,CAAClI,SAAAA;AACX4H,wCAAAA,KAAAA,EAAO1H,aAAAA,CAAc;4CACnBiC,EAAAA,EAAI,8BAAA;4CACJM,cAAAA,EAAgB;AAClB,yCAAA,CAAA;AACAD,wCAAAA,IAAAA,EAAM,CAAC,OAAO,EAAEX,KAAAA,CAAM,MAAM,CAAC;wCAC7BsG,QAAAA,EAAU,IAAA;wCACVrB,IAAAA,EAAM,CAAA;wCACNxE,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE4F,wCAAAA,QAAAA,EAAU,CAAClI,SAAAA;AACX4H,wCAAAA,KAAAA,EAAO1H,aAAAA,CAAc;4CACnBiC,EAAAA,EAAI,mDAAA;4CACJM,cAAAA,EAAgB;AAClB,yCAAA,CAAA;AACAD,wCAAAA,IAAAA,EAAM,CAAC,OAAO,EAAEX,KAAAA,CAAM,gBAAgB,CAAC;AACvCuG,wCAAAA,WAAAA,EAAalI,aAAAA,CAAc;4CACzBiC,EAAAA,EAAI,yDAAA;4CACJM,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACA0F,QAAAA,EAAU,IAAA;wCACVrB,IAAAA,EAAM,CAAA;wCACNxE,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE4F,wCAAAA,QAAAA,EAAU,CAAClI,SAAAA;AACX4H,wCAAAA,KAAAA,EAAO1H,aAAAA,CAAc;4CACnBiC,EAAAA,EAAI,qDAAA;4CACJM,cAAAA,EAAgB;AAClB,yCAAA,CAAA;AACAD,wCAAAA,IAAAA,EAAM,CAAC,OAAO,EAAEX,KAAAA,CAAM,cAAc,CAAC;AACrCuG,wCAAAA,WAAAA,EAAalI,aAAAA,CAAc;4CACzBiC,EAAAA,EAAI,2DAAA;4CACJM,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACA0F,QAAAA,EAAU,KAAA;wCACVrB,IAAAA,EAAM,CAAA;wCACNxE,IAAAA,EAAM;AACR;iCACD,CAACX,GAAG,CAAC,CAAC,EAAEmF,IAAI,EAAE,GAAGuB,KAAAA,EAAO,iBACvBlH,GAAA,CAAC8G,IAAAA,CAAK3B,IAAI,EAAA;wCAERgC,GAAAA,EAAKxB,IAAAA;wCACLyB,EAAAA,EAAI,EAAA;wCACJzH,SAAAA,EAAU,QAAA;wCACVW,UAAAA,EAAW,SAAA;AAEX,wCAAA,QAAA,gBAAAN,GAAA,CAACqH,aAAAA,EAAAA;AAAe,4CAAA,GAAGH;;AANdA,qCAAAA,EAAAA,KAAAA,CAAM7F,IAAI,CAAA;;;;;;;;AAgBnC,CAAA;AAEA,MAAMsD,aAAAA,GAAgBpD,MAAAA,CAAO2D,SAAAA,CAAUO,IAAI,CAAuB;;AAE9D,IAAA,EAAE,CAAC,EAAE6B,KAAK,EAAEvC,MAAM,EAAE,GAAMA,MAAAA,GAASuC,KAAAA,CAAMC,MAAM,CAACC,SAAS,GAAGF,MAAMC,MAAM,CAACE,UAAU,CAAE;AACzF,CAAC;AAED;AACA;AACA,MAAM/B,kBAAAA,GAAqBnE,MAAAA,CAAOiE,IAAAA,CAAKH,OAAO,CAAC;;;sBAGzB,EAAE,CAAC,EAAEiC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACG,UAAU,CAAC;;;;;;AAM/D,CAAC;AAQD,MAAML,gBAAgB,CAACM,KAAAA,GAAAA;AACrB,IAAA,OAAQA,MAAMxG,IAAI;QAChB,KAAK,OAAA;AACH,YAAA,qBAAOnB,GAAA,CAAC4H,aAAAA,EAAAA;AAAe,gBAAA,GAAGD;;QAC5B,KAAK,aAAA;AACH,YAAA,qBAAO3H,GAAA,CAAC6H,gBAAAA,EAAAA;AAAkB,gBAAA,GAAGF;;AAC/B,QAAA;AACE,YAAA,qBAAO3H,GAAA,CAAC8H,eAAAA,EAAAA;AAAoB,gBAAA,GAAGH;;AACnC;AACF,CAAA;AAWA,MAAMC,aAAAA,GAAgB,CAAC,EAAEb,QAAQ,EAAEN,KAAK,EAAEpF,IAAI,EAAE2F,QAAQ,EAAsB,GAAA;IAC5E,MAAM,EAAEjI,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEM,KAAK,EAAE2C,KAAK,EAAE8F,QAAQ,EAAE,GAAGvI,QAAAA,CAAiB6B,IAAAA,CAAAA;IAEpD,MAAM2G,YAAAA,GAAeC,gBAAAA,CAAiBzH,GAAG,CAAC,CAAC,EAAE0H,GAAG,EAAE7G,IAAI,EAAE,IAAM;YAC5D/B,KAAAA,EAAO4I,GAAAA;AACPzB,YAAAA,KAAAA,EAAO1H,aAAAA,CACL;gBACEiC,EAAAA,EAAI,4CAAA;gBACJM,cAAAA,EAAgB;aAClB,EACA;AAAED,gBAAAA;AAAK,aAAA,CAAA;YAETK,KAAAA,EAAOwG;SACT,CAAA,CAAA;AAEA,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGC,kBAAAA,CAAmB9I,UAAU,EAAC;IAEzD,qBACEG,IAAA,CAAC4I,MAAM5C,IAAI,EAAA;QAACxD,KAAAA,EAAOA,KAAAA;QAAOZ,IAAAA,EAAMA,IAAAA;QAAM2F,QAAAA,EAAUA,QAAAA;;AAC9C,0BAAAhH,GAAA,CAACqI,MAAMC,KAAK,EAAA;AAAE7B,gBAAAA,QAAAA,EAAAA;;0BACdzG,GAAA,CAACuI,YAAAA,EAAAA;gBACCxB,QAAAA,EAAUA,QAAAA;AACVgB,gBAAAA,QAAAA,EAAU,CAACS,CAAAA,GAAAA;oBACTT,QAAAA,CAAS1G,IAAAA,EAAMmH,EAAEC,QAAQ,EAAA,CAAA;AAC3B,gBAAA,CAAA;AACAnJ,gBAAAA,KAAAA,EAAOA,KAAAA,EAAOoJ,WAAAA,EAAAA;AACdC,gBAAAA,SAAAA,gBACE3I,GAAA,CAACN,IAAAA,EAAAA;oBACCa,GAAAA,EAAI,MAAA;oBACJJ,MAAAA,EAAQ,CAAA;oBACRD,UAAAA,EAAYZ,KAAAA;oBACZgF,WAAAA,EAAa6D,cAAAA,KAAmB,aAAa,YAAA,GAAe,aAAA;oBAC5D1D,SAAS,EAAA,IAAA;oBACTmE,MAAAA,EAAQ,CAAA;oBACR/I,KAAAA,EAAO;;0BAIVmI,YAAAA,CAAaxH,GAAG,CAAC,CAAC,EAAElB,KAAK,EAAEmH,KAAK,EAAE/E,KAAK,EAAE,GAAA;AACxC,oBAAA,MAAM,EAAEyG,cAAc,EAAE,GAAGC,kBAAAA,CAAmB1G,UAAU,EAAC;AAEzD,oBAAA,qBACE1B,GAAA,CAAC6I,kBAAAA,EAAAA;wBACCvJ,KAAAA,EAAOA,KAAAA;AAEPqJ,wBAAAA,SAAAA,gBACE3I,GAAA,CAACN,IAAAA,EAAAA;4BACCa,GAAAA,EAAI,MAAA;4BACJJ,MAAAA,EAAQ,CAAA;4BACRD,UAAAA,EAAYwB,KAAAA;4BACZ4C,WAAAA,EAAa6D,cAAAA,KAAmB,aAAa,YAAA,GAAe,aAAA;4BAC5D1D,SAAS,EAAA,IAAA;4BACTmE,MAAAA,EAAQ,CAAA;4BACR/I,KAAAA,EAAO;;AAIV4G,wBAAAA,QAAAA,EAAAA;AAbInH,qBAAAA,EAAAA,KAAAA,CAAAA;AAgBX,gBAAA,CAAA;;AAEF,0BAAAU,GAAA,CAACqI,MAAMS,KAAK,EAAA,EAAA;;;AAGlB,CAAA;AAUA,MAAMjB,gBAAAA,GAAmB,CAAC,EACxBpB,KAAK,EACLM,QAAQ,EACR1F,IAAI,EACJ4F,WAAW,EACXD,QAAQ,EACc,GAAA;IACtB,MAAM,EAAEjI,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAE+J,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,CAACC,0BAAAA,EAA4BC,6BAAAA,CAA8B,GAAGrH,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACnF,MAAM,EAAExC,QAAQ,EAAE,EAAE2C,KAAK,EAAE8F,QAAQ,EAAE,GAAGvI,QAAAA,CAA4B6B,IAAAA,CAAAA;IACpE,MAAM8H,SAAAA,GAAY/J,QAAyB,kBAAA,EAAoB,CAACC,QAAUA,KAAAA,CAAM4F,MAAM,CAAC1F,MAAM,CAAA;AAC7F,IAAA,MAAM6J,oBAAoBhK,OAAAA,CAAQ,kBAAA,EAAoB,CAACC,KAAAA,GAAUA,MAAM0I,QAAQ,CAAA;;AAG/E,IAAA,MAAMsB,QAAAA,GAAWhI,IAAAA,CAAKiI,KAAK,CAAC,KAAKC,GAAG,EAAA;IACpC,MAAMC,eAAAA,GAAkB3H,KAAAA,CAAM4H,MAAM,CAAC,CAAA,CAAA;IAErC,MAAM,EAAEC,IAAAA,EAAMC,KAAAA,GAAQ,EAAE,EAAEC,SAAS,EAAE3H,KAAAA,EAAO4H,aAAa,EAAE,GAAGC,qBAAAA,EAAAA;;;IAI9D,MAAMC,aAAAA,GAAgBJ,OAAOK,MAAAA,CAAO,CAACC,OAASA,IAAAA,CAAKC,IAAI,KAAK,oBAAA,CAAA,IAAyB,EAAE;AAEvFrI,IAAAA,KAAAA,CAAM+B,SAAS,CAAC,IAAA;AACd,QAAA,IACE,CAACgG,SAAAA,IACDC,aAAAA,IACA,QAAA,IAAYA,aAAAA,IACZA,aAAAA,CAAcM,MAAM,IAAI,GAAA,IACxBX,eAAAA,CAAgBY,OAAO,KAAK,CAAA,EAC5B;AACAZ,YAAAA,eAAAA,CAAgBY,OAAO,GAAG,CAAA;YAE1BrB,kBAAAA,CAAmB;gBACjBsB,eAAAA,EAAiB,IAAA;gBACjBlJ,IAAAA,EAAM,QAAA;AACNmJ,gBAAAA,OAAAA,EAASvL,aAAAA,CAAc;oBACrBiC,EAAAA,EAAI,8DAAA;oBACJM,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACvC,QAAAA,aAAAA;AAAe6K,QAAAA,SAAAA;AAAWD,QAAAA,KAAAA;AAAOZ,QAAAA,kBAAAA;AAAoBc,QAAAA;AAAc,KAAA,CAAA;AAEvE,IAAA,IAAI,CAACD,SAAAA,IAAaG,aAAAA,CAAcnJ,MAAM,KAAK,CAAA,EAAG;QAC5C,qBACEnB,IAAA,CAAC4I,MAAM5C,IAAI,EAAA;YACTpE,IAAAA,EAAMA,IAAAA;AACNkJ,YAAAA,IAAAA,EAAMxL,aAAAA,CAAc;gBAClBiC,EAAAA,EAAI,uEAAA;gBACJM,cAAAA,EAAgB;AAClB,aAAA,CAAA;YACA0F,QAAAA,EAAUA,QAAAA;;AAEV,8BAAAhH,GAAA,CAACqI,MAAMC,KAAK,EAAA;AAAE7B,oBAAAA,QAAAA,EAAAA;;8BACdzG,GAAA,CAACwK,SAAAA,EAAAA;oBACCzD,QAAQ,EAAA,IAAA;AACRE,oBAAAA,WAAAA,EAAalI,aAAAA,CAAc;wBACzBiC,EAAAA,EAAI,iCAAA;wBACJM,cAAAA,EAAgB;AAClB,qBAAA,CAAA;AACAmJ,oBAAAA,WAAAA,gBAAazK,GAAA,CAAC0K,UAAAA,EAAAA;wBAAWC,IAAAA,EAAK;;oBAC9BxJ,IAAAA,EAAK,MAAA;oBACL7B,KAAAA,EAAM;;AAER,8BAAAU,GAAA,CAACqI,MAAMuC,IAAI,EAAA,EAAA;;;AAGjB,IAAA;IAEA,qBACE5K,GAAA,CAAAuF,QAAA,EAAA;AACE,QAAA,QAAA,gBAAA9F,IAAA,CAACC,IAAAA,EAAAA;YAAKY,UAAAA,EAAW,UAAA;YAAWV,GAAAA,EAAK,CAAA;;8BAC/BI,GAAA,CAAC6K,iBAAAA,EAAAA;oBAAkBC,IAAAA,EAAM,CAAA;4CACvBrL,IAAA,CAAC4I,MAAM5C,IAAI,EAAA;wBAACxD,KAAAA,EAAOA,KAAAA;wBAAOZ,IAAAA,EAAMA,IAAAA;wBAAM2F,QAAQ,EAAA,IAAA;;AAC5C,0CAAAhH,GAAA,CAACqI,MAAMC,KAAK,EAAA;AAAE7B,gCAAAA,QAAAA,EAAAA;;0CAEdzG,GAAA,CAAC+K,WAAAA,EAAAA;gCACChE,QAAAA,EAAUA,QAAAA;AACVgB,gCAAAA,QAAAA,EAAU,CAAC9C,MAAAA,GAAAA;;;;AAIT,oCAAA,MAAM+F,cAAc/F,MAAAA,CAAOzE,GAAG,CAAC,CAAClB,SAAW;AACzC2K,4CAAAA,IAAAA,EAAMgB,SAAS3L,KAAAA,EAAO,EAAA,CAAA;4CACtB4L,MAAAA,EAAQ;yCACV,CAAA,CAAA;AAEAnD,oCAAAA,QAAAA,CAAS1G,IAAAA,EAAM2J,WAAAA,CAAAA;AACjB,gCAAA,CAAA;gCACA/D,WAAAA,EAAaA,WAAAA;;gCAEb3H,KAAAA,EAAOA,KAAAA,CAAMkB,GAAG,CAAC,CAAC2K,aAAe,CAAA,EAAGA,UAAAA,CAAWlB,IAAI,CAAA,CAAE,CAAA;gCACrDmB,QAAQ,EAAA,IAAA;AAER,gCAAA,QAAA,gBAAApL,GAAA,CAACqL,gBAAAA,EAAAA;AACC5E,oCAAAA,KAAAA,EAAO1H,aAAAA,CAAc;wCACnBiC,EAAAA,EAAI,4DAAA;wCACJM,cAAAA,EAAgB;AAClB,qCAAA,CAAA;oCACA2D,MAAAA,EAAQ8E,aAAAA,CAAcvJ,GAAG,CAAC,CAAC8K,IAAM,CAAA,EAAGA,CAAAA,CAAEtK,EAAE,CAAA,CAAE,CAAA;8CAEzC+I,aAAAA,CAAcvJ,GAAG,CAAC,CAACyJ,IAAAA,GAAAA;AAClB,wCAAA,qBACEjK,GAAA,CAACuL,YAAAA,EAAAA;4CAA2BjM,KAAAA,EAAO,CAAA,EAAG2K,IAAAA,CAAKjJ,EAAE,CAAA,CAAE;AAC5CiJ,4CAAAA,QAAAA,EAAAA,IAAAA,CAAK5I;AADW4I,yCAAAA,EAAAA,IAAAA,CAAKjJ,EAAE,CAAA;AAI9B,oCAAA,CAAA;;;AAGJ,0CAAAhB,GAAA,CAACqI,MAAMS,KAAK,EAAA,EAAA;;;;AAGhB,8BAAArJ,IAAA,CAAC+L,OAAO/F,IAAI,EAAA;oBAACgG,IAAAA,EAAMxC,0BAAAA;oBAA4ByC,YAAAA,EAAcxC,6BAAAA;;AAC3D,sCAAAlJ,GAAA,CAACwL,OAAOnG,OAAO,EAAA;AACb,4BAAA,QAAA,gBAAArF,GAAA,CAACuG,UAAAA,EAAAA;gCACCQ,QAAAA,EAAUA,QAAAA;AACVN,gCAAAA,KAAAA,EAAO1H,aAAAA,CAAc;oCACnBiC,EAAAA,EAAI,yDAAA;oCACJM,cAAAA,EAAgB;AAClB,iCAAA,CAAA;gCACAqE,IAAAA,EAAK,GAAA;AAEL,gCAAA,QAAA,gBAAA3F,GAAA,CAAC2L,SAAAA,EAAAA,EAAAA;;;sCAGL3L,GAAA,CAAC4L,aAAAA,EAAAA;4BACCC,SAAAA,EAAW,IAAA;AACTzC,gCAAAA,iBAAAA,CACE,UACAD,SAAAA,CAAU3I,GAAG,CAAC,CAACC,SAAW;AACxB,wCAAA,GAAGA,KAAK;AACR,wCAAA,CAAC4I,WAAW/J;qCACd,CAAA,CAAA,CAAA;gCAGF4J,6BAAAA,CAA8B,KAAA,CAAA;gCAC9BH,kBAAAA,CAAmB;oCACjB5H,IAAAA,EAAM,SAAA;AACNmJ,oCAAAA,OAAAA,EAASvL,aAAAA,CAAc;wCACrBiC,EAAAA,EAAI,6EAAA;wCACJM,cAAAA,EAAgB;AAClB,qCAAA;AACF,iCAAA,CAAA;AACF,4BAAA,CAAA;4BACAgF,OAAAA,EAAQ,SAAA;sCAEPvH,aAAAA,CAAc;gCACbiC,EAAAA,EAAI,qEAAA;gCACJM,cAAAA,EACE;AACJ,6BAAA;;;;;;;AAMZ,CAAA;AAEA,MAAMiK,YAAAA,GAAehK,MAAAA,CAAOuK,iBAAAA,CAAkB;gBAC9B,EAAE,CAAC,EAAExE,KAAK,EAAE,GAAKA,KAAAA,CAAMyE,MAAM,CAAC,CAAA,CAAE,CAAC;AACjD,CAAC;AAED;AACA,MAAMlB,iBAAAA,GAAoBtJ,MAAAA,CAAO7B,IAAAA,CAAK;;;;AAItC,CAAC;;;;"}
1
+ {"version":3,"file":"Stages.mjs","sources":["../../../../../admin/src/routes/settings/components/Stages.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useField,\n useForm,\n useTracking,\n ConfirmDialog,\n useNotification,\n InputRenderer as AdminInputRenderer,\n type FormErrors,\n type 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 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\n extends Pick<IStage, 'id' | 'name' | 'fromPermissions' | 'toPermissions' | 'color'> {\n __temp_key__: string;\n}\n\ntype WorkflowFormValues = {\n stages: WorkflowStage[];\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 }: 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 fromPermissions,\n toPermissions,\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(\n 'Stages',\n (state) => (state.errors as FormErrors<WorkflowFormValues>).stages\n );\n const stageError = Array.isArray(stageErrors) ? stageErrors[index] : undefined;\n const error = typeof stageError === 'object' && stageError !== null ? stageError : undefined;\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, fromPermissions, toPermissions });\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 <Menu.Item onClick={handleCloneClick}>\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Duplicate stage',\n })}\n </Menu.Item>\n )}\n\n {canDelete && (\n <Menu.Item\n onClick={() => removeFieldRow('stages', index)}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'Settings.review-workflows.stage.delete',\n defaultMessage: 'Delete',\n })}\n </Menu.Item>\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: 'review-workflows.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 from this stage',\n }),\n name: `stages.${index}.fromPermissions`,\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 {\n disabled: !canUpdate,\n label: formatMessage({\n id: 'Settings.review-workflows.stage.toPermissions.label',\n defaultMessage: 'Roles that can move content to this stage',\n }),\n name: `stages.${index}.toPermissions`,\n placeholder: formatMessage({\n id: 'Settings.review-workflows.stage.toPermissions.placeholder',\n defaultMessage: 'Select a role',\n }),\n required: false,\n size: 6,\n type: 'permissions' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n col={size}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\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\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 = ({\n label,\n disabled,\n name,\n placeholder,\n required,\n}: 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(\n 'PermissionsField',\n (state) => (state.values as Partial<WorkflowFormValues>).stages ?? []\n );\n const onFormValueChange = useForm('PermissionsField', (state) => state.onChange);\n\n // Derive the field key (e.g. \"fromPermissions\" or \"toPermissions\") from the full field name\n const fieldKey = name.split('.').pop() as keyof WorkflowStage;\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>{label}</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>{label}</Field.Label>\n\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 [fieldKey]: 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"],"names":["Stages","canDelete","canUpdate","formatMessage","useIntl","trackUsage","useTracking","addFieldRow","useForm","state","value","stages","useField","_jsxs","Flex","direction","gap","width","Box","position","_jsx","Background","background","height","left","top","alignItems","tag","map","stage","index","Stage","length","canReorder","stagesCount","defaultOpen","id","__temp_key__","AddStage","type","onClick","name","defaultMessage","styled","fromPermissions","toPermissions","color","liveText","setLiveText","React","useState","stageErrors","errors","stageError","Array","isArray","undefined","error","moveFieldRow","removeFieldRow","getItemPos","handleGrabStage","item","handleDropStage","handleCancelDragStage","handleMoveStage","newIndex","oldIndex","handlerId","isDragging","handleKeyDown","stageRef","dropRef","dragRef","dragPreviewRef","useDragAndDrop","onGrabItem","onDropItem","onMoveItem","onCancel","DRAG_DROP_TYPES","STAGE","composedRef","useComposedRefs","useEffect","getEmptyImage","captureDraggingState","handleCloneClick","useId","ref","shadow","VisuallyHidden","aria-live","borderStyle","borderColor","borderWidth","display","hasRadius","padding","AccordionRoot","onValueChange","defaultValue","$error","Object","values","Accordion","Item","Header","Trigger","Actions","_Fragment","Menu","Root","ContextMenuTrigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","Content","popoverPlacement","zIndex","SubRoot","variant","IconButton","data-handler-id","label","e","stopPropagation","onKeyDown","Drag","Grid","disabled","required","placeholder","field","col","xs","InputRenderer","theme","colors","danger600","neutral200","neutral100","props","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","fieldKey","split","pop","rolesErrorCount","useRef","data","roles","isLoading","getRolesError","useGetAdminRolesQuery","filteredRoles","filter","role","code","status","current","blockTransition","message","hint","TextInput","startAction","EyeStriked","fill","Hint","PermissionWrapper","grow","MultiSelect","permissions","parseInt","action","permission","withTags","MultiSelectGroup","r","NestedOption","Dialog","open","onOpenChange","Duplicate","ConfirmDialog","onConfirm","MultiSelectOption","spaces"],"mappings":"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"}
@@ -59,7 +59,7 @@ const ContentTypesSelector = ({ disabled })=>{
59
59
  const { data: contentTypes, isLoading } = contentManager.useGetContentTypesQuery();
60
60
  const { workflows } = useReviewWorkflows.useReviewWorkflows();
61
61
  const currentWorkflow = strapiAdmin.useForm('ContentTypesSelector', (state)=>state.values);
62
- const { error, value, onChange } = strapiAdmin.useField('contentTypes');
62
+ const { error, value = [], onChange } = strapiAdmin.useField('contentTypes');
63
63
  const formatter = designSystem.useCollator(locale, {
64
64
  sensitivity: 'base'
65
65
  });
@@ -191,7 +191,7 @@ const StageSelector = ({ disabled })=>{
191
191
  defaultMessage: 'Any stage'
192
192
  })
193
193
  }),
194
- validStages.map((stage, i)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
194
+ validStages.map((stage)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
195
195
  value: stage.id?.toString() || stage.__temp_key__,
196
196
  children: stage.name
197
197
  }, `requiredToPublishStage-${stage.id || stage.__temp_key__}`))
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowAttributes.js","sources":["../../../../../admin/src/routes/settings/components/WorkflowAttributes.tsx"],"sourcesContent":["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} xs={12} 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=\"text\"\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <ContentTypesSelector disabled={!canUpdate} />\n </Grid.Item>\n <Grid.Item col={6} xs={12} 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"],"names":["WorkflowAttributes","canUpdate","formatMessage","useIntl","_jsxs","Grid","Root","background","hasRadius","gap","padding","shadow","_jsx","Item","col","xs","direction","alignItems","InputRenderer","disabled","label","id","defaultMessage","name","required","type","ContentTypesSelector","StageSelector","locale","data","contentTypes","isLoading","useGetContentTypesQuery","workflows","useReviewWorkflows","currentWorkflow","useForm","state","values","error","value","onChange","useField","formatter","useCollator","sensitivity","isDisabled","collectionType","length","singleType","collectionTypes","toSorted","a","b","compare","info","displayName","map","contentType","uid","singleTypes","Field","Label","MultiSelect","customizeContent","count","placeholder","children","opt","MultiSelectGroup","child","toString","assignedWorkflowName","find","workflow","includes","NestedOption","Typography","em","tag","fontWeight","i","ContentTypeTakeNotice","styled","MultiSelectOption","theme","spaces","stages","validStages","filter","stage","hint","SingleSelect","SingleSelectOption","__temp_key__","Hint"],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowAttributes.js","sources":["../../../../../admin/src/routes/settings/components/WorkflowAttributes.tsx"],"sourcesContent":["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';\nimport type { Workflow } from '../../../../../shared/contracts/review-workflows';\n\ntype WorkflowFormValues = {\n id?: Workflow['id'];\n contentTypes: string[];\n stages: WorkflowStage[];\n stageRequiredToPublish: string | null;\n};\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} xs={12} 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=\"text\"\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <ContentTypesSelector disabled={!canUpdate} />\n </Grid.Item>\n <Grid.Item col={6} xs={12} 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(\n 'ContentTypesSelector',\n (state) => state.values as Partial<WorkflowFormValues>\n );\n\n const { error, value = [], onChange } = useField<string[]>('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<string | number | null>('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) => (\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"],"names":["WorkflowAttributes","canUpdate","formatMessage","useIntl","_jsxs","Grid","Root","background","hasRadius","gap","padding","shadow","_jsx","Item","col","xs","direction","alignItems","InputRenderer","disabled","label","id","defaultMessage","name","required","type","ContentTypesSelector","StageSelector","locale","data","contentTypes","isLoading","useGetContentTypesQuery","workflows","useReviewWorkflows","currentWorkflow","useForm","state","values","error","value","onChange","useField","formatter","useCollator","sensitivity","isDisabled","collectionType","length","singleType","collectionTypes","toSorted","a","b","compare","info","displayName","map","contentType","uid","singleTypes","Field","Label","MultiSelect","customizeContent","count","placeholder","children","opt","MultiSelectGroup","child","toString","assignedWorkflowName","find","workflow","includes","NestedOption","Typography","em","tag","fontWeight","i","ContentTypeTakeNotice","styled","MultiSelectOption","theme","spaces","stages","validStages","filter","stage","hint","SingleSelect","SingleSelectOption","__temp_key__","Hint"],"mappings":"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"}
@@ -57,7 +57,7 @@ const ContentTypesSelector = ({ disabled })=>{
57
57
  const { data: contentTypes, isLoading } = useGetContentTypesQuery();
58
58
  const { workflows } = useReviewWorkflows();
59
59
  const currentWorkflow = useForm('ContentTypesSelector', (state)=>state.values);
60
- const { error, value, onChange } = useField('contentTypes');
60
+ const { error, value = [], onChange } = useField('contentTypes');
61
61
  const formatter = useCollator(locale, {
62
62
  sensitivity: 'base'
63
63
  });
@@ -189,7 +189,7 @@ const StageSelector = ({ disabled })=>{
189
189
  defaultMessage: 'Any stage'
190
190
  })
191
191
  }),
192
- validStages.map((stage, i)=>/*#__PURE__*/ jsx(SingleSelectOption, {
192
+ validStages.map((stage)=>/*#__PURE__*/ jsx(SingleSelectOption, {
193
193
  value: stage.id?.toString() || stage.__temp_key__,
194
194
  children: stage.name
195
195
  }, `requiredToPublishStage-${stage.id || stage.__temp_key__}`))
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowAttributes.mjs","sources":["../../../../../admin/src/routes/settings/components/WorkflowAttributes.tsx"],"sourcesContent":["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} xs={12} 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=\"text\"\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <ContentTypesSelector disabled={!canUpdate} />\n </Grid.Item>\n <Grid.Item col={6} xs={12} 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"],"names":["WorkflowAttributes","canUpdate","formatMessage","useIntl","_jsxs","Grid","Root","background","hasRadius","gap","padding","shadow","_jsx","Item","col","xs","direction","alignItems","InputRenderer","disabled","label","id","defaultMessage","name","required","type","ContentTypesSelector","StageSelector","locale","data","contentTypes","isLoading","useGetContentTypesQuery","workflows","useReviewWorkflows","currentWorkflow","useForm","state","values","error","value","onChange","useField","formatter","useCollator","sensitivity","isDisabled","collectionType","length","singleType","collectionTypes","toSorted","a","b","compare","info","displayName","map","contentType","uid","singleTypes","Field","Label","MultiSelect","customizeContent","count","placeholder","children","opt","MultiSelectGroup","child","toString","assignedWorkflowName","find","workflow","includes","NestedOption","Typography","em","tag","fontWeight","i","ContentTypeTakeNotice","styled","MultiSelectOption","theme","spaces","stages","validStages","filter","stage","hint","SingleSelect","SingleSelectOption","__temp_key__","Hint"],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowAttributes.mjs","sources":["../../../../../admin/src/routes/settings/components/WorkflowAttributes.tsx"],"sourcesContent":["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';\nimport type { Workflow } from '../../../../../shared/contracts/review-workflows';\n\ntype WorkflowFormValues = {\n id?: Workflow['id'];\n contentTypes: string[];\n stages: WorkflowStage[];\n stageRequiredToPublish: string | null;\n};\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} xs={12} 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=\"text\"\n />\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <ContentTypesSelector disabled={!canUpdate} />\n </Grid.Item>\n <Grid.Item col={6} xs={12} 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(\n 'ContentTypesSelector',\n (state) => state.values as Partial<WorkflowFormValues>\n );\n\n const { error, value = [], onChange } = useField<string[]>('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<string | number | null>('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) => (\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"],"names":["WorkflowAttributes","canUpdate","formatMessage","useIntl","_jsxs","Grid","Root","background","hasRadius","gap","padding","shadow","_jsx","Item","col","xs","direction","alignItems","InputRenderer","disabled","label","id","defaultMessage","name","required","type","ContentTypesSelector","StageSelector","locale","data","contentTypes","isLoading","useGetContentTypesQuery","workflows","useReviewWorkflows","currentWorkflow","useForm","state","values","error","value","onChange","useField","formatter","useCollator","sensitivity","isDisabled","collectionType","length","singleType","collectionTypes","toSorted","a","b","compare","info","displayName","map","contentType","uid","singleTypes","Field","Label","MultiSelect","customizeContent","count","placeholder","children","opt","MultiSelectGroup","child","toString","assignedWorkflowName","find","workflow","includes","NestedOption","Typography","em","tag","fontWeight","i","ContentTypeTakeNotice","styled","MultiSelectOption","theme","spaces","stages","validStages","filter","stage","hint","SingleSelect","SingleSelectOption","__temp_key__","Hint"],"mappings":";;;;;;;;AAmCA,MAAMA,kBAAAA,GAAqB,CAAC,EAAEC,SAAAA,GAAY,IAAI,EAA2B,GAAA;IACvE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAACC,KAAKC,IAAI,EAAA;QAACC,UAAAA,EAAW,UAAA;QAAWC,SAAS,EAAA,IAAA;QAACC,GAAAA,EAAK,CAAA;QAAGC,OAAAA,EAAS,CAAA;QAAGC,MAAAA,EAAO,aAAA;;AACpE,0BAAAC,GAAA,CAACP,KAAKQ,IAAI,EAAA;gBAACC,GAAAA,EAAK,CAAA;gBAAGC,EAAAA,EAAI,EAAA;gBAAIC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,SAAA;AACvD,gBAAA,QAAA,gBAAAL,GAAA,CAACM,aAAAA,EAAAA;AACCC,oBAAAA,QAAAA,EAAU,CAAClB,SAAAA;AACXmB,oBAAAA,KAAAA,EAAOlB,aAAAA,CAAc;wBACnBmB,EAAAA,EAAI,+CAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;oBACAC,IAAAA,EAAK,MAAA;oBACLC,QAAQ,EAAA,IAAA;oBACRC,IAAAA,EAAK;;;AAGT,0BAAAb,GAAA,CAACP,KAAKQ,IAAI,EAAA;gBAACC,GAAAA,EAAK,CAAA;gBAAGC,EAAAA,EAAI,EAAA;gBAAIC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,SAAA;AACvD,gBAAA,QAAA,gBAAAL,GAAA,CAACc,oBAAAA,EAAAA;AAAqBP,oBAAAA,QAAAA,EAAU,CAAClB;;;AAEnC,0BAAAW,GAAA,CAACP,KAAKQ,IAAI,EAAA;gBAACC,GAAAA,EAAK,CAAA;gBAAGC,EAAAA,EAAI,EAAA;gBAAIC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,SAAA;AACvD,gBAAA,QAAA,gBAAAL,GAAA,CAACe,aAAAA,EAAAA;AAAcR,oBAAAA,QAAAA,EAAU,CAAClB;;;;;AAIlC;AASA,MAAMyB,oBAAAA,GAAuB,CAAC,EAAEP,QAAQ,EAA6B,GAAA;AACnE,IAAA,MAAM,EAAEjB,aAAa,EAAE0B,MAAM,EAAE,GAAGzB,OAAAA,EAAAA;AAClC,IAAA,MAAM,EAAE0B,IAAAA,EAAMC,YAAY,EAAEC,SAAS,EAAE,GAAGC,uBAAAA,EAAAA;IAC1C,MAAM,EAAEC,SAAS,EAAE,GAAGC,kBAAAA,EAAAA;AACtB,IAAA,MAAMC,kBAAkBC,OAAAA,CACtB,sBAAA,EACA,CAACC,KAAAA,GAAUA,MAAMC,MAAM,CAAA;IAGzB,MAAM,EAAEC,KAAK,EAAEC,KAAAA,GAAQ,EAAE,EAAEC,QAAQ,EAAE,GAAGC,QAAAA,CAAmB,cAAA,CAAA;IAE3D,MAAMC,SAAAA,GAAYC,YAAYhB,MAAAA,EAAQ;QACpCiB,WAAAA,EAAa;AACf,KAAA,CAAA;AAEA,IAAA,MAAMC,UAAAA,GACJ3B,QAAAA,IACAY,SAAAA,IACA,CAACD,gBACAA,YAAAA,CAAaiB,cAAc,CAACC,MAAM,KAAK,CAAA,IAAKlB,YAAAA,CAAamB,UAAU,CAACD,MAAM,KAAK,CAAA;AAElF,IAAA,MAAME,eAAAA,GAAmBpB,CAAAA,YAAAA,EAAciB,cAAAA,IAAkB,EAAE,EACxDI,QAAQ,CAAC,CAACC,CAAAA,EAAGC,IAAMV,SAAAA,CAAUW,OAAO,CAACF,CAAAA,CAAEG,IAAI,CAACC,WAAW,EAAEH,CAAAA,CAAEE,IAAI,CAACC,WAAW,CAAA,CAAA,CAC3EC,GAAG,CAAC,CAACC,eAAiB;YACrBtC,KAAAA,EAAOsC,WAAAA,CAAYH,IAAI,CAACC,WAAW;AACnChB,YAAAA,KAAAA,EAAOkB,YAAYC;SACrB,CAAA,CAAA;AAEF,IAAA,MAAMC,WAAAA,GAAe9B,CAAAA,YAAAA,EAAcmB,UAAAA,IAAc,EAAE,EAAEQ,GAAG,CAAC,CAACC,WAAAA,IAAiB;YACzEtC,KAAAA,EAAOsC,WAAAA,CAAYH,IAAI,CAACC,WAAW;AACnChB,YAAAA,KAAAA,EAAOkB,YAAYC;SACrB,CAAA,CAAA;IAEA,qBACEvD,IAAA,CAACyD,MAAMvD,IAAI,EAAA;QAACiC,KAAAA,EAAOA,KAAAA;QAAOhB,IAAAA,EAAM,cAAA;;AAC9B,0BAAAX,GAAA,CAACiD,MAAMC,KAAK,EAAA;0BACT5D,aAAAA,CAAc;oBACbmB,EAAAA,EAAI,uDAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;0BAEFV,GAAA,CAACmD,WAAAA,EAAAA;gBACCC,gBAAAA,EAAkB,CAACxB,QACjBtC,aAAAA,CACE;wBACEmB,EAAAA,EAAI,8DAAA;wBACJC,cAAAA,EACE;qBACJ,EACA;AAAE2C,wBAAAA,KAAAA,EAAOzB,KAAAA,EAAOQ;AAAO,qBAAA,CAAA;gBAG3B7B,QAAAA,EAAU2B,UAAAA;AACVL,gBAAAA,QAAAA,EAAU,CAACH,MAAAA,GAAAA;AACTG,oBAAAA,QAAAA,CAAS,cAAA,EAAgBH,MAAAA,CAAAA;AAC3B,gBAAA,CAAA;gBACAE,KAAAA,EAAOA,KAAAA;AACP0B,gBAAAA,WAAAA,EAAahE,aAAAA,CAAc;oBACzBmB,EAAAA,EAAI,6DAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AAEC,gBAAA,QAAA,EAAA;uBACK4B,eAAAA,CAAgBF,MAAM,GAAG,CAAA,GACzB;AACE,wBAAA;AACE5B,4BAAAA,KAAAA,EAAOlB,aAAAA,CAAc;gCACnBmB,EAAAA,EAAI,uEAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA,CAAA;4BACA6C,QAAAA,EAAUjB;AACZ;AACD,qBAAA,GACD,EAAE;uBAEFU,WAAAA,CAAYZ,MAAM,GAAG,CAAA,GACrB;AACE,wBAAA;AACE5B,4BAAAA,KAAAA,EAAOlB,aAAAA,CAAc;gCACnBmB,EAAAA,EAAI,mEAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA,CAAA;4BACA6C,QAAAA,EAAUP;AACZ;AACD,qBAAA,GACD;iBACL,CAACH,GAAG,CAAC,CAACW,GAAAA,GAAAA;AACL,oBAAA,qBACExD,GAAA,CAACyD,gBAAAA,EAAAA;AAECjD,wBAAAA,KAAAA,EAAOgD,IAAIhD,KAAK;wBAChBkB,MAAAA,EAAQ8B,GAAAA,CAAID,QAAQ,CAACV,GAAG,CAAC,CAACa,KAAAA,GAAUA,KAAAA,CAAM9B,KAAK,CAAC+B,QAAQ,EAAA,CAAA;AAEvDH,wBAAAA,QAAAA,EAAAA,GAAAA,CAAID,QAAQ,CAACV,GAAG,CAAC,CAACa,KAAAA,GAAAA;AACjB,4BAAA,MAAM,EAAE/C,IAAAA,EAAMiD,oBAAoB,EAAE,GAClCvC,SAAAA,EAAWwC,IAAAA,CACT,CAACC,QAAAA,GACE,CAACvC,mBAAmBuC,QAAAA,CAASrD,EAAE,KAAKc,eAAAA,CAAgBd,EAAE,IACrD,CAACc,eAAc,KACjBuC,QAAAA,CAAS5C,YAAY,CAAC6C,QAAQ,CAACL,KAAAA,CAAM9B,KAAK,MACzC,EAAC;AAER,4BAAA,qBACE5B,GAAA,CAACgE,YAAAA,EAAAA;AAA+BpC,gCAAAA,KAAAA,EAAO8B,MAAM9B,KAAK;AAChD,gCAAA,QAAA,gBAAA5B,GAAA,CAACiE,UAAAA,EAAAA;AAGG3E,oCAAAA,QAAAA;oCAAAA,aAAAA,CACE;wCACEmB,EAAAA,EAAI,iEAAA;wCACJC,cAAAA,EACE;qCACJ,EACA;AACEF,wCAAAA,KAAAA,EAAOkD,MAAMlD,KAAK;wCAClBG,IAAAA,EAAMiD,oBAAAA;wCACNM,EAAAA,EAAI,CAAC,GAAGX,QAAAA,iBACNvD,GAAA,CAACiE,UAAAA,EAAAA;gDAAWE,GAAAA,EAAI,IAAA;gDAAKC,UAAAA,EAAW,MAAA;AAC7Bb,gDAAAA,QAAAA,EAAAA;;wCAGLc,CAAAA,EAAG,CAAC,GAAGd,QAAAA,iBACLvD,GAAA,CAACsE,qBAAAA,EAAAA;AAAuBf,gDAAAA,QAAAA,EAAAA;;AAE5B,qCAAA;;AArBWG,6BAAAA,EAAAA,KAAAA,CAAM9B,KAAK,CAAA;AA2BlC,wBAAA,CAAA;AAzCK4B,qBAAAA,EAAAA,GAAAA,CAAIhD,KAAK,CAAA;AA4CpB,gBAAA,CAAA;;;;AAIR,CAAA;AAEA,MAAMwD,YAAAA,GAAeO,MAAAA,CAAOC,iBAAAA,CAAkB;gBAC9B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;AACjD,CAAC;AAED,MAAMJ,qBAAAA,GAAwBC,MAAAA,CAAON,UAAAA,CAAW;;AAEhD,CAAC;AASD,MAAMlD,aAAAA,GAAgB,CAAC,EAAER,QAAQ,EAAsB,GAAA;AACrD,IAAA,MAAM,EAAEqB,KAAAA,EAAO+C,MAAAA,GAAS,EAAE,EAAE,GAAG7C,QAAAA,CAA0B,QAAA,CAAA;IACzD,MAAM,EAAExC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAM,EAAEoC,KAAK,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAAGC,QAAAA,CAAiC,wBAAA,CAAA;;AAGpE,IAAA,MAAM8C,cAAcD,MAAAA,CAAOE,MAAM,CAAC,CAACC,KAAAA,GAAUA,MAAMnE,IAAI,CAAA;IAEvD,qBACEnB,IAAA,CAACyD,MAAMvD,IAAI,EAAA;QACTiC,KAAAA,EAAOA,KAAAA;QACPhB,IAAAA,EAAK,wBAAA;AACLoE,QAAAA,IAAAA,EAAMzF,aAAAA,CAAc;YAClBmB,EAAAA,EAAI,gEAAA;YACJC,cAAAA,EACE;AACJ,SAAA,CAAA;;AAEA,0BAAAV,GAAA,CAACiD,MAAMC,KAAK,EAAA;0BACT5D,aAAAA,CAAc;oBACbmB,EAAAA,EAAI,iEAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;0BAEFlB,IAAA,CAACwF,YAAAA,EAAAA;gBACCzE,QAAAA,EAAUA,QAAAA;AACVsB,gBAAAA,QAAAA,EAAU,CAACD,KAAAA,GAAAA;AACTC,oBAAAA,QAAAA,CAAS,wBAAA,EAA0BD,KAAAA,CAAAA;AACrC,gBAAA,CAAA;gBACAA,KAAAA,EAAOA,KAAAA;;kCAEP5B,GAAA,CAACiF,kBAAAA,EAAAA;wBAAmBrD,KAAAA,EAAO,EAAA;kCACxBtC,aAAAA,CAAc;4BACbmB,EAAAA,EAAI,+DAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;AAEDkE,oBAAAA,WAAAA,CAAY/B,GAAG,CAAC,CAACiC,KAAAA,iBAChB9E,GAAA,CAACiF,kBAAAA,EAAAA;AAECrD,4BAAAA,KAAAA,EAAOkD,KAAAA,CAAMrE,EAAE,EAAEkD,QAAAA,EAAAA,IAAcmB,MAAMI,YAAY;AAEhDJ,4BAAAA,QAAAA,EAAAA,KAAAA,CAAMnE;AAHF,yBAAA,EAAA,CAAC,uBAAuB,EAAEmE,KAAAA,CAAMrE,EAAE,IAAIqE,KAAAA,CAAMI,YAAY,CAAA,CAAE,CAAA;;;AAOrE,0BAAAlF,GAAA,CAACiD,MAAMkC,IAAI,EAAA,EAAA;;;AAGjB,CAAA;;;;"}
@@ -3,10 +3,10 @@ import { Modal } from '@strapi/design-system';
3
3
  export type LimitsModalProps = Pick<Modal.Props, 'open' | 'onOpenChange'>;
4
4
  declare const LimitsModal: {
5
5
  Title: React.FC<{
6
- children?: React.ReactNode;
6
+ children?: React.ReactNode | undefined;
7
7
  }>;
8
8
  Body: React.FC<{
9
- children?: React.ReactNode;
9
+ children?: React.ReactNode | undefined;
10
10
  }>;
11
11
  Root: React.FC<React.PropsWithChildren<LimitsModalProps>>;
12
12
  };
@@ -7,6 +7,6 @@ interface StagesProps {
7
7
  canUpdate?: boolean;
8
8
  isCreating?: boolean;
9
9
  }
10
- declare const Stages: ({ canDelete, canUpdate, isCreating }: StagesProps) => import("react/jsx-runtime").JSX.Element;
10
+ declare const Stages: ({ canDelete, canUpdate }: StagesProps) => import("react/jsx-runtime").JSX.Element;
11
11
  export { Stages };
12
12
  export type { StagesProps, WorkflowStage };
@@ -40,12 +40,12 @@ type UseDragAndDropReturn<E extends Element = HTMLElement> = [
40
40
  * A utility hook abstracting the general drag and drop hooks from react-dnd.
41
41
  * Centralising the same behaviours and by default offering keyboard support.
42
42
  */
43
- declare const useDragAndDrop: <TIndex extends number | number[], TItem extends {
44
- [key: string]: unknown;
43
+ declare const useDragAndDrop: <TIndex extends number | Array<number>, TItem extends {
45
44
  index: TIndex;
46
- id?: Data.ID | undefined;
47
- } = {
45
+ id?: Data.ID;
48
46
  [key: string]: unknown;
47
+ } = {
49
48
  index: TIndex;
49
+ [key: string]: unknown;
50
50
  }, E extends Element = HTMLElement>(active: boolean, { type, index, item, onStart, onEnd, onGrabItem, onDropItem, onCancel, onMoveItem, dropSensitivity, }: UseDragAndDropOptions<TIndex, TItem>) => UseDragAndDropReturn<E>;
51
51
  export { useDragAndDrop, UseDragAndDropReturn, UseDragAndDropOptions, DIRECTIONS, DROP_SENSITIVITY, };
@@ -11,4 +11,4 @@ export type UseKeyboardDragAndDropCallbacks<TIndex extends number | Array<number
11
11
  *
12
12
  * @internal - You should use `useDragAndDrop` instead.
13
13
  */
14
- export declare const useKeyboardDragAndDrop: <TIndex extends number | number[] = number>(active: boolean, index: TIndex, { onCancel, onDropItem, onGrabItem, onMoveItem }: UseKeyboardDragAndDropCallbacks<TIndex>) => <E extends Element>(e: React.KeyboardEvent<E>) => void;
14
+ export declare const useKeyboardDragAndDrop: <TIndex extends number | Array<number> = number>(active: boolean, index: TIndex, { onCancel, onDropItem, onGrabItem, onMoveItem }: UseKeyboardDragAndDropCallbacks<TIndex>) => <E extends Element>(e: React.KeyboardEvent<E>) => void;
@@ -10,13 +10,13 @@ declare const useReviewWorkflows: (params?: UseReviewWorkflowsArgs) => {
10
10
  workflows: import("../../../../../shared/contracts/review-workflows").Workflow[];
11
11
  isLoading: boolean;
12
12
  error: import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError | undefined;
13
- create: (data: Create.Request['body']['data']) => Promise<{
13
+ create: (data: Create.Request["body"]["data"]) => Promise<{
14
14
  data: import("../../../../../shared/contracts/review-workflows").Workflow;
15
15
  } | {
16
16
  error: import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError;
17
17
  }>;
18
18
  delete: (id: string) => Promise<import("../../../../../shared/contracts/review-workflows").Workflow | undefined>;
19
- update: (id: string, data: Update.Request['body']['data']) => Promise<{
19
+ update: (id: string, data: Update.Request["body"]["data"]) => Promise<{
20
20
  data: import("../../../../../shared/contracts/review-workflows").Workflow;
21
21
  } | {
22
22
  error: import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError;
@@ -1,5 +1,5 @@
1
1
  import { SanitizedAdminUser } from '@strapi/admin/strapi-admin';
2
2
  type Roles = SanitizedAdminUser['roles'];
3
- declare const useGetAdminRolesQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings", import("@strapi/admin/strapi-admin").SanitizedAdminRole[], "adminApi">>;
3
+ declare const useGetAdminRolesQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings", import("@strapi/admin/strapi-admin").SanitizedAdminRole[], "adminApi">>;
4
4
  export { useGetAdminRolesQuery };
5
5
  export type { SanitizedAdminUser, Roles };
@@ -1,2 +1,2 @@
1
- declare const reviewWorkflowsApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, import("@reduxjs/toolkit/dist/query/endpointDefinitions").UpdateDefinitions<{}, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings", never>, "adminApi", "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/dist/query/react").reactHooksModuleName>;
1
+ declare const reviewWorkflowsApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, import("@reduxjs/toolkit/dist/query/endpointDefinitions").UpdateDefinitions<{}, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings", never>, "adminApi", "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/dist/query/react").reactHooksModuleName>;
2
2
  export { reviewWorkflowsApi };
@@ -8,19 +8,19 @@ interface ContentTypes {
8
8
  }
9
9
  declare const useGetStagesQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<GetStages.Params & {
10
10
  slug: string;
11
- params?: object | undefined;
12
- }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", {
13
- stages: NonNullable<GetStages.Response['data']>;
14
- meta: NonNullable<GetStages.Response['meta']>;
11
+ params?: object;
12
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", {
13
+ stages: NonNullable<GetStages.Response["data"]>;
14
+ meta: NonNullable<GetStages.Response["meta"]>;
15
15
  }, "adminApi">>, useUpdateStageMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<{
16
16
  data: {
17
17
  id: import("@strapi/types/dist/data").ID;
18
18
  };
19
19
  } & UpdateStage.Params & {
20
20
  slug: string;
21
- params?: object | undefined;
22
- }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", {
23
- id: import("@strapi/types/dist/data").ID;
21
+ params?: object;
22
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", {
23
+ id: import("@strapi/types/dist/modules/entity-service/params/attributes").ID;
24
24
  } & {
25
25
  [key: string]: any;
26
26
  }, "adminApi">>, useUpdateAssigneeMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<{
@@ -29,11 +29,11 @@ declare const useGetStagesQuery: import("@reduxjs/toolkit/dist/query/react/build
29
29
  };
30
30
  } & UpdateAssignee.Params & {
31
31
  slug: string;
32
- params?: object | undefined;
33
- }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", {
34
- id: import("@strapi/types/dist/data").ID;
32
+ params?: object;
33
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", {
34
+ id: import("@strapi/types/dist/modules/entity-service/params/attributes").ID;
35
35
  } & {
36
36
  [key: string]: any;
37
- }, "adminApi">>, useGetContentTypesQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", ContentTypes, "adminApi">>, useGetRecentlyAssignedDocumentsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", Homepage.RecentDocument[], "adminApi">>;
37
+ }, "adminApi">>, useGetContentTypesQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", ContentTypes, "adminApi">>, useGetRecentlyAssignedDocumentsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ReviewWorkflow" | "ReviewWorkflowStages" | "Document" | "ContentTypeSettings" | "RecentlyAssignedList" | "RecentDocumentList", Homepage.RecentDocument[], "adminApi">>;
38
38
  export { useGetStagesQuery, useUpdateStageMutation, useUpdateAssigneeMutation, useGetContentTypesQuery, useGetRecentlyAssignedDocumentsQuery, };
39
39
  export type { ContentTypes, ContentType };