@strapi/review-workflows 5.48.1 → 5.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) 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 +3 -2
  6. package/dist/admin/routes/content-manager/model/components/AssigneeFilter.js.map +1 -1
  7. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js +3 -2
  8. package/dist/admin/routes/content-manager/model/id/components/AssigneeSelect.js.map +1 -1
  9. package/dist/admin/routes/content-manager/model/id/components/StageSelect.js +3 -2
  10. package/dist/admin/routes/content-manager/model/id/components/StageSelect.js.map +1 -1
  11. package/dist/admin/routes/settings/components/Stages.js +3 -2
  12. package/dist/admin/routes/settings/components/Stages.js.map +1 -1
  13. package/dist/admin/routes/settings/hooks/useDragAndDrop.js +3 -2
  14. package/dist/admin/routes/settings/hooks/useDragAndDrop.js.map +1 -1
  15. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js +3 -2
  16. package/dist/admin/routes/settings/hooks/useKeyboardDragAndDrop.js.map +1 -1
  17. package/dist/admin/routes/settings/hooks/useReviewWorkflows.js +3 -2
  18. package/dist/admin/routes/settings/hooks/useReviewWorkflows.js.map +1 -1
  19. package/dist/admin/routes/settings/id.js +4 -3
  20. package/dist/admin/routes/settings/id.js.map +1 -1
  21. package/dist/admin/routes/settings/index.js +3 -2
  22. package/dist/admin/routes/settings/index.js.map +1 -1
  23. package/dist/admin/src/components/LimitsModal.d.ts +2 -2
  24. package/dist/admin/src/routes/settings/hooks/useDragAndDrop.d.ts +4 -4
  25. package/dist/admin/src/routes/settings/hooks/useKeyboardDragAndDrop.d.ts +1 -1
  26. package/dist/admin/src/routes/settings/hooks/useReviewWorkflows.d.ts +2 -2
  27. package/dist/admin/src/services/content-manager.d.ts +7 -7
  28. package/dist/admin/src/services/settings.d.ts +75 -75
  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/server/controllers/stages.js +0 -2
  35. package/dist/server/controllers/stages.js.map +1 -1
  36. package/dist/server/controllers/stages.mjs +0 -2
  37. package/dist/server/controllers/stages.mjs.map +1 -1
  38. package/dist/server/controllers/workflows.js +0 -4
  39. package/dist/server/controllers/workflows.js.map +1 -1
  40. package/dist/server/controllers/workflows.mjs +0 -4
  41. package/dist/server/controllers/workflows.mjs.map +1 -1
  42. package/dist/server/migrations/shorten-stage-attribute.js +5 -1
  43. package/dist/server/migrations/shorten-stage-attribute.js.map +1 -1
  44. package/dist/server/src/bootstrap.d.ts.map +1 -1
  45. package/dist/server/src/controllers/index.d.ts +3 -4
  46. package/dist/server/src/controllers/index.d.ts.map +1 -1
  47. package/dist/server/src/controllers/stages.d.ts +1 -3
  48. package/dist/server/src/controllers/stages.d.ts.map +1 -1
  49. package/dist/server/src/controllers/workflows.d.ts +2 -6
  50. package/dist/server/src/controllers/workflows.d.ts.map +1 -1
  51. package/dist/server/src/destroy.d.ts.map +1 -1
  52. package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -1
  53. package/dist/server/src/homepage/controllers/index.d.ts +2 -1
  54. package/dist/server/src/homepage/controllers/index.d.ts.map +1 -1
  55. package/dist/server/src/homepage/index.d.ts +1 -1
  56. package/dist/server/src/homepage/services/homepage.d.ts +1 -1
  57. package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
  58. package/dist/server/src/homepage/services/index.d.ts +1 -1
  59. package/dist/server/src/index.d.ts +11 -12
  60. package/dist/server/src/index.d.ts.map +1 -1
  61. package/dist/server/src/register.d.ts.map +1 -1
  62. package/dist/server/src/routes/utils.d.ts.map +1 -1
  63. package/dist/server/src/services/assignees.d.ts.map +1 -1
  64. package/dist/server/src/services/index.d.ts +8 -8
  65. package/dist/server/src/services/index.d.ts.map +1 -1
  66. package/dist/server/src/services/metrics/index.d.ts.map +1 -1
  67. package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -1
  68. package/dist/server/src/services/stage-permissions.d.ts.map +1 -1
  69. package/dist/server/src/services/stages.d.ts.map +1 -1
  70. package/dist/server/src/services/validation.d.ts.map +1 -1
  71. package/dist/server/src/services/workflow-content-types.d.ts.map +1 -1
  72. package/dist/server/src/services/workflows.d.ts.map +1 -1
  73. package/dist/server/src/utils/index.d.ts.map +1 -1
  74. package/dist/server/src/utils/review-workflows.d.ts.map +1 -1
  75. package/dist/server/src/validation/review-workflows.d.ts +10 -10
  76. package/dist/server/src/validation/review-workflows.d.ts.map +1 -1
  77. package/package.json +7 -7
@@ -16,6 +16,7 @@ function __variableDynamicImportRuntime3__(path) {
16
16
  case './translations/en.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/en.json.js')); });
17
17
  case './translations/es.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/es.json.js')); });
18
18
  case './translations/fr.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/fr.json.js')); });
19
+ case './translations/ja.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/ja.json.js')); });
19
20
  case './translations/nl.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/nl.json.js')); });
20
21
  case './translations/pl.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/pl.json.js')); });
21
22
  case './translations/ru.json': return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./translations/ru.json.js')); });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { SealCheck } from '@strapi/icons';\n\nimport { PLUGIN_ID, FEATURE_ID } from './constants';\nimport { Header } from './routes/content-manager/model/id/components/Header';\nimport { Panel } from './routes/content-manager/model/id/components/Panel';\nimport { addColumnToTableHook, addFilterToListViewHook } from './utils/cm-hooks';\nimport { prefixPluginTranslations } from './utils/translations';\n\nimport type { StrapiApp, WidgetArgs } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n app.registerHook('Admin/CM/pages/ListView/inject-in-filters', addFilterToListViewHook);\n\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([Panel]);\n }\n\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./router').then((mod) => ({\n default: mod.Router,\n }));\n },\n });\n\n // Always put the assigned to me widget last in the list of widgets\n app.widgets.register((widgets: WidgetArgs[]) => [\n ...widgets,\n {\n icon: SealCheck,\n title: {\n id: `${PLUGIN_ID}.widget.assigned.title`,\n defaultMessage: 'Assigned to me',\n },\n component: async () => {\n const { AssignedWidget } = await import('./components/Widgets');\n return AssignedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'assigned',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n },\n ]);\n } else if (!window.strapi.features.isEnabled(FEATURE_ID) && window.strapi?.flags?.promoteEE) {\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `purchase-review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./routes/purchase-review-workflows').then((mod) => ({\n default: mod.PurchaseReviewWorkflows,\n }));\n },\n });\n }\n },\n bootstrap(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.getPlugin('content-manager').injectComponent('preview', 'actions', {\n name: 'review-workflows-assignee',\n Component: Header,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","window","strapi","features","isEnabled","FEATURE_ID","registerHook","addColumnToTableHook","addFilterToListViewHook","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","Panel","addSettingsLink","id","PLUGIN_ID","to","intlLabel","defaultMessage","licenseOnly","permissions","Component","then","mod","default","Router","widgets","icon","SealCheck","title","component","AssignedWidget","pluginId","action","flags","promoteEE","PurchaseReviewWorkflows","bootstrap","injectComponent","name","Header","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../admin/src/index.ts"],"sourcesContent":["import { SealCheck } from '@strapi/icons';\n\nimport { PLUGIN_ID, FEATURE_ID } from './constants';\nimport { Header } from './routes/content-manager/model/id/components/Header';\nimport { Panel } from './routes/content-manager/model/id/components/Panel';\nimport { addColumnToTableHook, addFilterToListViewHook } from './utils/cm-hooks';\nimport { prefixPluginTranslations } from './utils/translations';\n\nimport type { StrapiApp, WidgetArgs } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n app.registerHook('Admin/CM/pages/ListView/inject-in-filters', addFilterToListViewHook);\n\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([Panel]);\n }\n\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./router').then((mod) => ({\n default: mod.Router,\n }));\n },\n });\n\n // Always put the assigned to me widget last in the list of widgets\n app.widgets.register((widgets: WidgetArgs[]) => [\n ...widgets,\n {\n icon: SealCheck,\n title: {\n id: `${PLUGIN_ID}.widget.assigned.title`,\n defaultMessage: 'Assigned to me',\n },\n component: async () => {\n const { AssignedWidget } = await import('./components/Widgets');\n return AssignedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'assigned',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n },\n ]);\n } else if (!window.strapi.features.isEnabled(FEATURE_ID) && window.strapi?.flags?.promoteEE) {\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `purchase-review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./routes/purchase-review-workflows').then((mod) => ({\n default: mod.PurchaseReviewWorkflows,\n }));\n },\n });\n }\n },\n bootstrap(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.getPlugin('content-manager').injectComponent('preview', 'actions', {\n name: 'review-workflows-assignee',\n Component: Header,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","window","strapi","features","isEnabled","FEATURE_ID","registerHook","addColumnToTableHook","addFilterToListViewHook","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","Panel","addSettingsLink","id","PLUGIN_ID","to","intlLabel","defaultMessage","licenseOnly","permissions","Component","then","mod","default","Router","widgets","icon","SealCheck","title","component","AssignedWidget","pluginId","action","flags","promoteEE","PurchaseReviewWorkflows","bootstrap","injectComponent","name","Header","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -12,6 +12,7 @@ function __variableDynamicImportRuntime3__(path) {
12
12
  case './translations/en.json': return import('./translations/en.json.mjs');
13
13
  case './translations/es.json': return import('./translations/es.json.mjs');
14
14
  case './translations/fr.json': return import('./translations/fr.json.mjs');
15
+ case './translations/ja.json': return import('./translations/ja.json.mjs');
15
16
  case './translations/nl.json': return import('./translations/nl.json.mjs');
16
17
  case './translations/pl.json': return import('./translations/pl.json.mjs');
17
18
  case './translations/ru.json': return import('./translations/ru.json.mjs');
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { SealCheck } from '@strapi/icons';\n\nimport { PLUGIN_ID, FEATURE_ID } from './constants';\nimport { Header } from './routes/content-manager/model/id/components/Header';\nimport { Panel } from './routes/content-manager/model/id/components/Panel';\nimport { addColumnToTableHook, addFilterToListViewHook } from './utils/cm-hooks';\nimport { prefixPluginTranslations } from './utils/translations';\n\nimport type { StrapiApp, WidgetArgs } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n app.registerHook('Admin/CM/pages/ListView/inject-in-filters', addFilterToListViewHook);\n\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([Panel]);\n }\n\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./router').then((mod) => ({\n default: mod.Router,\n }));\n },\n });\n\n // Always put the assigned to me widget last in the list of widgets\n app.widgets.register((widgets: WidgetArgs[]) => [\n ...widgets,\n {\n icon: SealCheck,\n title: {\n id: `${PLUGIN_ID}.widget.assigned.title`,\n defaultMessage: 'Assigned to me',\n },\n component: async () => {\n const { AssignedWidget } = await import('./components/Widgets');\n return AssignedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'assigned',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n },\n ]);\n } else if (!window.strapi.features.isEnabled(FEATURE_ID) && window.strapi?.flags?.promoteEE) {\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `purchase-review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./routes/purchase-review-workflows').then((mod) => ({\n default: mod.PurchaseReviewWorkflows,\n }));\n },\n });\n }\n },\n bootstrap(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.getPlugin('content-manager').injectComponent('preview', 'actions', {\n name: 'review-workflows-assignee',\n Component: Header,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","window","strapi","features","isEnabled","FEATURE_ID","registerHook","addColumnToTableHook","addFilterToListViewHook","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","Panel","addSettingsLink","id","PLUGIN_ID","to","intlLabel","defaultMessage","licenseOnly","permissions","Component","then","mod","default","Router","widgets","icon","SealCheck","title","component","AssignedWidget","pluginId","action","flags","promoteEE","PurchaseReviewWorkflows","bootstrap","injectComponent","name","Header","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { SealCheck } from '@strapi/icons';\n\nimport { PLUGIN_ID, FEATURE_ID } from './constants';\nimport { Header } from './routes/content-manager/model/id/components/Header';\nimport { Panel } from './routes/content-manager/model/id/components/Panel';\nimport { addColumnToTableHook, addFilterToListViewHook } from './utils/cm-hooks';\nimport { prefixPluginTranslations } from './utils/translations';\n\nimport type { StrapiApp, WidgetArgs } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addColumnToTableHook);\n app.registerHook('Admin/CM/pages/ListView/inject-in-filters', addFilterToListViewHook);\n\n const contentManagerPluginApis = app.getPlugin('content-manager').apis;\n\n if (\n 'addEditViewSidePanel' in contentManagerPluginApis &&\n typeof contentManagerPluginApis.addEditViewSidePanel === 'function'\n ) {\n contentManagerPluginApis.addEditViewSidePanel([Panel]);\n }\n\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./router').then((mod) => ({\n default: mod.Router,\n }));\n },\n });\n\n // Always put the assigned to me widget last in the list of widgets\n app.widgets.register((widgets: WidgetArgs[]) => [\n ...widgets,\n {\n icon: SealCheck,\n title: {\n id: `${PLUGIN_ID}.widget.assigned.title`,\n defaultMessage: 'Assigned to me',\n },\n component: async () => {\n const { AssignedWidget } = await import('./components/Widgets');\n return AssignedWidget;\n },\n pluginId: PLUGIN_ID,\n id: 'assigned',\n permissions: [{ action: 'plugin::content-manager.explorer.read' }],\n },\n ]);\n } else if (!window.strapi.features.isEnabled(FEATURE_ID) && window.strapi?.flags?.promoteEE) {\n app.addSettingsLink('global', {\n id: PLUGIN_ID,\n to: `purchase-review-workflows`,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: 'Review Workflows',\n },\n licenseOnly: true,\n permissions: [],\n Component() {\n return import('./routes/purchase-review-workflows').then((mod) => ({\n default: mod.PurchaseReviewWorkflows,\n }));\n },\n });\n }\n },\n bootstrap(app: StrapiApp) {\n if (window.strapi.features.isEnabled(FEATURE_ID)) {\n app.getPlugin('content-manager').injectComponent('preview', 'actions', {\n name: 'review-workflows-assignee',\n Component: Header,\n });\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["admin","register","app","window","strapi","features","isEnabled","FEATURE_ID","registerHook","addColumnToTableHook","addFilterToListViewHook","contentManagerPluginApis","getPlugin","apis","addEditViewSidePanel","Panel","addSettingsLink","id","PLUGIN_ID","to","intlLabel","defaultMessage","licenseOnly","permissions","Component","then","mod","default","Router","widgets","icon","SealCheck","title","component","AssignedWidget","pluginId","action","flags","promoteEE","PurchaseReviewWorkflows","bootstrap","injectComponent","name","Header","registerTrads","locales","importedTrads","Promise","all","map","locale","data","prefixPluginTranslations","catch","resolve"],"mappings":"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"}
@@ -7,7 +7,8 @@ var designSystem = require('@strapi/design-system');
7
7
  var reactIntl = require('react-intl');
8
8
  var users = require('../../../../utils/users.js');
9
9
 
10
- function _interopNamespaceDefault(e) {
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
11
12
  var n = Object.create(null);
12
13
  if (e) {
13
14
  Object.keys(e).forEach(function (k) {
@@ -24,7 +25,7 @@ function _interopNamespaceDefault(e) {
24
25
  return Object.freeze(n);
25
26
  }
26
27
 
27
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
29
 
29
30
  const PAGE_SIZE = 10;
30
31
  const AssigneeFilter = ({ name })=>{
@@ -1 +1 @@
1
- {"version":3,"file":"AssigneeFilter.js","sources":["../../../../../../admin/src/routes/content-manager/model/components/AssigneeFilter.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { type Filters, useAdminUsers, useField } from '@strapi/admin/strapi-admin';\nimport { Combobox, ComboboxOption, ComboboxProps } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getDisplayName } from '../../../../utils/users';\n\ninterface AssigneeFilterProps extends Pick<ComboboxProps, 'value' | 'onChange'> {}\n\nconst PAGE_SIZE = 10;\n\nconst AssigneeFilter = ({ name }: Filters.ValueInputProps) => {\n const [pageSize, setPageSize] = React.useState(PAGE_SIZE);\n const [hasOpened, setHasOpened] = React.useState(false);\n const { formatMessage } = useIntl();\n const field = useField(name);\n const shouldFetch = hasOpened || Boolean(field.value);\n const { data, isLoading } = useAdminUsers({ pageSize }, { skip: !shouldFetch });\n\n const handleChange = (value?: string) => {\n setPageSize(PAGE_SIZE);\n field.onChange(name, value);\n };\n\n const handleOpenChange = (isOpen?: boolean) => {\n if (isOpen && !hasOpened) {\n setHasOpened(true);\n }\n };\n\n const { pageCount = 1, page = 1 } = data?.pagination ?? {};\n const hasMoreItems = page < pageCount;\n\n const handleLoadMore = () => {\n if (!hasMoreItems) {\n return;\n }\n setPageSize((prev) => prev + PAGE_SIZE);\n };\n\n const options = React.useMemo(\n () =>\n (data?.users ?? []).map((user) => ({\n id: user.id,\n label: getDisplayName(user),\n })),\n [data?.users]\n );\n\n return (\n <Combobox\n value={field.value}\n aria-label={formatMessage({\n id: 'content-manager.components.Filters.usersSelect.label',\n defaultMessage: 'Search and select an user to filter',\n })}\n onChange={handleChange}\n onOpenChange={handleOpenChange}\n loading={isLoading}\n onLoadMore={handleLoadMore}\n hasMoreItems={hasMoreItems}\n >\n {options.map((option) => (\n <ComboboxOption key={option.id} value={option.id.toString()}>\n {option.label}\n </ComboboxOption>\n ))}\n </Combobox>\n );\n};\n\nexport { AssigneeFilter };\nexport type { AssigneeFilterProps };\n"],"names":["PAGE_SIZE","AssigneeFilter","name","pageSize","setPageSize","React","useState","hasOpened","setHasOpened","formatMessage","useIntl","field","useField","shouldFetch","Boolean","value","data","isLoading","useAdminUsers","skip","handleChange","onChange","handleOpenChange","isOpen","pageCount","page","pagination","hasMoreItems","handleLoadMore","prev","options","useMemo","users","map","user","id","label","getDisplayName","_jsx","Combobox","aria-label","defaultMessage","onOpenChange","loading","onLoadMore","option","ComboboxOption","toString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAMA,SAAAA,GAAY,EAAA;AAElB,MAAMC,cAAAA,GAAiB,CAAC,EAAEC,IAAI,EAA2B,GAAA;AACvD,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAACN,SAAAA,CAAAA;AAC/C,IAAA,MAAM,CAACO,SAAAA,EAAWC,YAAAA,CAAa,GAAGH,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACjD,MAAM,EAAEG,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,oBAAAA,CAASV,IAAAA,CAAAA;AACvB,IAAA,MAAMW,WAAAA,GAAcN,SAAAA,IAAaO,OAAAA,CAAQH,KAAAA,CAAMI,KAAK,CAAA;AACpD,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGC,yBAAAA,CAAc;AAAEf,QAAAA;KAAS,EAAG;AAAEgB,QAAAA,IAAAA,EAAM,CAACN;AAAY,KAAA,CAAA;AAE7E,IAAA,MAAMO,eAAe,CAACL,KAAAA,GAAAA;QACpBX,WAAAA,CAAYJ,SAAAA,CAAAA;QACZW,KAAAA,CAAMU,QAAQ,CAACnB,IAAAA,EAAMa,KAAAA,CAAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMO,mBAAmB,CAACC,MAAAA,GAAAA;QACxB,IAAIA,MAAAA,IAAU,CAAChB,SAAAA,EAAW;YACxBC,YAAAA,CAAa,IAAA,CAAA;AACf,QAAA;AACF,IAAA,CAAA;IAEA,MAAM,EAAEgB,SAAAA,GAAY,CAAC,EAAEC,IAAAA,GAAO,CAAC,EAAE,GAAGT,IAAAA,EAAMU,UAAAA,IAAc,EAAC;AACzD,IAAA,MAAMC,eAAeF,IAAAA,GAAOD,SAAAA;AAE5B,IAAA,MAAMI,cAAAA,GAAiB,IAAA;AACrB,QAAA,IAAI,CAACD,YAAAA,EAAc;AACjB,YAAA;AACF,QAAA;QACAvB,WAAAA,CAAY,CAACyB,OAASA,IAAAA,GAAO7B,SAAAA,CAAAA;AAC/B,IAAA,CAAA;AAEA,IAAA,MAAM8B,UAAUzB,gBAAAA,CAAM0B,OAAO,CAC3B,IACE,CAACf,IAAAA,EAAMgB,KAAAA,IAAS,EAAE,EAAEC,GAAG,CAAC,CAACC,QAAU;AACjCC,gBAAAA,EAAAA,EAAID,KAAKC,EAAE;AACXC,gBAAAA,KAAAA,EAAOC,oBAAAA,CAAeH,IAAAA;AACxB,aAAA,CAAA,CAAA,EACF;QAAClB,IAAAA,EAAMgB;AAAM,KAAA,CAAA;AAGf,IAAA,qBACEM,cAAA,CAACC,qBAAAA,EAAAA;AACCxB,QAAAA,KAAAA,EAAOJ,MAAMI,KAAK;AAClByB,QAAAA,YAAAA,EAAY/B,aAAAA,CAAc;YACxB0B,EAAAA,EAAI,sDAAA;YACJM,cAAAA,EAAgB;AAClB,SAAA,CAAA;QACApB,QAAAA,EAAUD,YAAAA;QACVsB,YAAAA,EAAcpB,gBAAAA;QACdqB,OAAAA,EAAS1B,SAAAA;QACT2B,UAAAA,EAAYhB,cAAAA;QACZD,YAAAA,EAAcA,YAAAA;AAEbG,QAAAA,QAAAA,EAAAA,OAAAA,CAAQG,GAAG,CAAC,CAACY,MAAAA,iBACZP,cAAA,CAACQ,2BAAAA,EAAAA;gBAA+B/B,KAAAA,EAAO8B,MAAAA,CAAOV,EAAE,CAACY,QAAQ,EAAA;AACtDF,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOT;AADWS,aAAAA,EAAAA,MAAAA,CAAOV,EAAE,CAAA;;AAMtC;;;;"}
1
+ {"version":3,"file":"AssigneeFilter.js","sources":["../../../../../../admin/src/routes/content-manager/model/components/AssigneeFilter.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { type Filters, useAdminUsers, useField } from '@strapi/admin/strapi-admin';\nimport { Combobox, ComboboxOption, ComboboxProps } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getDisplayName } from '../../../../utils/users';\n\ninterface AssigneeFilterProps extends Pick<ComboboxProps, 'value' | 'onChange'> {}\n\nconst PAGE_SIZE = 10;\n\nconst AssigneeFilter = ({ name }: Filters.ValueInputProps) => {\n const [pageSize, setPageSize] = React.useState(PAGE_SIZE);\n const [hasOpened, setHasOpened] = React.useState(false);\n const { formatMessage } = useIntl();\n const field = useField(name);\n const shouldFetch = hasOpened || Boolean(field.value);\n const { data, isLoading } = useAdminUsers({ pageSize }, { skip: !shouldFetch });\n\n const handleChange = (value?: string) => {\n setPageSize(PAGE_SIZE);\n field.onChange(name, value);\n };\n\n const handleOpenChange = (isOpen?: boolean) => {\n if (isOpen && !hasOpened) {\n setHasOpened(true);\n }\n };\n\n const { pageCount = 1, page = 1 } = data?.pagination ?? {};\n const hasMoreItems = page < pageCount;\n\n const handleLoadMore = () => {\n if (!hasMoreItems) {\n return;\n }\n setPageSize((prev) => prev + PAGE_SIZE);\n };\n\n const options = React.useMemo(\n () =>\n (data?.users ?? []).map((user) => ({\n id: user.id,\n label: getDisplayName(user),\n })),\n [data?.users]\n );\n\n return (\n <Combobox\n value={field.value}\n aria-label={formatMessage({\n id: 'content-manager.components.Filters.usersSelect.label',\n defaultMessage: 'Search and select an user to filter',\n })}\n onChange={handleChange}\n onOpenChange={handleOpenChange}\n loading={isLoading}\n onLoadMore={handleLoadMore}\n hasMoreItems={hasMoreItems}\n >\n {options.map((option) => (\n <ComboboxOption key={option.id} value={option.id.toString()}>\n {option.label}\n </ComboboxOption>\n ))}\n </Combobox>\n );\n};\n\nexport { AssigneeFilter };\nexport type { AssigneeFilterProps };\n"],"names":["PAGE_SIZE","AssigneeFilter","name","pageSize","setPageSize","React","useState","hasOpened","setHasOpened","formatMessage","useIntl","field","useField","shouldFetch","Boolean","value","data","isLoading","useAdminUsers","skip","handleChange","onChange","handleOpenChange","isOpen","pageCount","page","pagination","hasMoreItems","handleLoadMore","prev","options","useMemo","users","map","user","id","label","getDisplayName","_jsx","Combobox","aria-label","defaultMessage","onOpenChange","loading","onLoadMore","option","ComboboxOption","toString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAMA,SAAAA,GAAY,EAAA;AAElB,MAAMC,cAAAA,GAAiB,CAAC,EAAEC,IAAI,EAA2B,GAAA;AACvD,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAACN,SAAAA,CAAAA;AAC/C,IAAA,MAAM,CAACO,SAAAA,EAAWC,YAAAA,CAAa,GAAGH,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACjD,MAAM,EAAEG,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,oBAAAA,CAASV,IAAAA,CAAAA;AACvB,IAAA,MAAMW,WAAAA,GAAcN,SAAAA,IAAaO,OAAAA,CAAQH,KAAAA,CAAMI,KAAK,CAAA;AACpD,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGC,yBAAAA,CAAc;AAAEf,QAAAA;KAAS,EAAG;AAAEgB,QAAAA,IAAAA,EAAM,CAACN;AAAY,KAAA,CAAA;AAE7E,IAAA,MAAMO,eAAe,CAACL,KAAAA,GAAAA;QACpBX,WAAAA,CAAYJ,SAAAA,CAAAA;QACZW,KAAAA,CAAMU,QAAQ,CAACnB,IAAAA,EAAMa,KAAAA,CAAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMO,mBAAmB,CAACC,MAAAA,GAAAA;QACxB,IAAIA,MAAAA,IAAU,CAAChB,SAAAA,EAAW;YACxBC,YAAAA,CAAa,IAAA,CAAA;AACf,QAAA;AACF,IAAA,CAAA;IAEA,MAAM,EAAEgB,SAAAA,GAAY,CAAC,EAAEC,IAAAA,GAAO,CAAC,EAAE,GAAGT,IAAAA,EAAMU,UAAAA,IAAc,EAAC;AACzD,IAAA,MAAMC,eAAeF,IAAAA,GAAOD,SAAAA;AAE5B,IAAA,MAAMI,cAAAA,GAAiB,IAAA;AACrB,QAAA,IAAI,CAACD,YAAAA,EAAc;AACjB,YAAA;AACF,QAAA;QACAvB,WAAAA,CAAY,CAACyB,OAASA,IAAAA,GAAO7B,SAAAA,CAAAA;AAC/B,IAAA,CAAA;AAEA,IAAA,MAAM8B,UAAUzB,gBAAAA,CAAM0B,OAAO,CAC3B,IACE,CAACf,IAAAA,EAAMgB,KAAAA,IAAS,EAAE,EAAEC,GAAG,CAAC,CAACC,QAAU;AACjCC,gBAAAA,EAAAA,EAAID,KAAKC,EAAE;AACXC,gBAAAA,KAAAA,EAAOC,oBAAAA,CAAeH,IAAAA;AACxB,aAAA,CAAA,CAAA,EACF;QAAClB,IAAAA,EAAMgB;AAAM,KAAA,CAAA;AAGf,IAAA,qBACEM,cAAA,CAACC,qBAAAA,EAAAA;AACCxB,QAAAA,KAAAA,EAAOJ,MAAMI,KAAK;AAClByB,QAAAA,YAAAA,EAAY/B,aAAAA,CAAc;YACxB0B,EAAAA,EAAI,sDAAA;YACJM,cAAAA,EAAgB;AAClB,SAAA,CAAA;QACApB,QAAAA,EAAUD,YAAAA;QACVsB,YAAAA,EAAcpB,gBAAAA;QACdqB,OAAAA,EAAS1B,SAAAA;QACT2B,UAAAA,EAAYhB,cAAAA;QACZD,YAAAA,EAAcA,YAAAA;AAEbG,QAAAA,QAAAA,EAAAA,OAAAA,CAAQG,GAAG,CAAC,CAACY,MAAAA,iBACZP,cAAA,CAACQ,2BAAAA,EAAAA;gBAA+B/B,KAAAA,EAAO8B,MAAAA,CAAOV,EAAE,CAACY,QAAQ,EAAA;AACtDF,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOT;AADWS,aAAAA,EAAAA,MAAAA,CAAOV,EAAE,CAAA;;AAMtC;;;;"}
@@ -13,7 +13,8 @@ var api = require('../../../../../utils/api.js');
13
13
  var users = require('../../../../../utils/users.js');
14
14
  var constants = require('./constants.js');
15
15
 
16
- function _interopNamespaceDefault(e) {
16
+ function _interopNamespace(e) {
17
+ if (e && e.__esModule) return e;
17
18
  var n = Object.create(null);
18
19
  if (e) {
19
20
  Object.keys(e).forEach(function (k) {
@@ -30,7 +31,7 @@ function _interopNamespaceDefault(e) {
30
31
  return Object.freeze(n);
31
32
  }
32
33
 
33
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
34
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
34
35
 
35
36
  const PAGE_SIZE = 10;
36
37
  const contains = (value)=>({
@@ -1 +1 @@
1
- {"version":3,"file":"AssigneeSelect.js","sources":["../../../../../../../admin/src/routes/content-manager/model/id/components/AssigneeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotification,\n useAPIErrorHandler,\n useRBAC,\n useAdminUsers,\n useQueryParams,\n useDebounce,\n} from '@strapi/admin/strapi-admin';\nimport { unstable_useDocument } from '@strapi/content-manager/strapi-admin';\nimport { Combobox, ComboboxOption, Field, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../modules/hooks';\nimport { useUpdateAssigneeMutation } from '../../../../../services/content-manager';\nimport { buildValidParams } from '../../../../../utils/api';\nimport { getDisplayName } from '../../../../../utils/users';\n\nimport { ASSIGNEE_ATTRIBUTE_NAME } from './constants';\n\nimport type { Modules } from '@strapi/types';\n\nconst PAGE_SIZE = 10;\n\ntype AdminUserFilters = Modules.EntityService.Params.Pick<'admin::user', 'filters'>['filters'];\n\nconst contains = (value: string) => ({ $containsi: value });\n\nconst AssigneeSelect = ({ isCompact }: { isCompact?: boolean }) => {\n const {\n collectionType = '',\n id,\n slug: model = '',\n } = useParams<{ collectionType: string; slug: string; id: string }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const {\n allowedActions: { canRead },\n isLoading: isLoadingPermissions,\n } = useRBAC(permissions.settings?.users);\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [pageSize, setPageSize] = React.useState(PAGE_SIZE);\n const [search, setSearch] = React.useState('');\n const debouncedSearch = useDebounce(search, 300);\n const searchFilters = React.useMemo(() => {\n const value = debouncedSearch.trim();\n\n if (!value) {\n return undefined;\n }\n\n const [firstTerm, ...restTerms] = value.split(/\\s+/);\n const rest = restTerms.join(' ');\n const filters: AdminUserFilters = {\n $or: [\n { firstname: contains(value) },\n { lastname: contains(value) },\n { username: contains(value) },\n { email: contains(value) },\n ],\n };\n\n if (rest) {\n filters.$or = [\n ...(filters.$or ?? []),\n {\n $and: [{ firstname: contains(firstTerm) }, { lastname: contains(rest) }],\n },\n {\n $and: [{ firstname: contains(rest) }, { lastname: contains(firstTerm) }],\n },\n ];\n }\n\n return filters;\n }, [debouncedSearch]);\n\n const {\n data,\n isLoading: isLoadingUsers,\n isError,\n } = useAdminUsers(\n {\n pageSize,\n filters: searchFilters,\n },\n {\n skip: isLoadingPermissions || !canRead,\n }\n );\n const { document } = unstable_useDocument(\n {\n collectionType,\n model,\n documentId: id,\n params,\n },\n {\n skip: !id && collectionType !== 'single-types',\n }\n );\n\n const users = React.useMemo(() => data?.users ?? [], [data?.users]);\n const { pageCount = 1, page = 1 } = data?.pagination ?? {};\n\n const currentAssignee = document ? document[ASSIGNEE_ATTRIBUTE_NAME] : null;\n\n // Keep the currently assigned user in the options even when they fall outside\n // the loaded page or the active search — otherwise the Combobox loses its value.\n const options = React.useMemo(() => {\n if (!currentAssignee) return users;\n return users.some((u) => u.id === currentAssignee.id) ? users : [currentAssignee, ...users];\n }, [users, currentAssignee]);\n\n const handleOpenChange = (isOpen?: boolean) => {\n if (!isOpen) {\n setPageSize(PAGE_SIZE);\n setSearch('');\n }\n };\n\n const handleLoadMore = () => {\n setPageSize(pageSize + PAGE_SIZE);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n setPageSize(PAGE_SIZE);\n };\n\n const [updateAssignee, { error, isLoading: isMutating }] = useUpdateAssigneeMutation();\n\n if (!collectionType || !model || !document?.documentId) {\n return null;\n }\n\n const handleChange = async (assigneeId: string | null) => {\n // a simple way to avoid erroneous updates\n if (currentAssignee?.id === assigneeId) {\n return;\n }\n\n const res = await updateAssignee({\n slug: collectionType,\n model,\n id: document.documentId,\n params,\n data: {\n id: assigneeId ? parseInt(assigneeId, 10) : null,\n },\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'review-workflows.assignee.notification.saved',\n defaultMessage: 'Assignee updated',\n }),\n });\n }\n\n if (isCompact && 'error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n };\n\n const isDisabled =\n (!isLoadingPermissions && !isLoadingUsers && users.length === 0) || !document.documentId;\n const isLoading = isLoadingUsers || isLoadingPermissions || isMutating;\n const hasMoreItems = page < pageCount;\n\n const assigneeLabel = formatMessage({\n id: 'review-workflows.assignee.label',\n defaultMessage: 'Assignee',\n });\n const assigneeClearLabel = formatMessage({\n id: 'review-workflows.assignee.clear',\n defaultMessage: 'Clear assignee',\n });\n const assigneePlaceholder = formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n });\n\n if (isCompact) {\n return (\n <Field.Root name={ASSIGNEE_ATTRIBUTE_NAME} id={ASSIGNEE_ATTRIBUTE_NAME}>\n <VisuallyHidden>\n <Field.Label>{assigneeLabel}</Field.Label>\n </VisuallyHidden>\n <Combobox\n clearLabel={assigneeClearLabel}\n disabled={isDisabled}\n value={currentAssignee ? currentAssignee.id.toString() : null}\n onChange={handleChange}\n onClear={() => handleChange(null)}\n onOpenChange={handleOpenChange}\n onLoadMore={handleLoadMore}\n hasMoreItems={hasMoreItems}\n onInputChange={handleInputChange}\n placeholder={assigneePlaceholder}\n loading={isLoading || isLoadingPermissions || isMutating}\n size=\"S\"\n >\n {options.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id.toString()}\n textValue={getDisplayName(user)}\n >\n {getDisplayName(user)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n </Field.Root>\n );\n }\n\n return (\n <Field.Root\n name={ASSIGNEE_ATTRIBUTE_NAME}\n id={ASSIGNEE_ATTRIBUTE_NAME}\n error={\n ((isError &&\n canRead &&\n formatMessage({\n id: 'review-workflows.assignee.error',\n defaultMessage: 'An error occurred while fetching users',\n })) ||\n (error && formatAPIError(error))) ??\n undefined\n }\n >\n <Field.Label>{assigneeLabel}</Field.Label>\n <Combobox\n clearLabel={assigneeClearLabel}\n disabled={\n (!isLoadingPermissions && !isLoading && users.length === 0) || !document.documentId\n }\n value={currentAssignee ? currentAssignee.id.toString() : null}\n onChange={handleChange}\n onClear={() => handleChange(null)}\n onOpenChange={handleOpenChange}\n onLoadMore={handleLoadMore}\n hasMoreItems={hasMoreItems}\n onInputChange={handleInputChange}\n placeholder={assigneePlaceholder}\n loading={isLoading || isLoadingPermissions || isMutating}\n >\n {options.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id.toString()}\n textValue={getDisplayName(user)}\n >\n {getDisplayName(user)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n <Field.Error />\n </Field.Root>\n );\n};\n\nexport { AssigneeSelect };\n"],"names":["PAGE_SIZE","contains","value","$containsi","AssigneeSelect","isCompact","collectionType","id","slug","model","useParams","permissions","useTypedSelector","state","admin_app","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","allowedActions","canRead","isLoading","isLoadingPermissions","useRBAC","settings","users","query","useQueryParams","params","React","useMemo","buildValidParams","pageSize","setPageSize","useState","search","setSearch","debouncedSearch","useDebounce","searchFilters","trim","undefined","firstTerm","restTerms","split","rest","join","filters","$or","firstname","lastname","username","email","$and","data","isLoadingUsers","isError","useAdminUsers","skip","document","unstable_useDocument","documentId","pageCount","page","pagination","currentAssignee","ASSIGNEE_ATTRIBUTE_NAME","options","some","u","handleOpenChange","isOpen","handleLoadMore","handleInputChange","e","currentTarget","updateAssignee","error","isMutating","useUpdateAssigneeMutation","handleChange","assigneeId","res","parseInt","type","message","defaultMessage","isDisabled","length","hasMoreItems","assigneeLabel","assigneeClearLabel","assigneePlaceholder","_jsxs","Field","Root","name","_jsx","VisuallyHidden","Label","Combobox","clearLabel","disabled","toString","onChange","onClear","onOpenChange","onLoadMore","onInputChange","placeholder","loading","size","map","user","ComboboxOption","textValue","getDisplayName","Error"],"mappings":"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"}
1
+ {"version":3,"file":"AssigneeSelect.js","sources":["../../../../../../../admin/src/routes/content-manager/model/id/components/AssigneeSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useNotification,\n useAPIErrorHandler,\n useRBAC,\n useAdminUsers,\n useQueryParams,\n useDebounce,\n} from '@strapi/admin/strapi-admin';\nimport { unstable_useDocument } from '@strapi/content-manager/strapi-admin';\nimport { Combobox, ComboboxOption, Field, VisuallyHidden } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { useTypedSelector } from '../../../../../modules/hooks';\nimport { useUpdateAssigneeMutation } from '../../../../../services/content-manager';\nimport { buildValidParams } from '../../../../../utils/api';\nimport { getDisplayName } from '../../../../../utils/users';\n\nimport { ASSIGNEE_ATTRIBUTE_NAME } from './constants';\n\nimport type { Modules } from '@strapi/types';\n\nconst PAGE_SIZE = 10;\n\ntype AdminUserFilters = Modules.EntityService.Params.Pick<'admin::user', 'filters'>['filters'];\n\nconst contains = (value: string) => ({ $containsi: value });\n\nconst AssigneeSelect = ({ isCompact }: { isCompact?: boolean }) => {\n const {\n collectionType = '',\n id,\n slug: model = '',\n } = useParams<{ collectionType: string; slug: string; id: string }>();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const {\n allowedActions: { canRead },\n isLoading: isLoadingPermissions,\n } = useRBAC(permissions.settings?.users);\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [pageSize, setPageSize] = React.useState(PAGE_SIZE);\n const [search, setSearch] = React.useState('');\n const debouncedSearch = useDebounce(search, 300);\n const searchFilters = React.useMemo(() => {\n const value = debouncedSearch.trim();\n\n if (!value) {\n return undefined;\n }\n\n const [firstTerm, ...restTerms] = value.split(/\\s+/);\n const rest = restTerms.join(' ');\n const filters: AdminUserFilters = {\n $or: [\n { firstname: contains(value) },\n { lastname: contains(value) },\n { username: contains(value) },\n { email: contains(value) },\n ],\n };\n\n if (rest) {\n filters.$or = [\n ...(filters.$or ?? []),\n {\n $and: [{ firstname: contains(firstTerm) }, { lastname: contains(rest) }],\n },\n {\n $and: [{ firstname: contains(rest) }, { lastname: contains(firstTerm) }],\n },\n ];\n }\n\n return filters;\n }, [debouncedSearch]);\n\n const {\n data,\n isLoading: isLoadingUsers,\n isError,\n } = useAdminUsers(\n {\n pageSize,\n filters: searchFilters,\n },\n {\n skip: isLoadingPermissions || !canRead,\n }\n );\n const { document } = unstable_useDocument(\n {\n collectionType,\n model,\n documentId: id,\n params,\n },\n {\n skip: !id && collectionType !== 'single-types',\n }\n );\n\n const users = React.useMemo(() => data?.users ?? [], [data?.users]);\n const { pageCount = 1, page = 1 } = data?.pagination ?? {};\n\n const currentAssignee = document ? document[ASSIGNEE_ATTRIBUTE_NAME] : null;\n\n // Keep the currently assigned user in the options even when they fall outside\n // the loaded page or the active search — otherwise the Combobox loses its value.\n const options = React.useMemo(() => {\n if (!currentAssignee) return users;\n return users.some((u) => u.id === currentAssignee.id) ? users : [currentAssignee, ...users];\n }, [users, currentAssignee]);\n\n const handleOpenChange = (isOpen?: boolean) => {\n if (!isOpen) {\n setPageSize(PAGE_SIZE);\n setSearch('');\n }\n };\n\n const handleLoadMore = () => {\n setPageSize(pageSize + PAGE_SIZE);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(e.currentTarget.value);\n setPageSize(PAGE_SIZE);\n };\n\n const [updateAssignee, { error, isLoading: isMutating }] = useUpdateAssigneeMutation();\n\n if (!collectionType || !model || !document?.documentId) {\n return null;\n }\n\n const handleChange = async (assigneeId: string | null) => {\n // a simple way to avoid erroneous updates\n if (currentAssignee?.id === assigneeId) {\n return;\n }\n\n const res = await updateAssignee({\n slug: collectionType,\n model,\n id: document.documentId,\n params,\n data: {\n id: assigneeId ? parseInt(assigneeId, 10) : null,\n },\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'review-workflows.assignee.notification.saved',\n defaultMessage: 'Assignee updated',\n }),\n });\n }\n\n if (isCompact && 'error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n };\n\n const isDisabled =\n (!isLoadingPermissions && !isLoadingUsers && users.length === 0) || !document.documentId;\n const isLoading = isLoadingUsers || isLoadingPermissions || isMutating;\n const hasMoreItems = page < pageCount;\n\n const assigneeLabel = formatMessage({\n id: 'review-workflows.assignee.label',\n defaultMessage: 'Assignee',\n });\n const assigneeClearLabel = formatMessage({\n id: 'review-workflows.assignee.clear',\n defaultMessage: 'Clear assignee',\n });\n const assigneePlaceholder = formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n });\n\n if (isCompact) {\n return (\n <Field.Root name={ASSIGNEE_ATTRIBUTE_NAME} id={ASSIGNEE_ATTRIBUTE_NAME}>\n <VisuallyHidden>\n <Field.Label>{assigneeLabel}</Field.Label>\n </VisuallyHidden>\n <Combobox\n clearLabel={assigneeClearLabel}\n disabled={isDisabled}\n value={currentAssignee ? currentAssignee.id.toString() : null}\n onChange={handleChange}\n onClear={() => handleChange(null)}\n onOpenChange={handleOpenChange}\n onLoadMore={handleLoadMore}\n hasMoreItems={hasMoreItems}\n onInputChange={handleInputChange}\n placeholder={assigneePlaceholder}\n loading={isLoading || isLoadingPermissions || isMutating}\n size=\"S\"\n >\n {options.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id.toString()}\n textValue={getDisplayName(user)}\n >\n {getDisplayName(user)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n </Field.Root>\n );\n }\n\n return (\n <Field.Root\n name={ASSIGNEE_ATTRIBUTE_NAME}\n id={ASSIGNEE_ATTRIBUTE_NAME}\n error={\n ((isError &&\n canRead &&\n formatMessage({\n id: 'review-workflows.assignee.error',\n defaultMessage: 'An error occurred while fetching users',\n })) ||\n (error && formatAPIError(error))) ??\n undefined\n }\n >\n <Field.Label>{assigneeLabel}</Field.Label>\n <Combobox\n clearLabel={assigneeClearLabel}\n disabled={\n (!isLoadingPermissions && !isLoading && users.length === 0) || !document.documentId\n }\n value={currentAssignee ? currentAssignee.id.toString() : null}\n onChange={handleChange}\n onClear={() => handleChange(null)}\n onOpenChange={handleOpenChange}\n onLoadMore={handleLoadMore}\n hasMoreItems={hasMoreItems}\n onInputChange={handleInputChange}\n placeholder={assigneePlaceholder}\n loading={isLoading || isLoadingPermissions || isMutating}\n >\n {options.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id.toString()}\n textValue={getDisplayName(user)}\n >\n {getDisplayName(user)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n <Field.Error />\n </Field.Root>\n );\n};\n\nexport { AssigneeSelect };\n"],"names":["PAGE_SIZE","contains","value","$containsi","AssigneeSelect","isCompact","collectionType","id","slug","model","useParams","permissions","useTypedSelector","state","admin_app","formatMessage","useIntl","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","allowedActions","canRead","isLoading","isLoadingPermissions","useRBAC","settings","users","query","useQueryParams","params","React","useMemo","buildValidParams","pageSize","setPageSize","useState","search","setSearch","debouncedSearch","useDebounce","searchFilters","trim","undefined","firstTerm","restTerms","split","rest","join","filters","$or","firstname","lastname","username","email","$and","data","isLoadingUsers","isError","useAdminUsers","skip","document","unstable_useDocument","documentId","pageCount","page","pagination","currentAssignee","ASSIGNEE_ATTRIBUTE_NAME","options","some","u","handleOpenChange","isOpen","handleLoadMore","handleInputChange","e","currentTarget","updateAssignee","error","isMutating","useUpdateAssigneeMutation","handleChange","assigneeId","res","parseInt","type","message","defaultMessage","isDisabled","length","hasMoreItems","assigneeLabel","assigneeClearLabel","assigneePlaceholder","_jsxs","Field","Root","name","_jsx","VisuallyHidden","Label","Combobox","clearLabel","disabled","toString","onChange","onClear","onOpenChange","onLoadMore","onInputChange","placeholder","loading","size","map","user","ComboboxOption","textValue","getDisplayName","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAMA,SAAAA,GAAY,EAAA;AAIlB,MAAMC,QAAAA,GAAW,CAACC,KAAAA,IAAmB;QAAEC,UAAAA,EAAYD;KAAM,CAAA;AAEzD,MAAME,cAAAA,GAAiB,CAAC,EAAEC,SAAS,EAA2B,GAAA;IAC5D,MAAM,EACJC,cAAAA,GAAiB,EAAE,EACnBC,EAAE,EACFC,IAAAA,EAAMC,KAAAA,GAAQ,EAAE,EACjB,GAAGC,wBAAAA,EAAAA;AACJ,IAAA,MAAMC,cAAcC,sBAAAA,CAAiB,CAACC,QAAUA,KAAAA,CAAMC,SAAS,CAACH,WAAW,CAAA;IAC3E,MAAM,EAAEI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;IACpD,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EACJC,cAAAA,EAAgB,EAAEC,OAAO,EAAE,EAC3BC,SAAAA,EAAWC,oBAAoB,EAChC,GAAGC,mBAAAA,CAAQf,WAAAA,CAAYgB,QAAQ,EAAEC,KAAAA,CAAAA;AAClC,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,SAASC,gBAAAA,CAAMC,OAAO,CAAC,IAAMC,qBAAiBL,KAAAA,CAAAA,EAAQ;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEnE,IAAA,MAAM,CAACM,QAAAA,EAAUC,WAAAA,CAAY,GAAGJ,gBAAAA,CAAMK,QAAQ,CAACrC,SAAAA,CAAAA;AAC/C,IAAA,MAAM,CAACsC,MAAAA,EAAQC,SAAAA,CAAU,GAAGP,gBAAAA,CAAMK,QAAQ,CAAC,EAAA,CAAA;IAC3C,MAAMG,eAAAA,GAAkBC,wBAAYH,MAAAA,EAAQ,GAAA,CAAA;IAC5C,MAAMI,aAAAA,GAAgBV,gBAAAA,CAAMC,OAAO,CAAC,IAAA;QAClC,MAAM/B,KAAAA,GAAQsC,gBAAgBG,IAAI,EAAA;AAElC,QAAA,IAAI,CAACzC,KAAAA,EAAO;YACV,OAAO0C,SAAAA;AACT,QAAA;AAEA,QAAA,MAAM,CAACC,SAAAA,EAAW,GAAGC,UAAU,GAAG5C,KAAAA,CAAM6C,KAAK,CAAC,KAAA,CAAA;QAC9C,MAAMC,IAAAA,GAAOF,SAAAA,CAAUG,IAAI,CAAC,GAAA,CAAA;AAC5B,QAAA,MAAMC,OAAAA,GAA4B;YAChCC,GAAAA,EAAK;AACH,gBAAA;AAAEC,oBAAAA,SAAAA,EAAWnD,QAAAA,CAASC,KAAAA;AAAO,iBAAA;AAC7B,gBAAA;AAAEmD,oBAAAA,QAAAA,EAAUpD,QAAAA,CAASC,KAAAA;AAAO,iBAAA;AAC5B,gBAAA;AAAEoD,oBAAAA,QAAAA,EAAUrD,QAAAA,CAASC,KAAAA;AAAO,iBAAA;AAC5B,gBAAA;AAAEqD,oBAAAA,KAAAA,EAAOtD,QAAAA,CAASC,KAAAA;AAAO;AAC1B;AACH,SAAA;AAEA,QAAA,IAAI8C,IAAAA,EAAM;AACRE,YAAAA,OAAAA,CAAQC,GAAG,GAAG;mBACRD,OAAAA,CAAQC,GAAG,IAAI,EAAE;AACrB,gBAAA;oBACEK,IAAAA,EAAM;AAAC,wBAAA;AAAEJ,4BAAAA,SAAAA,EAAWnD,QAAAA,CAAS4C,SAAAA;AAAW,yBAAA;AAAG,wBAAA;AAAEQ,4BAAAA,QAAAA,EAAUpD,QAAAA,CAAS+C,IAAAA;AAAM;AAAE;AAC1E,iBAAA;AACA,gBAAA;oBACEQ,IAAAA,EAAM;AAAC,wBAAA;AAAEJ,4BAAAA,SAAAA,EAAWnD,QAAAA,CAAS+C,IAAAA;AAAM,yBAAA;AAAG,wBAAA;AAAEK,4BAAAA,QAAAA,EAAUpD,QAAAA,CAAS4C,SAAAA;AAAW;AAAE;AAC1E;AACD,aAAA;AACH,QAAA;QAEA,OAAOK,OAAAA;IACT,CAAA,EAAG;AAACV,QAAAA;AAAgB,KAAA,CAAA;IAEpB,MAAM,EACJiB,IAAI,EACJjC,SAAAA,EAAWkC,cAAc,EACzBC,OAAO,EACR,GAAGC,yBAAAA,CACF;AACEzB,QAAAA,QAAAA;QACAe,OAAAA,EAASR;KACX,EACA;AACEmB,QAAAA,IAAAA,EAAMpC,wBAAwB,CAACF;AACjC,KAAA,CAAA;AAEF,IAAA,MAAM,EAAEuC,QAAQ,EAAE,GAAGC,kCAAAA,CACnB;AACEzD,QAAAA,cAAAA;AACAG,QAAAA,KAAAA;QACAuD,UAAAA,EAAYzD,EAAAA;AACZwB,QAAAA;KACF,EACA;QACE8B,IAAAA,EAAM,CAACtD,MAAMD,cAAAA,KAAmB;AAClC,KAAA,CAAA;IAGF,MAAMsB,OAAAA,GAAQI,iBAAMC,OAAO,CAAC,IAAMwB,IAAAA,EAAM7B,KAAAA,IAAS,EAAE,EAAE;QAAC6B,IAAAA,EAAM7B;AAAM,KAAA,CAAA;IAClE,MAAM,EAAEqC,SAAAA,GAAY,CAAC,EAAEC,IAAAA,GAAO,CAAC,EAAE,GAAGT,IAAAA,EAAMU,UAAAA,IAAc,EAAC;AAEzD,IAAA,MAAMC,eAAAA,GAAkBN,QAAAA,GAAWA,QAAQ,CAACO,kCAAwB,GAAG,IAAA;;;IAIvE,MAAMC,OAAAA,GAAUtC,gBAAAA,CAAMC,OAAO,CAAC,IAAA;QAC5B,IAAI,CAACmC,iBAAiB,OAAOxC,OAAAA;QAC7B,OAAOA,OAAAA,CAAM2C,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAEjE,EAAE,KAAK6D,eAAAA,CAAgB7D,EAAE,CAAA,GAAIqB,OAAAA,GAAQ;AAACwC,YAAAA,eAAAA;AAAoBxC,YAAAA,GAAAA;AAAM,SAAA;IAC7F,CAAA,EAAG;AAACA,QAAAA,OAAAA;AAAOwC,QAAAA;AAAgB,KAAA,CAAA;AAE3B,IAAA,MAAMK,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,QAAA,IAAI,CAACA,MAAAA,EAAQ;YACXtC,WAAAA,CAAYpC,SAAAA,CAAAA;YACZuC,SAAAA,CAAU,EAAA,CAAA;AACZ,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMoC,cAAAA,GAAiB,IAAA;AACrBvC,QAAAA,WAAAA,CAAYD,QAAAA,GAAWnC,SAAAA,CAAAA;AACzB,IAAA,CAAA;AAEA,IAAA,MAAM4E,oBAAoB,CAACC,CAAAA,GAAAA;QACzBtC,SAAAA,CAAUsC,CAAAA,CAAEC,aAAa,CAAC5E,KAAK,CAAA;QAC/BkC,WAAAA,CAAYpC,SAAAA,CAAAA;AACd,IAAA,CAAA;IAEA,MAAM,CAAC+E,gBAAgB,EAAEC,KAAK,EAAExD,SAAAA,EAAWyD,UAAU,EAAE,CAAC,GAAGC,wCAAAA,EAAAA;AAE3D,IAAA,IAAI,CAAC5E,cAAAA,IAAkB,CAACG,KAAAA,IAAS,CAACqD,UAAUE,UAAAA,EAAY;QACtD,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMmB,eAAe,OAAOC,UAAAA,GAAAA;;QAE1B,IAAIhB,eAAAA,EAAiB7D,OAAO6E,UAAAA,EAAY;AACtC,YAAA;AACF,QAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMN,cAAAA,CAAe;YAC/BvE,IAAAA,EAAMF,cAAAA;AACNG,YAAAA,KAAAA;AACAF,YAAAA,EAAAA,EAAIuD,SAASE,UAAU;AACvBjC,YAAAA,MAAAA;YACA0B,IAAAA,EAAM;gBACJlD,EAAAA,EAAI6E,UAAAA,GAAaE,QAAAA,CAASF,UAAAA,EAAY,EAAA,CAAA,GAAM;AAC9C;AACF,SAAA,CAAA;AAEA,QAAA,IAAI,UAAUC,GAAAA,EAAK;YACjBjE,kBAAAA,CAAmB;gBACjBmE,IAAAA,EAAM,SAAA;AACNC,gBAAAA,OAAAA,EAASzE,aAAAA,CAAc;oBACrBR,EAAAA,EAAI,8CAAA;oBACJkF,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;QAEA,IAAIpF,SAAAA,IAAa,WAAWgF,GAAAA,EAAK;YAC/BjE,kBAAAA,CAAmB;gBACjBmE,IAAAA,EAAM,QAAA;gBACNC,OAAAA,EAAStE,cAAAA,CAAemE,IAAIL,KAAK;AACnC,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMU,UAAAA,GACH,CAACjE,oBAAAA,IAAwB,CAACiC,cAAAA,IAAkB9B,OAAAA,CAAM+D,MAAM,KAAK,CAAA,IAAM,CAAC7B,QAAAA,CAASE,UAAU;IAC1F,MAAMxC,SAAAA,GAAYkC,kBAAkBjC,oBAAAA,IAAwBwD,UAAAA;AAC5D,IAAA,MAAMW,eAAe1B,IAAAA,GAAOD,SAAAA;AAE5B,IAAA,MAAM4B,gBAAgB9E,aAAAA,CAAc;QAClCR,EAAAA,EAAI,iCAAA;QACJkF,cAAAA,EAAgB;AAClB,KAAA,CAAA;AACA,IAAA,MAAMK,qBAAqB/E,aAAAA,CAAc;QACvCR,EAAAA,EAAI,iCAAA;QACJkF,cAAAA,EAAgB;AAClB,KAAA,CAAA;AACA,IAAA,MAAMM,sBAAsBhF,aAAAA,CAAc;QACxCR,EAAAA,EAAI,uCAAA;QACJkF,cAAAA,EAAgB;AAClB,KAAA,CAAA;AAEA,IAAA,IAAIpF,SAAAA,EAAW;QACb,qBACE2F,eAAA,CAACC,mBAAMC,IAAI,EAAA;YAACC,IAAAA,EAAM9B,iCAAAA;YAAyB9D,EAAAA,EAAI8D,iCAAAA;;8BAC7C+B,cAAA,CAACC,2BAAAA,EAAAA;4CACCD,cAAA,CAACH,mBAAMK,KAAK,EAAA;AAAET,wBAAAA,QAAAA,EAAAA;;;8BAEhBO,cAAA,CAACG,qBAAAA,EAAAA;oBACCC,UAAAA,EAAYV,kBAAAA;oBACZW,QAAAA,EAAUf,UAAAA;AACVxF,oBAAAA,KAAAA,EAAOkE,eAAAA,GAAkBA,eAAAA,CAAgB7D,EAAE,CAACmG,QAAQ,EAAA,GAAK,IAAA;oBACzDC,QAAAA,EAAUxB,YAAAA;AACVyB,oBAAAA,OAAAA,EAAS,IAAMzB,YAAAA,CAAa,IAAA,CAAA;oBAC5B0B,YAAAA,EAAcpC,gBAAAA;oBACdqC,UAAAA,EAAYnC,cAAAA;oBACZiB,YAAAA,EAAcA,YAAAA;oBACdmB,aAAAA,EAAenC,iBAAAA;oBACfoC,WAAAA,EAAajB,mBAAAA;AACbkB,oBAAAA,OAAAA,EAASzF,aAAaC,oBAAAA,IAAwBwD,UAAAA;oBAC9CiC,IAAAA,EAAK,GAAA;8BAEJ5C,OAAAA,CAAQ6C,GAAG,CAAC,CAACC,IAAAA,GAAAA;AACZ,wBAAA,qBACEhB,cAAA,CAACiB,2BAAAA,EAAAA;4BAECnH,KAAAA,EAAOkH,IAAAA,CAAK7G,EAAE,CAACmG,QAAQ,EAAA;AACvBY,4BAAAA,SAAAA,EAAWC,oBAAAA,CAAeH,IAAAA,CAAAA;sCAEzBG,oBAAAA,CAAeH,IAAAA;AAJXA,yBAAAA,EAAAA,IAAAA,CAAK7G,EAAE,CAAA;AAOlB,oBAAA,CAAA;;;;AAIR,IAAA;IAEA,qBACEyF,eAAA,CAACC,mBAAMC,IAAI,EAAA;QACTC,IAAAA,EAAM9B,iCAAAA;QACN9D,EAAAA,EAAI8D,iCAAAA;AACJW,QAAAA,KAAAA,EACE,CAAC,OAACrB,IACApC,WACAR,aAAAA,CAAc;YACZR,EAAAA,EAAI,iCAAA;YACJkF,cAAAA,EAAgB;SAClB,CAAA,IACCT,KAAAA,IAAS9D,cAAAA,CAAe8D,KAAAA,CAAM,KACjCpC,SAAAA;;AAGF,0BAAAwD,cAAA,CAACH,mBAAMK,KAAK,EAAA;AAAET,gBAAAA,QAAAA,EAAAA;;0BACdO,cAAA,CAACG,qBAAAA,EAAAA;gBACCC,UAAAA,EAAYV,kBAAAA;gBACZW,QAAAA,EACG,CAAChF,oBAAAA,IAAwB,CAACD,SAAAA,IAAaI,OAAAA,CAAM+D,MAAM,KAAK,CAAA,IAAM,CAAC7B,QAAAA,CAASE,UAAU;AAErF9D,gBAAAA,KAAAA,EAAOkE,eAAAA,GAAkBA,eAAAA,CAAgB7D,EAAE,CAACmG,QAAQ,EAAA,GAAK,IAAA;gBACzDC,QAAAA,EAAUxB,YAAAA;AACVyB,gBAAAA,OAAAA,EAAS,IAAMzB,YAAAA,CAAa,IAAA,CAAA;gBAC5B0B,YAAAA,EAAcpC,gBAAAA;gBACdqC,UAAAA,EAAYnC,cAAAA;gBACZiB,YAAAA,EAAcA,YAAAA;gBACdmB,aAAAA,EAAenC,iBAAAA;gBACfoC,WAAAA,EAAajB,mBAAAA;AACbkB,gBAAAA,OAAAA,EAASzF,aAAaC,oBAAAA,IAAwBwD,UAAAA;0BAE7CX,OAAAA,CAAQ6C,GAAG,CAAC,CAACC,IAAAA,GAAAA;AACZ,oBAAA,qBACEhB,cAAA,CAACiB,2BAAAA,EAAAA;wBAECnH,KAAAA,EAAOkH,IAAAA,CAAK7G,EAAE,CAACmG,QAAQ,EAAA;AACvBY,wBAAAA,SAAAA,EAAWC,oBAAAA,CAAeH,IAAAA,CAAAA;kCAEzBG,oBAAAA,CAAeH,IAAAA;AAJXA,qBAAAA,EAAAA,IAAAA,CAAK7G,EAAE,CAAA;AAOlB,gBAAA,CAAA;;AAEF,0BAAA6F,cAAA,CAACH,mBAAMuB,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
@@ -15,7 +15,8 @@ var api = require('../../../../../utils/api.js');
15
15
  var colors = require('../../../../../utils/colors.js');
16
16
  var constants = require('./constants.js');
17
17
 
18
- function _interopNamespaceDefault(e) {
18
+ function _interopNamespace(e) {
19
+ if (e && e.__esModule) return e;
19
20
  var n = Object.create(null);
20
21
  if (e) {
21
22
  Object.keys(e).forEach(function (k) {
@@ -32,7 +33,7 @@ function _interopNamespaceDefault(e) {
32
33
  return Object.freeze(n);
33
34
  }
34
35
 
35
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
36
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
36
37
 
37
38
  /* -------------------------------------------------------------------------------------------------
38
39
  * LimitModals
@@ -1 +1 @@
1
- {"version":3,"file":"StageSelect.js","sources":["../../../../../../../admin/src/routes/content-manager/model/id/components/StageSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useAPIErrorHandler, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { unstable_useDocument } from '@strapi/content-manager/strapi-admin';\nimport {\n SingleSelect,\n type SingleSelectProps,\n SingleSelectOption,\n Field,\n Flex,\n Loader,\n Typography,\n VisuallyHidden,\n Tooltip,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { Stage } from '../../../../../../../shared/contracts/review-workflows';\nimport { LimitsModal, LimitsModalProps } from '../../../../../components/LimitsModal';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../../../../constants';\nimport { useGetStagesQuery, useUpdateStageMutation } from '../../../../../services/content-manager';\nimport { buildValidParams } from '../../../../../utils/api';\nimport { getStageColorByHex } from '../../../../../utils/colors';\n\nimport { STAGE_ATTRIBUTE_NAME } from './constants';\n\nimport type { Data } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LimitModals\n * -----------------------------------------------------------------------------------------------*/\n\nconst WorkflowLimitModal = ({ open, onOpenChange }: LimitsModalProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LimitsModal.Root open={open} onOpenChange={onOpenChange}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n );\n};\n\nconst StageLimitModal = ({ open, onOpenChange }: LimitsModalProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LimitsModal.Root open={open} onOpenChange={onOpenChange}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * StageSelect\n * -----------------------------------------------------------------------------------------------*/\n\nconst Select = ({\n stages,\n activeWorkflowStage,\n isLoading,\n ...props\n}: SingleSelectProps & { stages: Stage[]; activeWorkflowStage: Stage; isLoading: boolean }) => {\n const { formatMessage } = useIntl();\n const { themeColorName } = getStageColorByHex(activeWorkflowStage?.color) ?? {};\n\n return (\n <SingleSelect\n disabled={stages.length === 0}\n placeholder={formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n startIcon={\n activeWorkflowStage && (\n <Flex\n tag=\"span\"\n height={2}\n background={activeWorkflowStage?.color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : undefined}\n hasRadius\n shrink={0}\n width={2}\n marginRight=\"-3px\"\n />\n )\n }\n // @ts-expect-error – `customizeContent` is not correctly typed in the DS.\n customizeContent={() => {\n return (\n <Flex tag=\"span\" justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Typography textColor=\"neutral800\" ellipsis lineHeight=\"inherit\">\n {activeWorkflowStage?.name ?? ''}\n </Typography>\n {isLoading ? <Loader small style={{ display: 'flex' }} data-testid=\"loader\" /> : null}\n </Flex>\n );\n }}\n {...props}\n >\n {stages.map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color) ?? {};\n\n return (\n <SingleSelectOption\n key={id}\n startIcon={\n <Flex\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : undefined}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n value={id}\n textValue={name}\n >\n {name}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n\nexport const StageSelect = ({ isCompact }: { isCompact?: boolean }) => {\n const {\n collectionType = '',\n slug: model = '',\n id = '',\n } = useParams<{\n collectionType: string;\n slug: string;\n id: string;\n }>();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { document, isLoading: isLoadingDocument } = unstable_useDocument(\n {\n collectionType,\n model,\n documentId: id,\n params,\n },\n {\n skip: !id && collectionType !== 'single-types',\n }\n );\n\n // Fall back to the URL `id` so the stages endpoint is still queried when the\n // selected locale has no entry yet. The backend returns workflow metadata\n // even when the entity for `documentId + locale` does not exist.\n const stagesDocumentId = document?.documentId ?? id;\n\n const { data, isLoading: isLoadingStages } = useGetStagesQuery(\n {\n slug: collectionType,\n model: model,\n id: stagesDocumentId,\n params,\n },\n {\n skip: !stagesDocumentId || stagesDocumentId === 'create',\n }\n );\n\n const { meta, stages = [] } = data ?? {};\n\n const { getFeature } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState<'stage' | 'workflow' | null>(null);\n\n const limits = getFeature<string>('review-workflows') ?? {};\n\n const activeWorkflowStage = document ? document[STAGE_ATTRIBUTE_NAME] : null;\n\n const [updateStage, { error }] = useUpdateStageMutation();\n\n const handleChange = async (stageId: Data.ID) => {\n try {\n /**\n * If the current license has a limit:\n * check if the total count of workflows exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10) < (meta?.workflowCount ?? 0)\n ) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit:\n * check if the total count of stages exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10) < stages.length\n ) {\n setShowLimitModal('stage');\n } else {\n if (document?.documentId) {\n const res = await updateStage({\n model,\n id: document.documentId,\n slug: collectionType,\n params,\n data: { id: stageId },\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'review-workflows.stage.notification.saved',\n defaultMessage: 'Review stage updated',\n }),\n });\n }\n\n if (isCompact && 'error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n }\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'review-workflows.stage.notification.error',\n defaultMessage: 'An error occurred while updating the review stage',\n }),\n });\n }\n };\n\n const isLoading = isLoadingStages || isLoadingDocument;\n\n const reviewStageLabel = formatMessage({\n id: 'review-workflows.stage.label',\n defaultMessage: 'Review stage',\n });\n\n // The Edit View renders the Review Workflows panel even when the user\n // switches to a locale that has not been saved yet. In that case the\n // document for the selected locale does not exist and we cannot transition\n // any stage until the entry is first saved, so surface a dedicated hint\n // rather than the misleading \"no permission\" message.\n const hasDocumentForLocale = Boolean(document?.documentId);\n const totalWorkflowStages = meta?.stageCount ?? 0;\n const canTransition = meta?.canTransition ?? true;\n\n let reviewStageHint: string | undefined;\n if (!isLoading) {\n if (!hasDocumentForLocale) {\n reviewStageHint = formatMessage({\n id: 'review-workflows.stages.save-first',\n defaultMessage: 'Save this entry to assign a workflow stage.',\n });\n } else if (stages.length === 0) {\n if (canTransition && totalWorkflowStages === 1) {\n reviewStageHint = formatMessage({\n id: 'review-workflows.stages.single-stage',\n defaultMessage:\n 'This workflow only has one stage. Add more stages to be able to update it here.',\n });\n } else {\n reviewStageHint = formatMessage({\n id: 'review-workflows.stages.no-transition',\n defaultMessage: 'You don’t have the permission to update this stage.',\n });\n }\n }\n }\n\n if (isCompact) {\n return (\n <>\n <Tooltip label={reviewStageHint}>\n <Field.Root name={STAGE_ATTRIBUTE_NAME} id={STAGE_ATTRIBUTE_NAME}>\n <>\n <VisuallyHidden>\n <Field.Label>{reviewStageLabel}</Field.Label>\n </VisuallyHidden>\n <Select\n stages={stages}\n activeWorkflowStage={activeWorkflowStage}\n isLoading={isLoading}\n size=\"S\"\n disabled={stages.length === 0}\n value={activeWorkflowStage?.id}\n onChange={handleChange}\n placeholder={formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n />\n </>\n </Field.Root>\n </Tooltip>\n <WorkflowLimitModal\n open={showLimitModal === 'workflow'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n <StageLimitModal\n open={showLimitModal === 'stage'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n </>\n );\n }\n\n return (\n <>\n <Field.Root\n hint={reviewStageHint}\n error={(error && formatAPIError(error)) || undefined}\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n >\n <Field.Label>{reviewStageLabel}</Field.Label>\n <Select\n stages={stages}\n activeWorkflowStage={activeWorkflowStage}\n isLoading={isLoading}\n disabled={stages.length === 0}\n value={activeWorkflowStage?.id}\n onChange={handleChange}\n placeholder={formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n <WorkflowLimitModal\n open={showLimitModal === 'workflow'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n <StageLimitModal\n open={showLimitModal === 'stage'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n </>\n );\n};\n"],"names":["WorkflowLimitModal","open","onOpenChange","formatMessage","useIntl","_jsxs","LimitsModal","Root","_jsx","Title","id","defaultMessage","Body","StageLimitModal","Select","stages","activeWorkflowStage","isLoading","props","themeColorName","getStageColorByHex","color","SingleSelect","disabled","length","placeholder","startIcon","Flex","tag","height","background","borderColor","undefined","hasRadius","shrink","width","marginRight","customizeContent","justifyContent","alignItems","Typography","textColor","ellipsis","lineHeight","name","Loader","small","style","display","data-testid","map","SingleSelectOption","value","textValue","StageSelect","isCompact","collectionType","slug","model","useParams","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","query","useQueryParams","params","React","useMemo","buildValidParams","document","isLoadingDocument","unstable_useDocument","documentId","skip","stagesDocumentId","data","isLoadingStages","useGetStagesQuery","meta","getFeature","useLicenseLimits","showLimitModal","setShowLimitModal","useState","limits","STAGE_ATTRIBUTE_NAME","updateStage","error","useUpdateStageMutation","handleChange","stageId","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","parseInt","workflowCount","CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME","res","type","message","reviewStageLabel","hasDocumentForLocale","Boolean","totalWorkflowStages","stageCount","canTransition","reviewStageHint","_Fragment","Tooltip","label","Field","VisuallyHidden","Label","size","onChange","hint","Hint","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA;;AAEkG,qGAElG,MAAMA,kBAAAA,GAAqB,CAAC,EAAEC,IAAI,EAAEC,YAAY,EAAoB,GAAA;IAClE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,wBAAYC,IAAI,EAAA;QAACN,IAAAA,EAAMA,IAAAA;QAAMC,YAAAA,EAAcA,YAAAA;;AAC1C,0BAAAM,cAAA,CAACF,wBAAYG,KAAK,EAAA;0BACfN,aAAAA,CAAc;oBACbO,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;AAGF,0BAAAH,cAAA,CAACF,wBAAYM,IAAI,EAAA;0BACdT,aAAAA,CAAc;oBACbO,EAAAA,EAAI,uCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR,CAAA;AAEA,MAAME,kBAAkB,CAAC,EAAEZ,IAAI,EAAEC,YAAY,EAAoB,GAAA;IAC/D,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAACC,wBAAYC,IAAI,EAAA;QAACN,IAAAA,EAAMA,IAAAA;QAAMC,YAAAA,EAAcA,YAAAA;;AAC1C,0BAAAM,cAAA,CAACF,wBAAYG,KAAK,EAAA;0BACfN,aAAAA,CAAc;oBACbO,EAAAA,EAAI,qCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;AAGF,0BAAAH,cAAA,CAACF,wBAAYM,IAAI,EAAA;0BACdT,aAAAA,CAAc;oBACbO,EAAAA,EAAI,oCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR,CAAA;AAEA;;qGAIA,MAAMG,MAAAA,GAAS,CAAC,EACdC,MAAM,EACNC,mBAAmB,EACnBC,SAAS,EACT,GAAGC,KAAAA,EACqF,GAAA;IACxF,MAAM,EAAEf,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEe,cAAc,EAAE,GAAGC,yBAAAA,CAAmBJ,mBAAAA,EAAqBK,UAAU,EAAC;AAE9E,IAAA,qBACEb,cAAA,CAACc,yBAAAA,EAAAA;QACCC,QAAAA,EAAUR,MAAAA,CAAOS,MAAM,KAAK,CAAA;AAC5BC,QAAAA,WAAAA,EAAatB,aAAAA,CAAc;YACzBO,EAAAA,EAAI,uCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA,CAAA;AACAe,QAAAA,SAAAA,EACEV,qCACER,cAAA,CAACmB,iBAAAA,EAAAA;YACCC,GAAAA,EAAI,MAAA;YACJC,MAAAA,EAAQ,CAAA;AACRC,YAAAA,UAAAA,EAAYd,mBAAAA,EAAqBK,KAAAA;YACjCU,WAAAA,EAAaZ,cAAAA,KAAmB,aAAa,YAAA,GAAea,SAAAA;YAC5DC,SAAS,EAAA,IAAA;YACTC,MAAAA,EAAQ,CAAA;YACRC,KAAAA,EAAO,CAAA;YACPC,WAAAA,EAAY;;;QAKlBC,gBAAAA,EAAkB,IAAA;AAChB,YAAA,qBACEhC,eAAA,CAACsB,iBAAAA,EAAAA;gBAAKC,GAAAA,EAAI,MAAA;gBAAOU,cAAAA,EAAe,eAAA;gBAAgBC,UAAAA,EAAW,QAAA;gBAASJ,KAAAA,EAAM,MAAA;;kCACxE3B,cAAA,CAACgC,uBAAAA,EAAAA;wBAAWC,SAAAA,EAAU,YAAA;wBAAaC,QAAQ,EAAA,IAAA;wBAACC,UAAAA,EAAW,SAAA;AACpD3B,wBAAAA,QAAAA,EAAAA,mBAAAA,EAAqB4B,IAAAA,IAAQ;;AAE/B3B,oBAAAA,SAAAA,iBAAYT,cAAA,CAACqC,mBAAAA,EAAAA;wBAAOC,KAAK,EAAA,IAAA;wBAACC,KAAAA,EAAO;4BAAEC,OAAAA,EAAS;AAAO,yBAAA;wBAAGC,aAAAA,EAAY;AAAc,qBAAA,CAAA,GAAA;;;AAGvF,QAAA,CAAA;AACC,QAAA,GAAG/B,KAAK;kBAERH,MAAAA,CAAOmC,GAAG,CAAC,CAAC,EAAExC,EAAE,EAAEW,KAAK,EAAEuB,IAAI,EAAE,GAAA;AAC9B,YAAA,MAAM,EAAEzB,cAAc,EAAE,GAAGC,yBAAAA,CAAmBC,UAAU,EAAC;AAEzD,YAAA,qBACEb,cAAA,CAAC2C,+BAAAA,EAAAA;AAECzB,gBAAAA,SAAAA,gBACElB,cAAA,CAACmB,iBAAAA,EAAAA;oBACCE,MAAAA,EAAQ,CAAA;oBACRC,UAAAA,EAAYT,KAAAA;oBACZU,WAAAA,EAAaZ,cAAAA,KAAmB,aAAa,YAAA,GAAea,SAAAA;oBAC5DC,SAAS,EAAA,IAAA;oBACTC,MAAAA,EAAQ,CAAA;oBACRC,KAAAA,EAAO;;gBAGXiB,KAAAA,EAAO1C,EAAAA;gBACP2C,SAAAA,EAAWT,IAAAA;AAEVA,gBAAAA,QAAAA,EAAAA;AAdIlC,aAAAA,EAAAA,EAAAA,CAAAA;AAiBX,QAAA,CAAA;;AAGN,CAAA;AAEO,MAAM4C,WAAAA,GAAc,CAAC,EAAEC,SAAS,EAA2B,GAAA;IAChE,MAAM,EACJC,cAAAA,GAAiB,EAAE,EACnBC,IAAAA,EAAMC,KAAAA,GAAQ,EAAE,EAChBhD,EAAAA,GAAK,EAAE,EACR,GAAGiD,wBAAAA,EAAAA;IAKJ,MAAM,EAAExD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEwD,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,8BAAAA,EAAAA;IACpD,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,SAASC,gBAAAA,CAAMC,OAAO,CAAC,IAAMC,qBAAiBL,KAAAA,CAAAA,EAAQ;AAACA,QAAAA;AAAM,KAAA,CAAA;AACnE,IAAA,MAAM,EAAEM,QAAQ,EAAEtD,WAAWuD,iBAAiB,EAAE,GAAGC,kCAAAA,CACjD;AACEjB,QAAAA,cAAAA;AACAE,QAAAA,KAAAA;QACAgB,UAAAA,EAAYhE,EAAAA;AACZyD,QAAAA;KACF,EACA;QACEQ,IAAAA,EAAM,CAACjE,MAAM8C,cAAAA,KAAmB;AAClC,KAAA,CAAA;;;;IAMF,MAAMoB,gBAAAA,GAAmBL,UAAUG,UAAAA,IAAchE,EAAAA;AAEjD,IAAA,MAAM,EAAEmE,IAAI,EAAE5D,WAAW6D,eAAe,EAAE,GAAGC,gCAAAA,CAC3C;QACEtB,IAAAA,EAAMD,cAAAA;QACNE,KAAAA,EAAOA,KAAAA;QACPhD,EAAAA,EAAIkE,gBAAAA;AACJT,QAAAA;KACF,EACA;QACEQ,IAAAA,EAAM,CAACC,oBAAoBA,gBAAAA,KAAqB;AAClD,KAAA,CAAA;IAGF,MAAM,EAAEI,IAAI,EAAEjE,MAAAA,GAAS,EAAE,EAAE,GAAG8D,QAAQ,EAAC;IAEvC,MAAM,EAAEI,UAAU,EAAE,GAAGC,mBAAAA,EAAAA;AACvB,IAAA,MAAM,CAACC,cAAAA,EAAgBC,iBAAAA,CAAkB,GAAGhB,gBAAAA,CAAMiB,QAAQ,CAA8B,IAAA,CAAA;IAExF,MAAMC,MAAAA,GAASL,UAAAA,CAAmB,kBAAA,CAAA,IAAuB,EAAC;AAE1D,IAAA,MAAMjE,mBAAAA,GAAsBuD,QAAAA,GAAWA,QAAQ,CAACgB,+BAAqB,GAAG,IAAA;AAExE,IAAA,MAAM,CAACC,WAAAA,EAAa,EAAEC,KAAK,EAAE,CAAC,GAAGC,qCAAAA,EAAAA;AAEjC,IAAA,MAAMC,eAAe,OAAOC,OAAAA,GAAAA;QAC1B,IAAI;AACF;;;;;;;;AAQC,UAED,IACEN,MAAAA,GAASO,+CAAAA,CAAoC,IAC7CC,QAAAA,CAASR,MAAM,CAACO,+CAAAA,CAAoC,EAAE,EAAA,CAAA,IAAOb,IAAAA,EAAMe,aAAAA,IAAiB,CAAA,CAAA,EACpF;gBACAX,iBAAAA,CAAkB,UAAA,CAAA;AAElB;;;;;;;;AAQC,YACH,CAAA,MAAO,IACLE,MAAAA,GAASU,2DAA+C,IACxDF,QAAAA,CAASR,MAAM,CAACU,0DAAAA,CAA+C,EAAE,EAAA,CAAA,GAAMjF,MAAAA,CAAOS,MAAM,EACpF;gBACA4D,iBAAAA,CAAkB,OAAA,CAAA;YACpB,CAAA,MAAO;AACL,gBAAA,IAAIb,UAAUG,UAAAA,EAAY;oBACxB,MAAMuB,GAAAA,GAAM,MAAMT,WAAAA,CAAY;AAC5B9B,wBAAAA,KAAAA;AACAhD,wBAAAA,EAAAA,EAAI6D,SAASG,UAAU;wBACvBjB,IAAAA,EAAMD,cAAAA;AACNW,wBAAAA,MAAAA;wBACAU,IAAAA,EAAM;4BAAEnE,EAAAA,EAAIkF;AAAQ;AACtB,qBAAA,CAAA;AAEA,oBAAA,IAAI,UAAUK,GAAAA,EAAK;wBACjBlC,kBAAAA,CAAmB;4BACjBmC,IAAAA,EAAM,SAAA;AACNC,4BAAAA,OAAAA,EAAShG,aAAAA,CAAc;gCACrBO,EAAAA,EAAI,2CAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;AACF,yBAAA,CAAA;AACF,oBAAA;oBAEA,IAAI4C,SAAAA,IAAa,WAAW0C,GAAAA,EAAK;wBAC/BlC,kBAAAA,CAAmB;4BACjBmC,IAAAA,EAAM,QAAA;4BACNC,OAAAA,EAAStC,cAAAA,CAAeoC,IAAIR,KAAK;AACnC,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA;AACF,YAAA;AACF,QAAA,CAAA,CAAE,OAAOA,KAAAA,EAAO;YACd1B,kBAAAA,CAAmB;gBACjBmC,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAShG,aAAAA,CAAc;oBACrBO,EAAAA,EAAI,2CAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMM,YAAY6D,eAAAA,IAAmBN,iBAAAA;AAErC,IAAA,MAAM4B,mBAAmBjG,aAAAA,CAAc;QACrCO,EAAAA,EAAI,8BAAA;QACJC,cAAAA,EAAgB;AAClB,KAAA,CAAA;;;;;;IAOA,MAAM0F,oBAAAA,GAAuBC,QAAQ/B,QAAAA,EAAUG,UAAAA,CAAAA;IAC/C,MAAM6B,mBAAAA,GAAsBvB,MAAMwB,UAAAA,IAAc,CAAA;IAChD,MAAMC,aAAAA,GAAgBzB,MAAMyB,aAAAA,IAAiB,IAAA;IAE7C,IAAIC,eAAAA;AACJ,IAAA,IAAI,CAACzF,SAAAA,EAAW;AACd,QAAA,IAAI,CAACoF,oBAAAA,EAAsB;AACzBK,YAAAA,eAAAA,GAAkBvG,aAAAA,CAAc;gBAC9BO,EAAAA,EAAI,oCAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA,CAAA;AACF,QAAA,CAAA,MAAO,IAAII,MAAAA,CAAOS,MAAM,KAAK,CAAA,EAAG;YAC9B,IAAIiF,aAAAA,IAAiBF,wBAAwB,CAAA,EAAG;AAC9CG,gBAAAA,eAAAA,GAAkBvG,aAAAA,CAAc;oBAC9BO,EAAAA,EAAI,sCAAA;oBACJC,cAAAA,EACE;AACJ,iBAAA,CAAA;YACF,CAAA,MAAO;AACL+F,gBAAAA,eAAAA,GAAkBvG,aAAAA,CAAc;oBAC9BO,EAAAA,EAAI,uCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACF,YAAA;AACF,QAAA;AACF,IAAA;AAEA,IAAA,IAAI4C,SAAAA,EAAW;QACb,qBACElD,eAAA,CAAAsG,mBAAA,EAAA;;8BACEnG,cAAA,CAACoG,oBAAAA,EAAAA;oBAAQC,KAAAA,EAAOH,eAAAA;4CACdlG,cAAA,CAACsG,mBAAMvG,IAAI,EAAA;wBAACqC,IAAAA,EAAM2C,8BAAAA;wBAAsB7E,EAAAA,EAAI6E,8BAAAA;gDAC1ClF,eAAA,CAAAsG,mBAAA,EAAA;;8CACEnG,cAAA,CAACuG,2BAAAA,EAAAA;4DACCvG,cAAA,CAACsG,mBAAME,KAAK,EAAA;AAAEZ,wCAAAA,QAAAA,EAAAA;;;8CAEhB5F,cAAA,CAACM,MAAAA,EAAAA;oCACCC,MAAAA,EAAQA,MAAAA;oCACRC,mBAAAA,EAAqBA,mBAAAA;oCACrBC,SAAAA,EAAWA,SAAAA;oCACXgG,IAAAA,EAAK,GAAA;oCACL1F,QAAAA,EAAUR,MAAAA,CAAOS,MAAM,KAAK,CAAA;AAC5B4B,oCAAAA,KAAAA,EAAOpC,mBAAAA,EAAqBN,EAAAA;oCAC5BwG,QAAAA,EAAUvB,YAAAA;AACVlE,oCAAAA,WAAAA,EAAatB,aAAAA,CAAc;wCACzBO,EAAAA,EAAI,uCAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;;;;;8BAKRH,cAAA,CAACR,kBAAAA,EAAAA;AACCC,oBAAAA,IAAAA,EAAMkF,cAAAA,KAAmB,UAAA;AACzBjF,oBAAAA,YAAAA,EAAc,IAAMkF,iBAAAA,CAAkB,IAAA;;8BAExC5E,cAAA,CAACK,eAAAA,EAAAA;AACCZ,oBAAAA,IAAAA,EAAMkF,cAAAA,KAAmB,OAAA;AACzBjF,oBAAAA,YAAAA,EAAc,IAAMkF,iBAAAA,CAAkB,IAAA;;;;AAI9C,IAAA;IAEA,qBACE/E,eAAA,CAAAsG,mBAAA,EAAA;;AACE,0BAAAtG,eAAA,CAACyG,mBAAMvG,IAAI,EAAA;gBACT4G,IAAAA,EAAMT,eAAAA;gBACNjB,KAAAA,EAAQA,KAAAA,IAAS5B,cAAAA,CAAe4B,KAAAA,CAAAA,IAAWzD,SAAAA;gBAC3CY,IAAAA,EAAM2C,8BAAAA;gBACN7E,EAAAA,EAAI6E,8BAAAA;;AAEJ,kCAAA/E,cAAA,CAACsG,mBAAME,KAAK,EAAA;AAAEZ,wBAAAA,QAAAA,EAAAA;;kCACd5F,cAAA,CAACM,MAAAA,EAAAA;wBACCC,MAAAA,EAAQA,MAAAA;wBACRC,mBAAAA,EAAqBA,mBAAAA;wBACrBC,SAAAA,EAAWA,SAAAA;wBACXM,QAAAA,EAAUR,MAAAA,CAAOS,MAAM,KAAK,CAAA;AAC5B4B,wBAAAA,KAAAA,EAAOpC,mBAAAA,EAAqBN,EAAAA;wBAC5BwG,QAAAA,EAAUvB,YAAAA;AACVlE,wBAAAA,WAAAA,EAAatB,aAAAA,CAAc;4BACzBO,EAAAA,EAAI,uCAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;AAEF,kCAAAH,cAAA,CAACsG,mBAAMM,IAAI,EAAA,EAAA,CAAA;AACX,kCAAA5G,cAAA,CAACsG,mBAAMO,KAAK,EAAA,EAAA;;;0BAEd7G,cAAA,CAACR,kBAAAA,EAAAA;AACCC,gBAAAA,IAAAA,EAAMkF,cAAAA,KAAmB,UAAA;AACzBjF,gBAAAA,YAAAA,EAAc,IAAMkF,iBAAAA,CAAkB,IAAA;;0BAExC5E,cAAA,CAACK,eAAAA,EAAAA;AACCZ,gBAAAA,IAAAA,EAAMkF,cAAAA,KAAmB,OAAA;AACzBjF,gBAAAA,YAAAA,EAAc,IAAMkF,iBAAAA,CAAkB,IAAA;;;;AAI9C;;;;"}
1
+ {"version":3,"file":"StageSelect.js","sources":["../../../../../../../admin/src/routes/content-manager/model/id/components/StageSelect.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification, useAPIErrorHandler, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { useLicenseLimits } from '@strapi/admin/strapi-admin/ee';\nimport { unstable_useDocument } from '@strapi/content-manager/strapi-admin';\nimport {\n SingleSelect,\n type SingleSelectProps,\n SingleSelectOption,\n Field,\n Flex,\n Loader,\n Typography,\n VisuallyHidden,\n Tooltip,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\n\nimport { Stage } from '../../../../../../../shared/contracts/review-workflows';\nimport { LimitsModal, LimitsModalProps } from '../../../../../components/LimitsModal';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../../../../constants';\nimport { useGetStagesQuery, useUpdateStageMutation } from '../../../../../services/content-manager';\nimport { buildValidParams } from '../../../../../utils/api';\nimport { getStageColorByHex } from '../../../../../utils/colors';\n\nimport { STAGE_ATTRIBUTE_NAME } from './constants';\n\nimport type { Data } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * LimitModals\n * -----------------------------------------------------------------------------------------------*/\n\nconst WorkflowLimitModal = ({ open, onOpenChange }: LimitsModalProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LimitsModal.Root open={open} onOpenChange={onOpenChange}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n );\n};\n\nconst StageLimitModal = ({ open, onOpenChange }: LimitsModalProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <LimitsModal.Root open={open} onOpenChange={onOpenChange}>\n <LimitsModal.Title>\n {formatMessage({\n id: 'review-workflows.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'review-workflows.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * StageSelect\n * -----------------------------------------------------------------------------------------------*/\n\nconst Select = ({\n stages,\n activeWorkflowStage,\n isLoading,\n ...props\n}: SingleSelectProps & { stages: Stage[]; activeWorkflowStage: Stage; isLoading: boolean }) => {\n const { formatMessage } = useIntl();\n const { themeColorName } = getStageColorByHex(activeWorkflowStage?.color) ?? {};\n\n return (\n <SingleSelect\n disabled={stages.length === 0}\n placeholder={formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n startIcon={\n activeWorkflowStage && (\n <Flex\n tag=\"span\"\n height={2}\n background={activeWorkflowStage?.color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : undefined}\n hasRadius\n shrink={0}\n width={2}\n marginRight=\"-3px\"\n />\n )\n }\n // @ts-expect-error – `customizeContent` is not correctly typed in the DS.\n customizeContent={() => {\n return (\n <Flex tag=\"span\" justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Typography textColor=\"neutral800\" ellipsis lineHeight=\"inherit\">\n {activeWorkflowStage?.name ?? ''}\n </Typography>\n {isLoading ? <Loader small style={{ display: 'flex' }} data-testid=\"loader\" /> : null}\n </Flex>\n );\n }}\n {...props}\n >\n {stages.map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color) ?? {};\n\n return (\n <SingleSelectOption\n key={id}\n startIcon={\n <Flex\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : undefined}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n value={id}\n textValue={name}\n >\n {name}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n\nexport const StageSelect = ({ isCompact }: { isCompact?: boolean }) => {\n const {\n collectionType = '',\n slug: model = '',\n id = '',\n } = useParams<{\n collectionType: string;\n slug: string;\n id: string;\n }>();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { document, isLoading: isLoadingDocument } = unstable_useDocument(\n {\n collectionType,\n model,\n documentId: id,\n params,\n },\n {\n skip: !id && collectionType !== 'single-types',\n }\n );\n\n // Fall back to the URL `id` so the stages endpoint is still queried when the\n // selected locale has no entry yet. The backend returns workflow metadata\n // even when the entity for `documentId + locale` does not exist.\n const stagesDocumentId = document?.documentId ?? id;\n\n const { data, isLoading: isLoadingStages } = useGetStagesQuery(\n {\n slug: collectionType,\n model: model,\n id: stagesDocumentId,\n params,\n },\n {\n skip: !stagesDocumentId || stagesDocumentId === 'create',\n }\n );\n\n const { meta, stages = [] } = data ?? {};\n\n const { getFeature } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState<'stage' | 'workflow' | null>(null);\n\n const limits = getFeature<string>('review-workflows') ?? {};\n\n const activeWorkflowStage = document ? document[STAGE_ATTRIBUTE_NAME] : null;\n\n const [updateStage, { error }] = useUpdateStageMutation();\n\n const handleChange = async (stageId: Data.ID) => {\n try {\n /**\n * If the current license has a limit:\n * check if the total count of workflows exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10) < (meta?.workflowCount ?? 0)\n ) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit:\n * check if the total count of stages exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10) < stages.length\n ) {\n setShowLimitModal('stage');\n } else {\n if (document?.documentId) {\n const res = await updateStage({\n model,\n id: document.documentId,\n slug: collectionType,\n params,\n data: { id: stageId },\n });\n\n if ('data' in res) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'review-workflows.stage.notification.saved',\n defaultMessage: 'Review stage updated',\n }),\n });\n }\n\n if (isCompact && 'error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n }\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'review-workflows.stage.notification.error',\n defaultMessage: 'An error occurred while updating the review stage',\n }),\n });\n }\n };\n\n const isLoading = isLoadingStages || isLoadingDocument;\n\n const reviewStageLabel = formatMessage({\n id: 'review-workflows.stage.label',\n defaultMessage: 'Review stage',\n });\n\n // The Edit View renders the Review Workflows panel even when the user\n // switches to a locale that has not been saved yet. In that case the\n // document for the selected locale does not exist and we cannot transition\n // any stage until the entry is first saved, so surface a dedicated hint\n // rather than the misleading \"no permission\" message.\n const hasDocumentForLocale = Boolean(document?.documentId);\n const totalWorkflowStages = meta?.stageCount ?? 0;\n const canTransition = meta?.canTransition ?? true;\n\n let reviewStageHint: string | undefined;\n if (!isLoading) {\n if (!hasDocumentForLocale) {\n reviewStageHint = formatMessage({\n id: 'review-workflows.stages.save-first',\n defaultMessage: 'Save this entry to assign a workflow stage.',\n });\n } else if (stages.length === 0) {\n if (canTransition && totalWorkflowStages === 1) {\n reviewStageHint = formatMessage({\n id: 'review-workflows.stages.single-stage',\n defaultMessage:\n 'This workflow only has one stage. Add more stages to be able to update it here.',\n });\n } else {\n reviewStageHint = formatMessage({\n id: 'review-workflows.stages.no-transition',\n defaultMessage: 'You don’t have the permission to update this stage.',\n });\n }\n }\n }\n\n if (isCompact) {\n return (\n <>\n <Tooltip label={reviewStageHint}>\n <Field.Root name={STAGE_ATTRIBUTE_NAME} id={STAGE_ATTRIBUTE_NAME}>\n <>\n <VisuallyHidden>\n <Field.Label>{reviewStageLabel}</Field.Label>\n </VisuallyHidden>\n <Select\n stages={stages}\n activeWorkflowStage={activeWorkflowStage}\n isLoading={isLoading}\n size=\"S\"\n disabled={stages.length === 0}\n value={activeWorkflowStage?.id}\n onChange={handleChange}\n placeholder={formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n />\n </>\n </Field.Root>\n </Tooltip>\n <WorkflowLimitModal\n open={showLimitModal === 'workflow'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n <StageLimitModal\n open={showLimitModal === 'stage'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n </>\n );\n }\n\n return (\n <>\n <Field.Root\n hint={reviewStageHint}\n error={(error && formatAPIError(error)) || undefined}\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n >\n <Field.Label>{reviewStageLabel}</Field.Label>\n <Select\n stages={stages}\n activeWorkflowStage={activeWorkflowStage}\n isLoading={isLoading}\n disabled={stages.length === 0}\n value={activeWorkflowStage?.id}\n onChange={handleChange}\n placeholder={formatMessage({\n id: 'review-workflows.assignee.placeholder',\n defaultMessage: 'Select…',\n })}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n <WorkflowLimitModal\n open={showLimitModal === 'workflow'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n <StageLimitModal\n open={showLimitModal === 'stage'}\n onOpenChange={() => setShowLimitModal(null)}\n />\n </>\n );\n};\n"],"names":["WorkflowLimitModal","open","onOpenChange","formatMessage","useIntl","_jsxs","LimitsModal","Root","_jsx","Title","id","defaultMessage","Body","StageLimitModal","Select","stages","activeWorkflowStage","isLoading","props","themeColorName","getStageColorByHex","color","SingleSelect","disabled","length","placeholder","startIcon","Flex","tag","height","background","borderColor","undefined","hasRadius","shrink","width","marginRight","customizeContent","justifyContent","alignItems","Typography","textColor","ellipsis","lineHeight","name","Loader","small","style","display","data-testid","map","SingleSelectOption","value","textValue","StageSelect","isCompact","collectionType","slug","model","useParams","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","toggleNotification","useNotification","query","useQueryParams","params","React","useMemo","buildValidParams","document","isLoadingDocument","unstable_useDocument","documentId","skip","stagesDocumentId","data","isLoadingStages","useGetStagesQuery","meta","getFeature","useLicenseLimits","showLimitModal","setShowLimitModal","useState","limits","STAGE_ATTRIBUTE_NAME","updateStage","error","useUpdateStageMutation","handleChange","stageId","CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME","parseInt","workflowCount","CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME","res","type","message","reviewStageLabel","hasDocumentForLocale","Boolean","totalWorkflowStages","stageCount","canTransition","reviewStageHint","_Fragment","Tooltip","label","Field","VisuallyHidden","Label","size","onChange","hint","Hint","Error"],"mappings":"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"}
@@ -14,7 +14,8 @@ var constants = require('../constants.js');
14
14
  var useDragAndDrop = require('../hooks/useDragAndDrop.js');
15
15
  var AddStage = require('./AddStage.js');
16
16
 
17
- function _interopNamespaceDefault(e) {
17
+ function _interopNamespace(e) {
18
+ if (e && e.__esModule) return e;
18
19
  var n = Object.create(null);
19
20
  if (e) {
20
21
  Object.keys(e).forEach(function (k) {
@@ -31,7 +32,7 @@ function _interopNamespaceDefault(e) {
31
32
  return Object.freeze(n);
32
33
  }
33
34
 
34
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
35
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
35
36
 
36
37
  const Stages = ({ canDelete = true, canUpdate = true, isCreating })=>{
37
38
  const { formatMessage } = reactIntl.useIntl();