@strapi/admin 4.12.0-beta.1 → 4.12.0-beta.3

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 (123) hide show
  1. package/admin/src/content-manager/components/CollectionTypeFormWrapper/index.js +1 -3
  2. package/admin/src/content-manager/components/RelationInput/components/Option.js +6 -5
  3. package/admin/src/content-manager/components/SingleTypeFormWrapper/index.js +7 -7
  4. package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +23 -21
  5. package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +21 -23
  6. package/admin/src/content-manager/pages/ListSettingsView/components/SortDisplayedFields.js +24 -22
  7. package/admin/src/content-manager/pages/ListView/components/Body/index.js +191 -0
  8. package/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/index.js +164 -0
  9. package/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js +468 -0
  10. package/admin/src/content-manager/{components/DynamicTable/BulkActionsBar → pages/ListView/components/BulkActionButtons}/index.js +56 -132
  11. package/admin/src/content-manager/pages/ListView/components/CellContent/RelationMultiple/index.js +63 -69
  12. package/admin/src/content-manager/pages/ListView/components/CellContent/RepeatableComponent/index.js +28 -21
  13. package/admin/src/content-manager/pages/ListView/index.js +191 -132
  14. package/admin/src/layouts/UnauthenticatedLayout/LocaleToggle/index.js +7 -7
  15. package/admin/src/translations/ca.json +4 -4
  16. package/admin/src/translations/de.json +4 -4
  17. package/admin/src/translations/dk.json +2 -2
  18. package/admin/src/translations/en.json +23 -4
  19. package/admin/src/translations/es.json +4 -4
  20. package/admin/src/translations/eu.json +4 -4
  21. package/admin/src/translations/fr.json +2 -2
  22. package/admin/src/translations/gu.json +4 -4
  23. package/admin/src/translations/hi.json +4 -4
  24. package/admin/src/translations/hu.json +4 -4
  25. package/admin/src/translations/ja.json +2 -2
  26. package/admin/src/translations/ko.json +2 -2
  27. package/admin/src/translations/ml.json +4 -4
  28. package/admin/src/translations/nl.json +4 -4
  29. package/admin/src/translations/pl.json +4 -4
  30. package/admin/src/translations/pt-BR.json +4 -4
  31. package/admin/src/translations/ru.json +4 -4
  32. package/admin/src/translations/sa.json +4 -4
  33. package/admin/src/translations/sk.json +4 -4
  34. package/admin/src/translations/sv.json +4 -4
  35. package/admin/src/translations/tr.json +4 -4
  36. package/admin/src/translations/zh-Hans.json +4 -4
  37. package/admin/src/translations/zh.json +4 -4
  38. package/build/{2801.18ac397d.chunk.js → 2801.18f38baf.chunk.js} +1 -1
  39. package/build/{3483.e182b190.chunk.js → 3483.ddd2d6df.chunk.js} +1 -1
  40. package/build/{970.89601f27.chunk.js → 3739.63e352f1.chunk.js} +52 -20
  41. package/build/6158.c974fd83.chunk.js +1 -0
  42. package/build/6691.f880a0b6.chunk.js +105 -0
  43. package/build/8298.fd253c9f.chunk.js +117 -0
  44. package/build/{9932.b5a3bb3a.chunk.js → 9806.91360bb6.chunk.js} +47 -47
  45. package/build/{Admin-authenticatedApp.2ffa318a.chunk.js → Admin-authenticatedApp.36b3826c.chunk.js} +2 -2
  46. package/build/Admin_settingsPage.8c600d1a.chunk.js +111 -0
  47. package/build/{admin-app.088bcd33.chunk.js → admin-app.1c3f7fd6.chunk.js} +9 -9
  48. package/build/{ca-json.1fed5d8b.chunk.js → ca-json.a53c10b6.chunk.js} +1 -1
  49. package/build/content-manager.b8d593d4.chunk.js +1103 -0
  50. package/build/{content-type-builder-translation-ar-json.56d8fcf4.chunk.js → content-type-builder-translation-ar-json.3e808e2f.chunk.js} +1 -1
  51. package/build/{content-type-builder-translation-cs-json.a5b299ca.chunk.js → content-type-builder-translation-cs-json.1ef9e106.chunk.js} +1 -1
  52. package/build/{content-type-builder-translation-de-json.393a76c0.chunk.js → content-type-builder-translation-de-json.63fcff7b.chunk.js} +1 -1
  53. package/build/{content-type-builder-translation-dk-json.fbd39bb7.chunk.js → content-type-builder-translation-dk-json.fd626b67.chunk.js} +1 -1
  54. package/build/{content-type-builder-translation-en-json.38e20391.chunk.js → content-type-builder-translation-en-json.ed29ff4d.chunk.js} +1 -1
  55. package/build/{content-type-builder-translation-es-json.9288474b.chunk.js → content-type-builder-translation-es-json.a4a361a9.chunk.js} +1 -1
  56. package/build/{content-type-builder-translation-fr-json.d35e269c.chunk.js → content-type-builder-translation-fr-json.499c3a46.chunk.js} +1 -1
  57. package/build/{content-type-builder-translation-id-json.f0513929.chunk.js → content-type-builder-translation-id-json.65255f93.chunk.js} +1 -1
  58. package/build/{content-type-builder-translation-it-json.aaf16753.chunk.js → content-type-builder-translation-it-json.e268ab74.chunk.js} +1 -1
  59. package/build/{content-type-builder-translation-ko-json.8fe21a7f.chunk.js → content-type-builder-translation-ko-json.04cb309d.chunk.js} +1 -1
  60. package/build/{content-type-builder-translation-ms-json.3b5d2d3e.chunk.js → content-type-builder-translation-ms-json.f6b743b9.chunk.js} +1 -1
  61. package/build/{content-type-builder-translation-nl-json.225ef5d3.chunk.js → content-type-builder-translation-nl-json.997fe8cc.chunk.js} +1 -1
  62. package/build/{content-type-builder-translation-pl-json.92f36be2.chunk.js → content-type-builder-translation-pl-json.634f638b.chunk.js} +1 -1
  63. package/build/{content-type-builder-translation-pt-BR-json.3bd10f89.chunk.js → content-type-builder-translation-pt-BR-json.6a95dc71.chunk.js} +1 -1
  64. package/build/{content-type-builder-translation-ru-json.9bfe47ce.chunk.js → content-type-builder-translation-ru-json.3af65503.chunk.js} +1 -1
  65. package/build/{content-type-builder-translation-sk-json.d03cc18a.chunk.js → content-type-builder-translation-sk-json.c6078082.chunk.js} +1 -1
  66. package/build/{content-type-builder-translation-sv-json.d23dcd32.chunk.js → content-type-builder-translation-sv-json.a6df2462.chunk.js} +1 -1
  67. package/build/{content-type-builder-translation-th-json.7ad256e2.chunk.js → content-type-builder-translation-th-json.122277cc.chunk.js} +1 -1
  68. package/build/{content-type-builder-translation-tr-json.926f6191.chunk.js → content-type-builder-translation-tr-json.41f44f77.chunk.js} +1 -1
  69. package/build/{content-type-builder-translation-uk-json.7bf19546.chunk.js → content-type-builder-translation-uk-json.e1315acd.chunk.js} +1 -1
  70. package/build/{content-type-builder-translation-zh-Hans-json.415577fb.chunk.js → content-type-builder-translation-zh-Hans-json.6ff57db6.chunk.js} +1 -1
  71. package/build/{content-type-builder-translation-zh-json.958d90e1.chunk.js → content-type-builder-translation-zh-json.3532b962.chunk.js} +1 -1
  72. package/build/{content-type-builder.3963fb2d.chunk.js → content-type-builder.40534de5.chunk.js} +21 -17
  73. package/build/{de-json.fcac7381.chunk.js → de-json.b3be02c7.chunk.js} +1 -1
  74. package/build/{dk-json.e34cad0d.chunk.js → dk-json.842aa391.chunk.js} +1 -1
  75. package/build/{en-json.fb9f6ddd.chunk.js → en-json.4c733bd1.chunk.js} +1 -1
  76. package/build/{es-json.42096084.chunk.js → es-json.f57b5335.chunk.js} +1 -1
  77. package/build/{eu-json.fb17c8f9.chunk.js → eu-json.633025f0.chunk.js} +1 -1
  78. package/build/{fr-json.69789980.chunk.js → fr-json.aa8839d2.chunk.js} +1 -1
  79. package/build/{gu-json.4d667d0c.chunk.js → gu-json.5bd62812.chunk.js} +1 -1
  80. package/build/{hi-json.323be97d.chunk.js → hi-json.9104eb78.chunk.js} +1 -1
  81. package/build/{hu-json.fe71e6c8.chunk.js → hu-json.9f4aae42.chunk.js} +1 -1
  82. package/build/index.html +1 -1
  83. package/build/{ja-json.81b6d1e3.chunk.js → ja-json.91286391.chunk.js} +1 -1
  84. package/build/{ko-json.4539f4ba.chunk.js → ko-json.fcf3ec4b.chunk.js} +1 -1
  85. package/build/main.a12c4c0f.js +2856 -0
  86. package/build/{ml-json.8988e374.chunk.js → ml-json.557aa14c.chunk.js} +1 -1
  87. package/build/{nl-json.98345913.chunk.js → nl-json.b2b16eea.chunk.js} +1 -1
  88. package/build/{pl-json.59a5dab3.chunk.js → pl-json.f094a417.chunk.js} +1 -1
  89. package/build/{pt-BR-json.9410688b.chunk.js → pt-BR-json.dec7fb01.chunk.js} +1 -1
  90. package/build/review-workflows-settings-create-view.dfd87e1f.chunk.js +1 -0
  91. package/build/review-workflows-settings-edit-view.53c00afe.chunk.js +1 -0
  92. package/build/{review-workflows-settings-list-view.240cacdf.chunk.js → review-workflows-settings-list-view.a34be805.chunk.js} +5 -5
  93. package/build/{ru-json.678cd48b.chunk.js → ru-json.8193d8c4.chunk.js} +1 -1
  94. package/build/{runtime~main.44bf2a37.js → runtime~main.d197f488.js} +2 -2
  95. package/build/{sa-json.6359a11c.chunk.js → sa-json.a56836f1.chunk.js} +1 -1
  96. package/build/{sk-json.2374f129.chunk.js → sk-json.bf2f057a.chunk.js} +1 -1
  97. package/build/{sv-json.ae6e71ea.chunk.js → sv-json.fd0e86c6.chunk.js} +1 -1
  98. package/build/{tr-json.bac5dbd3.chunk.js → tr-json.56c32cf6.chunk.js} +1 -1
  99. package/build/upload.cbfeefa5.chunk.js +58 -0
  100. package/build/{zh-Hans-json.fada6f40.chunk.js → zh-Hans-json.36d81cdc.chunk.js} +1 -1
  101. package/build/{zh-json.3529f1e5.chunk.js → zh-json.1cc86ff0.chunk.js} +1 -1
  102. package/ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn/constants.js +2 -2
  103. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/components/ProtectedPage/ProtectedPage.js +1 -1
  104. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/CreateView/CreateView.js +34 -6
  105. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/pages/EditView/EditView.js +42 -11
  106. package/ee/admin/pages/SettingsPage/pages/ReviewWorkflows/utils/{getWorkflowValidationSchema.js → validateWorkflow.js} +33 -2
  107. package/ee/admin/pages/SettingsPage/pages/Users/ListPage/index.js +1 -1
  108. package/ee/server/constants/workflows.js +1 -0
  109. package/ee/server/services/review-workflows/validation.js +6 -0
  110. package/ee/server/validation/review-workflows.js +6 -2
  111. package/package.json +9 -9
  112. package/admin/src/content-manager/pages/ListView/components/TableRows/index.js +0 -300
  113. package/build/190.66d89241.chunk.js +0 -117
  114. package/build/6158.f9d82db9.chunk.js +0 -1
  115. package/build/6691.e6d5ac38.chunk.js +0 -105
  116. package/build/Admin_settingsPage.3ad19487.chunk.js +0 -79
  117. package/build/content-manager.9b569036.chunk.js +0 -1094
  118. package/build/main.98c989b0.js +0 -2908
  119. package/build/review-workflows-settings-create-view.60bc516c.chunk.js +0 -1
  120. package/build/review-workflows-settings-edit-view.898ea409.chunk.js +0 -1
  121. package/build/upload.8d01c525.chunk.js +0 -26
  122. /package/admin/src/content-manager/components/{DynamicTable → ListViewTable}/CellContent/PublicationState/PublicationState.js +0 -0
  123. /package/admin/src/content-manager/components/{DynamicTable → ListViewTable}/CellContent/PublicationState/index.js +0 -0
@@ -1,7 +1,8 @@
1
+ import set from 'lodash/set';
1
2
  import * as yup from 'yup';
2
3
 
3
- export function getWorkflowValidationSchema({ formatMessage }) {
4
- return yup.object({
4
+ export async function validateWorkflow({ values, formatMessage }) {
5
+ const schema = yup.object({
5
6
  contentTypes: yup.array().of(yup.string()),
6
7
  name: yup
7
8
  .string()
@@ -32,6 +33,20 @@ export function getWorkflowValidationSchema({ formatMessage }) {
32
33
  id: 'Settings.review-workflows.validation.stage.max-length',
33
34
  defaultMessage: 'Name can not be longer than 255 characters',
34
35
  })
36
+ )
37
+ .test(
38
+ 'unique-name',
39
+ formatMessage({
40
+ id: 'Settings.review-workflows.validation.stage.duplicate',
41
+ defaultMessage: 'Stage name must be unique',
42
+ }),
43
+ function (stageName) {
44
+ const {
45
+ options: { context },
46
+ } = this;
47
+
48
+ return context.stages.filter((stage) => stage.name === stageName).length === 1;
49
+ }
35
50
  ),
36
51
  color: yup
37
52
  .string()
@@ -46,4 +61,20 @@ export function getWorkflowValidationSchema({ formatMessage }) {
46
61
  )
47
62
  .min(1),
48
63
  });
64
+
65
+ try {
66
+ await schema.validate(values, { abortEarly: false, context: values });
67
+
68
+ return true;
69
+ } catch (error) {
70
+ let errors = {};
71
+
72
+ if (error instanceof yup.ValidationError) {
73
+ error.inner.forEach((error) => {
74
+ set(errors, error.path, error.message);
75
+ });
76
+ }
77
+
78
+ return errors;
79
+ }
49
80
  }
@@ -10,4 +10,4 @@ function UserListPageEE() {
10
10
  return <UserListPageCE />;
11
11
  }
12
12
 
13
- export default UserListPageEE;
13
+ export { UserListPageEE };
@@ -14,5 +14,6 @@ module.exports = {
14
14
  'You’ve reached the limit of workflows in your plan. Delete a workflow or contact Sales to enable more workflows.',
15
15
  STAGES_LIMIT:
16
16
  'You’ve reached the limit of stages for this workflow in your plan. Try deleting some stages or contact Sales to enable more stages.',
17
+ DUPLICATED_STAGE_NAME: 'Stage names must be unique.',
17
18
  },
18
19
  };
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ const { uniq } = require('lodash/fp');
3
4
  const { ValidationError } = require('@strapi/utils').errors;
4
5
  const { getService } = require('../../utils');
5
6
  const { ERRORS, MAX_WORKFLOWS, MAX_STAGES_PER_WORKFLOW } = require('../../constants/workflows');
@@ -32,6 +33,11 @@ module.exports = ({ strapi }) => {
32
33
  if (stages.length > this.limits.stagesPerWorkflow) {
33
34
  throw new ValidationError(ERRORS.STAGES_LIMIT);
34
35
  }
36
+ // Validate stage names are not duplicated
37
+ const stageNames = stages.map((stage) => stage.name);
38
+ if (uniq(stageNames).length !== stageNames.length) {
39
+ throw new ValidationError(ERRORS.DUPLICATED_STAGE_NAME);
40
+ }
35
41
  },
36
42
 
37
43
  async validateWorkflowCountStages(workflowId, countAddedStages = 0) {
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ /* eslint-disable func-names */
4
+
3
5
  const { yup, validateYupSchema } = require('@strapi/utils');
4
6
  const { hasStageAttribute } = require('../utils/review-workflows');
5
7
 
@@ -42,10 +44,11 @@ const validateContentTypes = yup.array().of(
42
44
  );
43
45
 
44
46
  const validateWorkflowCreateSchema = yup.object().shape({
45
- name: yup.string().max(255).required(),
47
+ name: yup.string().max(255).min(1, 'Workflow name can not be empty').required(),
46
48
  stages: yup
47
49
  .array()
48
50
  .of(stageObject)
51
+ .uniqueProperty('name', 'Stage name must be unique')
49
52
  .min(1, 'Can not create a workflow without stages')
50
53
  .max(200, 'Can not have more than 200 stages')
51
54
  .required('Can not create a workflow without stages'),
@@ -53,10 +56,11 @@ const validateWorkflowCreateSchema = yup.object().shape({
53
56
  });
54
57
 
55
58
  const validateWorkflowUpdateSchema = yup.object().shape({
56
- name: yup.string().max(255),
59
+ name: yup.string().max(255).min(1, 'Workflow name can not be empty'),
57
60
  stages: yup
58
61
  .array()
59
62
  .of(stageObject)
63
+ .uniqueProperty('name', 'Stage name must be unique')
60
64
  .min(1, 'Can not update a workflow without stages')
61
65
  .max(200, 'Can not have more than 200 stages'),
62
66
  contentTypes: validateContentTypes,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "4.12.0-beta.1",
3
+ "version": "4.12.0-beta.3",
4
4
  "description": "Strapi Admin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,14 +42,14 @@
42
42
  "dependencies": {
43
43
  "@casl/ability": "^5.4.3",
44
44
  "@pmmmwh/react-refresh-webpack-plugin": "0.5.10",
45
- "@strapi/data-transfer": "4.12.0-beta.1",
45
+ "@strapi/data-transfer": "4.12.0-beta.3",
46
46
  "@strapi/design-system": "1.8.2",
47
- "@strapi/helper-plugin": "4.12.0-beta.1",
47
+ "@strapi/helper-plugin": "4.12.0-beta.3",
48
48
  "@strapi/icons": "1.8.2",
49
- "@strapi/permissions": "4.12.0-beta.1",
50
- "@strapi/provider-audit-logs-local": "4.12.0-beta.1",
51
- "@strapi/typescript-utils": "4.12.0-beta.1",
52
- "@strapi/utils": "4.12.0-beta.1",
49
+ "@strapi/permissions": "4.12.0-beta.3",
50
+ "@strapi/provider-audit-logs-local": "4.12.0-beta.3",
51
+ "@strapi/typescript-utils": "4.12.0-beta.3",
52
+ "@strapi/utils": "4.12.0-beta.3",
53
53
  "axios": "1.4.0",
54
54
  "bcryptjs": "2.4.3",
55
55
  "browserslist": "^4.17.3",
@@ -117,7 +117,7 @@
117
117
  "reselect": "^4.1.7",
118
118
  "rimraf": "3.0.2",
119
119
  "sanitize-html": "2.10.0",
120
- "semver": "7.5.1",
120
+ "semver": "7.5.2",
121
121
  "sift": "16.0.1",
122
122
  "style-loader": "3.3.1",
123
123
  "styled-components": "5.3.3",
@@ -154,5 +154,5 @@
154
154
  }
155
155
  }
156
156
  },
157
- "gitHead": "27ed22ba71f95d728726d39712c3f576536b7f21"
157
+ "gitHead": "e8f4408751727a0104775a23cfa96d4741b1f21b"
158
158
  }
@@ -1,300 +0,0 @@
1
- import React from 'react';
2
-
3
- import {
4
- BaseCheckbox,
5
- IconButton,
6
- Tbody,
7
- Td,
8
- Tr,
9
- Flex,
10
- Status,
11
- Typography,
12
- } from '@strapi/design-system';
13
- import {
14
- useTracking,
15
- useFetchClient,
16
- useAPIErrorHandler,
17
- useQueryParams,
18
- } from '@strapi/helper-plugin';
19
- import { Trash, Duplicate, Pencil } from '@strapi/icons';
20
- import { AxiosError } from 'axios';
21
- import PropTypes from 'prop-types';
22
- import { useIntl } from 'react-intl';
23
- import { Link, useHistory } from 'react-router-dom';
24
-
25
- import { useEnterprise } from '../../../../../hooks/useEnterprise';
26
- import { getFullName } from '../../../../../utils';
27
- import { usePluginsQueryParams } from '../../../../hooks';
28
- import { getTrad } from '../../../../utils';
29
- import CellContent from '../CellContent';
30
-
31
- const REVIEW_WORKFLOW_COLUMNS_CE = () => null;
32
-
33
- export const TableRows = ({
34
- canCreate,
35
- canDelete,
36
- contentType,
37
- features: { hasDraftAndPublish, hasReviewWorkflows },
38
- headers,
39
- entriesToDelete,
40
- onClickDelete,
41
- onSelectRow,
42
- withMainAction,
43
- withBulkActions,
44
- rows,
45
- }) => {
46
- const { push, location } = useHistory();
47
- const { pathname } = location;
48
- const { formatMessage } = useIntl();
49
- const { post } = useFetchClient();
50
-
51
- const { trackUsage } = useTracking();
52
- const pluginsQueryParams = usePluginsQueryParams();
53
- const [{ query }] = useQueryParams();
54
- const { formatAPIError } = useAPIErrorHandler(getTrad);
55
- const ReviewWorkflowsStage = useEnterprise(
56
- REVIEW_WORKFLOW_COLUMNS_CE,
57
- async () =>
58
- (
59
- await import(
60
- '../../../../../../../ee/admin/content-manager/pages/ListView/ReviewWorkflowsColumn'
61
- )
62
- ).ReviewWorkflowsStageEE,
63
- {
64
- enabled: hasReviewWorkflows,
65
- }
66
- );
67
-
68
- /**
69
- *
70
- * @param {string} id
71
- * @returns void
72
- */
73
- const handleRowClick = (id) => () => {
74
- if (!withBulkActions) return;
75
-
76
- trackUsage('willEditEntryFromList');
77
- push({
78
- pathname: `${pathname}/${id}`,
79
- state: { from: pathname },
80
- search: pluginsQueryParams,
81
- });
82
- };
83
-
84
- const handleCloneClick = (id) => async () => {
85
- try {
86
- const { data } = await post(
87
- `/content-manager/collection-types/${contentType.uid}/auto-clone/${id}`,
88
- {},
89
- { params: { plugins: query?.plugins } }
90
- );
91
-
92
- if ('id' in data) {
93
- push({
94
- pathname: `${pathname}/${data.id}`,
95
- state: { from: pathname },
96
- search: pluginsQueryParams,
97
- });
98
- }
99
- } catch (err) {
100
- if (err instanceof AxiosError) {
101
- push({
102
- pathname: `${pathname}/create/clone/${id}`,
103
- state: { from: pathname, error: formatAPIError(err) },
104
- search: pluginsQueryParams,
105
- });
106
- }
107
- }
108
- };
109
-
110
- // block rendering until the review stage component is fully loaded in EE
111
- if (!ReviewWorkflowsStage) {
112
- return null;
113
- }
114
-
115
- /**
116
- * Table Cells with actions e.g edit, delete, duplicate have `stopPropagation`
117
- * to prevent the row from being selected.
118
- */
119
- return (
120
- <Tbody>
121
- {rows.map((data, index) => {
122
- const isChecked = entriesToDelete.includes(data.id);
123
- const itemLineText = formatMessage(
124
- {
125
- id: 'content-manager.components.DynamicTable.row-line',
126
- defaultMessage: 'item line {number}',
127
- },
128
- { number: index }
129
- );
130
-
131
- return (
132
- <Tr
133
- cursor={withBulkActions ? 'pointer' : 'default'}
134
- key={data.id}
135
- onClick={handleRowClick(data.id)}
136
- >
137
- {withMainAction && (
138
- <Td onClick={(e) => e.stopPropagation()}>
139
- <BaseCheckbox
140
- aria-label={formatMessage(
141
- {
142
- id: 'app.component.table.select.one-entry',
143
- defaultMessage: `Select {target}`,
144
- },
145
- { target: getFullName(data.firstname, data.lastname) }
146
- )}
147
- checked={isChecked}
148
- onChange={() => {
149
- onSelectRow({ name: data.id, value: !isChecked });
150
- }}
151
- />
152
- </Td>
153
- )}
154
-
155
- {headers.map(({ key, cellFormatter, name, ...rest }) => {
156
- if (hasDraftAndPublish && name === 'publishedAt') {
157
- return (
158
- <Td key={key}>
159
- <Status
160
- width="min-content"
161
- showBullet={false}
162
- variant={data.publishedAt ? 'success' : 'secondary'}
163
- size="S"
164
- >
165
- <Typography
166
- fontWeight="bold"
167
- textColor={`${data.publishedAt ? 'success' : 'secondary'}700`}
168
- >
169
- {formatMessage({
170
- id: getTrad(
171
- `containers.List.${data.publishedAt ? 'published' : 'draft'}`
172
- ),
173
- defaultMessage: data.publishedAt ? 'Published' : 'Draft',
174
- })}
175
- </Typography>
176
- </Status>
177
- </Td>
178
- );
179
- }
180
-
181
- if (hasReviewWorkflows && name === 'strapi_reviewWorkflows_stage') {
182
- return (
183
- <Td key={key}>
184
- {data.strapi_stage ? (
185
- <ReviewWorkflowsStage
186
- color={data.strapi_stage.color}
187
- name={data.strapi_stage.name}
188
- />
189
- ) : (
190
- <Typography textColor="neutral800">-</Typography>
191
- )}
192
- </Td>
193
- );
194
- }
195
-
196
- return (
197
- <Td key={key}>
198
- <CellContent
199
- content={data[name.split('.')[0]]}
200
- name={name}
201
- contentType={contentType}
202
- {...rest}
203
- rowId={data.id}
204
- />
205
- </Td>
206
- );
207
- })}
208
-
209
- {withBulkActions && (
210
- <Td>
211
- <Flex as="span" justifyContent="end" gap={1} onClick={(e) => e.stopPropagation()}>
212
- <IconButton
213
- forwardedAs={Link}
214
- onClick={() => {
215
- trackUsage('willEditEntryFromButton');
216
- }}
217
- to={{
218
- pathname: `${pathname}/${data.id}`,
219
- state: { from: pathname },
220
- search: pluginsQueryParams,
221
- }}
222
- label={formatMessage(
223
- { id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },
224
- { target: itemLineText }
225
- )}
226
- noBorder
227
- >
228
- <Pencil />
229
- </IconButton>
230
-
231
- {canCreate && (
232
- <IconButton
233
- onClick={handleCloneClick(data.id)}
234
- label={formatMessage(
235
- {
236
- id: 'app.component.table.duplicate',
237
- defaultMessage: 'Duplicate {target}',
238
- },
239
- { target: itemLineText }
240
- )}
241
- noBorder
242
- >
243
- <Duplicate />
244
- </IconButton>
245
- )}
246
-
247
- {canDelete && (
248
- <IconButton
249
- onClick={() => {
250
- trackUsage('willDeleteEntryFromList');
251
- onClickDelete(data.id);
252
- }}
253
- label={formatMessage(
254
- { id: 'global.delete-target', defaultMessage: 'Delete {target}' },
255
- { target: itemLineText }
256
- )}
257
- noBorder
258
- >
259
- <Trash />
260
- </IconButton>
261
- )}
262
- </Flex>
263
- </Td>
264
- )}
265
- </Tr>
266
- );
267
- })}
268
- </Tbody>
269
- );
270
- };
271
-
272
- TableRows.defaultProps = {
273
- canCreate: false,
274
- canDelete: false,
275
- entriesToDelete: [],
276
- onClickDelete() {},
277
- onSelectRow() {},
278
- rows: [],
279
- withBulkActions: false,
280
- withMainAction: false,
281
- };
282
-
283
- TableRows.propTypes = {
284
- canCreate: PropTypes.bool,
285
- canDelete: PropTypes.bool,
286
- contentType: PropTypes.shape({
287
- uid: PropTypes.string.isRequired,
288
- }).isRequired,
289
- entriesToDelete: PropTypes.array,
290
- features: PropTypes.shape({
291
- hasDraftAndPublish: PropTypes.bool.isRequired,
292
- hasReviewWorkflows: PropTypes.bool.isRequired,
293
- }).isRequired,
294
- headers: PropTypes.array.isRequired,
295
- onClickDelete: PropTypes.func,
296
- onSelectRow: PropTypes.func,
297
- rows: PropTypes.array,
298
- withBulkActions: PropTypes.bool,
299
- withMainAction: PropTypes.bool,
300
- };
@@ -1,117 +0,0 @@
1
- (self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[190],{61234:function(S,m,e){"use strict";e.d(m,{v:function(){return n}});var t=e(32735),r=e(15062);function n(s,u){const l=(0,r.oR)();(0,t.useEffect)(()=>{l.injectReducer(s,u)},[l,s,u])}},50337:function(S,m,e){"use strict";e.d(m,{pl:function(){return a},aY:function(){return R},q5:function(){return c.Z}});var t=e(32735),r=e(19565),n=e(86209),s=e(97889);const u={data:[],isLoading:!0};var p=(M,O)=>(0,s.ZP)(M,g=>{switch(O.type){case"GET_DATA_SUCCEEDED":{g.data=O.data,g.isLoading=!1;break}case"GET_DATA_ERROR":{g.isLoading=!1;break}default:return g}}),a=({ssoEnabled:M})=>{const[O,g]=(0,t.useReducer)(p,u),T=(0,r.lm)(),{get:h}=(0,r.kY)();return(0,t.useEffect)(()=>{(async()=>{try{if(!M){g({type:"GET_DATA_SUCCEEDED",data:[]});return}const{data:L}=await h((0,n.IF)("providers"));g({type:"GET_DATA_SUCCEEDED",data:L})}catch(L){console.error(L),g({type:"GET_DATA_ERROR"}),T({type:"warning",message:{id:"notification.error"}})}})()},[h,M,T]),O},o=e(36866),v=e.n(o),E=e(67879),i=e(53038),c=e(53104);const f="strapi-notification-seat-limit",w="https://cloud.strapi.io/profile/billing",x="https://strapi.io/billing/request-seats";var R=()=>{const{formatMessage:M}=(0,E.Z)();let{license:O,isError:g,isLoading:T}=(0,c.Z)();const h=(0,r.lm)(),{pathname:D}=(0,i.TH)(),{enforcementUserCount:L,permittedSeats:C,licenseLimitStatus:I,isHostedOnStrapiCloud:U}=O;(0,t.useEffect)(()=>{if(g||T)return;const k=!v()(C)&&!window.sessionStorage.getItem(`${f}-${D}`)&&(I==="AT_LIMIT"||I==="OVER_LIMIT");let $;I==="OVER_LIMIT"?$="warning":I==="AT_LIMIT"&&($="softWarning"),k&&h({type:$,message:M({id:"notification.ee.warning.over-.message",defaultMessage:"Add seats to {licenseLimitStatus, select, OVER_LIMIT {invite} other {re-enable}} Users. If you already did it but it's not reflected in Strapi yet, make sure to restart your app."},{licenseLimitStatus:I}),title:M({id:"notification.ee.warning.at-seat-limit.title",defaultMessage:"{licenseLimitStatus, select, OVER_LIMIT {Over} other {At}} seat limit ({enforcementUserCount}/{permittedSeats})"},{licenseLimitStatus:I,enforcementUserCount:L,permittedSeats:C}),link:{url:U?w:x,label:M({id:"notification.ee.warning.seat-limit.link",defaultMessage:"{isHostedOnStrapiCloud, select, true {ADD SEATS} other {CONTACT SALES}}"},{isHostedOnStrapiCloud:U})},blockTransition:!0,onClose(){window.sessionStorage.setItem(`${f}-${D}`,!0)}})},[h,O,D,M,T,C,I,L,U,g])}},53104:function(S,m,e){"use strict";e.d(m,{Z:function(){return p}});var t=e(32735),r=e(19565),n=e(20108),s=e(15062),u=e(30305);function l(){const d=(0,s.v9)(u._),{get:a}=(0,r.kY)(),{isLoading:o,allowedActions:{canRead:v,canCreate:E,canUpdate:i,canDelete:c}}=(0,r.ss)(d.settings.users),f=v&&E&&i&&c,{data:w,isError:x,isLoading:P}=(0,n.useQuery)(["ee","license-limit-info"],async()=>{const{data:{data:O}}=await a("/admin/license-limit-information");return O},{enabled:!o&&f}),R=w??{},M=t.useCallback(O=>(R?.features??[]).find(T=>T.name===O)?.options??{},[R?.features]);return{license:R,getFeature:M,isError:x,isLoading:P}}var p=l},77061:function(S,m,e){"use strict";e.d(m,{CI:function(){return s},FP:function(){return l},Js:function(){return d},_V:function(){return n},fC:function(){return r},rI:function(){return p},xn:function(){return u}});var t=e(2121);function r({status:a,data:o}){return{type:t.qZ,payload:{status:a,workflow:o}}}function n(a){return{type:t.x4,payload:{stageId:a}}}function s(a={}){return{type:t.Ot,payload:a}}function u(a,o){return{type:t.Nj,payload:{stageId:a,...o}}}function l(a,o){return{type:t.$k,payload:{newIndex:o,oldIndex:a}}}function p(a){return{type:t.VS,payload:a}}function d(){return{type:t.gu}}},27187:function(S,m,e){"use strict";e.d(m,{eJ:function(){return g},lx:function(){return M},h4:function(){return T},fC:function(){return O}});var t=e(32735),r=e(96709),n=e(27649),s=e(17e3),u=e(82055),l=e(19565),p=e(29439),d=e(67879),a=e(17379),o=e(2121),v=e(87933),E=e(49372),i=e(16899),c=e(60216),f=e.n(c),w=e(8471);const x=(0,w.ZP)(v.k)`
2
- svg path {
3
- fill: ${({theme:h})=>h.colors.neutral600};
4
- }
5
- `;function P({name:h}){return t.createElement(v.k,{background:"primary100",borderStyle:"dashed",borderColor:"primary600",borderWidth:"1px",gap:3,hasRadius:!0,padding:3,shadow:"tableShadow",width:(0,l.Q1)(300)},t.createElement(x,{alignItems:"center",background:"neutral200",borderRadius:"50%",height:6,justifyContent:"center",width:6},t.createElement(i.Z,{width:`${8/16}rem`})),t.createElement(E.Z,{fontWeight:"bold"},h))}P.propTypes={name:f().string.isRequired};function R({type:h,item:D}){switch(h){case o.uL.STAGE:return t.createElement(P,{...D});default:return null}}function M(){return t.createElement(a.r,{renderItem:R})}function O({children:h}){return t.createElement(r.A,null,t.createElement(n.o,{tabIndex:-1},t.createElement(s.D,null,h)))}function g({href:h}){const{formatMessage:D}=(0,d.Z)();return t.createElement(l.rU,{startIcon:t.createElement(p.Z,null),to:h},D({id:"global.back",defaultMessage:"Back"}))}function T({title:h,subtitle:D,navigationAction:L,primaryAction:C}){return t.createElement(t.Fragment,null,t.createElement(l.SL,{name:h}),t.createElement(u.T,{navigationAction:L,primaryAction:C,title:h,subtitle:D}))}},90562:function(S,m,e){"use strict";e.d(m,{uT:function(){return R},fC:function(){return g},Dx:function(){return P}});var t=e(32735),r=e(49372),n=e(87933),s=e(85025),u=e(31600),l=e(72850),p=e(50563),d=e(95489),a=e(35331),o=e(60216),v=e.n(o),E=e(67879),i=e(8471),c=e.p+"0cd5f8915b265d5b1856.png";const f="limits-title",w="https://strapi.io/pricing-cloud",x="https://strapi.io/contact-sales";function P({children:T}){return t.createElement(r.Z,{variant:"alpha",id:f},T)}P.propTypes={children:v().node.isRequired};function R({children:T}){return t.createElement(r.Z,{variant:"omega"},T)}R.propTypes={children:v().node.isRequired};function M(){const{formatMessage:T}=(0,E.Z)();return t.createElement(n.k,{gap:2,paddingTop:4},t.createElement(d.Q,{variant:"default",isExternal:!0,href:w},T({id:"Settings.review-workflows.limit.cta.learn",defaultMessage:"Learn more"})),t.createElement(d.Q,{variant:"tertiary",isExternal:!0,href:x},T({id:"Settings.review-workflows.limit.cta.sales",defaultMessage:"Contact Sales"})))}const O=i.ZP.img`
6
- // Margin top|right reverse the padding of ModalBody
7
- margin-right: ${({theme:T})=>`-${T.spaces[7]}`};
8
- margin-top: ${({theme:T})=>`-${T.spaces[7]}`};
9
- width: 360px;
10
- `;function g({children:T,isOpen:h,onClose:D}){const{formatMessage:L}=(0,E.Z)();return h?t.createElement(s.P,{labelledBy:f},t.createElement(u.f,null,t.createElement(n.k,{gap:2,paddingLeft:7,position:"relative"},t.createElement(n.k,{alignItems:"start",direction:"column",gap:2,width:"60%"},T,t.createElement(M,null)),t.createElement(n.k,{justifyContent:"end",height:"100%",width:"40%"},t.createElement(O,{src:c,"aria-hidden":!0,alt:"",loading:"lazy"}),t.createElement(l.x,{display:"flex",position:"absolute",right:0,top:0},t.createElement(p.h,{icon:t.createElement(a.Z,null),"aria-label":L({id:"global.close",defaultMessage:"Close"}),onClick:D})))))):null}g.defaultProps={isOpen:!1},g.propTypes={children:v().node.isRequired,isOpen:v().bool,onClose:v().func.isRequired}},4238:function(S,m,e){"use strict";e.d(m,{Z:function(){return p}});var t=e(32735),r=e(19565),n=e(60216),s=e.n(n),u=e(15062),l=e(30305);function p({children:d}){const a=(0,u.v9)(l._);return t.createElement(r.O4,{permissions:a.settings.users.main},d)}p.propTypes={children:s().node.isRequired}},45594:function(S,m,e){"use strict";e.d(m,{U:function(){return Z}});var t=e(32735),r=e(72850),n=e(87933),s=e(19565),u=e(60216),l=e.n(u),p=e(67879),d=e(15062),a=e(8471),o=e(77061),v=e(49372),E=e(86308);const i=(0,a.ZP)(E.Z)`
11
- > circle {
12
- fill: ${({theme:y})=>y.colors.neutral150};
13
- }
14
- > path {
15
- fill: ${({theme:y})=>y.colors.neutral600};
16
- }
17
- `,c=(0,a.ZP)(r.x)`
18
- border-radius: 26px;
19
-
20
- svg {
21
- height: ${({theme:y})=>y.spaces[6]};
22
- width: ${({theme:y})=>y.spaces[6]};
23
-
24
- > path {
25
- fill: ${({theme:y})=>y.colors.neutral600};
26
- }
27
- }
28
-
29
- &:hover {
30
- color: ${({theme:y})=>y.colors.primary600} !important;
31
- ${v.Z} {
32
- color: ${({theme:y})=>y.colors.primary600} !important;
33
- }
34
-
35
- ${i} {
36
- > circle {
37
- fill: ${({theme:y})=>y.colors.primary600};
38
- }
39
- > path {
40
- fill: ${({theme:y})=>y.colors.neutral100};
41
- }
42
- }
43
- }
44
-
45
- &:active {
46
- ${v.Z} {
47
- color: ${({theme:y})=>y.colors.primary600};
48
- }
49
-
50
- ${i} {
51
- > circle {
52
- fill: ${({theme:y})=>y.colors.primary600};
53
- }
54
- > path {
55
- fill: ${({theme:y})=>y.colors.neutral100};
56
- }
57
- }
58
- }
59
- `;function f({children:y,...B}){return t.createElement(c,{as:"button",background:"neutral0",border:"neutral150",paddingBottom:3,paddingLeft:4,paddingRight:4,paddingTop:3,shadow:"filterShadow",...B},t.createElement(n.k,{gap:2},t.createElement(i,{"aria-hidden":!0}),t.createElement(v.Z,{variant:"pi",fontWeight:"bold",textColor:"neutral500"},y)))}f.propTypes={children:l().node.isRequired};var w=e(3685),x=e(83828),P=e(61762),R=e(50563),M=e(89966),O=e(15335),g=e(5803),T=e(10369),h=e(77035),D=e(4038),L=e(47081),C=e(92802),I=e(51968),U=e(69242),k=e(97724),$=e(2121),N=e(68886);const X=(0,N.s)();function J(){return t.createElement(r.x,{background:"primary100",borderStyle:"dashed",borderColor:"primary600",borderWidth:"1px",display:"block",hasRadius:!0,padding:6,shadow:"tableShadow"})}function G({id:y,index:B,canDelete:q,canReorder:_,isOpen:K=!1,stagesCount:ee}){const b=A=>`${A+1} of ${ee}`,oe=A=>{z(W({id:"dnd.grab-item",defaultMessage:"{item}, grabbed. Current position in list: {position}. Press up and down arrow to change position, Spacebar to drop, Escape to cancel."},{item:j.value,position:b(A)}))},se=A=>{z(W({id:"dnd.drop-item",defaultMessage:"{item}, dropped. Final position in list: {position}."},{item:j.value,position:b(A)}))},ie=()=>{z(W({id:"dnd.cancel-item",defaultMessage:"{item}, dropped. Re-order cancelled."},{item:j.value}))},le=(A,F)=>{z(W({id:"dnd.reorder",defaultMessage:"{item}, moved. New position in list: {position}."},{item:j.value,position:b(A)})),Q((0,o.FP)(F,A))},[ne,z]=t.useState(null),{formatMessage:W}=(0,p.Z)(),{trackUsage:de}=(0,s.rS)(),Q=(0,d.I0)(),[te,ce]=t.useState(K),[j,ue,me]=(0,C.U$)(`stages.${B}.name`),[Y,fe,ge]=(0,C.U$)(`stages.${B}.color`),[{handlerId:pe,isDragging:ve,handleKeyDown:he},Ee,ye,Te,ae]=(0,U.Y9)(_,{index:B,item:{name:j.value},onGrabItem:oe,onDropItem:se,onMoveItem:le,onCancel:ie,type:$.uL.STAGE}),Se=(0,k.FE)(Ee,ye),xe=X.map(({hex:A,name:F})=>({value:A,label:W({id:"Settings.review-workflows.stage.color.name",defaultMessage:"{name}"},{name:F}),color:A}));t.useEffect(()=>{ae((0,I.rX)(),{captureDraggingState:!1})},[ae,B]);const{themeColorName:Me}=(0,N.k)(Y.value)??{};return t.createElement(r.x,{ref:Se},ne&&t.createElement(w.T,{"aria-live":"assertive"},ne),ve?t.createElement(J,null):t.createElement(x.U,{size:"S",variant:"primary",onToggle:()=>{ce(!te),te||de("willEditStage")},expanded:te,shadow:"tableShadow"},t.createElement(P.B,{title:j.value,togglePosition:"left",action:t.createElement(n.k,null,q&&t.createElement(R.h,{background:"transparent",icon:t.createElement(D.Z,null),label:W({id:"Settings.review-workflows.stage.delete",defaultMessage:"Delete stage"}),noBorder:!0,onClick:()=>Q((0,o._V)(y))}),t.createElement(R.h,{background:"transparent",forwardedAs:"div",role:"button",noBorder:!0,tabIndex:0,"data-handler-id":pe,ref:Te,label:W({id:"Settings.review-workflows.stage.drag",defaultMessage:"Drag"}),onClick:A=>A.stopPropagation(),onKeyDown:he},t.createElement(L.Z,null)))}),t.createElement(M.v,{padding:6,background:"neutral0",hasRadius:!0},t.createElement(O.r,{gap:4},t.createElement(g.P,{col:6},t.createElement(T.o,{...j,id:j.name,label:W({id:"Settings.review-workflows.stage.name.label",defaultMessage:"Stage name"}),error:ue.error??!1,onChange:A=>{me.setValue(A.target.value),Q((0,o.xn)(y,{name:A.target.value}))},required:!0})),t.createElement(g.P,{col:6},t.createElement(h.q4,{error:fe?.error??!1,id:Y.name,required:!0,label:W({id:"content-manager.reviewWorkflows.stage.color",defaultMessage:"Color"}),onChange:A=>{ge.setValue(A),Q((0,o.xn)(y,{color:A}))},value:Y.value.toUpperCase(),startIcon:t.createElement(n.k,{as:"span",height:2,background:Y.value,borderColor:Me==="neutral0"?"neutral150":"transparent",hasRadius:!0,shrink:0,width:2})},xe.map(({value:A,label:F,color:re})=>{const{themeColorName:we}=(0,N.k)(re);return t.createElement(h.ag,{value:A,key:A,startIcon:t.createElement(n.k,{as:"span",height:2,background:re,borderColor:we==="neutral0"?"neutral150":"transparent",hasRadius:!0,shrink:0,width:2})},F)})))))))}G.propTypes=l().shape({id:l().number.isRequired,color:l().string.isRequired,canDelete:l().bool.isRequired,canReorder:l().bool.isRequired,stagesCount:l().number.isRequired}).isRequired;const V=(0,a.ZP)(r.x)`
60
- position: relative;
61
- `,H=(0,a.ZP)(r.x)`
62
- left: 50%;
63
- position: absolute;
64
- top: 0;
65
- transform: translateX(-50%);
66
- `;function Z({stages:y}){const{formatMessage:B}=(0,p.Z)(),q=(0,d.I0)(),{trackUsage:_}=(0,s.rS)();return t.createElement(n.k,{direction:"column",gap:6,width:"100%"},t.createElement(V,{spacing:4,width:"100%"},t.createElement(H,{background:"neutral200",height:"100%",width:2,zIndex:1}),t.createElement(n.k,{direction:"column",alignItems:"stretch",gap:6,zIndex:2,position:"relative",as:"ol"},y.map((K,ee)=>{const b=K?.id??K.__temp_key__;return t.createElement(r.x,{key:`stage-${b}`,as:"li"},t.createElement(G,{id:b,index:ee,canDelete:y.length>1,isOpen:!K.id,canReorder:y.length>1,stagesCount:y.length}))}))),t.createElement(n.k,{direction:"column",gap:6},t.createElement(f,{type:"button",onClick:()=>{q((0,o.CI)({name:""})),_("willCreateStage")}},B({id:"Settings.review-workflows.stage.add",defaultMessage:"Add new stage"}))))}Z.defaultProps={stages:[]},Z.propTypes={stages:l().arrayOf(l().shape({id:l().number,__temp_key__:l().number,name:l().string.isRequired}))}},165:function(S,m,e){"use strict";e.d(m,{Y:function(){return i}});var t=e(32735),r=e(15335),n=e(5803),s=e(10369),u=e(27799),l=e(19565),p=e(92802),d=e(60216),a=e.n(d),o=e(67879),v=e(15062),E=e(77061);function i({contentTypes:{collectionTypes:f,singleTypes:w}}){const{formatMessage:x,locale:P}=(0,o.Z)(),R=(0,v.I0)(),[M,O,g]=(0,p.U$)("name"),[T,h,D]=(0,p.U$)("contentTypes"),L=(0,l.Xe)(P,{sensitivity:"base"});return t.createElement(r.r,{background:"neutral0",hasRadius:!0,gap:4,padding:6,shadow:"tableShadow"},t.createElement(n.P,{col:6},t.createElement(s.o,{...M,id:M.name,label:x({id:"Settings.review-workflows.workflow.name.label",defaultMessage:"Workflow Name"}),error:O.error??!1,onChange:C=>{R((0,E.rI)({name:C.target.value})),g.setValue(C.target.value)},required:!0})),t.createElement(n.P,{col:6},t.createElement(u.Q,{...T,customizeContent:C=>x({id:"Settings.review-workflows.workflow.contentTypes.displayValue",defaultMessage:"{count} {count, plural, one {content type} other {content types}} selected"},{count:C.length}),error:h.error??!1,id:T.name,label:x({id:"Settings.review-workflows.workflow.contentTypes.label",defaultMessage:"Associated to"}),onChange:C=>{R((0,E.rI)({contentTypes:C})),D.setValue(C)},options:[{label:x({id:"Settings.review-workflows.workflow.contentTypes.collectionTypes.label",defaultMessage:"Collection Types"}),children:f.sort((C,I)=>L.compare(C.info.displayName,I.info.displayName)).map(C=>({label:C.info.displayName,value:C.uid}))},{label:x({id:"Settings.review-workflows.workflow.contentTypes.singleTypes.label",defaultMessage:"Single Types"}),children:w.map(C=>({label:C.info.displayName,value:C.uid}))}],placeholder:x({id:"Settings.review-workflows.workflow.contentTypes.placeholder",defaultMessage:"Select"})})))}const c=a().shape({uid:a().string.isRequired,info:a().shape({displayName:a().string.isRequired}).isRequired});i.propTypes={contentTypes:a().shape({collectionTypes:a().arrayOf(c).isRequired,singleTypes:a().arrayOf(c).isRequired}).isRequired}},2121:function(S,m,e){"use strict";e.d(m,{$k:function(){return d},FT:function(){return v},Nj:function(){return p},Ot:function(){return l},VS:function(){return a},gu:function(){return n},lv:function(){return o},qZ:function(){return s},sN:function(){return r},uL:function(){return E},x4:function(){return u}});var t=e(12301);const r="settings_review-workflows",n="Settings/Review_Workflows/RESET_WORKFLOW",s="Settings/Review_Workflows/SET_WORKFLOW",u="Settings/Review_Workflows/WORKFLOW_DELETE_STAGE",l="Settings/Review_Workflows/WORKFLOW_ADD_STAGE",p="Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE",d="Settings/Review_Workflows/WORKFLOW_UPDATE_STAGE_POSITION",a="Settings/Review_Workflows/WORKFLOW_UPDATE",o={primary600:"Blue",primary200:"Lilac",alternative600:"Violet",alternative200:"Lavender",success600:"Green",success200:"Pale Green",danger500:"Cherry",danger200:"Pink",warning600:"Orange",warning200:"Yellow",secondary600:"Teal",secondary200:"Baby Blue",neutral400:"Gray",neutral0:"White"},v=t.W.colors.primary600,E={STAGE:"stage"}},32329:function(S,m,e){"use strict";e.d(m,{n:function(){return n}});var t=e(19565),r=e(20108);function n(s={}){const{get:u}=(0,t.kY)(),{id:l="",...p}=s,d={populate:"stages"},{data:a,isLoading:o,status:v,refetch:E}=(0,r.useQuery)(["review-workflows","workflows",l],async()=>(await u(`/admin/review-workflows/workflows/${l}`,{params:{...d,...p}})).data);let i=[];return l&&a?.data?i=[a.data]:Array.isArray(a?.data)&&(i=a.data),{meta:a?.meta??{},workflows:i,isLoading:o,status:v,refetch:E}}},79989:function(S,m,e){"use strict";e.d(m,{E:function(){return u},I:function(){return l}});var t=e(97889),r=e(89793),n=e.n(r),s=e(2121);const u={status:"loading",serverState:{workflow:null},clientState:{currentWorkflow:{data:{name:"",contentTypes:[],stages:[{color:s.FT,name:"",__temp_key__:1}]},isDirty:!1,hasDeletedServerStages:!1}}};function l(d=u,a){return(0,t.Uy)(d,o=>{const{payload:v}=a;switch(a.type){case s.qZ:{const{status:E,workflow:i}=v;o.status=E,i&&(o.serverState.workflow=i,o.clientState.currentWorkflow.data={...i,stages:i.stages.map(c=>({...c,color:c?.color??s.FT}))}),o.clientState.currentWorkflow.hasDeletedServerStages=!1;break}case s.gu:{o.clientState.currentWorkflow.data=u.clientState.currentWorkflow.data,o.serverState=u.serverState;break}case s.x4:{const{stageId:E}=v,{currentWorkflow:i}=d.clientState;o.clientState.currentWorkflow.data.stages=i.data.stages.filter(c=>(c?.id??c.__temp_key__)!==E),i.hasDeletedServerStages||(o.clientState.currentWorkflow.hasDeletedServerStages=!!(d.serverState.currentWorkflow?.stages??[]).find(c=>c.id===E));break}case s.Ot:{const{currentWorkflow:E}=d.clientState;E.data||(o.clientState.currentWorkflow.data={stages:[]});const i=p(o.clientState.currentWorkflow.data.stages);o.clientState.currentWorkflow.data.stages.push({...v,color:v?.color??s.FT,__temp_key__:i});break}case s.Nj:{const{currentWorkflow:E}=d.clientState,{stageId:i,...c}=v;o.clientState.currentWorkflow.data.stages=E.data.stages.map(f=>(f.id??f.__temp_key__)===i?{...f,...c}:f);break}case s.$k:{const{currentWorkflow:{data:{stages:E}}}=d.clientState,{newIndex:i,oldIndex:c}=v;if(i>=0&&i<E.length){const f=E[c];let w=[...E];w.splice(c,1),w.splice(i,0,f),o.clientState.currentWorkflow.data.stages=w}break}case s.VS:{o.clientState.currentWorkflow.data={...o.clientState.currentWorkflow.data,...v};break}default:break}d.clientState.currentWorkflow.data&&o.serverState.workflow?o.clientState.currentWorkflow.isDirty=!n()((0,t.Vk)(o.clientState.currentWorkflow).data,o.serverState.workflow):o.clientState.currentWorkflow.isDirty=!0})}const p=(d=[])=>{const a=d.map(o=>o.id??o.__temp_key__);return Math.max(...a,-1)+1}},68886:function(S,m,e){"use strict";e.d(m,{k:function(){return n},s:function(){return s}});var t=e(12301),r=e(2121);function n(u){if(!u)return null;const p=Object.entries(t.W.colors).filter(([,d])=>d.toUpperCase()===u.toUpperCase()).reduce((d,[a])=>(r.lv?.[a]&&(d=a),d),null);return p?{themeColorName:p,name:r.lv[p]}:null}function s(){return Object.entries(r.lv).map(([u,l])=>({hex:t.W.colors[u].toUpperCase(),name:l}))}},94301:function(S,m,e){"use strict";e.d(m,{q:function(){return r}});var t=e(24346);function r({formatMessage:n}){return t.Ry({contentTypes:t.IX().of(t.Z_()),name:t.Z_().max(255,n({id:"Settings.review-workflows.validation.name.max-length",defaultMessage:"Name can not be longer than 255 characters"})).required(),stages:t.IX().of(t.Ry().shape({name:t.Z_().required(n({id:"Settings.review-workflows.validation.stage.name",defaultMessage:"Name is required"})).max(255,n({id:"Settings.review-workflows.validation.stage.max-length",defaultMessage:"Name can not be longer than 255 characters"})),color:t.Z_().required(n({id:"Settings.review-workflows.validation.stage.color",defaultMessage:"Color is required"})).matches(/^#(?:[0-9a-fA-F]{3}){1,2}$/i)})).min(1)})}},51355:function(S,m,e){var t=e(94318),r=e(3387),n="[object Boolean]";function s(u){return u===!0||u===!1||r(u)&&t(u)==n}S.exports=s},95919:function(S,m,e){var t=e(80022);function r(n){return t(n)&&n!=+n}S.exports=r},80022:function(S,m,e){var t=e(94318),r=e(3387),n="[object Number]";function s(u){return typeof u=="number"||r(u)&&t(u)==n}S.exports=s},59578:function(S,m,e){var t=e(41119);function r(n){return t(n).toLowerCase()}S.exports=r},83828:function(S,m,e){"use strict";e.d(m,{U:function(){return E},y:function(){return o}});var t=e(74512),r=e(32735),n=e(8471),s=e(91045),u=e(74971),l=e(49372),p=e(87933),d=e(72850);const a=({theme:i,expanded:c,variant:f,disabled:w,error:x})=>x?`1px solid ${i.colors.danger600} !important`:w?`1px solid ${i.colors.neutral150}`:c?`1px solid ${i.colors.primary600}`:f==="primary"?`1px solid ${i.colors.neutral0}`:`1px solid ${i.colors.neutral100}`,o=(0,n.ZP)(l.Z)``,v=(0,n.ZP)(d.x)`
67
- border: ${a};
68
-
69
- &:hover:not([aria-disabled='true']) {
70
- border: 1px solid ${({theme:i})=>i.colors.primary600};
71
-
72
- ${o} {
73
- color: ${({theme:i,expanded:c})=>c?void 0:i.colors.primary700};
74
- }
75
-
76
- ${l.Z} {
77
- color: ${({theme:i,expanded:c})=>c?void 0:i.colors.primary600};
78
- }
79
-
80
- & > ${p.k} {
81
- background: ${({theme:i})=>i.colors.primary100};
82
- }
83
-
84
- [data-strapi-dropdown='true'] {
85
- background: ${({theme:i})=>i.colors.primary200};
86
- }
87
- }
88
- `,E=({children:i,disabled:c=!1,error:f,expanded:w=!1,hasErrorMessage:x=!0,id:P,onToggle:R,toggle:M,size:O="M",variant:g="primary",shadow:T})=>{const h=(0,u.M)(P),D=r.useMemo(()=>({expanded:w,onToggle:R,toggle:M,id:h,size:O,variant:g,disabled:c}),[c,w,h,R,O,M,g]);return(0,t.jsxs)(s.S.Provider,{value:D,children:[(0,t.jsx)(v,{"data-strapi-expanded":w,disabled:c,"aria-disabled":c,expanded:w,hasRadius:!0,variant:g,error:f,shadow:T,children:i}),f&&x&&(0,t.jsx)(d.x,{paddingTop:1,children:(0,t.jsx)(l.Z,{variant:"pi",textColor:"danger600",children:f})})]})}},89966:function(S,m,e){"use strict";e.d(m,{v:function(){return s}});var t=e(74512),r=e(91045),n=e(72850);const s=({children:u,...l})=>{const{expanded:p,id:d}=(0,r.A)();if(!p)return null;const a=`accordion-content-${d}`,o=`accordion-label-${d}`,v=`accordion-desc-${d}`;return(0,t.jsx)(n.x,{role:"region",id:a,"aria-labelledby":o,"aria-describedby":v,...l,children:u})}},91045:function(S,m,e){"use strict";e.d(m,{A:function(){return n},S:function(){return r}});var t=e(32735);const r=(0,t.createContext)({disabled:!1,expanded:!1,id:"",size:"M",variant:"primary"}),n=()=>(0,t.useContext)(r)},61762:function(S,m,e){"use strict";e.d(m,{B:function(){return i}});var t=e(74512),r=e(16899),n=e(8471),s=e(83828),u=e(91045);const l=({expanded:c,disabled:f,variant:w})=>{let x="neutral100";return c?x="primary100":f?x="neutral150":w==="primary"&&(x="neutral0"),x};var p=e(7563),d=e(99140),a=e(87933),o=e(49372);const v=(0,n.ZP)(p.A)`
89
- text-align: left;
90
-
91
- // necessary to make the ellipsis prop work on the title
92
- > span {
93
- max-width: 100%;
94
- }
95
-
96
- svg {
97
- width: ${14/16}rem;
98
- height: ${14/16}rem;
99
-
100
- path {
101
- fill: ${({theme:c,expanded:f})=>f?c.colors.primary600:c.colors.neutral500};
102
- }
103
- }
104
- `,E=(0,n.ZP)(a.k)`
105
- min-height: ${({theme:c,size:f})=>c.sizes.accordions[f]};
106
- border-radius: ${({theme:c,expanded:f})=>f?`${c.borderRadius} ${c.borderRadius} 0 0`:c.borderRadius};
107
-
108
- &:hover {
109
- svg {
110
- path {
111
- fill: ${({theme:c})=>c.colors.primary600};
112
- }
113
- }
114
- }
115
- `,i=({title:c,description:f,as:w="span",togglePosition:x="right",action:P,...R})=>{const{onToggle:M,toggle:O,expanded:g,id:T,size:h,variant:D,disabled:L}=(0,u.A)(),C=`accordion-content-${T}`,I=`accordion-label-${T}`,U=`accordion-desc-${T}`,k=h==="M"?6:4,$=h==="M"?k:k-2,N=l({expanded:g,disabled:L,variant:D}),X={as:w,fontWeight:h==="S"?"bold":void 0,id:I,textColor:g?"primary600":"neutral700",ellipsis:!0,variant:h==="M"?"delta":void 0},J=g?"primary600":"neutral600",G=g?"primary200":"neutral200",V=h==="M"?`${32/16}rem`:`${24/16}rem`,H=()=>{L||(O&&!M?(console.warn('Deprecation warning: Usage of "toggle" prop in Accordion component is deprecated. This is discouraged and will be removed in the next major release. Please use "onToggle" instead'),O()):M&&M())},Z=(0,t.jsx)(a.k,{justifyContent:"center",borderRadius:"50%",height:V,width:V,transform:g?"rotate(180deg)":void 0,"data-strapi-dropdown":!0,"aria-hidden":!0,as:"span",background:G,cursor:L?"not-allowed":"pointer",onClick:H,shrink:0,children:(0,t.jsx)(d.J,{as:r.Z,width:h==="M"?`${11/16}rem`:`${8/16}rem`,color:g?"primary600":"neutral600"})});return(0,t.jsx)(E,{paddingBottom:$,paddingLeft:k,paddingRight:k,paddingTop:$,background:N,expanded:g,size:h,justifyContent:"space-between",cursor:L?"not-allowed":"",children:(0,t.jsxs)(a.k,{gap:3,flex:1,maxWidth:"100%",children:[x==="left"&&Z,(0,t.jsx)(v,{onClick:H,"aria-disabled":L,"aria-expanded":g,"aria-controls":C,"aria-labelledby":I,"data-strapi-accordion-toggle":!0,expanded:g,type:"button",flex:1,minWidth:0,...R,children:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.y,{...X,children:c}),f&&(0,t.jsx)(o.Z,{as:"p",id:U,textColor:J,children:f})]})}),x==="right"&&(0,t.jsxs)(a.k,{gap:3,children:[Z,P]}),x==="left"&&P]})})}},27799:function(S,m,e){"use strict";e.d(m,{Q:function(){return s}});var t=e(74512),r=e(8471),n=e(6407);const s=({options:l,...p})=>(0,t.jsx)(n.NU,{...p,children:l.map(d=>"children"in d?(0,t.jsx)(n.Ab,{label:d.label,values:d.children.map(a=>a.value.toString()),children:d.children.map(a=>(0,t.jsx)(u,{value:a.value,children:a.label},a.value))},d.label):(0,t.jsx)(n.ML,{value:d.value,children:d.label},d.value))}),u=(0,r.ZP)(n.ML)`
116
- padding-left: ${({theme:l})=>l.spaces[7]};
117
- `},29439:function(S,m,e){"use strict";e.d(m,{Z:function(){return n}});var t=e(74512);const r=s=>(0,t.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...s,children:(0,t.jsx)("path",{fill:"#212134",d:"M24 13.3a.2.2 0 0 1-.2.2H5.74l8.239 8.239a.2.2 0 0 1 0 .282L12.14 23.86a.2.2 0 0 1-.282 0L.14 12.14a.2.2 0 0 1 0-.282L11.86.14a.2.2 0 0 1 .282 0L13.98 1.98a.2.2 0 0 1 0 .282L5.74 10.5H23.8c.11 0 .2.09.2.2v2.6Z"})}),n=r},47081:function(S,m,e){"use strict";e.d(m,{Z:function(){return n}});var t=e(74512);const r=s=>(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...s,children:[(0,t.jsx)("path",{fill:"#212134",d:"M16.563 5.587a2.503 2.503 0 1 0 0-5.007 2.503 2.503 0 0 0 0 5.007Z"}),(0,t.jsx)("path",{fill:"#212134",d:"M18.487 3.083c-.012.788-.487 1.513-1.229 1.797a1.954 1.954 0 0 1-2.184-.574A1.943 1.943 0 0 1 14.9 2.11c.4-.684 1.2-1.066 1.981-.927a1.954 1.954 0 0 1 1.606 1.9c.011.748 1.17.748 1.158 0A3.138 3.138 0 0 0 17.565.17c-1.176-.423-2.567-.03-3.36.933-.83 1.002-.968 2.45-.284 3.575.678 1.124 1.993 1.674 3.273 1.431 1.432-.272 2.428-1.593 2.451-3.019.012-.753-1.147-.753-1.158-.006ZM16.563 14.372a2.503 2.503 0 1 0 0-5.007 2.503 2.503 0 0 0 0 5.007Z"}),(0,t.jsx)("path",{fill:"#212134",d:"M18.487 11.867c-.012.789-.487 1.513-1.229 1.797a1.954 1.954 0 0 1-2.184-.574 1.943 1.943 0 0 1-.174-2.196c.4-.684 1.2-1.066 1.981-.927.928.156 1.588.968 1.606 1.9.011.748 1.17.748 1.158 0a3.138 3.138 0 0 0-2.08-2.914c-1.176-.423-2.567-.029-3.36.933-.83 1.002-.968 2.45-.284 3.575.678 1.124 1.993 1.675 3.273 1.431 1.432-.272 2.428-1.593 2.451-3.019.012-.753-1.147-.753-1.158-.005ZM16.563 23.392a2.503 2.503 0 1 0 0-5.006 2.503 2.503 0 0 0 0 5.006Z"}),(0,t.jsx)("path",{fill:"#212134",d:"M18.487 20.89c-.012.787-.487 1.512-1.229 1.796a1.954 1.954 0 0 1-2.184-.574 1.943 1.943 0 0 1-.174-2.196c.4-.684 1.2-1.066 1.981-.927.928.156 1.588.967 1.606 1.9.011.748 1.17.748 1.158 0a3.138 3.138 0 0 0-2.08-2.914c-1.176-.423-2.567-.03-3.36.933-.83 1.002-.968 2.45-.284 3.575.678 1.124 1.993 1.674 3.273 1.431 1.432-.272 2.428-1.593 2.451-3.019.012-.753-1.147-.753-1.158-.006ZM7.378 5.622a2.503 2.503 0 1 0 0-5.007 2.503 2.503 0 0 0 0 5.007Z"}),(0,t.jsx)("path",{fill:"#212134",d:"M9.302 3.119c-.011.788-.486 1.512-1.228 1.796a1.954 1.954 0 0 1-2.185-.574 1.943 1.943 0 0 1-.173-2.196c.4-.684 1.199-1.066 1.981-.927a1.943 1.943 0 0 1 1.605 1.9c.012.748 1.17.748 1.16 0A3.138 3.138 0 0 0 8.38.205c-1.176-.423-2.567-.029-3.36.933-.83 1.002-.968 2.45-.285 3.575.678 1.124 1.994 1.675 3.274 1.431 1.431-.272 2.428-1.593 2.451-3.019.012-.753-1.147-.753-1.159-.005ZM7.378 14.406a2.503 2.503 0 1 0 0-5.006 2.503 2.503 0 0 0 0 5.006Z"}),(0,t.jsx)("path",{fill:"#212134",d:"M9.302 11.902c-.011.788-.486 1.513-1.228 1.797a1.954 1.954 0 0 1-2.185-.574 1.943 1.943 0 0 1-.173-2.196c.4-.684 1.199-1.066 1.981-.927a1.943 1.943 0 0 1 1.605 1.9c.012.748 1.17.748 1.16 0A3.138 3.138 0 0 0 8.38 8.988c-1.176-.423-2.567-.03-3.36.933-.83 1.002-.968 2.45-.285 3.575.678 1.124 1.994 1.674 3.274 1.431 1.431-.272 2.428-1.593 2.451-3.019.012-.753-1.147-.753-1.159-.006ZM7.378 23.427a2.503 2.503 0 1 0 0-5.007 2.503 2.503 0 0 0 0 5.007Z"}),(0,t.jsx)("path",{fill:"#212134",d:"M9.302 20.924c-.011.788-.486 1.513-1.228 1.797a1.954 1.954 0 0 1-2.185-.574 1.943 1.943 0 0 1-.173-2.196c.4-.684 1.199-1.066 1.981-.927.933.156 1.594.967 1.605 1.9.012.748 1.17.748 1.16 0A3.139 3.139 0 0 0 8.38 18.01c-1.176-.423-2.567-.03-3.36.933-.83 1.002-.968 2.45-.285 3.569.678 1.124 1.994 1.675 3.274 1.431 1.431-.272 2.428-1.593 2.451-3.019.012-.747-1.147-.747-1.159 0Z"})]}),n=r},86308:function(S,m,e){"use strict";e.d(m,{Z:function(){return n}});var t=e(74512);const r=s=>(0,t.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1rem",height:"1rem",fill:"none",viewBox:"0 0 24 24",...s,children:[(0,t.jsx)("circle",{cx:12,cy:12,r:12,fill:"#212134"}),(0,t.jsx)("path",{fill:"#F6F6F9",d:"M17 12.569c0 .124-.1.224-.225.224h-3.981v3.982c0 .124-.101.225-.226.225h-1.136a.225.225 0 0 1-.226-.225v-3.981H7.226A.225.225 0 0 1 7 12.567v-1.136c0-.125.1-.226.225-.226h3.982V7.226c0-.124.1-.225.224-.225h1.138c.124 0 .224.1.224.225v3.982h3.982c.124 0 .225.1.225.224v1.138Z"})]}),n=r}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_strapi_admin=self.webpackChunk_strapi_admin||[]).push([[6158],{76158:function(n,a,e){e.r(a),e.d(a,{REVIEW_WORKFLOW_COLUMNS_EE:function(){return t}});var s=e(7921);const t={key:"__strapi_reviewWorkflows_stage_temp_key__",name:"strapi_reviewWorkflows_stage",fieldSchema:{type:"relation"},metadatas:{label:{id:(0,s.Z)("containers.ListPage.table-headers.reviewWorkflows.stage"),defaultMessage:"Review stage"},searchable:!1,sortable:!0,mainField:{name:"name",schema:{type:"string"}}}}}}]);