@strapi/admin 4.15.5-alpha.5 → 4.15.5

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 (183) hide show
  1. package/dist/_chunks/{AuthenticatedApp-eea6970a.js → AuthenticatedApp-61dfdab8.js} +21 -21
  2. package/dist/_chunks/{AuthenticatedApp-eea6970a.js.map → AuthenticatedApp-61dfdab8.js.map} +1 -1
  3. package/dist/_chunks/{AuthenticatedApp-1e10546a.mjs → AuthenticatedApp-da1595e9.mjs} +21 -21
  4. package/dist/_chunks/{AuthenticatedApp-1e10546a.mjs.map → AuthenticatedApp-da1595e9.mjs.map} +1 -1
  5. package/dist/_chunks/{HomePage-970b8c5a.mjs → HomePage-2690d237.mjs} +4 -4
  6. package/dist/_chunks/{HomePage-970b8c5a.mjs.map → HomePage-2690d237.mjs.map} +1 -1
  7. package/dist/_chunks/{HomePage-96c4aa5b.mjs → HomePage-3792b299.mjs} +4 -4
  8. package/dist/_chunks/{HomePage-96c4aa5b.mjs.map → HomePage-3792b299.mjs.map} +1 -1
  9. package/dist/_chunks/{HomePage-3ce777a2.js → HomePage-48934b34.js} +4 -4
  10. package/dist/_chunks/{HomePage-3ce777a2.js.map → HomePage-48934b34.js.map} +1 -1
  11. package/dist/_chunks/{HomePage-ec67248d.js → HomePage-f3052b59.js} +4 -4
  12. package/dist/_chunks/{HomePage-ec67248d.js.map → HomePage-f3052b59.js.map} +1 -1
  13. package/dist/_chunks/{InstalledPluginsPage-7743670e.mjs → InstalledPluginsPage-3bd06321.mjs} +3 -3
  14. package/dist/_chunks/{InstalledPluginsPage-7743670e.mjs.map → InstalledPluginsPage-3bd06321.mjs.map} +1 -1
  15. package/dist/_chunks/{InstalledPluginsPage-1e0d2ae1.js → InstalledPluginsPage-da0780c1.js} +3 -3
  16. package/dist/_chunks/{InstalledPluginsPage-1e0d2ae1.js.map → InstalledPluginsPage-da0780c1.js.map} +1 -1
  17. package/dist/_chunks/{Login-a6af5d62.mjs → Login-8f68c65a.mjs} +2 -2
  18. package/dist/_chunks/{Login-a6af5d62.mjs.map → Login-8f68c65a.mjs.map} +1 -1
  19. package/dist/_chunks/{Login-04fc2757.js → Login-ab4b47ad.js} +2 -2
  20. package/dist/_chunks/{Login-04fc2757.js.map → Login-ab4b47ad.js.map} +1 -1
  21. package/dist/_chunks/{MarketplacePage-aeb425cc.js → MarketplacePage-935fca72.js} +3 -3
  22. package/dist/_chunks/{MarketplacePage-aeb425cc.js.map → MarketplacePage-935fca72.js.map} +1 -1
  23. package/dist/_chunks/{MarketplacePage-61d66050.mjs → MarketplacePage-95af86bb.mjs} +3 -3
  24. package/dist/_chunks/{MarketplacePage-61d66050.mjs.map → MarketplacePage-95af86bb.mjs.map} +1 -1
  25. package/dist/_chunks/{ProfilePage-862401de.mjs → ProfilePage-20de1b54.mjs} +3 -3
  26. package/dist/_chunks/{ProfilePage-862401de.mjs.map → ProfilePage-20de1b54.mjs.map} +1 -1
  27. package/dist/_chunks/{ProfilePage-f3915e86.js → ProfilePage-b8b29c4d.js} +3 -3
  28. package/dist/_chunks/{ProfilePage-f3915e86.js.map → ProfilePage-b8b29c4d.js.map} +1 -1
  29. package/dist/_chunks/{constants-298d4e08.js → constants-008a1527.js} +5 -5
  30. package/dist/_chunks/{constants-298d4e08.js.map → constants-008a1527.js.map} +1 -1
  31. package/dist/_chunks/{constants-94ec0c39.mjs → constants-1d345364.mjs} +5 -5
  32. package/dist/_chunks/{constants-94ec0c39.mjs.map → constants-1d345364.mjs.map} +1 -1
  33. package/dist/_chunks/{constants-14dd24d9.mjs → constants-278adc05.mjs} +6 -6
  34. package/dist/_chunks/{constants-14dd24d9.mjs.map → constants-278adc05.mjs.map} +1 -1
  35. package/dist/_chunks/{constants-98046873.mjs → constants-29d123f8.mjs} +2 -2
  36. package/dist/_chunks/{constants-98046873.mjs.map → constants-29d123f8.mjs.map} +1 -1
  37. package/dist/_chunks/{constants-ca23be5d.js → constants-4be682e5.js} +2 -2
  38. package/dist/_chunks/{constants-ca23be5d.js.map → constants-4be682e5.js.map} +1 -1
  39. package/dist/_chunks/{constants-a0698a4a.js → constants-797ada28.js} +6 -6
  40. package/dist/_chunks/{constants-a0698a4a.js.map → constants-797ada28.js.map} +1 -1
  41. package/dist/_chunks/{constants-fb780d44.mjs → constants-db792b94.mjs} +3 -3
  42. package/dist/_chunks/{constants-fb780d44.mjs.map → constants-db792b94.mjs.map} +1 -1
  43. package/dist/_chunks/{constants-9ee3d5d7.js → constants-ec71917d.js} +3 -3
  44. package/dist/_chunks/{constants-9ee3d5d7.js.map → constants-ec71917d.js.map} +1 -1
  45. package/dist/_chunks/{index-4b12f2e9.mjs → index-003c2cab.mjs} +5 -5
  46. package/dist/_chunks/{index-4b12f2e9.mjs.map → index-003c2cab.mjs.map} +1 -1
  47. package/dist/_chunks/{index-e12cacd1.js → index-035f8c59.js} +3 -3
  48. package/dist/_chunks/{index-e12cacd1.js.map → index-035f8c59.js.map} +1 -1
  49. package/dist/_chunks/{index-5de6defe.mjs → index-039f8e26.mjs} +4 -4
  50. package/dist/_chunks/{index-5de6defe.mjs.map → index-039f8e26.mjs.map} +1 -1
  51. package/dist/_chunks/{index-ea2ed45d.js → index-0c9fceff.js} +5 -5
  52. package/dist/_chunks/{index-ea2ed45d.js.map → index-0c9fceff.js.map} +1 -1
  53. package/dist/_chunks/{index-2609696f.js → index-0ed05075.js} +4 -4
  54. package/dist/_chunks/{index-2609696f.js.map → index-0ed05075.js.map} +1 -1
  55. package/dist/_chunks/{index-bff8cad7.js → index-0fbbca7a.js} +3 -3
  56. package/dist/_chunks/{index-bff8cad7.js.map → index-0fbbca7a.js.map} +1 -1
  57. package/dist/_chunks/{index-ebd41ad5.mjs → index-154693de.mjs} +3 -3
  58. package/dist/_chunks/{index-ebd41ad5.mjs.map → index-154693de.mjs.map} +1 -1
  59. package/dist/_chunks/{index-a81ae30e.mjs → index-1932eedf.mjs} +3 -3
  60. package/dist/_chunks/{index-a81ae30e.mjs.map → index-1932eedf.mjs.map} +1 -1
  61. package/dist/_chunks/{index-92f311b0.mjs → index-1ebd9d8c.mjs} +5 -5
  62. package/dist/_chunks/{index-92f311b0.mjs.map → index-1ebd9d8c.mjs.map} +1 -1
  63. package/dist/_chunks/{index-51aa0dc6.js → index-1f4afa21.js} +3 -3
  64. package/dist/_chunks/{index-51aa0dc6.js.map → index-1f4afa21.js.map} +1 -1
  65. package/dist/_chunks/{index-ffafceee.js → index-25975989.js} +4 -4
  66. package/dist/_chunks/{index-ffafceee.js.map → index-25975989.js.map} +1 -1
  67. package/dist/_chunks/{index-75d51788.js → index-2b22b1a0.js} +5 -5
  68. package/dist/_chunks/{index-75d51788.js.map → index-2b22b1a0.js.map} +1 -1
  69. package/dist/_chunks/{index-5d3982dd.js → index-345c0ae9.js} +6 -6
  70. package/dist/_chunks/{index-5d3982dd.js.map → index-345c0ae9.js.map} +1 -1
  71. package/dist/_chunks/{index-5a15fb17.mjs → index-3c693658.mjs} +3 -3
  72. package/dist/_chunks/{index-5a15fb17.mjs.map → index-3c693658.mjs.map} +1 -1
  73. package/dist/_chunks/{index-372f70ce.mjs → index-40495ca1.mjs} +2 -2
  74. package/dist/_chunks/{index-372f70ce.mjs.map → index-40495ca1.mjs.map} +1 -1
  75. package/dist/_chunks/{index-6c56f4c2.mjs → index-40d047a8.mjs} +3 -3
  76. package/dist/_chunks/{index-6c56f4c2.mjs.map → index-40d047a8.mjs.map} +1 -1
  77. package/dist/_chunks/{index-9a307bbd.mjs → index-46138ec7.mjs} +4 -4
  78. package/dist/_chunks/{index-9a307bbd.mjs.map → index-46138ec7.mjs.map} +1 -1
  79. package/dist/_chunks/{index-b51842fb.mjs → index-46c3ee85.mjs} +3 -3
  80. package/dist/_chunks/{index-b51842fb.mjs.map → index-46c3ee85.mjs.map} +1 -1
  81. package/dist/_chunks/{index-c8abc905.mjs → index-4f557234.mjs} +3 -3
  82. package/dist/_chunks/{index-c8abc905.mjs.map → index-4f557234.mjs.map} +1 -1
  83. package/dist/_chunks/{index-6e082128.mjs → index-51986071.mjs} +3 -3
  84. package/dist/_chunks/{index-6e082128.mjs.map → index-51986071.mjs.map} +1 -1
  85. package/dist/_chunks/{index-8c004453.js → index-557e0c47.js} +2 -2
  86. package/dist/_chunks/{index-8c004453.js.map → index-557e0c47.js.map} +1 -1
  87. package/dist/_chunks/{index-04dc85bf.mjs → index-56b499fb.mjs} +5 -5
  88. package/dist/_chunks/{index-04dc85bf.mjs.map → index-56b499fb.mjs.map} +1 -1
  89. package/dist/_chunks/{index-f6e45499.js → index-5a5b0567.js} +20 -20
  90. package/dist/_chunks/{index-f6e45499.js.map → index-5a5b0567.js.map} +1 -1
  91. package/dist/_chunks/{index-27d910b7.mjs → index-6353193a.mjs} +5 -5
  92. package/dist/_chunks/{index-27d910b7.mjs.map → index-6353193a.mjs.map} +1 -1
  93. package/dist/_chunks/{index-527a80ef.mjs → index-6797e259.mjs} +3 -3
  94. package/dist/_chunks/{index-527a80ef.mjs.map → index-6797e259.mjs.map} +1 -1
  95. package/dist/_chunks/{index-435b6463.js → index-69d47db4.js} +3 -3
  96. package/dist/_chunks/{index-435b6463.js.map → index-69d47db4.js.map} +1 -1
  97. package/dist/_chunks/{index-b1141822.js → index-72494b79.js} +3 -3
  98. package/dist/_chunks/{index-b1141822.js.map → index-72494b79.js.map} +1 -1
  99. package/dist/_chunks/{index-008328ba.js → index-787a0db6.js} +5 -5
  100. package/dist/_chunks/{index-008328ba.js.map → index-787a0db6.js.map} +1 -1
  101. package/dist/_chunks/{index-cf35f9e7.js → index-7bfab5f5.js} +4 -4
  102. package/dist/_chunks/{index-cf35f9e7.js.map → index-7bfab5f5.js.map} +1 -1
  103. package/dist/_chunks/{index-7e1f48fc.mjs → index-81509193.mjs} +8 -8
  104. package/dist/_chunks/{index-7e1f48fc.mjs.map → index-81509193.mjs.map} +1 -1
  105. package/dist/_chunks/{index-e17a9e33.mjs → index-834fad5c.mjs} +5 -5
  106. package/dist/_chunks/{index-e17a9e33.mjs.map → index-834fad5c.mjs.map} +1 -1
  107. package/dist/_chunks/{index-8600b6e5.mjs → index-8e034257.mjs} +3 -3
  108. package/dist/_chunks/{index-8600b6e5.mjs.map → index-8e034257.mjs.map} +1 -1
  109. package/dist/_chunks/{index-15fddb85.mjs → index-9118a940.mjs} +4 -4
  110. package/dist/_chunks/{index-15fddb85.mjs.map → index-9118a940.mjs.map} +1 -1
  111. package/dist/_chunks/{index-3266a985.js → index-924a1288.js} +3 -3
  112. package/dist/_chunks/{index-3266a985.js.map → index-924a1288.js.map} +1 -1
  113. package/dist/_chunks/{index-a299ce97.js → index-9304d6de.js} +8 -8
  114. package/dist/_chunks/{index-a299ce97.js.map → index-9304d6de.js.map} +1 -1
  115. package/dist/_chunks/{index-7b5707cd.js → index-97a59f73.js} +4 -4
  116. package/dist/_chunks/{index-7b5707cd.js.map → index-97a59f73.js.map} +1 -1
  117. package/dist/_chunks/{index-b4277486.js → index-9c26fffe.js} +4 -4
  118. package/dist/_chunks/{index-b4277486.js.map → index-9c26fffe.js.map} +1 -1
  119. package/dist/_chunks/{index-f3c7f6a9.js → index-9f2d5dc8.js} +3 -3
  120. package/dist/_chunks/{index-f3c7f6a9.js.map → index-9f2d5dc8.js.map} +1 -1
  121. package/dist/_chunks/{index-92a2ece4.js → index-9f30a92e.js} +4 -4
  122. package/dist/_chunks/{index-92a2ece4.js.map → index-9f30a92e.js.map} +1 -1
  123. package/dist/_chunks/{index-aa35df09.mjs → index-a6f1ccf6.mjs} +6 -6
  124. package/dist/_chunks/{index-aa35df09.mjs.map → index-a6f1ccf6.mjs.map} +1 -1
  125. package/dist/_chunks/{index-e7e7f75d.mjs → index-a9625818.mjs} +5 -5
  126. package/dist/_chunks/{index-e7e7f75d.mjs.map → index-a9625818.mjs.map} +1 -1
  127. package/dist/_chunks/{index-401d5daa.js → index-b2d4d126.js} +5 -5
  128. package/dist/_chunks/{index-401d5daa.js.map → index-b2d4d126.js.map} +1 -1
  129. package/dist/_chunks/{index-c5ed938c.mjs → index-b42866c5.mjs} +2 -2
  130. package/dist/_chunks/{index-c5ed938c.mjs.map → index-b42866c5.mjs.map} +1 -1
  131. package/dist/_chunks/{index-83133812.mjs → index-b6ee936b.mjs} +4 -4
  132. package/dist/_chunks/{index-83133812.mjs.map → index-b6ee936b.mjs.map} +1 -1
  133. package/dist/_chunks/{index-392a9490.js → index-bac648de.js} +5 -5
  134. package/dist/_chunks/{index-392a9490.js.map → index-bac648de.js.map} +1 -1
  135. package/dist/_chunks/{index-56a6576d.js → index-bc709e72.js} +3 -3
  136. package/dist/_chunks/{index-56a6576d.js.map → index-bc709e72.js.map} +1 -1
  137. package/dist/_chunks/{index-0a328691.mjs → index-bde05e9e.mjs} +3 -3
  138. package/dist/_chunks/{index-0a328691.mjs.map → index-bde05e9e.mjs.map} +1 -1
  139. package/dist/_chunks/{index-a3bc2b4e.mjs → index-be3e5f69.mjs} +2 -2
  140. package/dist/_chunks/{index-a3bc2b4e.mjs.map → index-be3e5f69.mjs.map} +1 -1
  141. package/dist/_chunks/{index-7b53073e.js → index-bfb581a2.js} +3 -3
  142. package/dist/_chunks/{index-7b53073e.js.map → index-bfb581a2.js.map} +1 -1
  143. package/dist/_chunks/{index-470c6923.js → index-cbf9952d.js} +2 -2
  144. package/dist/_chunks/{index-470c6923.js.map → index-cbf9952d.js.map} +1 -1
  145. package/dist/_chunks/{index-80b911e7.mjs → index-cc38783c.mjs} +3 -3
  146. package/dist/_chunks/{index-80b911e7.mjs.map → index-cc38783c.mjs.map} +1 -1
  147. package/dist/_chunks/{index-6b269800.mjs → index-d2b3c398.mjs} +3 -3
  148. package/dist/_chunks/{index-6b269800.mjs.map → index-d2b3c398.mjs.map} +1 -1
  149. package/dist/_chunks/{index-1e7b6d32.js → index-d5f569ab.js} +5 -5
  150. package/dist/_chunks/{index-1e7b6d32.js.map → index-d5f569ab.js.map} +1 -1
  151. package/dist/_chunks/{index-e628615b.mjs → index-d9882c45.mjs} +4 -4
  152. package/dist/_chunks/{index-e628615b.mjs.map → index-d9882c45.mjs.map} +1 -1
  153. package/dist/_chunks/{index-65d8637e.js → index-e0e235a0.js} +3 -3
  154. package/dist/_chunks/{index-65d8637e.js.map → index-e0e235a0.js.map} +1 -1
  155. package/dist/_chunks/{index-da0be0d5.js → index-e34335f1.js} +3 -3
  156. package/dist/_chunks/{index-da0be0d5.js.map → index-e34335f1.js.map} +1 -1
  157. package/dist/_chunks/{index-9afe0455.js → index-eaff38ba.js} +3 -3
  158. package/dist/_chunks/{index-9afe0455.js.map → index-eaff38ba.js.map} +1 -1
  159. package/dist/_chunks/{index-1930d662.js → index-eebad65d.js} +3 -3
  160. package/dist/_chunks/{index-1930d662.js.map → index-eebad65d.js.map} +1 -1
  161. package/dist/_chunks/{index-c66a60bb.mjs → index-f3e7f8cc.mjs} +4 -4
  162. package/dist/_chunks/{index-c66a60bb.mjs.map → index-f3e7f8cc.mjs.map} +1 -1
  163. package/dist/_chunks/{index-c145ae06.mjs → index-f52ae628.mjs} +3 -3
  164. package/dist/_chunks/{index-c145ae06.mjs.map → index-f52ae628.mjs.map} +1 -1
  165. package/dist/_chunks/{index-eafb6c8c.mjs → index-f55a69e7.mjs} +4 -4
  166. package/dist/_chunks/{index-eafb6c8c.mjs.map → index-f55a69e7.mjs.map} +1 -1
  167. package/dist/_chunks/{index-7d60e3dc.mjs → index-f5b276a8.mjs} +20 -20
  168. package/dist/_chunks/{index-7d60e3dc.mjs.map → index-f5b276a8.mjs.map} +1 -1
  169. package/dist/_chunks/{index-b5ff3031.js → index-f7cf652c.js} +4 -4
  170. package/dist/_chunks/{index-b5ff3031.js.map → index-f7cf652c.js.map} +1 -1
  171. package/dist/_chunks/{index-9d9b9769.js → index-f7dbd21b.js} +2 -2
  172. package/dist/_chunks/{index-9d9b9769.js.map → index-f7dbd21b.js.map} +1 -1
  173. package/dist/_chunks/{schema-755747ac.js → schema-15e33d1c.js} +2 -2
  174. package/dist/_chunks/{schema-755747ac.js.map → schema-15e33d1c.js.map} +1 -1
  175. package/dist/_chunks/{schema-666ecce4.mjs → schema-a7f695ae.mjs} +2 -2
  176. package/dist/_chunks/{schema-666ecce4.mjs.map → schema-a7f695ae.mjs.map} +1 -1
  177. package/dist/_chunks/{validateWorkflow-e77a9ab3.mjs → validateWorkflow-2f84e76e.mjs} +3 -3
  178. package/dist/_chunks/{validateWorkflow-e77a9ab3.mjs.map → validateWorkflow-2f84e76e.mjs.map} +1 -1
  179. package/dist/_chunks/{validateWorkflow-ae45d3d4.js → validateWorkflow-6b5dffaf.js} +3 -3
  180. package/dist/_chunks/{validateWorkflow-ae45d3d4.js.map → validateWorkflow-6b5dffaf.js.map} +1 -1
  181. package/dist/admin/index.js +1 -1
  182. package/dist/admin/index.mjs +1 -1
  183. package/package.json +12 -12
@@ -5,7 +5,7 @@ const React = require("react");
5
5
  const helperPlugin = require("@strapi/helper-plugin");
6
6
  const reactRedux = require("react-redux");
7
7
  const reactRouterDom = require("react-router-dom");
8
- const AuthenticatedApp = require("./AuthenticatedApp-eea6970a.js");
8
+ const AuthenticatedApp = require("./AuthenticatedApp-61dfdab8.js");
9
9
  const designSystem = require("@strapi/design-system");
10
10
  const Icons = require("@strapi/icons");
11
11
  const formik = require("formik");
@@ -15,9 +15,9 @@ const pick = require("lodash/pick");
15
15
  const PropTypes = require("prop-types");
16
16
  const reactIntl = require("react-intl");
17
17
  const useAdminUsers = require("./useAdminUsers-05d6b26a.js");
18
- const index = require("./index-2609696f.js");
18
+ const index = require("./index-0ed05075.js");
19
19
  const formatAPIErrors = require("./formatAPIErrors-b599cf27.js");
20
- const index$1 = require("./index-9d9b9769.js");
20
+ const index$1 = require("./index-f7dbd21b.js");
21
21
  const edit = require("./edit-29bdf5d6.js");
22
22
  require("react-query");
23
23
  require("semver/functions/lt");
@@ -177,7 +177,7 @@ const EditPage = ({ canUpdate }) => {
177
177
  const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
178
178
  const MagicLink = index.useEnterprise(
179
179
  index$1.MagicLinkCE,
180
- async () => (await Promise.resolve().then(() => require("./index-65d8637e.js"))).MagicLinkEE
180
+ async () => (await Promise.resolve().then(() => require("./index-e0e235a0.js"))).MagicLinkEE
181
181
  );
182
182
  helperPlugin.useFocusWhenNavigate();
183
183
  const {
@@ -415,4 +415,4 @@ const ProtectedEditPage = () => {
415
415
  return /* @__PURE__ */ jsxRuntime.jsx(EditPage, { canUpdate });
416
416
  };
417
417
  exports.default = ProtectedEditPage;
418
- //# sourceMappingURL=index-392a9490.js.map
418
+ //# sourceMappingURL=index-bac648de.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-392a9490.js","sources":["../../admin/src/pages/SettingsPage/pages/Users/EditPage/utils/api.js","../../admin/src/pages/SettingsPage/pages/Users/EditPage/utils/layout.js","../../admin/src/pages/SettingsPage/pages/Users/EditPage/index.js","../../admin/src/pages/SettingsPage/pages/Users/ProtectedEditPage/index.js"],"sourcesContent":["import { getFetchClient } from '@strapi/helper-plugin';\n\nconst putUser = async (id, body) => {\n const { put } = getFetchClient();\n\n const { data } = await put(`/admin/users/${id}`, body);\n\n return data.data;\n};\n\nexport { putUser };\n","const layout = [\n [\n {\n intlLabel: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n {\n intlLabel: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'bool',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n];\n\nexport default layout;\n","import React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n auth,\n Form,\n GenericInput,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAppInfo,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useAdminUsers } from '../../../../../hooks/useAdminUsers';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { getFullName } from '../../../../../utils/getFullName';\nimport { MagicLinkCE } from '../components/MagicLink';\nimport SelectRoles from '../components/SelectRoles';\nimport { editValidation } from '../utils/validations/users';\n\nimport { putUser } from './utils/api';\nimport layout from './utils/layout';\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'];\n\nconst EditPage = ({ canUpdate }) => {\n const { formatMessage } = useIntl();\n const {\n params: { id },\n } = useRouteMatch('/settings/users/:id');\n const { push } = useHistory();\n const { setUserDisplayName } = useAppInfo();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLink'\n )\n ).MagicLinkEE\n );\n\n useFocusWhenNavigate();\n\n const {\n users: [user],\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n cacheTime: 0,\n\n onError(error) {\n const { status } = error.response;\n\n // Redirect the use to the homepage if is not allowed to read\n if (status === 403) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n\n push('/');\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n lockApp();\n\n try {\n const data = await putUser(id, omit(body, 'confirmPassword'));\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n const userInfos = auth.getUserInfo();\n\n // The user is updating himself\n if (id.toString() === userInfos.id.toString()) {\n auth.setUserInfo(data);\n\n const userDisplayName = get(body, 'username') || getFullName(body.firstname, body.lastname);\n\n setUserDisplayName(userDisplayName);\n }\n actions.setValues(pick(body, fieldsToPick));\n } catch (err) {\n // FIXME when API errors are ready\n const errors = formatAPIErrors(err.response.data);\n const fieldsErrors = Object.keys(errors).reduce((acc, current) => {\n acc[current] = errors[current].id;\n\n return acc;\n }, {});\n\n actions.setErrors(fieldsErrors);\n toggleNotification({\n type: 'warning',\n message: get(err, 'response.data.error.message', 'notification.error'),\n });\n }\n\n unlockApp();\n };\n\n const isLoading = isLoadingAdminUsers || !MagicLink;\n\n const headerLabel = isLoading\n ? { id: 'app.containers.Users.EditPage.header.label-loading', defaultMessage: 'Edit user' }\n : { id: 'app.containers.Users.EditPage.header.label', defaultMessage: 'Edit {name}' };\n\n const initialData = Object.keys(pick(user, fieldsToPick)).reduce((acc, current) => {\n if (current === 'roles') {\n acc[current] = (user?.roles || []).map(({ id }) => id);\n\n return acc;\n }\n\n acc[current] = user?.[current];\n\n return acc;\n }, {});\n\n const headerLabelName =\n initialData.username || getFullName(initialData.firstname, initialData.lastname);\n\n const title = formatMessage(headerLabel, { name: headerLabelName });\n\n if (isLoading) {\n return (\n <Main aria-busy=\"true\">\n {/* TODO: translate */}\n <SettingsPageTitle name=\"Users\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={title}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/users?pageSize=10&page=1&sort=firstname\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Users\" />\n <Formik\n onSubmit={handleSubmit}\n initialValues={initialData}\n validateOnChange={false}\n validationSchema={editValidation}\n >\n {({ errors, values, handleChange, isSubmitting, dirty }) => {\n return (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate ? true : !dirty}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={title}\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n to=\"/settings/users?pageSize=10&page=1&sort=firstname\"\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n {layout.map((row) => {\n return row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={!canUpdate}\n error={errors[input.name]}\n onChange={handleChange}\n value={values[input.name] || ''}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles\n disabled={!canUpdate}\n error={errors.roles}\n onChange={handleChange}\n value={values.roles}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nEditPage.propTypes = {\n canUpdate: PropTypes.bool.isRequired,\n};\n\nexport default EditPage;\n","import React, { useEffect } from 'react';\n\nimport { LoadingIndicatorPage, useNotification, useRBAC } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\nimport { Redirect, useLocation } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditPage from '../EditPage';\n\nconst ProtectedEditPage = () => {\n const toggleNotification = useNotification();\n const permissions = useSelector(selectAdminPermissions);\n\n const memoizedPermissions = React.useMemo(\n () => ({\n read: permissions.settings.users.read,\n update: permissions.settings.users.update,\n }),\n [permissions.settings.users]\n );\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(memoizedPermissions);\n const { state } = useLocation();\n const from = state?.from ?? '/';\n\n useEffect(() => {\n if (!isLoading) {\n if (!canRead && !canUpdate) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n }\n }\n }, [isLoading, canRead, canUpdate, toggleNotification]);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to={from} />;\n }\n\n return <EditPage canUpdate={canUpdate} />;\n};\n\nexport default ProtectedEditPage;\n"],"names":["getFetchClient","useIntl","useRouteMatch","useHistory","useAppInfo","useNotification","useOverlayBlocker","useEnterprise","MagicLinkCE","useFocusWhenNavigate","useAdminUsers","omit","auth","get","getFullName","pick","formatAPIErrors","id","jsxs","Main","jsx","SettingsPageTitle","HeaderLayout","Button","Check","Link","ArrowLeft","ContentLayout","LoadingIndicatorPage","Formik","editValidation","Form","Box","Flex","Typography","Grid","GridItem","GenericInput","SelectRoles","PropTypes","useSelector","selectAdminPermissions","React","useRBAC","useLocation","useEffect","Redirect"],"mappings":"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"}
1
+ {"version":3,"file":"index-bac648de.js","sources":["../../admin/src/pages/SettingsPage/pages/Users/EditPage/utils/api.js","../../admin/src/pages/SettingsPage/pages/Users/EditPage/utils/layout.js","../../admin/src/pages/SettingsPage/pages/Users/EditPage/index.js","../../admin/src/pages/SettingsPage/pages/Users/ProtectedEditPage/index.js"],"sourcesContent":["import { getFetchClient } from '@strapi/helper-plugin';\n\nconst putUser = async (id, body) => {\n const { put } = getFetchClient();\n\n const { data } = await put(`/admin/users/${id}`, body);\n\n return data.data;\n};\n\nexport { putUser };\n","const layout = [\n [\n {\n intlLabel: {\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n },\n name: 'firstname',\n placeholder: {\n id: 'Auth.form.firstname.placeholder',\n defaultMessage: 'e.g. Kai',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n },\n name: 'lastname',\n placeholder: {\n id: 'Auth.form.lastname.placeholder',\n defaultMessage: 'e.g. Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n },\n name: 'email',\n placeholder: {\n id: 'Auth.form.email.placeholder',\n defaultMessage: 'e.g. kai.doe@strapi.io',\n },\n type: 'email',\n size: {\n col: 6,\n xs: 12,\n },\n required: true,\n },\n {\n intlLabel: {\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n },\n name: 'username',\n placeholder: {\n id: 'Auth.form.username.placeholder',\n defaultMessage: 'e.g. Kai_Doe',\n },\n type: 'text',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n [\n {\n intlLabel: {\n id: 'global.password',\n defaultMessage: 'Password',\n },\n name: 'password',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n {\n intlLabel: {\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Password confirmation',\n },\n name: 'confirmPassword',\n type: 'password',\n size: {\n col: 6,\n xs: 12,\n },\n autoComplete: 'new-password',\n },\n ],\n [\n {\n intlLabel: {\n id: 'Auth.form.active.label',\n defaultMessage: 'Active',\n },\n name: 'isActive',\n type: 'bool',\n size: {\n col: 6,\n xs: 12,\n },\n },\n ],\n];\n\nexport default layout;\n","import React from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Main,\n Typography,\n} from '@strapi/design-system';\nimport {\n auth,\n Form,\n GenericInput,\n Link,\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAppInfo,\n useFocusWhenNavigate,\n useNotification,\n useOverlayBlocker,\n} from '@strapi/helper-plugin';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport { Formik } from 'formik';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport pick from 'lodash/pick';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useAdminUsers } from '../../../../../hooks/useAdminUsers';\nimport { useEnterprise } from '../../../../../hooks/useEnterprise';\nimport { formatAPIErrors } from '../../../../../utils/formatAPIErrors';\nimport { getFullName } from '../../../../../utils/getFullName';\nimport { MagicLinkCE } from '../components/MagicLink';\nimport SelectRoles from '../components/SelectRoles';\nimport { editValidation } from '../utils/validations/users';\n\nimport { putUser } from './utils/api';\nimport layout from './utils/layout';\n\nconst fieldsToPick = ['email', 'firstname', 'lastname', 'username', 'isActive', 'roles'];\n\nconst EditPage = ({ canUpdate }) => {\n const { formatMessage } = useIntl();\n const {\n params: { id },\n } = useRouteMatch('/settings/users/:id');\n const { push } = useHistory();\n const { setUserDisplayName } = useAppInfo();\n const toggleNotification = useNotification();\n const { lockApp, unlockApp } = useOverlayBlocker();\n const MagicLink = useEnterprise(\n MagicLinkCE,\n async () =>\n (\n await import(\n '../../../../../../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLink'\n )\n ).MagicLinkEE\n );\n\n useFocusWhenNavigate();\n\n const {\n users: [user],\n isLoading: isLoadingAdminUsers,\n } = useAdminUsers(\n { id },\n {\n cacheTime: 0,\n\n onError(error) {\n const { status } = error.response;\n\n // Redirect the use to the homepage if is not allowed to read\n if (status === 403) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n\n push('/');\n } else {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n }\n },\n }\n );\n\n const handleSubmit = async (body, actions) => {\n lockApp();\n\n try {\n const data = await putUser(id, omit(body, 'confirmPassword'));\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n\n const userInfos = auth.getUserInfo();\n\n // The user is updating himself\n if (id.toString() === userInfos.id.toString()) {\n auth.setUserInfo(data);\n\n const userDisplayName = get(body, 'username') || getFullName(body.firstname, body.lastname);\n\n setUserDisplayName(userDisplayName);\n }\n actions.setValues(pick(body, fieldsToPick));\n } catch (err) {\n // FIXME when API errors are ready\n const errors = formatAPIErrors(err.response.data);\n const fieldsErrors = Object.keys(errors).reduce((acc, current) => {\n acc[current] = errors[current].id;\n\n return acc;\n }, {});\n\n actions.setErrors(fieldsErrors);\n toggleNotification({\n type: 'warning',\n message: get(err, 'response.data.error.message', 'notification.error'),\n });\n }\n\n unlockApp();\n };\n\n const isLoading = isLoadingAdminUsers || !MagicLink;\n\n const headerLabel = isLoading\n ? { id: 'app.containers.Users.EditPage.header.label-loading', defaultMessage: 'Edit user' }\n : { id: 'app.containers.Users.EditPage.header.label', defaultMessage: 'Edit {name}' };\n\n const initialData = Object.keys(pick(user, fieldsToPick)).reduce((acc, current) => {\n if (current === 'roles') {\n acc[current] = (user?.roles || []).map(({ id }) => id);\n\n return acc;\n }\n\n acc[current] = user?.[current];\n\n return acc;\n }, {});\n\n const headerLabelName =\n initialData.username || getFullName(initialData.firstname, initialData.lastname);\n\n const title = formatMessage(headerLabel, { name: headerLabelName });\n\n if (isLoading) {\n return (\n <Main aria-busy=\"true\">\n {/* TODO: translate */}\n <SettingsPageTitle name=\"Users\" />\n <HeaderLayout\n primaryAction={\n <Button disabled startIcon={<Check />} type=\"button\" size=\"L\">\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={title}\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/users?pageSize=10&page=1&sort=firstname\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <LoadingIndicatorPage />\n </ContentLayout>\n </Main>\n );\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Users\" />\n <Formik\n onSubmit={handleSubmit}\n initialValues={initialData}\n validateOnChange={false}\n validationSchema={editValidation}\n >\n {({ errors, values, handleChange, isSubmitting, dirty }) => {\n return (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={isSubmitting || !canUpdate ? true : !dirty}\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n title={title}\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n to=\"/settings/users?pageSize=10&page=1&sort=firstname\"\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n {user?.registrationToken && (\n <Box paddingBottom={6}>\n <MagicLink registrationToken={user.registrationToken} />\n </Box>\n )}\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'app.components.Users.ModalCreateBody.block-title.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid gap={5}>\n {layout.map((row) => {\n return row.map((input) => {\n return (\n <GridItem key={input.name} {...input.size}>\n <GenericInput\n {...input}\n disabled={!canUpdate}\n error={errors[input.name]}\n onChange={handleChange}\n value={values[input.name] || ''}\n />\n </GridItem>\n );\n });\n })}\n </Grid>\n </Flex>\n </Box>\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.roles',\n defaultMessage: \"User's role\",\n })}\n </Typography>\n <Grid gap={5}>\n <GridItem col={6} xs={12}>\n <SelectRoles\n disabled={!canUpdate}\n error={errors.roles}\n onChange={handleChange}\n value={values.roles}\n />\n </GridItem>\n </Grid>\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n );\n }}\n </Formik>\n </Main>\n );\n};\n\nEditPage.propTypes = {\n canUpdate: PropTypes.bool.isRequired,\n};\n\nexport default EditPage;\n","import React, { useEffect } from 'react';\n\nimport { LoadingIndicatorPage, useNotification, useRBAC } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\nimport { Redirect, useLocation } from 'react-router-dom';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditPage from '../EditPage';\n\nconst ProtectedEditPage = () => {\n const toggleNotification = useNotification();\n const permissions = useSelector(selectAdminPermissions);\n\n const memoizedPermissions = React.useMemo(\n () => ({\n read: permissions.settings.users.read,\n update: permissions.settings.users.update,\n }),\n [permissions.settings.users]\n );\n\n const {\n isLoading,\n allowedActions: { canRead, canUpdate },\n } = useRBAC(memoizedPermissions);\n const { state } = useLocation();\n const from = state?.from ?? '/';\n\n useEffect(() => {\n if (!isLoading) {\n if (!canRead && !canUpdate) {\n toggleNotification({\n type: 'info',\n message: {\n id: 'notification.permission.not-allowed-read',\n defaultMessage: 'You are not allowed to see this document',\n },\n });\n }\n }\n }, [isLoading, canRead, canUpdate, toggleNotification]);\n\n if (isLoading) {\n return <LoadingIndicatorPage />;\n }\n\n if (!canRead && !canUpdate) {\n return <Redirect to={from} />;\n }\n\n return <EditPage canUpdate={canUpdate} />;\n};\n\nexport default ProtectedEditPage;\n"],"names":["getFetchClient","useIntl","useRouteMatch","useHistory","useAppInfo","useNotification","useOverlayBlocker","useEnterprise","MagicLinkCE","useFocusWhenNavigate","useAdminUsers","omit","auth","get","getFullName","pick","formatAPIErrors","id","jsxs","Main","jsx","SettingsPageTitle","HeaderLayout","Button","Check","Link","ArrowLeft","ContentLayout","LoadingIndicatorPage","Formik","editValidation","Form","Box","Flex","Typography","Grid","GridItem","GenericInput","SelectRoles","PropTypes","useSelector","selectAdminPermissions","React","useRBAC","useLocation","useEffect","Redirect"],"mappings":"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"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const jsxRuntime = require("react/jsx-runtime");
4
4
  const helperPlugin = require("@strapi/helper-plugin");
5
5
  const reactRedux = require("react-redux");
6
- const AuthenticatedApp = require("./AuthenticatedApp-eea6970a.js");
6
+ const AuthenticatedApp = require("./AuthenticatedApp-61dfdab8.js");
7
7
  const React = require("react");
8
8
  const designSystem = require("@strapi/design-system");
9
9
  const Icons = require("@strapi/icons");
@@ -15,7 +15,7 @@ const produce = require("immer");
15
15
  require("react-query");
16
16
  require("semver/functions/lt");
17
17
  require("semver/functions/valid");
18
- require("./index-2609696f.js");
18
+ require("./index-0ed05075.js");
19
19
  require("react-dom/client");
20
20
  require("invariant");
21
21
  require("lodash/isFunction");
@@ -362,4 +362,4 @@ const ProtectedListPage = () => {
362
362
  return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings.roles.main, children: /* @__PURE__ */ jsxRuntime.jsx(RoleListPage, {}) });
363
363
  };
364
364
  exports.default = ProtectedListPage;
365
- //# sourceMappingURL=index-56a6576d.js.map
365
+ //# sourceMappingURL=index-bc709e72.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-56a6576d.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/EmptyRole/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/RoleRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/reducer.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js"],"sourcesContent":["export default () => 'todo empty role';\n","import React from 'react';\n\nimport { Box, Flex, IconButton, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleRow = ({ id, name, description, usersCount, icons, rowIndex, canUpdate }) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton onClick={icon.onClick} label={icon.label} noBorder icon={icon.icon} />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nRoleRow.propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n usersCount: PropTypes.number.isRequired,\n icons: PropTypes.array.isRequired,\n rowIndex: PropTypes.number.isRequired,\n canUpdate: PropTypes.bool,\n};\n\nRoleRow.defaultProps = {\n canUpdate: false,\n};\n\nexport default RoleRow;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nexport const initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useCallback, useReducer, useState } from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nimport EmptyRole from './components/EmptyRole';\nimport BaseRoleRow from './components/RoleRow';\nimport reducer, { initialState } from './reducer';\n\nconst useRoleActions = ({ canCreate, canDelete, canUpdate, refetchRoles }) => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = useState(false);\n const { push } = useHistory();\n const [{ selectedRoles, showModalConfirmButtonLoading, roleToDelete }, dispatch] = useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n handleToggleModal();\n };\n\n const onRoleDuplicate = useCallback(\n (id) => {\n push(`/settings/roles/duplicate/${id}`);\n },\n [push]\n );\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const onRoleRemove = useCallback((roleId) => {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: roleId,\n });\n\n handleToggleModal();\n }, []);\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleGoTo = useCallback(\n (id) => {\n push(`/settings/roles/${id}`);\n },\n [push]\n );\n\n const handleClickDelete = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n onRoleRemove(role.id);\n }\n },\n [toggleNotification, onRoleRemove]\n );\n\n const handleClickDuplicate = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n onRoleDuplicate(role.id);\n },\n [onRoleDuplicate]\n );\n\n const getIcons = useCallback(\n (role) => [\n ...(canCreate\n ? [\n {\n onClick: (e) => handleClickDuplicate(e, role),\n label: formatMessage({ id: 'app.utils.duplicate', defaultMessage: 'Duplicate' }),\n icon: <Duplicate />,\n },\n ]\n : []),\n ...(canUpdate\n ? [\n {\n onClick: () => handleGoTo(role.id),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n },\n ]\n : []),\n ...(canDelete\n ? [\n {\n onClick: (e) => handleClickDelete(e, role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n },\n ]\n : []),\n ],\n [\n formatMessage,\n handleClickDelete,\n handleClickDuplicate,\n handleGoTo,\n canCreate,\n canUpdate,\n canDelete,\n ]\n );\n\n return {\n handleNewRoleClick,\n getIcons,\n selectedRoles,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n };\n};\n\nconst RoleListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useSelector(selectAdminPermissions);\n const [{ query }] = useQueryParams();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings.roles);\n\n const {\n roles,\n isLoading,\n refetch: refetchRoles,\n } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n cacheTime: 0,\n enabled: !isLoadingForPermissions && canRead,\n }\n );\n\n const {\n handleNewRoleClick,\n getIcons,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n } = useRoleActions({ refetchRoles, canCreate, canDelete, canUpdate });\n\n // ! TODO - Show the search bar only if the user is allowed to read - add the search input\n // canRead\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n const title = formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n });\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={title}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <BaseRoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={getIcons(role)}\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n {!rowCount && !isLoading && <EmptyRole />}\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\nexport default RoleListPage;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListPage from '../ListPage';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["useIntl","jsxs","Tr","onRowClick","jsx","Td","pxToRem","Typography","Flex","stopPropagation","Box","IconButton","PropTypes","produce","useAPIErrorHandler","useNotification","useState","useHistory","useReducer","getFetchClient","useCallback","Duplicate","Pencil","Trash","useFocusWhenNavigate","useSelector","selectAdminPermissions","useQueryParams","useRBAC","useAdminRoles","Main","LoadingIndicatorPage","SettingsPageTitle","HeaderLayout","Button","Plus","ActionLayout","SearchURLQuery","ContentLayout","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","BaseRoleRow","ConfirmDialog","CheckPagePermissions","ListPage"],"mappings":"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"}
1
+ {"version":3,"file":"index-bc709e72.js","sources":["../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/EmptyRole/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/components/RoleRow/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/reducer.js","../../admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js","../../admin/src/pages/SettingsPage/pages/Roles/ProtectedListPage/index.js"],"sourcesContent":["export default () => 'todo empty role';\n","import React from 'react';\n\nimport { Box, Flex, IconButton, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, pxToRem, stopPropagation } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst RoleRow = ({ id, name, description, usersCount, icons, rowIndex, canUpdate }) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n {...(canUpdate\n ? onRowClick({\n fn: editObject.onClick,\n })\n : {})}\n >\n <Td maxWidth={pxToRem(130)}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={pxToRem(250)}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" {...stopPropagation}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton onClick={icon.onClick} label={icon.label} noBorder icon={icon.icon} />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nRoleRow.propTypes = {\n id: PropTypes.number.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n usersCount: PropTypes.number.isRequired,\n icons: PropTypes.array.isRequired,\n rowIndex: PropTypes.number.isRequired,\n canUpdate: PropTypes.bool,\n};\n\nRoleRow.defaultProps = {\n canUpdate: false,\n};\n\nexport default RoleRow;\n","/* eslint-disable consistent-return */\nimport produce from 'immer';\n\nexport const initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n};\n\nconst reducer = (state, action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useCallback, useReducer, useState } from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Main,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ConfirmDialog,\n getFetchClient,\n LoadingIndicatorPage,\n SearchURLQuery,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFocusWhenNavigate,\n useQueryParams,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport { useAdminRoles } from '../../../../../hooks/useAdminRoles';\nimport { selectAdminPermissions } from '../../../../../selectors';\n\nimport EmptyRole from './components/EmptyRole';\nimport BaseRoleRow from './components/RoleRow';\nimport reducer, { initialState } from './reducer';\n\nconst useRoleActions = ({ canCreate, canDelete, canUpdate, refetchRoles }) => {\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = useState(false);\n const { push } = useHistory();\n const [{ selectedRoles, showModalConfirmButtonLoading, roleToDelete }, dispatch] = useReducer(\n reducer,\n initialState\n );\n\n const { post } = getFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n }\n handleToggleModal();\n };\n\n const onRoleDuplicate = useCallback(\n (id) => {\n push(`/settings/roles/duplicate/${id}`);\n },\n [push]\n );\n\n const handleNewRoleClick = () => push('/settings/roles/new');\n\n const onRoleRemove = useCallback((roleId) => {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: roleId,\n });\n\n handleToggleModal();\n }, []);\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleGoTo = useCallback(\n (id) => {\n push(`/settings/roles/${id}`);\n },\n [push]\n );\n\n const handleClickDelete = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: { id: 'Roles.ListPage.notification.delete-not-allowed' },\n });\n } else {\n onRoleRemove(role.id);\n }\n },\n [toggleNotification, onRoleRemove]\n );\n\n const handleClickDuplicate = useCallback(\n (e, role) => {\n e.preventDefault();\n e.stopPropagation();\n onRoleDuplicate(role.id);\n },\n [onRoleDuplicate]\n );\n\n const getIcons = useCallback(\n (role) => [\n ...(canCreate\n ? [\n {\n onClick: (e) => handleClickDuplicate(e, role),\n label: formatMessage({ id: 'app.utils.duplicate', defaultMessage: 'Duplicate' }),\n icon: <Duplicate />,\n },\n ]\n : []),\n ...(canUpdate\n ? [\n {\n onClick: () => handleGoTo(role.id),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n },\n ]\n : []),\n ...(canDelete\n ? [\n {\n onClick: (e) => handleClickDelete(e, role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n },\n ]\n : []),\n ],\n [\n formatMessage,\n handleClickDelete,\n handleClickDuplicate,\n handleGoTo,\n canCreate,\n canUpdate,\n canDelete,\n ]\n );\n\n return {\n handleNewRoleClick,\n getIcons,\n selectedRoles,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n };\n};\n\nconst RoleListPage = () => {\n const { formatMessage } = useIntl();\n useFocusWhenNavigate();\n const permissions = useSelector(selectAdminPermissions);\n const [{ query }] = useQueryParams();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings.roles);\n\n const {\n roles,\n isLoading,\n refetch: refetchRoles,\n } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n cacheTime: 0,\n enabled: !isLoadingForPermissions && canRead,\n }\n );\n\n const {\n handleNewRoleClick,\n getIcons,\n isWarningDeleteAllOpened,\n showModalConfirmButtonLoading,\n handleToggleModal,\n handleDeleteData,\n } = useRoleActions({ refetchRoles, canCreate, canDelete, canUpdate });\n\n // ! TODO - Show the search bar only if the user is allowed to read - add the search input\n // canRead\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return (\n <Main>\n <LoadingIndicatorPage />\n </Main>\n );\n }\n\n const title = formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n });\n\n return (\n <Main>\n <SettingsPageTitle name=\"Roles\" />\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={title}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchURLQuery\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n { target: title }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <BaseRoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={getIcons(role)}\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n {!rowCount && !isLoading && <EmptyRole />}\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n isConfirmButtonLoading={showModalConfirmButtonLoading}\n onToggleDialog={handleToggleModal}\n />\n </Main>\n );\n};\n\nexport default RoleListPage;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport ListPage from '../ListPage';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.roles.main}>\n <ListPage />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["useIntl","jsxs","Tr","onRowClick","jsx","Td","pxToRem","Typography","Flex","stopPropagation","Box","IconButton","PropTypes","produce","useAPIErrorHandler","useNotification","useState","useHistory","useReducer","getFetchClient","useCallback","Duplicate","Pencil","Trash","useFocusWhenNavigate","useSelector","selectAdminPermissions","useQueryParams","useRBAC","useAdminRoles","Main","LoadingIndicatorPage","SettingsPageTitle","HeaderLayout","Button","Plus","ActionLayout","SearchURLQuery","ContentLayout","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","BaseRoleRow","ConfirmDialog","CheckPagePermissions","ListPage"],"mappings":"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"}
@@ -10,7 +10,7 @@ import { Plus, Loader as Loader$1, Check, Cross, Play, ArrowLeft } from "@strapi
10
10
  import { useFormikContext, FieldArray, Field, useFormik, FormikProvider } from "formik";
11
11
  import PropTypes from "prop-types";
12
12
  import { useIntl } from "react-intl";
13
- import { p as useEnterprise } from "./index-83133812.mjs";
13
+ import { p as useEnterprise } from "./index-b6ee936b.mjs";
14
14
  import styled from "styled-components";
15
15
  import * as yup from "yup";
16
16
  const formatValue = (value) => value.reduce((acc, curr) => {
@@ -570,7 +570,7 @@ const WebhookForm = ({
570
570
  const [showTriggerResponse, setShowTriggerResponse] = useState(false);
571
571
  const EventTable2 = useEnterprise(
572
572
  EventTableCE,
573
- async () => (await import("./index-8600b6e5.mjs")).EventTableEE
573
+ async () => (await import("./index-8e034257.mjs")).EventTableEE
574
574
  );
575
575
  const mapHeaders = (headers) => {
576
576
  if (!Object.keys(headers).length) {
@@ -823,4 +823,4 @@ export {
823
823
  EditView as E,
824
824
  EventTable as a
825
825
  };
826
- //# sourceMappingURL=index-0a328691.mjs.map
826
+ //# sourceMappingURL=index-bde05e9e.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-0a328691.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableCE.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport {\n BaseCheckbox,\n Checkbox,\n FieldLabel,\n Flex,\n Loader,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../hooks/useContentTypes';\n\nexport const formatValue = (value) =>\n value.reduce((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 10%;\n vertical-align: middle;\n text-align: center;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\nconst getCEHeaders = (isDraftAndPublish) => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n ];\n\n if (isDraftAndPublish) {\n headers.push({ id: 'app.utils.publish', defaultMessage: 'Publish' });\n headers.push({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' });\n }\n\n return headers;\n};\n\nconst getCEEvents = (isDraftAndPublish) => {\n const entryEvents = ['entry.create', 'entry.update', 'entry.delete'];\n\n if (isDraftAndPublish) {\n entryEvents.push('entry.publish', 'entry.unpublish');\n }\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\nconst WebhookEventContext = React.createContext();\n\nconst Root = ({ children }) => {\n const { formatMessage } = useIntl();\n const { collectionTypes, isLoading } = useContentTypes();\n\n const isDraftAndPublish = React.useMemo(\n () => collectionTypes.some((ct) => ct.options.draftAndPublish === true),\n [collectionTypes]\n );\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <WebhookEventContext.Provider value={{ isDraftAndPublish }}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel aria-hidden>{label}</FieldLabel>\n {isLoading && (\n <Loader>\n {formatMessage({\n id: 'Settings.webhooks.events.isLoading',\n defaultMessage: 'Events loading',\n })}\n </Loader>\n )}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n </WebhookEventContext.Provider>\n );\n};\n\nRoot.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst Headers = ({ getHeaders = getCEHeaders }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const { formatMessage } = useIntl();\n const headers = getHeaders(isDraftAndPublish);\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header.id)) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\nHeaders.defaultProps = {\n getHeaders: getCEHeaders,\n};\n\nHeaders.propTypes = {\n getHeaders: PropTypes.func,\n};\n\nconst Body = ({ providedEvents }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents = [];\n\n const formattedValue = formatValue(inputValue);\n\n const handleSelect = ({ target: { name, value } }) => {\n let set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n const handleSelectAll = ({ target: { name, value } }) => {\n let set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nBody.defaultProps = {\n providedEvents: null,\n};\n\nBody.propTypes = {\n providedEvents: PropTypes.object,\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n *\n * @param {string} str - The string to convert.\n * @returns {string} The converted string.\n */\nconst removeHyphensAndTitleCase = (str) =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst EventRow = ({ disabledEvents, name, events, inputValue, handleSelect, handleSelectAll }) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll = ({ target: { name } }) => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll({\n target: { name, value: valueToSet },\n });\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n onChange={onChangeAll}\n value={areAllCheckboxesSelected}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event}>\n <BaseCheckbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n value={inputValue.includes(event)}\n onValueChange={(value) => handleSelect({ target: { name: event, value } })}\n />\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\nEventRow.defaultProps = {\n disabledEvents: [],\n events: [],\n inputValue: [],\n handleSelect() {},\n handleSelectAll() {},\n};\n\nEventRow.propTypes = {\n disabledEvents: PropTypes.array,\n events: PropTypes.array,\n inputValue: PropTypes.array,\n handleSelect: PropTypes.func,\n handleSelectAll: PropTypes.func,\n name: PropTypes.string.isRequired,\n};\n\nexport default { Root, Headers, Body, EventRow };\n","import React from 'react';\n\nimport EventTable from '../Events';\n\n// This component is overwritten by the EE counterpart\nexport function EventTableCE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n </EventTable.Root>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { ComboboxOption, CreatableCombobox } from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n];\n\nconst Combobox = ({ name, onChange, value, ...props }) => {\n const {\n values: { headers },\n } = useFormikContext();\n const [options, setOptions] = useState(HTTP_HEADERS);\n\n useEffect(() => {\n setOptions(\n HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n )\n );\n }, [headers, value]);\n\n const handleChange = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value) => {\n setOptions((prev) => [...prev, value]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...props}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n value={value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </CreatableCombobox>\n );\n};\n\nCombobox.defaultProps = {\n value: undefined,\n};\n\nCombobox.propTypes = {\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nexport default Combobox;\n","import React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport Combobox from './Combobox';\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </FieldLabel>\n <Box padding={8} background=\"neutral100\" hasRadius>\n <FieldArray\n validateOnChange={false}\n name=\"headers\"\n render={({ push, remove }) => (\n <Grid gap={4}>\n {values.headers.map((header, index) => (\n // eslint-disable-next-line\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={Combobox}\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n error={errors.headers?.[index]?.key && errors.headers[index].key}\n />\n </GridItem>\n <GridItem col={6}>\n <Flex alignItems=\"flex-end\">\n <Box style={{ flex: 1 }}>\n <Field\n as={TextInput}\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n error={errors.headers?.[index]?.value && errors.headers[index].value}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={errors.headers?.[index]?.value ? 0 : 5}\n >\n <RemoveRoundedButton\n disabled={values.headers.length === 1}\n onClick={() => remove(index)}\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n />\n </Flex>\n </Flex>\n </GridItem>\n </React.Fragment>\n ))}\n <GridItem col={12}>\n <TextButton\n type=\"button\"\n onClick={() => {\n push({ key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </TextButton>\n </GridItem>\n </Grid>\n )}\n />\n </Box>\n </Flex>\n );\n};\n\nexport default HeadersInput;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\n// Being discussed in Notion: create a <Icon /> component in Parts\nconst Icon = styled.svg(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n path {\n fill: ${theme.colors[color]};\n }\n`\n);\n\nconst Status = ({ isPending, statusCode }) => {\n const { formatMessage } = useIntl();\n\n if (isPending) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Loader} />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Check} color=\"success700\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Cross} color=\"danger700\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\nStatus.propTypes = {\n isPending: PropTypes.bool.isRequired,\n statusCode: PropTypes.number,\n};\nStatus.defaultProps = {\n statusCode: undefined,\n};\n\nconst Message = ({ statusCode, message }) => {\n const { formatMessage } = useIntl();\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={pxToRem(250)} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\nMessage.propTypes = {\n statusCode: PropTypes.number,\n message: PropTypes.string,\n};\nMessage.defaultProps = {\n statusCode: undefined,\n message: undefined,\n};\n\nconst CancelButton = ({ onCancel }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({ id: 'Settings.webhooks.trigger.cancel', defaultMessage: 'cancel' })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n );\n};\n\nCancelButton.propTypes = { onCancel: PropTypes.func.isRequired };\n\nconst TriggerContainer = ({ isPending, onCancel, response }) => {\n const { statusCode, message } = response;\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid gap={4} style={{ alignItems: 'center' }}>\n <GridItem col={3}>\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </GridItem>\n <GridItem col={3}>\n <Status isPending={isPending} statusCode={statusCode} />\n </GridItem>\n <GridItem col={6}>\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <CancelButton onCancel={onCancel} />\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nTriggerContainer.defaultProps = {\n isPending: false,\n onCancel() {},\n response: {},\n};\n\nTriggerContainer.propTypes = {\n isPending: PropTypes.bool,\n onCancel: PropTypes.func,\n response: PropTypes.object,\n};\n\nexport default TriggerContainer;\n","import * as yup from 'yup';\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nexport const makeWebhookValidationSchema = ({ formatMessage }) =>\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n let baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n ),\n value: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n ),\n })\n );\n }),\n events: yup.array(),\n });\n","import React, { useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n TextInput,\n} from '@strapi/design-system';\nimport { Form, Link } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { useEnterprise } from '../../../../../../../hooks/useEnterprise';\nimport { EventTableCE } from '../EventTable';\nimport HeadersInput from '../HeadersInput';\nimport TriggerContainer from '../TriggerContainer';\n\nimport { makeWebhookValidationSchema } from './utils/makeWebhookValidationSchema';\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable'\n )\n ).EventTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n * @param {Object} headers\n * @returns {Array}\n */\n const mapHeaders = (headers) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n const formik = useFormik({\n initialValues: {\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n },\n onSubmit(values, { resetForm, setSubmitting }) {\n handleSubmit(values);\n\n resetForm({ values });\n setSubmitting(false);\n },\n validationSchema: makeWebhookValidationSchema({ formatMessage }),\n validateOnChange: false,\n validateOnBlur: false,\n });\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!formik.dirty}\n loading={formik.isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/webhooks\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid gap={6}>\n <GridItem col={6}>\n <Field\n as={TextInput}\n name=\"name\"\n error={formik?.errors?.name && formik.errors.name}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n required\n />\n </GridItem>\n <GridItem col={12}>\n <Field\n as={TextInput}\n name=\"url\"\n error={formik?.errors?.url && formik.errors.url}\n label={formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n })}\n required\n />\n </GridItem>\n </Grid>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n </FormikProvider>\n );\n};\n\nWebhookForm.propTypes = {\n data: PropTypes.object,\n handleSubmit: PropTypes.func.isRequired,\n triggerWebhook: PropTypes.func.isRequired,\n isCreating: PropTypes.bool.isRequired,\n isTriggering: PropTypes.bool.isRequired,\n triggerResponse: PropTypes.object,\n};\n\nWebhookForm.defaultProps = {\n data: undefined,\n triggerResponse: undefined,\n};\n\nexport default WebhookForm;\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\nimport WebhookForm from './components/WebhookForm';\n\nconst cleanData = (data) => ({\n ...data,\n headers: data.headers.reduce((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditView = () => {\n const {\n params: { id },\n } = useRouteMatch('/settings/webhooks/:id');\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const queryClient = useQueryClient();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n } = useQuery(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/webhooks/${id}`);\n\n return data;\n },\n {\n enabled: !isCreating,\n }\n );\n\n React.useEffect(() => {\n if (webhookError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhookError),\n });\n }\n }, [webhookError, toggleNotification, formatAPIError]);\n\n const {\n isLoading: isTriggering,\n data: triggerResponse,\n isIdle: isTriggerIdle,\n mutate,\n } = useMutation(() => post(`/admin/webhooks/${id}/trigger`));\n\n const triggerWebhook = () =>\n mutate(null, {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const createWebhookMutation = useMutation((body) => post('/admin/webhooks', body));\n\n const updateWebhookMutation = useMutation(({ id, body }) => put(`/admin/webhooks/${id}`, body));\n\n const handleSubmit = async (data) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data), {\n onSuccess({ data: result }) {\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.webhooks.created' },\n });\n replace(`/settings/webhooks/${result.data.id}`);\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n return;\n }\n updateWebhookMutation.mutate(\n { id, body: cleanData(data) },\n {\n onSuccess() {\n queryClient.invalidateQueries(['webhooks', id]);\n toggleNotification({\n type: 'success',\n message: { id: 'notification.form.success.fields' },\n });\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n }\n );\n };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n {...{\n data: webhookData,\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n isTriggerIdle,\n triggerResponse: triggerResponse?.data.data,\n }}\n />\n </Main>\n );\n};\n\nexport default EditView;\n"],"names":["Table","Thead","Tr","Th","Tbody","name","Td","value","React","Loader","EventTable","Publish","id"],"mappings":"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"}
1
+ {"version":3,"file":"index-bde05e9e.mjs","sources":["../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableCE.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/Combobox.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/HeadersInput/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/TriggerContainer/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/utils/makeWebhookValidationSchema.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js","../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport {\n BaseCheckbox,\n Checkbox,\n FieldLabel,\n Flex,\n Loader,\n RawTable as Table,\n RawTbody as Tbody,\n RawTd as Td,\n RawTh as Th,\n RawThead as Thead,\n RawTr as Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\nimport { useContentTypes } from '../../../../../../../hooks/useContentTypes';\n\nexport const formatValue = (value) =>\n value.reduce((acc, curr) => {\n const key = curr.split('.')[0];\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(curr);\n\n return acc;\n }, {});\n\n// TODO check whether we want to move alternating background colour tables to the design system\nconst StyledTable = styled(Table)`\n tbody tr:nth-child(odd) {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n thead th span {\n color: ${({ theme }) => theme.colors.neutral500};\n }\n\n td,\n th {\n padding-block-start: ${({ theme }) => theme.spaces[3]};\n padding-block-end: ${({ theme }) => theme.spaces[3]};\n width: 10%;\n vertical-align: middle;\n text-align: center;\n }\n\n tbody tr td:first-child {\n /**\n * Add padding to the start of the first column to avoid the checkbox appearing\n * too close to the edge of the table\n */\n padding-inline-start: ${({ theme }) => theme.spaces[2]};\n }\n`;\n\nconst getCEHeaders = (isDraftAndPublish) => {\n const headers = [\n { id: 'Settings.webhooks.events.create', defaultMessage: 'Create' },\n { id: 'Settings.webhooks.events.update', defaultMessage: 'Update' },\n { id: 'app.utils.delete', defaultMessage: 'Delete' },\n ];\n\n if (isDraftAndPublish) {\n headers.push({ id: 'app.utils.publish', defaultMessage: 'Publish' });\n headers.push({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' });\n }\n\n return headers;\n};\n\nconst getCEEvents = (isDraftAndPublish) => {\n const entryEvents = ['entry.create', 'entry.update', 'entry.delete'];\n\n if (isDraftAndPublish) {\n entryEvents.push('entry.publish', 'entry.unpublish');\n }\n\n return {\n entry: entryEvents,\n media: ['media.create', 'media.update', 'media.delete'],\n };\n};\n\nconst WebhookEventContext = React.createContext();\n\nconst Root = ({ children }) => {\n const { formatMessage } = useIntl();\n const { collectionTypes, isLoading } = useContentTypes();\n\n const isDraftAndPublish = React.useMemo(\n () => collectionTypes.some((ct) => ct.options.draftAndPublish === true),\n [collectionTypes]\n );\n\n const label = formatMessage({\n id: 'Settings.webhooks.form.events',\n defaultMessage: 'Events',\n });\n\n return (\n <WebhookEventContext.Provider value={{ isDraftAndPublish }}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel aria-hidden>{label}</FieldLabel>\n {isLoading && (\n <Loader>\n {formatMessage({\n id: 'Settings.webhooks.events.isLoading',\n defaultMessage: 'Events loading',\n })}\n </Loader>\n )}\n <StyledTable aria-label={label}>{children}</StyledTable>\n </Flex>\n </WebhookEventContext.Provider>\n );\n};\n\nRoot.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,\n};\n\nconst Headers = ({ getHeaders = getCEHeaders }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const { formatMessage } = useIntl();\n const headers = getHeaders(isDraftAndPublish);\n\n return (\n <Thead>\n <Tr>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'Settings.webhooks.event.select',\n defaultMessage: 'Select event',\n })}\n </VisuallyHidden>\n </Th>\n {headers.map((header) => {\n if (['app.utils.publish', 'app.utils.unpublish'].includes(header.id)) {\n return (\n <Th\n key={header.id}\n title={formatMessage({\n id: 'Settings.webhooks.event.publish-tooltip',\n defaultMessage: 'This event only exists for content with draft & publish enabled',\n })}\n >\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n }\n\n return (\n <Th key={header.id}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage(header)}\n </Typography>\n </Th>\n );\n })}\n </Tr>\n </Thead>\n );\n};\n\nHeaders.defaultProps = {\n getHeaders: getCEHeaders,\n};\n\nHeaders.propTypes = {\n getHeaders: PropTypes.func,\n};\n\nconst Body = ({ providedEvents }) => {\n const { isDraftAndPublish } = React.useContext(WebhookEventContext);\n\n const events = providedEvents || getCEEvents(isDraftAndPublish);\n const { values, handleChange: onChange } = useFormikContext();\n\n const inputName = 'events';\n const inputValue = values.events;\n const disabledEvents = [];\n\n const formattedValue = formatValue(inputValue);\n\n const handleSelect = ({ target: { name, value } }) => {\n let set = new Set(inputValue);\n\n if (value) {\n set.add(name);\n } else {\n set.delete(name);\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n const handleSelectAll = ({ target: { name, value } }) => {\n let set = new Set(inputValue);\n\n if (value) {\n events[name].forEach((event) => {\n if (!disabledEvents.includes(event)) {\n set.add(event);\n }\n });\n } else {\n events[name].forEach((event) => set.delete(event));\n }\n onChange({ target: { name: inputName, value: Array.from(set) } });\n };\n\n return (\n <Tbody>\n {Object.entries(events).map(([event, value]) => {\n return (\n <EventRow\n disabledEvents={disabledEvents}\n key={event}\n name={event}\n events={value}\n inputValue={formattedValue[event]}\n handleSelect={handleSelect}\n handleSelectAll={handleSelectAll}\n />\n );\n })}\n </Tbody>\n );\n};\n\nBody.defaultProps = {\n providedEvents: null,\n};\n\nBody.propTypes = {\n providedEvents: PropTypes.object,\n};\n\n/**\n * Converts a string to title case and removes hyphens.\n *\n * @param {string} str - The string to convert.\n * @returns {string} The converted string.\n */\nconst removeHyphensAndTitleCase = (str) =>\n str\n .replace(/-/g, ' ')\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n\nconst EventRow = ({ disabledEvents, name, events, inputValue, handleSelect, handleSelectAll }) => {\n const { formatMessage } = useIntl();\n const enabledCheckboxes = events.filter((event) => !disabledEvents.includes(event));\n\n const hasSomeCheckboxSelected = inputValue.length > 0;\n const areAllCheckboxesSelected = inputValue.length === enabledCheckboxes.length;\n\n const onChangeAll = ({ target: { name } }) => {\n const valueToSet = !areAllCheckboxesSelected;\n\n handleSelectAll({\n target: { name, value: valueToSet },\n });\n };\n\n const targetColumns = 5;\n\n return (\n <Tr>\n <Td>\n <Checkbox\n indeterminate={hasSomeCheckboxSelected && !areAllCheckboxesSelected}\n aria-label={formatMessage({\n id: 'global.select-all-entries',\n defaultMessage: 'Select all entries',\n })}\n name={name}\n onChange={onChangeAll}\n value={areAllCheckboxesSelected}\n >\n {removeHyphensAndTitleCase(name)}\n </Checkbox>\n </Td>\n\n {events.map((event) => {\n return (\n <Td key={event}>\n <BaseCheckbox\n disabled={disabledEvents.includes(event)}\n aria-label={event}\n name={event}\n value={inputValue.includes(event)}\n onValueChange={(value) => handleSelect({ target: { name: event, value } })}\n />\n </Td>\n );\n })}\n {events.length < targetColumns && <Td colSpan={targetColumns - events.length} />}\n </Tr>\n );\n};\n\nEventRow.defaultProps = {\n disabledEvents: [],\n events: [],\n inputValue: [],\n handleSelect() {},\n handleSelectAll() {},\n};\n\nEventRow.propTypes = {\n disabledEvents: PropTypes.array,\n events: PropTypes.array,\n inputValue: PropTypes.array,\n handleSelect: PropTypes.func,\n handleSelectAll: PropTypes.func,\n name: PropTypes.string.isRequired,\n};\n\nexport default { Root, Headers, Body, EventRow };\n","import React from 'react';\n\nimport EventTable from '../Events';\n\n// This component is overwritten by the EE counterpart\nexport function EventTableCE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n </EventTable.Root>\n );\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { ComboboxOption, CreatableCombobox } from '@strapi/design-system';\nimport { useFormikContext } from 'formik';\nimport PropTypes from 'prop-types';\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n];\n\nconst Combobox = ({ name, onChange, value, ...props }) => {\n const {\n values: { headers },\n } = useFormikContext();\n const [options, setOptions] = useState(HTTP_HEADERS);\n\n useEffect(() => {\n setOptions(\n HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== value && header.key === key)\n )\n );\n }, [headers, value]);\n\n const handleChange = (value) => {\n onChange({ target: { name, value } });\n };\n\n const handleCreateOption = (value) => {\n setOptions((prev) => [...prev, value]);\n\n handleChange(value);\n };\n\n return (\n <CreatableCombobox\n {...props}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n value={value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </CreatableCombobox>\n );\n};\n\nCombobox.defaultProps = {\n value: undefined,\n};\n\nCombobox.propTypes = {\n name: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n value: PropTypes.string,\n};\n\nexport default Combobox;\n","import React from 'react';\n\nimport {\n Box,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n TextButton,\n TextInput,\n} from '@strapi/design-system';\nimport { RemoveRoundedButton } from '@strapi/helper-plugin';\nimport { Plus } from '@strapi/icons';\nimport { Field, FieldArray, useFormikContext } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport Combobox from './Combobox';\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n const { values, errors } = useFormikContext();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </FieldLabel>\n <Box padding={8} background=\"neutral100\" hasRadius>\n <FieldArray\n validateOnChange={false}\n name=\"headers\"\n render={({ push, remove }) => (\n <Grid gap={4}>\n {values.headers.map((header, index) => (\n // eslint-disable-next-line\n <React.Fragment key={`${index}.${header.key}`}>\n <GridItem col={6}>\n <Field\n as={Combobox}\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n error={errors.headers?.[index]?.key && errors.headers[index].key}\n />\n </GridItem>\n <GridItem col={6}>\n <Flex alignItems=\"flex-end\">\n <Box style={{ flex: 1 }}>\n <Field\n as={TextInput}\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n error={errors.headers?.[index]?.value && errors.headers[index].value}\n />\n </Box>\n <Flex\n paddingLeft={2}\n style={{ alignSelf: 'center' }}\n paddingTop={errors.headers?.[index]?.value ? 0 : 5}\n >\n <RemoveRoundedButton\n disabled={values.headers.length === 1}\n onClick={() => remove(index)}\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n />\n </Flex>\n </Flex>\n </GridItem>\n </React.Fragment>\n ))}\n <GridItem col={12}>\n <TextButton\n type=\"button\"\n onClick={() => {\n push({ key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </TextButton>\n </GridItem>\n </Grid>\n )}\n />\n </Box>\n </Flex>\n );\n};\n\nexport default HeadersInput;\n","import React from 'react';\n\nimport { Box, Flex, Grid, GridItem, Typography } from '@strapi/design-system';\nimport { pxToRem } from '@strapi/helper-plugin';\nimport { Check, Cross, Loader } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport styled from 'styled-components';\n\n// Being discussed in Notion: create a <Icon /> component in Parts\nconst Icon = styled.svg(\n ({ theme, color }) => `\n width: ${12 / 16}rem;\n height: ${12 / 16}rem;\n\n path {\n fill: ${theme.colors[color]};\n }\n`\n);\n\nconst Status = ({ isPending, statusCode }) => {\n const { formatMessage } = useIntl();\n\n if (isPending) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Loader} />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.pending', defaultMessage: 'pending' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Check} color=\"success700\" />\n <Typography>\n {formatMessage({ id: 'Settings.webhooks.trigger.success', defaultMessage: 'success' })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Icon as={Cross} color=\"danger700\" />\n <Typography>\n {formatMessage({ id: 'Settings.error', defaultMessage: 'error' })} {statusCode}\n </Typography>\n </Flex>\n );\n }\n\n return null;\n};\nStatus.propTypes = {\n isPending: PropTypes.bool.isRequired,\n statusCode: PropTypes.number,\n};\nStatus.defaultProps = {\n statusCode: undefined,\n};\n\nconst Message = ({ statusCode, message }) => {\n const { formatMessage } = useIntl();\n\n if (statusCode >= 200 && statusCode < 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Typography textColor=\"neutral600\" ellipsis>\n {formatMessage({\n id: 'Settings.webhooks.trigger.success.label',\n defaultMessage: 'Trigger succeeded',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (statusCode >= 300) {\n return (\n <Flex justifyContent=\"flex-end\">\n <Flex maxWidth={pxToRem(250)} justifyContent=\"flex-end\" title={message}>\n <Typography ellipsis textColor=\"neutral600\">\n {message}\n </Typography>\n </Flex>\n </Flex>\n );\n }\n\n return null;\n};\nMessage.propTypes = {\n statusCode: PropTypes.number,\n message: PropTypes.string,\n};\nMessage.defaultProps = {\n statusCode: undefined,\n message: undefined,\n};\n\nconst CancelButton = ({ onCancel }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex justifyContent=\"flex-end\">\n <button onClick={onCancel} type=\"button\">\n <Flex gap={2} alignItems=\"center\">\n <Typography textColor=\"neutral400\">\n {formatMessage({ id: 'Settings.webhooks.trigger.cancel', defaultMessage: 'cancel' })}\n </Typography>\n <Icon as={Cross} color=\"neutral400\" />\n </Flex>\n </button>\n </Flex>\n );\n};\n\nCancelButton.propTypes = { onCancel: PropTypes.func.isRequired };\n\nconst TriggerContainer = ({ isPending, onCancel, response }) => {\n const { statusCode, message } = response;\n const { formatMessage } = useIntl();\n\n return (\n <Box background=\"neutral0\" padding={5} shadow=\"filterShadow\" hasRadius>\n <Grid gap={4} style={{ alignItems: 'center' }}>\n <GridItem col={3}>\n <Typography>\n {formatMessage({\n id: 'Settings.webhooks.trigger.test',\n defaultMessage: 'Test-trigger',\n })}\n </Typography>\n </GridItem>\n <GridItem col={3}>\n <Status isPending={isPending} statusCode={statusCode} />\n </GridItem>\n <GridItem col={6}>\n {!isPending ? (\n <Message statusCode={statusCode} message={message} />\n ) : (\n <CancelButton onCancel={onCancel} />\n )}\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nTriggerContainer.defaultProps = {\n isPending: false,\n onCancel() {},\n response: {},\n};\n\nTriggerContainer.propTypes = {\n isPending: PropTypes.bool,\n onCancel: PropTypes.func,\n response: PropTypes.object,\n};\n\nexport default TriggerContainer;\n","import * as yup from 'yup';\n\nconst NAME_REGEX = /(^$)|(^[A-Za-z][_0-9A-Za-z ]*$)/;\nconst URL_REGEX = /(^$)|((https?:\\/\\/.*)(d*)\\/?(.*))/;\n\nexport const makeWebhookValidationSchema = ({ formatMessage }) =>\n yup.object().shape({\n name: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.name.required',\n defaultMessage: 'Name is required',\n })\n )\n .matches(\n NAME_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.name.regex',\n defaultMessage:\n 'The name must start with a letter and only contain letters, numbers, spaces and underscores',\n })\n ),\n url: yup\n .string()\n .required(\n formatMessage({\n id: 'Settings.webhooks.validation.url.required',\n defaultMessage: 'Url is required',\n })\n )\n .matches(\n URL_REGEX,\n formatMessage({\n id: 'Settings.webhooks.validation.url.regex',\n defaultMessage: 'The value must be a valid Url',\n })\n ),\n headers: yup.lazy((array) => {\n let baseSchema = yup.array();\n\n if (array.length === 1) {\n const { key, value } = array[0];\n\n if (!key && !value) {\n return baseSchema;\n }\n }\n\n return baseSchema.of(\n yup.object().shape({\n key: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.key',\n defaultMessage: 'Key is required',\n })\n ),\n value: yup.string().required(\n formatMessage({\n id: 'Settings.webhooks.validation.value',\n defaultMessage: 'Value is required',\n })\n ),\n })\n );\n }),\n events: yup.array(),\n });\n","import React, { useState } from 'react';\n\nimport {\n Box,\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n TextInput,\n} from '@strapi/design-system';\nimport { Form, Link } from '@strapi/helper-plugin';\nimport { ArrowLeft, Check, Play as Publish } from '@strapi/icons';\nimport { Field, FormikProvider, useFormik } from 'formik';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { useEnterprise } from '../../../../../../../hooks/useEnterprise';\nimport { EventTableCE } from '../EventTable';\nimport HeadersInput from '../HeadersInput';\nimport TriggerContainer from '../TriggerContainer';\n\nimport { makeWebhookValidationSchema } from './utils/makeWebhookValidationSchema';\n\nconst WebhookForm = ({\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n triggerResponse,\n data,\n}) => {\n const { formatMessage } = useIntl();\n const [showTriggerResponse, setShowTriggerResponse] = useState(false);\n const EventTable = useEnterprise(\n EventTableCE,\n async () =>\n (\n await import(\n '../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable'\n )\n ).EventTableEE\n );\n\n /**\n * Map the headers into a form that can be used within the formik form\n * @param {Object} headers\n * @returns {Array}\n */\n const mapHeaders = (headers) => {\n if (!Object.keys(headers).length) {\n return [{ key: '', value: '' }];\n }\n\n return Object.entries(headers).map(([key, value]) => ({ key, value }));\n };\n\n const formik = useFormik({\n initialValues: {\n name: data?.name || '',\n url: data?.url || '',\n headers: mapHeaders(data?.headers || {}),\n events: data?.events || [],\n },\n onSubmit(values, { resetForm, setSubmitting }) {\n handleSubmit(values);\n\n resetForm({ values });\n setSubmitting(false);\n },\n validationSchema: makeWebhookValidationSchema({ formatMessage }),\n validateOnChange: false,\n validateOnBlur: false,\n });\n\n // block rendering until the EE component is fully loaded\n if (!EventTable) {\n return null;\n }\n\n return (\n <FormikProvider value={formik}>\n <Form onSubmit={formik.handleSubmit}>\n <HeaderLayout\n primaryAction={\n <Flex gap={2}>\n <Button\n onClick={() => {\n triggerWebhook();\n setShowTriggerResponse(true);\n }}\n variant=\"tertiary\"\n startIcon={<Publish />}\n disabled={isCreating || isTriggering}\n size=\"L\"\n >\n {formatMessage({\n id: 'Settings.webhooks.trigger',\n defaultMessage: 'Trigger',\n })}\n </Button>\n <Button\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n disabled={!formik.dirty}\n loading={formik.isSubmitting}\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n </Flex>\n }\n title={\n isCreating\n ? formatMessage({\n id: 'Settings.webhooks.create',\n defaultMessage: 'Create a webhook',\n })\n : data?.name\n }\n navigationAction={\n <Link startIcon={<ArrowLeft />} to=\"/settings/webhooks\">\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n <ContentLayout>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {showTriggerResponse && (\n <TriggerContainer\n isPending={isTriggering}\n response={triggerResponse}\n onCancel={() => setShowTriggerResponse(false)}\n />\n )}\n <Box background=\"neutral0\" padding={8} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <Grid gap={6}>\n <GridItem col={6}>\n <Field\n as={TextInput}\n name=\"name\"\n error={formik?.errors?.name && formik.errors.name}\n label={formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n required\n />\n </GridItem>\n <GridItem col={12}>\n <Field\n as={TextInput}\n name=\"url\"\n error={formik?.errors?.url && formik.errors.url}\n label={formatMessage({\n id: 'Settings.roles.form.input.url',\n defaultMessage: 'Url',\n })}\n required\n />\n </GridItem>\n </Grid>\n <HeadersInput />\n <EventTable />\n </Flex>\n </Box>\n </Flex>\n </ContentLayout>\n </Form>\n </FormikProvider>\n );\n};\n\nWebhookForm.propTypes = {\n data: PropTypes.object,\n handleSubmit: PropTypes.func.isRequired,\n triggerWebhook: PropTypes.func.isRequired,\n isCreating: PropTypes.bool.isRequired,\n isTriggering: PropTypes.bool.isRequired,\n triggerResponse: PropTypes.object,\n};\n\nWebhookForm.defaultProps = {\n data: undefined,\n triggerResponse: undefined,\n};\n\nexport default WebhookForm;\n","import * as React from 'react';\n\nimport { Main } from '@strapi/design-system';\nimport {\n LoadingIndicatorPage,\n SettingsPageTitle,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useHistory, useRouteMatch } from 'react-router-dom';\n\nimport { useContentTypes } from '../../../../../hooks/useContentTypes';\n\nimport WebhookForm from './components/WebhookForm';\n\nconst cleanData = (data) => ({\n ...data,\n headers: data.headers.reduce((acc, { key, value }) => {\n if (key !== '') {\n acc[key] = value;\n }\n\n return acc;\n }, {}),\n});\n\nconst EditView = () => {\n const {\n params: { id },\n } = useRouteMatch('/settings/webhooks/:id');\n const isCreating = id === 'create';\n\n const { replace } = useHistory();\n const toggleNotification = useNotification();\n const { formatAPIError } = useAPIErrorHandler();\n const queryClient = useQueryClient();\n const { isLoading: isLoadingForModels } = useContentTypes();\n const { put, get, post } = useFetchClient();\n\n const {\n isLoading,\n data: webhookData,\n error: webhookError,\n } = useQuery(\n ['webhooks', id],\n async () => {\n const {\n data: { data },\n } = await get(`/admin/webhooks/${id}`);\n\n return data;\n },\n {\n enabled: !isCreating,\n }\n );\n\n React.useEffect(() => {\n if (webhookError) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(webhookError),\n });\n }\n }, [webhookError, toggleNotification, formatAPIError]);\n\n const {\n isLoading: isTriggering,\n data: triggerResponse,\n isIdle: isTriggerIdle,\n mutate,\n } = useMutation(() => post(`/admin/webhooks/${id}/trigger`));\n\n const triggerWebhook = () =>\n mutate(null, {\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n const createWebhookMutation = useMutation((body) => post('/admin/webhooks', body));\n\n const updateWebhookMutation = useMutation(({ id, body }) => put(`/admin/webhooks/${id}`, body));\n\n const handleSubmit = async (data) => {\n if (isCreating) {\n createWebhookMutation.mutate(cleanData(data), {\n onSuccess({ data: result }) {\n toggleNotification({\n type: 'success',\n message: { id: 'Settings.webhooks.created' },\n });\n replace(`/settings/webhooks/${result.data.id}`);\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n });\n\n return;\n }\n updateWebhookMutation.mutate(\n { id, body: cleanData(data) },\n {\n onSuccess() {\n queryClient.invalidateQueries(['webhooks', id]);\n toggleNotification({\n type: 'success',\n message: { id: 'notification.form.success.fields' },\n });\n },\n onError(error) {\n toggleNotification({\n type: 'warning',\n message: formatAPIError(error),\n });\n },\n }\n );\n };\n\n if (isLoading || isLoadingForModels) {\n return <LoadingIndicatorPage />;\n }\n\n return (\n <Main>\n <SettingsPageTitle name=\"Webhooks\" />\n <WebhookForm\n {...{\n data: webhookData,\n handleSubmit,\n triggerWebhook,\n isCreating,\n isTriggering,\n isTriggerIdle,\n triggerResponse: triggerResponse?.data.data,\n }}\n />\n </Main>\n );\n};\n\nexport default EditView;\n"],"names":["Table","Thead","Tr","Th","Tbody","name","Td","value","React","Loader","EventTable","Publish","id"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import PropTypes from "prop-types";
3
3
  import { useIntl } from "react-intl";
4
- import { T as getBasename } from "./index-83133812.mjs";
4
+ import { T as getBasename } from "./index-b6ee936b.mjs";
5
5
  import { IconButton, Select, Option } from "@strapi/design-system";
6
6
  import { useNotification, useClipboard, ContentBox, getFetchClient } from "@strapi/helper-plugin";
7
7
  import { Duplicate, Loader as Loader$1 } from "@strapi/icons";
@@ -129,4 +129,4 @@ export {
129
129
  SelectRoles as S,
130
130
  MagicLinkWrapper as a
131
131
  };
132
- //# sourceMappingURL=index-a3bc2b4e.mjs.map
132
+ //# sourceMappingURL=index-be3e5f69.mjs.map