@strapi/admin 4.16.1 → 4.16.2

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-7e646400.js → AuthenticatedApp-342bf22f.js} +21 -21
  2. package/dist/_chunks/{AuthenticatedApp-7e646400.js.map → AuthenticatedApp-342bf22f.js.map} +1 -1
  3. package/dist/_chunks/{AuthenticatedApp-722b2e84.mjs → AuthenticatedApp-bb31f306.mjs} +21 -21
  4. package/dist/_chunks/{AuthenticatedApp-722b2e84.mjs.map → AuthenticatedApp-bb31f306.mjs.map} +1 -1
  5. package/dist/_chunks/{HomePage-8c98b31f.mjs → HomePage-0c7717c0.mjs} +4 -4
  6. package/dist/_chunks/{HomePage-8c98b31f.mjs.map → HomePage-0c7717c0.mjs.map} +1 -1
  7. package/dist/_chunks/{HomePage-0e0dc215.js → HomePage-175f79c7.js} +4 -4
  8. package/dist/_chunks/{HomePage-0e0dc215.js.map → HomePage-175f79c7.js.map} +1 -1
  9. package/dist/_chunks/{HomePage-76bcd0cd.mjs → HomePage-246cc590.mjs} +4 -4
  10. package/dist/_chunks/{HomePage-76bcd0cd.mjs.map → HomePage-246cc590.mjs.map} +1 -1
  11. package/dist/_chunks/{HomePage-ef787733.js → HomePage-6ff9e578.js} +4 -4
  12. package/dist/_chunks/{HomePage-ef787733.js.map → HomePage-6ff9e578.js.map} +1 -1
  13. package/dist/_chunks/{InstalledPluginsPage-67b5f9c2.mjs → InstalledPluginsPage-170aff77.mjs} +3 -3
  14. package/dist/_chunks/{InstalledPluginsPage-67b5f9c2.mjs.map → InstalledPluginsPage-170aff77.mjs.map} +1 -1
  15. package/dist/_chunks/{InstalledPluginsPage-6f0897e8.js → InstalledPluginsPage-3ae5dbb6.js} +3 -3
  16. package/dist/_chunks/{InstalledPluginsPage-6f0897e8.js.map → InstalledPluginsPage-3ae5dbb6.js.map} +1 -1
  17. package/dist/_chunks/{Login-5b447dd2.js → Login-576bbc11.js} +2 -2
  18. package/dist/_chunks/{Login-5b447dd2.js.map → Login-576bbc11.js.map} +1 -1
  19. package/dist/_chunks/{Login-8ade15b8.mjs → Login-d627bb0a.mjs} +2 -2
  20. package/dist/_chunks/{Login-8ade15b8.mjs.map → Login-d627bb0a.mjs.map} +1 -1
  21. package/dist/_chunks/{MarketplacePage-58fc8a9a.mjs → MarketplacePage-1cbfa8fd.mjs} +3 -3
  22. package/dist/_chunks/{MarketplacePage-58fc8a9a.mjs.map → MarketplacePage-1cbfa8fd.mjs.map} +1 -1
  23. package/dist/_chunks/{MarketplacePage-1c954f9d.js → MarketplacePage-e7cd973b.js} +3 -3
  24. package/dist/_chunks/{MarketplacePage-1c954f9d.js.map → MarketplacePage-e7cd973b.js.map} +1 -1
  25. package/dist/_chunks/{ProfilePage-a68483d3.js → ProfilePage-52844daa.js} +3 -3
  26. package/dist/_chunks/{ProfilePage-a68483d3.js.map → ProfilePage-52844daa.js.map} +1 -1
  27. package/dist/_chunks/{ProfilePage-a2f0366d.mjs → ProfilePage-ef400907.mjs} +3 -3
  28. package/dist/_chunks/{ProfilePage-a2f0366d.mjs.map → ProfilePage-ef400907.mjs.map} +1 -1
  29. package/dist/_chunks/{constants-155022af.js → constants-4aca55b6.js} +3 -3
  30. package/dist/_chunks/{constants-155022af.js.map → constants-4aca55b6.js.map} +1 -1
  31. package/dist/_chunks/{constants-3967338c.js → constants-6c68e9a0.js} +5 -5
  32. package/dist/_chunks/{constants-3967338c.js.map → constants-6c68e9a0.js.map} +1 -1
  33. package/dist/_chunks/{constants-da1ff847.mjs → constants-74b8a935.mjs} +6 -6
  34. package/dist/_chunks/{constants-da1ff847.mjs.map → constants-74b8a935.mjs.map} +1 -1
  35. package/dist/_chunks/{constants-ecad1e20.mjs → constants-a6fd64fc.mjs} +2 -2
  36. package/dist/_chunks/{constants-ecad1e20.mjs.map → constants-a6fd64fc.mjs.map} +1 -1
  37. package/dist/_chunks/{constants-6bf1c3c2.mjs → constants-ae0b83df.mjs} +5 -5
  38. package/dist/_chunks/{constants-6bf1c3c2.mjs.map → constants-ae0b83df.mjs.map} +1 -1
  39. package/dist/_chunks/{constants-32d352b6.mjs → constants-c1f1f698.mjs} +3 -3
  40. package/dist/_chunks/{constants-32d352b6.mjs.map → constants-c1f1f698.mjs.map} +1 -1
  41. package/dist/_chunks/{constants-eb77e47a.js → constants-ddd2d586.js} +2 -2
  42. package/dist/_chunks/{constants-eb77e47a.js.map → constants-ddd2d586.js.map} +1 -1
  43. package/dist/_chunks/{constants-d097f266.js → constants-e05f06d4.js} +6 -6
  44. package/dist/_chunks/{constants-d097f266.js.map → constants-e05f06d4.js.map} +1 -1
  45. package/dist/_chunks/{index-d47fc57d.mjs → index-10a05917.mjs} +4 -4
  46. package/dist/_chunks/{index-d47fc57d.mjs.map → index-10a05917.mjs.map} +1 -1
  47. package/dist/_chunks/{index-be9a9d91.mjs → index-115d317b.mjs} +3 -3
  48. package/dist/_chunks/{index-be9a9d91.mjs.map → index-115d317b.mjs.map} +1 -1
  49. package/dist/_chunks/{index-19bd1210.js → index-171715e4.js} +6 -6
  50. package/dist/_chunks/{index-19bd1210.js.map → index-171715e4.js.map} +1 -1
  51. package/dist/_chunks/{index-b3ad6e5f.js → index-1bac5263.js} +3 -3
  52. package/dist/_chunks/{index-b3ad6e5f.js.map → index-1bac5263.js.map} +1 -1
  53. package/dist/_chunks/{index-2064cfaf.js → index-200c5a6a.js} +3 -3
  54. package/dist/_chunks/{index-2064cfaf.js.map → index-200c5a6a.js.map} +1 -1
  55. package/dist/_chunks/{index-cc38421b.mjs → index-215b5421.mjs} +5 -5
  56. package/dist/_chunks/{index-cc38421b.mjs.map → index-215b5421.mjs.map} +1 -1
  57. package/dist/_chunks/{index-d9aae905.js → index-23401c29.js} +5 -5
  58. package/dist/_chunks/{index-d9aae905.js.map → index-23401c29.js.map} +1 -1
  59. package/dist/_chunks/{index-ceacb143.js → index-242c859c.js} +5 -5
  60. package/dist/_chunks/{index-ceacb143.js.map → index-242c859c.js.map} +1 -1
  61. package/dist/_chunks/{index-061947f1.mjs → index-26fcb3ca.mjs} +20 -20
  62. package/dist/_chunks/{index-061947f1.mjs.map → index-26fcb3ca.mjs.map} +1 -1
  63. package/dist/_chunks/{index-391891ba.mjs → index-28dd9303.mjs} +3 -3
  64. package/dist/_chunks/{index-391891ba.mjs.map → index-28dd9303.mjs.map} +1 -1
  65. package/dist/_chunks/{index-d844fbda.mjs → index-296c14bf.mjs} +3 -3
  66. package/dist/_chunks/{index-d844fbda.mjs.map → index-296c14bf.mjs.map} +1 -1
  67. package/dist/_chunks/{index-819443df.js → index-2de06c32.js} +4 -4
  68. package/dist/_chunks/{index-819443df.js.map → index-2de06c32.js.map} +1 -1
  69. package/dist/_chunks/{index-aad003e4.mjs → index-2eb69b5d.mjs} +5 -5
  70. package/dist/_chunks/{index-aad003e4.mjs.map → index-2eb69b5d.mjs.map} +1 -1
  71. package/dist/_chunks/{index-b6b2a306.js → index-2f61e3ae.js} +3 -3
  72. package/dist/_chunks/{index-b6b2a306.js.map → index-2f61e3ae.js.map} +1 -1
  73. package/dist/_chunks/{index-707e89df.mjs → index-308b73ba.mjs} +3 -3
  74. package/dist/_chunks/{index-707e89df.mjs.map → index-308b73ba.mjs.map} +1 -1
  75. package/dist/_chunks/{index-c6c83bb3.js → index-34e41e15.js} +2 -2
  76. package/dist/_chunks/{index-c6c83bb3.js.map → index-34e41e15.js.map} +1 -1
  77. package/dist/_chunks/{index-97c03ee2.mjs → index-383efae4.mjs} +4 -4
  78. package/dist/_chunks/{index-97c03ee2.mjs.map → index-383efae4.mjs.map} +1 -1
  79. package/dist/_chunks/{index-c8b6afca.js → index-3b426575.js} +4 -4
  80. package/dist/_chunks/{index-c8b6afca.js.map → index-3b426575.js.map} +1 -1
  81. package/dist/_chunks/{index-ecfaf6c1.js → index-47af1603.js} +3 -3
  82. package/dist/_chunks/{index-ecfaf6c1.js.map → index-47af1603.js.map} +1 -1
  83. package/dist/_chunks/{index-ad0512f0.js → index-4d9b2cb9.js} +4 -4
  84. package/dist/_chunks/{index-ad0512f0.js.map → index-4d9b2cb9.js.map} +1 -1
  85. package/dist/_chunks/{index-8f8eaed6.js → index-4de70b5d.js} +4 -4
  86. package/dist/_chunks/{index-8f8eaed6.js.map → index-4de70b5d.js.map} +1 -1
  87. package/dist/_chunks/{index-cdcf1a78.js → index-59b1f604.js} +5 -5
  88. package/dist/_chunks/{index-cdcf1a78.js.map → index-59b1f604.js.map} +1 -1
  89. package/dist/_chunks/{index-209cca35.mjs → index-5a5217e0.mjs} +3 -3
  90. package/dist/_chunks/{index-209cca35.mjs.map → index-5a5217e0.mjs.map} +1 -1
  91. package/dist/_chunks/{index-b5eec5e2.js → index-5da07c41.js} +5 -5
  92. package/dist/_chunks/{index-b5eec5e2.js.map → index-5da07c41.js.map} +1 -1
  93. package/dist/_chunks/{index-6731bae9.js → index-600cb5dd.js} +5 -5
  94. package/dist/_chunks/{index-6731bae9.js.map → index-600cb5dd.js.map} +1 -1
  95. package/dist/_chunks/{index-82fca9fd.mjs → index-608d8d10.mjs} +3 -3
  96. package/dist/_chunks/{index-82fca9fd.mjs.map → index-608d8d10.mjs.map} +1 -1
  97. package/dist/_chunks/{index-73971882.js → index-7d578921.js} +3 -3
  98. package/dist/_chunks/{index-73971882.js.map → index-7d578921.js.map} +1 -1
  99. package/dist/_chunks/{index-3aab6b0f.mjs → index-8109fa91.mjs} +6 -6
  100. package/dist/_chunks/{index-3aab6b0f.mjs.map → index-8109fa91.mjs.map} +1 -1
  101. package/dist/_chunks/{index-57f9a06f.js → index-82c7a120.js} +8 -8
  102. package/dist/_chunks/{index-57f9a06f.js.map → index-82c7a120.js.map} +1 -1
  103. package/dist/_chunks/{index-91726188.js → index-83d53962.js} +3 -3
  104. package/dist/_chunks/{index-91726188.js.map → index-83d53962.js.map} +1 -1
  105. package/dist/_chunks/{index-3c67c00b.mjs → index-8933483b.mjs} +4 -4
  106. package/dist/_chunks/{index-3c67c00b.mjs.map → index-8933483b.mjs.map} +1 -1
  107. package/dist/_chunks/{index-24c2627d.mjs → index-91df57b1.mjs} +3 -3
  108. package/dist/_chunks/{index-24c2627d.mjs.map → index-91df57b1.mjs.map} +1 -1
  109. package/dist/_chunks/{index-d1219a93.mjs → index-989bbeec.mjs} +3 -3
  110. package/dist/_chunks/{index-d1219a93.mjs.map → index-989bbeec.mjs.map} +1 -1
  111. package/dist/_chunks/{index-ec2d87cb.js → index-9910dda4.js} +4 -4
  112. package/dist/_chunks/{index-ec2d87cb.js.map → index-9910dda4.js.map} +1 -1
  113. package/dist/_chunks/{index-78f4851e.js → index-9afb163a.js} +3 -3
  114. package/dist/_chunks/{index-78f4851e.js.map → index-9afb163a.js.map} +1 -1
  115. package/dist/_chunks/{index-1502dedd.js → index-9f61bef8.js} +4 -4
  116. package/dist/_chunks/{index-1502dedd.js.map → index-9f61bef8.js.map} +1 -1
  117. package/dist/_chunks/{index-86a4fbbf.mjs → index-ab31623a.mjs} +3 -3
  118. package/dist/_chunks/{index-86a4fbbf.mjs.map → index-ab31623a.mjs.map} +1 -1
  119. package/dist/_chunks/{index-cea88049.mjs → index-ac85118a.mjs} +4 -4
  120. package/dist/_chunks/{index-cea88049.mjs.map → index-ac85118a.mjs.map} +1 -1
  121. package/dist/_chunks/{index-55155d83.mjs → index-ad8e55c0.mjs} +2 -2
  122. package/dist/_chunks/{index-55155d83.mjs.map → index-ad8e55c0.mjs.map} +1 -1
  123. package/dist/_chunks/{index-6a8a1f1d.js → index-aedeaf5a.js} +3 -3
  124. package/dist/_chunks/{index-6a8a1f1d.js.map → index-aedeaf5a.js.map} +1 -1
  125. package/dist/_chunks/{index-724169b2.js → index-bbac142a.js} +3 -3
  126. package/dist/_chunks/{index-724169b2.js.map → index-bbac142a.js.map} +1 -1
  127. package/dist/_chunks/{index-8609fab4.mjs → index-bd18f803.mjs} +8 -8
  128. package/dist/_chunks/{index-8609fab4.mjs.map → index-bd18f803.mjs.map} +1 -1
  129. package/dist/_chunks/{index-06e97c47.mjs → index-c8b8a2ee.mjs} +5 -5
  130. package/dist/_chunks/{index-06e97c47.mjs.map → index-c8b8a2ee.mjs.map} +1 -1
  131. package/dist/_chunks/{index-7b174d49.js → index-c97f5820.js} +20 -20
  132. package/dist/_chunks/{index-7b174d49.js.map → index-c97f5820.js.map} +1 -1
  133. package/dist/_chunks/{index-c5fa9006.mjs → index-cb6a72d2.mjs} +5 -5
  134. package/dist/_chunks/{index-c5fa9006.mjs.map → index-cb6a72d2.mjs.map} +1 -1
  135. package/dist/_chunks/{index-6685e5a8.js → index-cbc7c054.js} +3 -3
  136. package/dist/_chunks/{index-6685e5a8.js.map → index-cbc7c054.js.map} +1 -1
  137. package/dist/_chunks/{index-9b2501ca.mjs → index-ce5995cd.mjs} +2 -2
  138. package/dist/_chunks/{index-9b2501ca.mjs.map → index-ce5995cd.mjs.map} +1 -1
  139. package/dist/_chunks/{index-b247e702.js → index-d1152896.js} +3 -3
  140. package/dist/_chunks/{index-b247e702.js.map → index-d1152896.js.map} +1 -1
  141. package/dist/_chunks/{index-272d8fb9.js → index-d1dd825b.js} +3 -3
  142. package/dist/_chunks/{index-272d8fb9.js.map → index-d1dd825b.js.map} +1 -1
  143. package/dist/_chunks/{index-2cf8d1f6.mjs → index-d2d9df41.mjs} +3 -3
  144. package/dist/_chunks/{index-2cf8d1f6.mjs.map → index-d2d9df41.mjs.map} +1 -1
  145. package/dist/_chunks/{index-61852c7a.mjs → index-d4517ac4.mjs} +3 -3
  146. package/dist/_chunks/{index-61852c7a.mjs.map → index-d4517ac4.mjs.map} +1 -1
  147. package/dist/_chunks/{index-caab4b20.js → index-d49fa655.js} +2 -2
  148. package/dist/_chunks/{index-caab4b20.js.map → index-d49fa655.js.map} +1 -1
  149. package/dist/_chunks/{index-dd897afb.mjs → index-d6694cab.mjs} +3 -3
  150. package/dist/_chunks/{index-dd897afb.mjs.map → index-d6694cab.mjs.map} +1 -1
  151. package/dist/_chunks/{index-3939f07e.mjs → index-e117c643.mjs} +4 -4
  152. package/dist/_chunks/{index-3939f07e.mjs.map → index-e117c643.mjs.map} +1 -1
  153. package/dist/_chunks/{index-48c35356.mjs → index-e1b90981.mjs} +5 -5
  154. package/dist/_chunks/{index-48c35356.mjs.map → index-e1b90981.mjs.map} +1 -1
  155. package/dist/_chunks/{index-1482f542.js → index-e24df0bf.js} +2 -2
  156. package/dist/_chunks/{index-1482f542.js.map → index-e24df0bf.js.map} +1 -1
  157. package/dist/_chunks/{index-7a797b0f.mjs → index-e2d2f58e.mjs} +4 -4
  158. package/dist/_chunks/{index-7a797b0f.mjs.map → index-e2d2f58e.mjs.map} +1 -1
  159. package/dist/_chunks/{index-674778e2.mjs → index-e369d741.mjs} +2 -2
  160. package/dist/_chunks/{index-674778e2.mjs.map → index-e369d741.mjs.map} +1 -1
  161. package/dist/_chunks/{index-14887b9d.mjs → index-e79b2b9e.mjs} +3 -3
  162. package/dist/_chunks/{index-14887b9d.mjs.map → index-e79b2b9e.mjs.map} +1 -1
  163. package/dist/_chunks/{index-35c3f9f1.mjs → index-ea18ff22.mjs} +4 -4
  164. package/dist/_chunks/{index-35c3f9f1.mjs.map → index-ea18ff22.mjs.map} +1 -1
  165. package/dist/_chunks/{index-4a019067.js → index-ed3696ec.js} +3 -3
  166. package/dist/_chunks/{index-4a019067.js.map → index-ed3696ec.js.map} +1 -1
  167. package/dist/_chunks/{index-24d1e175.js → index-ee1ea38b.js} +5 -5
  168. package/dist/_chunks/{index-24d1e175.js.map → index-ee1ea38b.js.map} +1 -1
  169. package/dist/_chunks/{index-dab453d2.js → index-efc967f5.js} +4 -4
  170. package/dist/_chunks/{index-dab453d2.js.map → index-efc967f5.js.map} +1 -1
  171. package/dist/_chunks/{index-ff4fb44c.mjs → index-fd4e5616.mjs} +5 -5
  172. package/dist/_chunks/{index-ff4fb44c.mjs.map → index-fd4e5616.mjs.map} +1 -1
  173. package/dist/_chunks/{schema-336f4dd6.js → schema-260fec28.js} +2 -2
  174. package/dist/_chunks/{schema-336f4dd6.js.map → schema-260fec28.js.map} +1 -1
  175. package/dist/_chunks/{schema-60d9880c.mjs → schema-6bd8bd85.mjs} +2 -2
  176. package/dist/_chunks/{schema-60d9880c.mjs.map → schema-6bd8bd85.mjs.map} +1 -1
  177. package/dist/_chunks/{validateWorkflow-7f76e43f.js → validateWorkflow-5693ea2d.js} +3 -3
  178. package/dist/_chunks/{validateWorkflow-7f76e43f.js.map → validateWorkflow-5693ea2d.js.map} +1 -1
  179. package/dist/_chunks/{validateWorkflow-022b5005.mjs → validateWorkflow-7a2b6ab8.mjs} +3 -3
  180. package/dist/_chunks/{validateWorkflow-022b5005.mjs.map → validateWorkflow-7a2b6ab8.mjs.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
@@ -1 +1 @@
1
- {"version":3,"file":"index-391891ba.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableEE.js"],"sourcesContent":["import React from 'react';\n\nimport EventTable from '../../../../../../../../../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events';\n\nconst events = {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n};\n\nconst getHeaders = () => {\n return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n};\n\nexport function EventTableEE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n <EventTable.Headers getHeaders={getHeaders} />\n <EventTable.Body providedEvents={events} />\n </EventTable.Root>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,SAAS;AAAA,EACb,oBAAoB,CAAC,mCAAmC;AAC1D;AAEA,MAAM,aAAa,MAAM;AACvB,SAAO,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,eAAgB,CAAA;AACrF;AAEO,SAAS,eAAe;AAE3B,SAAA,qBAAC,WAAW,MAAX,EACC,UAAA;AAAA,IAAC,oBAAA,WAAW,SAAX,EAAmB;AAAA,IACpB,oBAAC,WAAW,MAAX,EAAgB;AAAA,IAChB,oBAAA,WAAW,SAAX,EAAmB,WAAwB,CAAA;AAAA,IAC3C,oBAAA,WAAW,MAAX,EAAgB,gBAAgB,OAAQ,CAAA;AAAA,EAC3C,EAAA,CAAA;AAEJ;"}
1
+ {"version":3,"file":"index-28dd9303.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventTable/EventTableEE.js"],"sourcesContent":["import React from 'react';\n\nimport EventTable from '../../../../../../../../../../admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/Events';\n\nconst events = {\n 'review-workflows': ['review-workflows.updateEntryStage'],\n};\n\nconst getHeaders = () => {\n return [{ id: 'review-workflows.updateEntryStage', defaultMessage: 'Stage Change' }];\n};\n\nexport function EventTableEE() {\n return (\n <EventTable.Root>\n <EventTable.Headers />\n <EventTable.Body />\n <EventTable.Headers getHeaders={getHeaders} />\n <EventTable.Body providedEvents={events} />\n </EventTable.Root>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,MAAM,SAAS;AAAA,EACb,oBAAoB,CAAC,mCAAmC;AAC1D;AAEA,MAAM,aAAa,MAAM;AACvB,SAAO,CAAC,EAAE,IAAI,qCAAqC,gBAAgB,eAAgB,CAAA;AACrF;AAEO,SAAS,eAAe;AAE3B,SAAA,qBAAC,WAAW,MAAX,EACC,UAAA;AAAA,IAAC,oBAAA,WAAW,SAAX,EAAmB;AAAA,IACpB,oBAAC,WAAW,MAAX,EAAgB;AAAA,IAChB,oBAAA,WAAW,SAAX,EAAmB,WAAwB,CAAA;AAAA,IAC3C,oBAAA,WAAW,MAAX,EAAgB,gBAAgB,OAAQ,CAAA;AAAA,EAC3C,EAAA,CAAA;AAEJ;"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { onRowClick, pxToRem, stopPropagation, useFocusWhenNavigate, useQueryParams, useRBAC, LoadingIndicatorPage, SettingsPageTitle, SearchURLQuery, ConfirmDialog, useAPIErrorHandler, useNotification, getFetchClient, CheckPagePermissions } from "@strapi/helper-plugin";
3
3
  import { useSelector } from "react-redux";
4
- import { s as selectAdminPermissions } from "./AuthenticatedApp-722b2e84.mjs";
4
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-bb31f306.mjs";
5
5
  import { useState, useReducer, useCallback } from "react";
6
6
  import { Tr, Td, Typography, Flex, Box, IconButton, Main, HeaderLayout, Button, ActionLayout, ContentLayout, Table, TFooter, Thead, Th, VisuallyHidden, Tbody } from "@strapi/design-system";
7
7
  import { Plus, Duplicate, Pencil, Trash } from "@strapi/icons";
@@ -13,7 +13,7 @@ import produce from "immer";
13
13
  import "react-query";
14
14
  import "semver/functions/lt";
15
15
  import "semver/functions/valid";
16
- import "./index-3c67c00b.mjs";
16
+ import "./index-8933483b.mjs";
17
17
  import "react-dom/client";
18
18
  import "invariant";
19
19
  import "lodash/isFunction";
@@ -359,4 +359,4 @@ const ProtectedListPage = () => {
359
359
  export {
360
360
  ProtectedListPage as default
361
361
  };
362
- //# sourceMappingURL=index-d844fbda.mjs.map
362
+ //# sourceMappingURL=index-296c14bf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-d844fbda.mjs","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":["BaseRoleRow","ListPage"],"mappings":"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"}
1
+ {"version":3,"file":"index-296c14bf.mjs","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":["BaseRoleRow","ListPage"],"mappings":"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"}
@@ -3,13 +3,13 @@ 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-7e646400.js");
7
- const index = require("./index-1482f542.js");
6
+ const AuthenticatedApp = require("./AuthenticatedApp-342bf22f.js");
7
+ const index = require("./index-e24df0bf.js");
8
8
  require("react");
9
9
  require("react-query");
10
10
  require("semver/functions/lt");
11
11
  require("semver/functions/valid");
12
- require("./index-8f8eaed6.js");
12
+ require("./index-4de70b5d.js");
13
13
  require("react-dom/client");
14
14
  require("@strapi/design-system");
15
15
  require("invariant");
@@ -48,4 +48,4 @@ const ProtectedTransferTokenCreateView = () => {
48
48
  return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings["transfer-tokens"].read, children: /* @__PURE__ */ jsxRuntime.jsx(index.TransferTokenCreateView, {}) });
49
49
  };
50
50
  exports.default = ProtectedTransferTokenCreateView;
51
- //# sourceMappingURL=index-819443df.js.map
51
+ //# sourceMappingURL=index-2de06c32.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-819443df.js","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedEditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedTransferTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['transfer-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedTransferTokenCreateView;\n"],"names":["useSelector","selectAdminPermissions","jsx","CheckPagePermissions","EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,mCAAmC,MAAM;AACvC,QAAA,cAAcA,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAC,2BAAA,IAACC,aAAqB,sBAAA,EAAA,aAAa,YAAY,SAAS,iBAAiB,EAAE,MACzE,UAACD,2BAAA,IAAAE,MAAA,yBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;;"}
1
+ {"version":3,"file":"index-2de06c32.js","sources":["../../admin/src/pages/SettingsPage/pages/TransferTokens/ProtectedEditView/index.js"],"sourcesContent":["import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../selectors';\nimport EditView from '../EditView';\n\nconst ProtectedTransferTokenCreateView = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings['transfer-tokens'].read}>\n <EditView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedTransferTokenCreateView;\n"],"names":["useSelector","selectAdminPermissions","jsx","CheckPagePermissions","EditView"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,MAAM,mCAAmC,MAAM;AACvC,QAAA,cAAcA,uBAAYC,iBAAAA,sBAAsB;AAGpD,SAAAC,2BAAA,IAACC,aAAqB,sBAAA,EAAA,aAAa,YAAY,SAAS,iBAAiB,EAAE,MACzE,UAACD,2BAAA,IAAAE,MAAA,yBAAA,CAAS,CAAA,EACZ,CAAA;AAEJ;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { useCMEditViewDataManager, useAPIErrorHandler, useNotification, useFetchClient, useRBAC } from "@strapi/helper-plugin";
3
- import { g as getDisplayName, I as Information } from "./index-8609fab4.mjs";
3
+ import { g as getDisplayName, I as Information } from "./index-bd18f803.mjs";
4
4
  import { Field, Flex, Combobox, ComboboxOption, SingleSelect, Typography, Loader, SingleSelectOption, FieldHint, FieldError } from "@strapi/design-system";
5
5
  import { useIntl } from "react-intl";
6
6
  import { useMutation, useQuery } from "react-query";
@@ -9,11 +9,11 @@ import "lodash/cloneDeep";
9
9
  import "lodash/get";
10
10
  import "lodash/omit";
11
11
  import "lodash/isNaN";
12
- import "./schema-60d9880c.mjs";
12
+ import "./schema-6bd8bd85.mjs";
13
13
  import "lodash/merge";
14
14
  import "lodash/set";
15
15
  import { u as useAdminUsers } from "./useAdminUsers-09f86a58.mjs";
16
- import { s as selectAdminPermissions } from "./AuthenticatedApp-722b2e84.mjs";
16
+ import { s as selectAdminPermissions } from "./AuthenticatedApp-bb31f306.mjs";
17
17
  import { A as ASSIGNEE_ATTRIBUTE_NAME, S as STAGE_ATTRIBUTE_NAME } from "./constants-a92ce583.mjs";
18
18
  import * as React from "react";
19
19
  import { u as useLicenseLimits } from "./useLicenseLimits-13a102d3.mjs";
@@ -37,7 +37,7 @@ import "lodash/upperFirst";
37
37
  import "@strapi/design-system/v2";
38
38
  import "react-dnd-html5-backend";
39
39
  import "styled-components";
40
- import "./index-3c67c00b.mjs";
40
+ import "./index-8933483b.mjs";
41
41
  import "react-dom/client";
42
42
  import "invariant";
43
43
  import "lodash/isFunction";
@@ -396,4 +396,4 @@ function InformationBoxEE() {
396
396
  export {
397
397
  InformationBoxEE
398
398
  };
399
- //# sourceMappingURL=index-aad003e4.mjs.map
399
+ //# sourceMappingURL=index-2eb69b5d.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-aad003e4.mjs","sources":["../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/AssigneeSelect.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/StageSelect/StageSelect.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/InformationBoxEE.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Combobox, ComboboxOption, Field, Flex } from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector } from 'react-redux';\n\nimport { getDisplayName } from '../../../../../../../../../admin/src/content-manager/utils';\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { ASSIGNEE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function AssigneeSelect() {\n const {\n initialData,\n layout: { uid },\n isSingleType,\n onChange,\n } = useCMEditViewDataManager();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { put } = useFetchClient();\n const {\n allowedActions: { canReadUsers },\n isLoading: isLoadingPermissions,\n } = useRBAC({\n readUsers: permissions.settings.users.read,\n });\n const { users, isLoading, isError } = useAdminUsers(\n {},\n {\n enabled: !isLoadingPermissions && canReadUsers,\n }\n );\n\n const currentAssignee = initialData?.[ASSIGNEE_ATTRIBUTE_NAME] ?? null;\n\n const handleChange = async ({ value: assigneeId }) => {\n mutation.mutate({\n entityId: initialData.id,\n assigneeId: parseInt(assigneeId, 10),\n uid,\n });\n };\n\n const mutation = useMutation(\n async ({ entityId, assigneeId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/assignee`, {\n data: { id: assigneeId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n {\n target: { name: ASSIGNEE_ATTRIBUTE_NAME, value: createdEntity[ASSIGNEE_ATTRIBUTE_NAME] },\n },\n true\n );\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.assignee.notification.saved',\n defaultMessage: 'Assignee updated',\n },\n });\n },\n }\n );\n\n return (\n <Field name={ASSIGNEE_ATTRIBUTE_NAME} id={ASSIGNEE_ATTRIBUTE_NAME}>\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Combobox\n clearLabel={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.clear',\n defaultMessage: 'Clear assignee',\n })}\n error={\n (isError &&\n canReadUsers &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.error',\n defaultMessage: 'An error occurred while fetching users',\n })) ||\n (mutation.error && formatAPIError(mutation.error))\n }\n disabled={!isLoadingPermissions && !isLoading && users.length === 0}\n name={ASSIGNEE_ATTRIBUTE_NAME}\n id={ASSIGNEE_ATTRIBUTE_NAME}\n value={currentAssignee ? currentAssignee.id : null}\n onChange={(value) => handleChange({ value })}\n onClear={() => handleChange({ value: null })}\n placeholder={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.placeholder',\n defaultMessage: 'Select …',\n })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.label',\n defaultMessage: 'Assignee',\n })}\n loading={isLoading || isLoadingPermissions || mutation.isLoading}\n >\n {users.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id}\n textValue={getDisplayName(user, formatMessage)}\n >\n {getDisplayName(user, formatMessage)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n </Flex>\n </Field>\n );\n}\n","import * as React from 'react';\n\nimport { useFetchClient } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\n\nexport function useReviewWorkflowsStages({ id, layout } = {}, queryOptions = {}) {\n const { kind, uid } = layout;\n const slug = kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const { get } = useFetchClient();\n\n const { data, isLoading, refetch } = useQuery(\n ['content-manager', slug, layout.uid, id, 'stages'],\n async () => {\n const { data } = await get(`/admin/content-manager/${slug}/${uid}/${id}/stages`);\n\n return data;\n },\n queryOptions\n );\n\n // these return values need to be memoized, because the default value\n // would lead to infinite rendering loops when used in a dependency array\n // on an effect\n const meta = React.useMemo(() => data?.meta ?? {}, [data?.meta]);\n const stages = React.useMemo(() => data?.data ?? [], [data?.data]);\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n stages,\n isLoading,\n refetch,\n };\n}\n","import * as React from 'react';\n\nimport {\n SingleSelect,\n SingleSelectOption,\n Field,\n FieldError,\n FieldHint,\n Flex,\n Loader,\n Typography,\n} from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport * as LimitsModal from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/constants';\nimport { useReviewWorkflowsStages } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages';\nimport { getStageColorByHex } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/utils/colors';\nimport { STAGE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function StageSelect() {\n const { initialData, layout: contentType, isSingleType, onChange } = useCMEditViewDataManager();\n const { put } = useFetchClient();\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { meta, stages, isLoading, refetch } = useReviewWorkflowsStages(\n { id: initialData.id, layout: contentType },\n {\n enabled: !!initialData?.id,\n }\n );\n const { getFeature } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n\n const limits = getFeature('review-workflows');\n // it is possible to rely on initialData here, because it always will\n // be updated at the same time when modifiedData is updated, otherwise\n // the entity is flagged as modified\n const activeWorkflowStage = initialData?.[STAGE_ATTRIBUTE_NAME] ?? null;\n\n const mutation = useMutation(\n async ({ entityId, stageId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/stage`, {\n data: { id: stageId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n { target: { name: STAGE_ATTRIBUTE_NAME, value: createdEntity[STAGE_ATTRIBUTE_NAME] } },\n true\n );\n\n await refetch();\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.stage.notification.saved',\n defaultMessage: 'Review stage updated',\n },\n });\n },\n }\n );\n\n const handleChange = async ({ value: stageId }) => {\n try {\n /**\n * If the current license has a limit:\n * check if the total count of workflows exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10) < meta.workflowCount\n ) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit:\n * check if the total count of stages exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10) < stages.length\n ) {\n setShowLimitModal('stage');\n } else {\n mutation.mutateAsync({\n entityId: initialData.id,\n stageId,\n uid: contentType.uid,\n });\n }\n } catch (error) {\n // react-query@v3: the error doesn't have to be handled here\n // see: https://github.com/TanStack/query/issues/121\n }\n };\n\n const { themeColorName } = activeWorkflowStage?.color\n ? getStageColorByHex(activeWorkflowStage?.color)\n : {};\n\n return (\n <>\n <Field\n hint={\n stages.length === 0 &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.stages.no-transition',\n defaultMessage: 'You don’t have the permission to update this stage.',\n })\n }\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n >\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <SingleSelect\n disabled={stages.length === 0}\n error={(mutation.error && formatAPIError(mutation.error)) || null}\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n value={activeWorkflowStage?.id}\n onChange={(value) => handleChange({ value })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.label',\n defaultMessage: 'Review stage',\n })}\n startIcon={\n activeWorkflowStage && (\n <Flex\n as=\"span\"\n height={2}\n background={activeWorkflowStage?.color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n marginRight=\"-3px\"\n />\n )\n }\n // eslint-disable-next-line react/no-unstable-nested-components\n customizeContent={() => (\n <Flex as=\"span\" justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Typography textColor=\"neutral800\" ellipsis>\n {activeWorkflowStage?.name ?? ''}\n </Typography>\n {isLoading ? (\n <Loader small style={{ display: 'flex' }} data-testid=\"loader\" />\n ) : null}\n </Flex>\n )}\n >\n {stages.map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color);\n\n return (\n <SingleSelectOption\n key={id}\n startIcon={\n <Flex\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n value={id}\n textValue={name}\n >\n {name}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <FieldHint />\n <FieldError />\n </Flex>\n </Field>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'stage'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n}\n","import React from 'react';\n\nimport { useCMEditViewDataManager } from '@strapi/helper-plugin';\n\nimport { Information } from '../../../../../../../admin/src/content-manager/pages/EditView/Information';\n\nimport { AssigneeSelect } from './components/AssigneeSelect';\nimport { StageSelect } from './components/StageSelect';\n\nexport function InformationBoxEE() {\n const {\n isCreatingEntry,\n layout: { options },\n } = useCMEditViewDataManager();\n\n const hasReviewWorkflowsEnabled = options?.reviewWorkflows ?? false;\n\n return (\n <Information.Root>\n <Information.Title />\n {hasReviewWorkflowsEnabled && !isCreatingEntry && (\n <>\n <StageSelect />\n <AssigneeSelect />\n </>\n )}\n <Information.Body />\n </Information.Root>\n );\n}\n"],"names":["uid","data","themeColorName","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"mappings":"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"}
1
+ {"version":3,"file":"index-2eb69b5d.mjs","sources":["../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/AssigneeSelect/AssigneeSelect.js","../../ee/admin/src/pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/components/StageSelect/StageSelect.js","../../ee/admin/src/content-manager/pages/EditView/InformationBox/InformationBoxEE.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Combobox, ComboboxOption, Field, Flex } from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\nimport { useSelector } from 'react-redux';\n\nimport { getDisplayName } from '../../../../../../../../../admin/src/content-manager/utils';\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\nimport { selectAdminPermissions } from '../../../../../../../../../admin/src/selectors';\nimport { ASSIGNEE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function AssigneeSelect() {\n const {\n initialData,\n layout: { uid },\n isSingleType,\n onChange,\n } = useCMEditViewDataManager();\n const permissions = useSelector(selectAdminPermissions);\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { put } = useFetchClient();\n const {\n allowedActions: { canReadUsers },\n isLoading: isLoadingPermissions,\n } = useRBAC({\n readUsers: permissions.settings.users.read,\n });\n const { users, isLoading, isError } = useAdminUsers(\n {},\n {\n enabled: !isLoadingPermissions && canReadUsers,\n }\n );\n\n const currentAssignee = initialData?.[ASSIGNEE_ATTRIBUTE_NAME] ?? null;\n\n const handleChange = async ({ value: assigneeId }) => {\n mutation.mutate({\n entityId: initialData.id,\n assigneeId: parseInt(assigneeId, 10),\n uid,\n });\n };\n\n const mutation = useMutation(\n async ({ entityId, assigneeId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/assignee`, {\n data: { id: assigneeId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n {\n target: { name: ASSIGNEE_ATTRIBUTE_NAME, value: createdEntity[ASSIGNEE_ATTRIBUTE_NAME] },\n },\n true\n );\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.assignee.notification.saved',\n defaultMessage: 'Assignee updated',\n },\n });\n },\n }\n );\n\n return (\n <Field name={ASSIGNEE_ATTRIBUTE_NAME} id={ASSIGNEE_ATTRIBUTE_NAME}>\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Combobox\n clearLabel={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.clear',\n defaultMessage: 'Clear assignee',\n })}\n error={\n (isError &&\n canReadUsers &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.error',\n defaultMessage: 'An error occurred while fetching users',\n })) ||\n (mutation.error && formatAPIError(mutation.error))\n }\n disabled={!isLoadingPermissions && !isLoading && users.length === 0}\n name={ASSIGNEE_ATTRIBUTE_NAME}\n id={ASSIGNEE_ATTRIBUTE_NAME}\n value={currentAssignee ? currentAssignee.id : null}\n onChange={(value) => handleChange({ value })}\n onClear={() => handleChange({ value: null })}\n placeholder={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.placeholder',\n defaultMessage: 'Select …',\n })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.assignee.label',\n defaultMessage: 'Assignee',\n })}\n loading={isLoading || isLoadingPermissions || mutation.isLoading}\n >\n {users.map((user) => {\n return (\n <ComboboxOption\n key={user.id}\n value={user.id}\n textValue={getDisplayName(user, formatMessage)}\n >\n {getDisplayName(user, formatMessage)}\n </ComboboxOption>\n );\n })}\n </Combobox>\n </Flex>\n </Field>\n );\n}\n","import * as React from 'react';\n\nimport { useFetchClient } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\n\nexport function useReviewWorkflowsStages({ id, layout } = {}, queryOptions = {}) {\n const { kind, uid } = layout;\n const slug = kind === 'collectionType' ? 'collection-types' : 'single-types';\n\n const { get } = useFetchClient();\n\n const { data, isLoading, refetch } = useQuery(\n ['content-manager', slug, layout.uid, id, 'stages'],\n async () => {\n const { data } = await get(`/admin/content-manager/${slug}/${uid}/${id}/stages`);\n\n return data;\n },\n queryOptions\n );\n\n // these return values need to be memoized, because the default value\n // would lead to infinite rendering loops when used in a dependency array\n // on an effect\n const meta = React.useMemo(() => data?.meta ?? {}, [data?.meta]);\n const stages = React.useMemo(() => data?.data ?? [], [data?.data]);\n\n return {\n // meta contains e.g. the total of all workflows. we can not use\n // the pagination object here, because the list is not paginated.\n meta,\n stages,\n isLoading,\n refetch,\n };\n}\n","import * as React from 'react';\n\nimport {\n SingleSelect,\n SingleSelectOption,\n Field,\n FieldError,\n FieldHint,\n Flex,\n Loader,\n Typography,\n} from '@strapi/design-system';\nimport {\n useCMEditViewDataManager,\n useAPIErrorHandler,\n useFetchClient,\n useNotification,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { useLicenseLimits } from '../../../../../../hooks/useLicenseLimits';\nimport * as LimitsModal from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/components/LimitsModal';\nimport {\n CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME,\n CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME,\n} from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/constants';\nimport { useReviewWorkflowsStages } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/hooks/useReviewWorkflowsStages';\nimport { getStageColorByHex } from '../../../../../../pages/SettingsPage/pages/ReviewWorkflows/utils/colors';\nimport { STAGE_ATTRIBUTE_NAME } from '../../constants';\n\nexport function StageSelect() {\n const { initialData, layout: contentType, isSingleType, onChange } = useCMEditViewDataManager();\n const { put } = useFetchClient();\n const { formatMessage } = useIntl();\n const { formatAPIError } = useAPIErrorHandler();\n const toggleNotification = useNotification();\n const { meta, stages, isLoading, refetch } = useReviewWorkflowsStages(\n { id: initialData.id, layout: contentType },\n {\n enabled: !!initialData?.id,\n }\n );\n const { getFeature } = useLicenseLimits();\n const [showLimitModal, setShowLimitModal] = React.useState(false);\n\n const limits = getFeature('review-workflows');\n // it is possible to rely on initialData here, because it always will\n // be updated at the same time when modifiedData is updated, otherwise\n // the entity is flagged as modified\n const activeWorkflowStage = initialData?.[STAGE_ATTRIBUTE_NAME] ?? null;\n\n const mutation = useMutation(\n async ({ entityId, stageId, uid }) => {\n const typeSlug = isSingleType ? 'single-types' : 'collection-types';\n\n const {\n data: { data: createdEntity },\n } = await put(`/admin/content-manager/${typeSlug}/${uid}/${entityId}/stage`, {\n data: { id: stageId },\n });\n\n // initialData and modifiedData have to stay in sync, otherwise the entity would be flagged\n // as modified, which is what the boolean flag is for\n onChange(\n { target: { name: STAGE_ATTRIBUTE_NAME, value: createdEntity[STAGE_ATTRIBUTE_NAME] } },\n true\n );\n\n await refetch();\n\n return createdEntity;\n },\n {\n onSuccess() {\n toggleNotification({\n type: 'success',\n message: {\n id: 'content-manager.reviewWorkflows.stage.notification.saved',\n defaultMessage: 'Review stage updated',\n },\n });\n },\n }\n );\n\n const handleChange = async ({ value: stageId }) => {\n try {\n /**\n * If the current license has a limit:\n * check if the total count of workflows exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n\n if (\n limits?.[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_WORKFLOW_ENTITLEMENT_NAME], 10) < meta.workflowCount\n ) {\n setShowLimitModal('workflow');\n\n /**\n * If the current license has a limit:\n * check if the total count of stages exceeds that limit and display\n * the limits modal.\n *\n * If the current license does not have a limit (e.g. offline license):\n * do nothing (for now).\n *\n */\n } else if (\n limits?.[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME] &&\n parseInt(limits[CHARGEBEE_STAGES_PER_WORKFLOW_ENTITLEMENT_NAME], 10) < stages.length\n ) {\n setShowLimitModal('stage');\n } else {\n mutation.mutateAsync({\n entityId: initialData.id,\n stageId,\n uid: contentType.uid,\n });\n }\n } catch (error) {\n // react-query@v3: the error doesn't have to be handled here\n // see: https://github.com/TanStack/query/issues/121\n }\n };\n\n const { themeColorName } = activeWorkflowStage?.color\n ? getStageColorByHex(activeWorkflowStage?.color)\n : {};\n\n return (\n <>\n <Field\n hint={\n stages.length === 0 &&\n formatMessage({\n id: 'content-manager.reviewWorkflows.stages.no-transition',\n defaultMessage: 'You don’t have the permission to update this stage.',\n })\n }\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n >\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <SingleSelect\n disabled={stages.length === 0}\n error={(mutation.error && formatAPIError(mutation.error)) || null}\n name={STAGE_ATTRIBUTE_NAME}\n id={STAGE_ATTRIBUTE_NAME}\n value={activeWorkflowStage?.id}\n onChange={(value) => handleChange({ value })}\n label={formatMessage({\n id: 'content-manager.reviewWorkflows.stage.label',\n defaultMessage: 'Review stage',\n })}\n startIcon={\n activeWorkflowStage && (\n <Flex\n as=\"span\"\n height={2}\n background={activeWorkflowStage?.color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n marginRight=\"-3px\"\n />\n )\n }\n // eslint-disable-next-line react/no-unstable-nested-components\n customizeContent={() => (\n <Flex as=\"span\" justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Typography textColor=\"neutral800\" ellipsis>\n {activeWorkflowStage?.name ?? ''}\n </Typography>\n {isLoading ? (\n <Loader small style={{ display: 'flex' }} data-testid=\"loader\" />\n ) : null}\n </Flex>\n )}\n >\n {stages.map(({ id, color, name }) => {\n const { themeColorName } = getStageColorByHex(color);\n\n return (\n <SingleSelectOption\n key={id}\n startIcon={\n <Flex\n height={2}\n background={color}\n borderColor={themeColorName === 'neutral0' ? 'neutral150' : 'transparent'}\n hasRadius\n shrink={0}\n width={2}\n />\n }\n value={id}\n textValue={name}\n >\n {name}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n <FieldHint />\n <FieldError />\n </Flex>\n </Field>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'workflow'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.title',\n defaultMessage: 'You’ve reached the limit of workflows in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.workflows.limit.body',\n defaultMessage: 'Delete a workflow or contact Sales to enable more workflows.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n\n <LimitsModal.Root\n isOpen={showLimitModal === 'stage'}\n onClose={() => setShowLimitModal(false)}\n >\n <LimitsModal.Title>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.title',\n defaultMessage: 'You have reached the limit of stages for this workflow in your plan',\n })}\n </LimitsModal.Title>\n\n <LimitsModal.Body>\n {formatMessage({\n id: 'content-manager.reviewWorkflows.stages.limit.body',\n defaultMessage: 'Try deleting some stages or contact Sales to enable more stages.',\n })}\n </LimitsModal.Body>\n </LimitsModal.Root>\n </>\n );\n}\n","import React from 'react';\n\nimport { useCMEditViewDataManager } from '@strapi/helper-plugin';\n\nimport { Information } from '../../../../../../../admin/src/content-manager/pages/EditView/Information';\n\nimport { AssigneeSelect } from './components/AssigneeSelect';\nimport { StageSelect } from './components/StageSelect';\n\nexport function InformationBoxEE() {\n const {\n isCreatingEntry,\n layout: { options },\n } = useCMEditViewDataManager();\n\n const hasReviewWorkflowsEnabled = options?.reviewWorkflows ?? false;\n\n return (\n <Information.Root>\n <Information.Title />\n {hasReviewWorkflowsEnabled && !isCreatingEntry && (\n <>\n <StageSelect />\n <AssigneeSelect />\n </>\n )}\n <Information.Body />\n </Information.Root>\n );\n}\n"],"names":["uid","data","themeColorName","LimitsModal.Root","LimitsModal.Title","LimitsModal.Body"],"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-7e646400.js");
6
+ const AuthenticatedApp = require("./AuthenticatedApp-342bf22f.js");
7
7
  const designSystem = require("@strapi/design-system");
8
8
  const reactIntl = require("react-intl");
9
9
  const index = require("./index-88298941.js");
@@ -17,7 +17,7 @@ const Icons = require("@strapi/icons");
17
17
  require("react");
18
18
  require("semver/functions/lt");
19
19
  require("semver/functions/valid");
20
- require("./index-8f8eaed6.js");
20
+ require("./index-4de70b5d.js");
21
21
  require("react-dom/client");
22
22
  require("invariant");
23
23
  require("lodash/isFunction");
@@ -582,4 +582,4 @@ const ProtectedListPage = () => {
582
582
  return /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.CheckPagePermissions, { permissions: permissions.settings.auditLogs.main, children: /* @__PURE__ */ jsxRuntime.jsx(ListView, {}) });
583
583
  };
584
584
  exports.default = ProtectedListPage;
585
- //# sourceMappingURL=index-b6b2a306.js.map
585
+ //# sourceMappingURL=index-2f61e3ae.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-b6b2a306.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useAuditLogsData.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useFormatTimeStamp.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getActionTypesDefaultMessages.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionItem.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionBody.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/PaginationFooter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/TableRows/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/ComboboxFilter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/tableHeaders.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ProtectedListPage/index.js"],"sourcesContent":["import { useFetchClient, useNotification, useQueryParams } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\nimport { useLocation } from 'react-router-dom';\n\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\n\nconst useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {\n const { get } = useFetchClient();\n const { search } = useLocation();\n const toggleNotification = useNotification();\n const [{ query }] = useQueryParams();\n\n const queryOptions = {\n keepPreviousData: true,\n retry: false,\n staleTime: 1000 * 20, // 20 seconds\n onError: (error) => toggleNotification({ type: 'warning', message: error.message }),\n };\n\n const {\n users,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n ...queryOptions,\n enabled: canReadUsers,\n staleTime: 2 * (1000 * 60), // 2 minutes\n }\n );\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n } = useQuery(\n ['auditLogs', search],\n async () => {\n const { data } = await get(`/admin/audit-logs`, {\n params: query,\n });\n\n return data;\n },\n {\n ...queryOptions,\n enabled: canReadAuditLogs,\n }\n );\n\n return {\n auditLogs,\n users,\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n\nexport default useAuditLogsData;\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nconst useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n\nexport default useFormatTimeStamp;\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value) => {\n return actionTypes[value] || value;\n};\n","import React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\n\nconst ActionItem = ({ actionLabel, actionName }) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n\nActionItem.propTypes = {\n actionLabel: PropTypes.string.isRequired,\n actionName: PropTypes.string.isRequired,\n};\n\nexport default ActionItem;\n","import React from 'react';\n\nimport { Box, Flex, Grid, JSONInput, Loader, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nimport ActionItem from './ActionItem';\n\nconst ActionBody = ({ status, data, formattedDate }) => {\n const { formatMessage } = useIntl();\n\n if (status === 'loading') {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid>\n <JSONInput\n value={JSON.stringify(payload, null, 2)}\n disabled\n label={formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n />\n </>\n );\n};\n\nActionBody.defaultProps = {\n data: {},\n};\n\nActionBody.propTypes = {\n status: PropTypes.oneOf(['idle', 'loading', 'error', 'success']).isRequired,\n data: PropTypes.shape({\n action: PropTypes.string,\n date: PropTypes.string,\n payload: PropTypes.object,\n user: PropTypes.object,\n }),\n formattedDate: PropTypes.string.isRequired,\n};\n\nexport default ActionBody;\n","import React from 'react';\n\nimport { ModalBody, ModalHeader, ModalLayout } from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useQuery } from 'react-query';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\n\nimport ActionBody from './ActionBody';\n\nconst Modal = ({ handleClose, logId }) => {\n const { get } = useFetchClient();\n const toggleNotification = useNotification();\n\n const fetchAuditLog = async (id) => {\n const { data } = await get(`/admin/audit-logs/${id}`);\n\n if (!data) {\n throw new Error('Audit log not found');\n }\n\n return data;\n };\n\n const { data, status } = useQuery(['audit-log', logId], () => fetchAuditLog(logId), {\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n handleClose();\n },\n });\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data ? formatTimeStamp(data.date) : '';\n\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <ModalBody>\n <ActionBody status={status} data={data} formattedDate={formattedDate} />\n </ModalBody>\n </ModalLayout>\n );\n};\n\nModal.propTypes = {\n handleClose: PropTypes.func.isRequired,\n logId: PropTypes.string.isRequired,\n};\n\nexport default Modal;\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { PageSizeURLQuery, PaginationURLQuery } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\n\nconst PaginationFooter = ({ pagination }) => {\n return (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n );\n};\n\nPaginationFooter.defaultProps = {\n pagination: {\n pageCount: 0,\n pageSize: 50,\n total: 0,\n },\n};\n\nPaginationFooter.propTypes = {\n pagination: PropTypes.shape({\n page: PropTypes.number,\n pageCount: PropTypes.number,\n pageSize: PropTypes.number,\n total: PropTypes.number,\n }),\n};\n\nexport default PaginationFooter;\n","import React from 'react';\n\nimport { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Eye } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nconst TableRows = ({ headers, rows, onOpenModal }) => {\n const { formatMessage } = useIntl();\n const formatTimeStamp = useFormatTimeStamp();\n\n const getCellValue = ({ type, value, model }) => {\n if (type === 'date') {\n return formatTimeStamp(value);\n }\n\n if (type === 'action') {\n return formatMessage(\n {\n id: `Settings.permissions.auditLogs.${value}`,\n defaultMessage: getDefaultMessage(value),\n },\n { model }\n );\n }\n\n return value || '-';\n };\n\n return (\n <Tbody>\n {rows.map((data) => {\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => onOpenModal(data.id),\n })}\n >\n {headers.map(({ key, name, cellFormatter }) => {\n return (\n <Td key={key}>\n <Typography textColor=\"neutral800\">\n {getCellValue({\n type: key,\n value: cellFormatter ? cellFormatter(data[name]) : data[name],\n model: data.payload?.model,\n })}\n </Typography>\n </Td>\n );\n })}\n <Td {...stopPropagation}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => onOpenModal(data.id)}\n aria-label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${data.action} action` }\n )}\n noBorder\n icon={<Eye />}\n />\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nTableRows.defaultProps = {\n rows: [],\n};\n\nTableRows.propTypes = {\n headers: PropTypes.array.isRequired,\n rows: PropTypes.array,\n onOpenModal: PropTypes.func.isRequired,\n};\n\nexport default TableRows;\n","import React from 'react';\n\nimport { Combobox, ComboboxOption } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst ComboboxFilter = ({ value, options, onChange }) => {\n const { formatMessage } = useIntl();\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n return (\n <Combobox aria-label={ariaLabel} value={value} onChange={onChange}>\n {options.map(({ label, customValue }) => {\n return (\n <ComboboxOption key={customValue} value={customValue}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\nComboboxFilter.defaultProps = {\n value: null,\n};\n\nComboboxFilter.propTypes = {\n value: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n customValue: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default ComboboxFilter;\n","import ComboboxFilter from '../ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nconst customOperators = [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n];\n\nconst getDisplayedFilters = ({ formatMessage, users, canReadUsers }) => {\n const actionOptions = Object.keys(actionTypes).map((action) => {\n return {\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n customValue: action,\n };\n });\n\n const filters = [\n {\n name: 'action',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n customInput: ComboboxFilter,\n options: actionOptions,\n },\n fieldSchema: { type: 'enumeration' },\n },\n {\n name: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n },\n fieldSchema: { type: 'datetime' },\n },\n ];\n\n if (canReadUsers && users) {\n const getDisplayNameFromUser = (user) => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return formatMessage(\n {\n id: 'Settings.permissions.auditLogs.user.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname: user.firstname,\n lastname: user.lastname,\n }\n );\n }\n\n return user.email;\n };\n\n const userOptions = users.map((user) => {\n return {\n label: getDisplayNameFromUser(user),\n // Combobox expects a string value\n customValue: user.id.toString(),\n };\n });\n\n return [\n ...filters,\n {\n name: 'user',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n options: userOptions,\n customInput: ComboboxFilter,\n },\n fieldSchema: { type: 'relation', mainField: { name: 'id' } },\n },\n ];\n }\n\n return filters;\n};\n\nexport default getDisplayedFilters;\n","const tableHeaders = [\n {\n name: 'action',\n key: 'action',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n },\n sortable: true,\n },\n },\n {\n name: 'date',\n key: 'date',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n },\n sortable: true,\n },\n },\n {\n key: 'user',\n name: 'user',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n },\n sortable: false,\n },\n cellFormatter: (user) => (user ? user.displayName : ''),\n },\n];\n\nexport default tableHeaders;\n","import React from 'react';\n\nimport {\n ActionLayout,\n Box,\n ContentLayout,\n HeaderLayout,\n Layout,\n Main,\n} from '@strapi/design-system';\nimport {\n AnErrorOccurred,\n DynamicTable,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useQueryParams,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport Filters from '../../../../../../../../admin/src/pages/SettingsPage/components/Filters';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\n\nimport useAuditLogsData from './hooks/useAuditLogsData';\nimport Modal from './Modal';\nimport PaginationFooter from './PaginationFooter';\nimport TableRows from './TableRows';\nimport getDisplayedFilters from './utils/getDisplayedFilters';\nimport tableHeaders from './utils/tableHeaders';\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n } = useRBAC({\n ...permissions.settings.auditLogs,\n readUsers: permissions.settings.users.read,\n });\n\n const [{ query }, setQuery] = useQueryParams();\n const { auditLogs, users, isLoading, hasError } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n useFocusWhenNavigate();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const title = formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n if (hasError) {\n return (\n <Layout>\n <ContentLayout>\n <Box paddingTop={8}>\n <AnErrorOccurred />\n </Box>\n </ContentLayout>\n </Layout>\n );\n }\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name={title} />\n <HeaderLayout\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <ActionLayout startActions={<Filters displayedFilters={displayedFilters} />} />\n <ContentLayout canRead={canReadAuditLogs}>\n <DynamicTable\n contentType=\"Audit logs\"\n headers={headers}\n rows={auditLogs?.results || []}\n withBulkActions\n isLoading={isLoading}\n >\n <TableRows\n headers={headers}\n rows={auditLogs?.results || []}\n onOpenModal={(id) => setQuery({ id })}\n />\n </DynamicTable>\n <PaginationFooter pagination={auditLogs?.pagination} />\n </ContentLayout>\n {query?.id && <Modal handleClose={() => setQuery({ id: null }, 'remove')} logId={query.id} />}\n </Main>\n );\n};\n\nexport default ListView;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport ListView from '../ListView';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.auditLogs.main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["useFetchClient","useLocation","useNotification","useQueryParams","useAdminUsers","useQuery","useIntl","parseISO","Flex","jsx","Typography","PropTypes","Loader","jsxs","Fragment","Box","Grid","JSONInput","data","ModalLayout","ModalHeader","Breadcrumbs","Crumb","ModalBody","PageSizeURLQuery","PaginationURLQuery","Tbody","Tr","onRowClick","Td","stopPropagation","IconButton","Eye","Combobox","ComboboxOption","useSelector","selectAdminPermissions","useRBAC","useFocusWhenNavigate","Layout","ContentLayout","AnErrorOccurred","Main","SettingsPageTitle","HeaderLayout","ActionLayout","Filters","DynamicTable","CheckPagePermissions"],"mappings":"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"}
1
+ {"version":3,"file":"index-2f61e3ae.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useAuditLogsData.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/hooks/useFormatTimeStamp.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getActionTypesDefaultMessages.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionItem.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/ActionBody.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/Modal/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/PaginationFooter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/TableRows/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/ComboboxFilter/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/getDisplayedFilters.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/utils/tableHeaders.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListView/index.js","../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/ProtectedListPage/index.js"],"sourcesContent":["import { useFetchClient, useNotification, useQueryParams } from '@strapi/helper-plugin';\nimport { useQuery } from 'react-query';\nimport { useLocation } from 'react-router-dom';\n\nimport { useAdminUsers } from '../../../../../../../../../admin/src/hooks/useAdminUsers';\n\nconst useAuditLogsData = ({ canReadAuditLogs, canReadUsers }) => {\n const { get } = useFetchClient();\n const { search } = useLocation();\n const toggleNotification = useNotification();\n const [{ query }] = useQueryParams();\n\n const queryOptions = {\n keepPreviousData: true,\n retry: false,\n staleTime: 1000 * 20, // 20 seconds\n onError: (error) => toggleNotification({ type: 'warning', message: error.message }),\n };\n\n const {\n users,\n isError: isUsersError,\n isLoading: isLoadingUsers,\n } = useAdminUsers(\n {},\n {\n ...queryOptions,\n enabled: canReadUsers,\n staleTime: 2 * (1000 * 60), // 2 minutes\n }\n );\n\n const {\n data: auditLogs,\n isLoading: isLoadingAuditLogs,\n isError: isAuditLogsError,\n } = useQuery(\n ['auditLogs', search],\n async () => {\n const { data } = await get(`/admin/audit-logs`, {\n params: query,\n });\n\n return data;\n },\n {\n ...queryOptions,\n enabled: canReadAuditLogs,\n }\n );\n\n return {\n auditLogs,\n users,\n isLoading: isLoadingUsers || isLoadingAuditLogs,\n hasError: isAuditLogsError || isUsersError,\n };\n};\n\nexport default useAuditLogsData;\n","import parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nconst useFormatTimeStamp = () => {\n const { formatDate } = useIntl();\n\n const formatTimeStamp = (value) => {\n const date = parseISO(value);\n\n const formattedDate = formatDate(date, {\n dateStyle: 'long',\n });\n const formattedTime = formatDate(date, {\n timeStyle: 'medium',\n hourCycle: 'h24',\n });\n\n return `${formattedDate}, ${formattedTime}`;\n };\n\n return formatTimeStamp;\n};\n\nexport default useFormatTimeStamp;\n","export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value) => {\n return actionTypes[value] || value;\n};\n","import React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\n\nconst ActionItem = ({ actionLabel, actionName }) => {\n return (\n <Flex direction=\"column\" alignItems=\"baseline\" gap={1}>\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {actionLabel}\n </Typography>\n <Typography textColor=\"neutral600\">{actionName}</Typography>\n </Flex>\n );\n};\n\nActionItem.propTypes = {\n actionLabel: PropTypes.string.isRequired,\n actionName: PropTypes.string.isRequired,\n};\n\nexport default ActionItem;\n","import React from 'react';\n\nimport { Box, Flex, Grid, JSONInput, Loader, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nimport ActionItem from './ActionItem';\n\nconst ActionBody = ({ status, data, formattedDate }) => {\n const { formatMessage } = useIntl();\n\n if (status === 'loading') {\n return (\n <Flex padding={7} justifyContent=\"center\" alignItems=\"center\">\n <Loader>Loading content...</Loader>\n </Flex>\n );\n }\n\n const { action, user, payload } = data;\n\n return (\n <>\n <Box marginBottom={3}>\n <Typography variant=\"delta\" id=\"title\">\n {formatMessage({\n id: 'Settings.permissions.auditLogs.details',\n defaultMessage: 'Log Details',\n })}\n </Typography>\n </Box>\n <Grid\n gap={4}\n gridCols={2}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n marginBottom={4}\n background=\"neutral100\"\n hasRadius\n >\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n })}\n actionName={formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: payload?.model }\n )}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n })}\n actionName={formattedDate}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n })}\n actionName={user?.displayName || '-'}\n />\n <ActionItem\n actionLabel={formatMessage({\n id: 'Settings.permissions.auditLogs.userId',\n defaultMessage: 'User ID',\n })}\n actionName={user?.id.toString() || '-'}\n />\n </Grid>\n <JSONInput\n value={JSON.stringify(payload, null, 2)}\n disabled\n label={formatMessage({\n id: 'Settings.permissions.auditLogs.payload',\n defaultMessage: 'Payload',\n })}\n />\n </>\n );\n};\n\nActionBody.defaultProps = {\n data: {},\n};\n\nActionBody.propTypes = {\n status: PropTypes.oneOf(['idle', 'loading', 'error', 'success']).isRequired,\n data: PropTypes.shape({\n action: PropTypes.string,\n date: PropTypes.string,\n payload: PropTypes.object,\n user: PropTypes.object,\n }),\n formattedDate: PropTypes.string.isRequired,\n};\n\nexport default ActionBody;\n","import React from 'react';\n\nimport { ModalBody, ModalHeader, ModalLayout } from '@strapi/design-system';\nimport { Breadcrumbs, Crumb } from '@strapi/design-system/v2';\nimport { useFetchClient, useNotification } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\nimport { useQuery } from 'react-query';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\n\nimport ActionBody from './ActionBody';\n\nconst Modal = ({ handleClose, logId }) => {\n const { get } = useFetchClient();\n const toggleNotification = useNotification();\n\n const fetchAuditLog = async (id) => {\n const { data } = await get(`/admin/audit-logs/${id}`);\n\n if (!data) {\n throw new Error('Audit log not found');\n }\n\n return data;\n };\n\n const { data, status } = useQuery(['audit-log', logId], () => fetchAuditLog(logId), {\n onError() {\n toggleNotification({\n type: 'warning',\n message: { id: 'notification.error', defaultMessage: 'An error occured' },\n });\n handleClose();\n },\n });\n\n const formatTimeStamp = useFormatTimeStamp();\n const formattedDate = data ? formatTimeStamp(data.date) : '';\n\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <ModalHeader>\n {/**\n * TODO: this is not semantically correct and should be amended.\n */}\n <Breadcrumbs label={formattedDate} id=\"title\">\n <Crumb isCurrent>{formattedDate}</Crumb>\n </Breadcrumbs>\n </ModalHeader>\n <ModalBody>\n <ActionBody status={status} data={data} formattedDate={formattedDate} />\n </ModalBody>\n </ModalLayout>\n );\n};\n\nModal.propTypes = {\n handleClose: PropTypes.func.isRequired,\n logId: PropTypes.string.isRequired,\n};\n\nexport default Modal;\n","import React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\nimport { PageSizeURLQuery, PaginationURLQuery } from '@strapi/helper-plugin';\nimport PropTypes from 'prop-types';\n\nconst PaginationFooter = ({ pagination }) => {\n return (\n <Box paddingTop={4}>\n <Flex alignItems=\"flex-end\" justifyContent=\"space-between\">\n <PageSizeURLQuery />\n <PaginationURLQuery pagination={pagination} />\n </Flex>\n </Box>\n );\n};\n\nPaginationFooter.defaultProps = {\n pagination: {\n pageCount: 0,\n pageSize: 50,\n total: 0,\n },\n};\n\nPaginationFooter.propTypes = {\n pagination: PropTypes.shape({\n page: PropTypes.number,\n pageCount: PropTypes.number,\n pageSize: PropTypes.number,\n total: PropTypes.number,\n }),\n};\n\nexport default PaginationFooter;\n","import React from 'react';\n\nimport { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { onRowClick, stopPropagation } from '@strapi/helper-plugin';\nimport { Eye } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport useFormatTimeStamp from '../hooks/useFormatTimeStamp';\nimport { getDefaultMessage } from '../utils/getActionTypesDefaultMessages';\n\nconst TableRows = ({ headers, rows, onOpenModal }) => {\n const { formatMessage } = useIntl();\n const formatTimeStamp = useFormatTimeStamp();\n\n const getCellValue = ({ type, value, model }) => {\n if (type === 'date') {\n return formatTimeStamp(value);\n }\n\n if (type === 'action') {\n return formatMessage(\n {\n id: `Settings.permissions.auditLogs.${value}`,\n defaultMessage: getDefaultMessage(value),\n },\n { model }\n );\n }\n\n return value || '-';\n };\n\n return (\n <Tbody>\n {rows.map((data) => {\n return (\n <Tr\n key={data.id}\n {...onRowClick({\n fn: () => onOpenModal(data.id),\n })}\n >\n {headers.map(({ key, name, cellFormatter }) => {\n return (\n <Td key={key}>\n <Typography textColor=\"neutral800\">\n {getCellValue({\n type: key,\n value: cellFormatter ? cellFormatter(data[name]) : data[name],\n model: data.payload?.model,\n })}\n </Typography>\n </Td>\n );\n })}\n <Td {...stopPropagation}>\n <Flex justifyContent=\"end\">\n <IconButton\n onClick={() => onOpenModal(data.id)}\n aria-label={formatMessage(\n { id: 'app.component.table.view', defaultMessage: '{target} details' },\n { target: `${data.action} action` }\n )}\n noBorder\n icon={<Eye />}\n />\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n\nTableRows.defaultProps = {\n rows: [],\n};\n\nTableRows.propTypes = {\n headers: PropTypes.array.isRequired,\n rows: PropTypes.array,\n onOpenModal: PropTypes.func.isRequired,\n};\n\nexport default TableRows;\n","import React from 'react';\n\nimport { Combobox, ComboboxOption } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nconst ComboboxFilter = ({ value, options, onChange }) => {\n const { formatMessage } = useIntl();\n const ariaLabel = formatMessage({\n id: 'Settings.permissions.auditLogs.filter.aria-label',\n defaultMessage: 'Search and select an option to filter',\n });\n\n return (\n <Combobox aria-label={ariaLabel} value={value} onChange={onChange}>\n {options.map(({ label, customValue }) => {\n return (\n <ComboboxOption key={customValue} value={customValue}>\n {label}\n </ComboboxOption>\n );\n })}\n </Combobox>\n );\n};\n\nComboboxFilter.defaultProps = {\n value: null,\n};\n\nComboboxFilter.propTypes = {\n value: PropTypes.string,\n options: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n customValue: PropTypes.string.isRequired,\n }).isRequired\n ).isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport default ComboboxFilter;\n","import ComboboxFilter from '../ComboboxFilter';\n\nimport { actionTypes, getDefaultMessage } from './getActionTypesDefaultMessages';\n\nconst customOperators = [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n];\n\nconst getDisplayedFilters = ({ formatMessage, users, canReadUsers }) => {\n const actionOptions = Object.keys(actionTypes).map((action) => {\n return {\n label: formatMessage(\n {\n id: `Settings.permissions.auditLogs.${action}`,\n defaultMessage: getDefaultMessage(action),\n },\n { model: undefined }\n ),\n customValue: action,\n };\n });\n\n const filters = [\n {\n name: 'action',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n }),\n customInput: ComboboxFilter,\n options: actionOptions,\n },\n fieldSchema: { type: 'enumeration' },\n },\n {\n name: 'date',\n metadatas: {\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n }),\n },\n fieldSchema: { type: 'datetime' },\n },\n ];\n\n if (canReadUsers && users) {\n const getDisplayNameFromUser = (user) => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return formatMessage(\n {\n id: 'Settings.permissions.auditLogs.user.fullname',\n defaultMessage: '{firstname} {lastname}',\n },\n {\n firstname: user.firstname,\n lastname: user.lastname,\n }\n );\n }\n\n return user.email;\n };\n\n const userOptions = users.map((user) => {\n return {\n label: getDisplayNameFromUser(user),\n // Combobox expects a string value\n customValue: user.id.toString(),\n };\n });\n\n return [\n ...filters,\n {\n name: 'user',\n metadatas: {\n customOperators,\n label: formatMessage({\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n }),\n options: userOptions,\n customInput: ComboboxFilter,\n },\n fieldSchema: { type: 'relation', mainField: { name: 'id' } },\n },\n ];\n }\n\n return filters;\n};\n\nexport default getDisplayedFilters;\n","const tableHeaders = [\n {\n name: 'action',\n key: 'action',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.action',\n defaultMessage: 'Action',\n },\n sortable: true,\n },\n },\n {\n name: 'date',\n key: 'date',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.date',\n defaultMessage: 'Date',\n },\n sortable: true,\n },\n },\n {\n key: 'user',\n name: 'user',\n metadatas: {\n label: {\n id: 'Settings.permissions.auditLogs.user',\n defaultMessage: 'User',\n },\n sortable: false,\n },\n cellFormatter: (user) => (user ? user.displayName : ''),\n },\n];\n\nexport default tableHeaders;\n","import React from 'react';\n\nimport {\n ActionLayout,\n Box,\n ContentLayout,\n HeaderLayout,\n Layout,\n Main,\n} from '@strapi/design-system';\nimport {\n AnErrorOccurred,\n DynamicTable,\n SettingsPageTitle,\n useFocusWhenNavigate,\n useQueryParams,\n useRBAC,\n} from '@strapi/helper-plugin';\nimport { useIntl } from 'react-intl';\nimport { useSelector } from 'react-redux';\n\nimport Filters from '../../../../../../../../admin/src/pages/SettingsPage/components/Filters';\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\n\nimport useAuditLogsData from './hooks/useAuditLogsData';\nimport Modal from './Modal';\nimport PaginationFooter from './PaginationFooter';\nimport TableRows from './TableRows';\nimport getDisplayedFilters from './utils/getDisplayedFilters';\nimport tableHeaders from './utils/tableHeaders';\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const permissions = useSelector(selectAdminPermissions);\n\n const {\n allowedActions: { canRead: canReadAuditLogs, canReadUsers },\n } = useRBAC({\n ...permissions.settings.auditLogs,\n readUsers: permissions.settings.users.read,\n });\n\n const [{ query }, setQuery] = useQueryParams();\n const { auditLogs, users, isLoading, hasError } = useAuditLogsData({\n canReadAuditLogs,\n canReadUsers,\n });\n\n useFocusWhenNavigate();\n\n const displayedFilters = getDisplayedFilters({ formatMessage, users, canReadUsers });\n\n const title = formatMessage({\n id: 'global.auditLogs',\n defaultMessage: 'Audit Logs',\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n metadatas: {\n ...header.metadatas,\n label: formatMessage(header.metadatas.label),\n },\n }));\n\n if (hasError) {\n return (\n <Layout>\n <ContentLayout>\n <Box paddingTop={8}>\n <AnErrorOccurred />\n </Box>\n </ContentLayout>\n </Layout>\n );\n }\n\n return (\n <Main aria-busy={isLoading}>\n <SettingsPageTitle name={title} />\n <HeaderLayout\n title={title}\n subtitle={formatMessage({\n id: 'Settings.permissions.auditLogs.listview.header.subtitle',\n defaultMessage: 'Logs of all the activities that happened in your environment',\n })}\n />\n <ActionLayout startActions={<Filters displayedFilters={displayedFilters} />} />\n <ContentLayout canRead={canReadAuditLogs}>\n <DynamicTable\n contentType=\"Audit logs\"\n headers={headers}\n rows={auditLogs?.results || []}\n withBulkActions\n isLoading={isLoading}\n >\n <TableRows\n headers={headers}\n rows={auditLogs?.results || []}\n onOpenModal={(id) => setQuery({ id })}\n />\n </DynamicTable>\n <PaginationFooter pagination={auditLogs?.pagination} />\n </ContentLayout>\n {query?.id && <Modal handleClose={() => setQuery({ id: null }, 'remove')} logId={query.id} />}\n </Main>\n );\n};\n\nexport default ListView;\n","import React from 'react';\n\nimport { CheckPagePermissions } from '@strapi/helper-plugin';\nimport { useSelector } from 'react-redux';\n\nimport { selectAdminPermissions } from '../../../../../../../../admin/src/selectors';\nimport ListView from '../ListView';\n\nconst ProtectedListPage = () => {\n const permissions = useSelector(selectAdminPermissions);\n\n return (\n <CheckPagePermissions permissions={permissions.settings.auditLogs.main}>\n <ListView />\n </CheckPagePermissions>\n );\n};\n\nexport default ProtectedListPage;\n"],"names":["useFetchClient","useLocation","useNotification","useQueryParams","useAdminUsers","useQuery","useIntl","parseISO","Flex","jsx","Typography","PropTypes","Loader","jsxs","Fragment","Box","Grid","JSONInput","data","ModalLayout","ModalHeader","Breadcrumbs","Crumb","ModalBody","PageSizeURLQuery","PaginationURLQuery","Tbody","Tr","onRowClick","Td","stopPropagation","IconButton","Eye","Combobox","ComboboxOption","useSelector","selectAdminPermissions","useRBAC","useFocusWhenNavigate","Layout","ContentLayout","AnErrorOccurred","Main","SettingsPageTitle","HeaderLayout","ActionLayout","Filters","DynamicTable","CheckPagePermissions"],"mappings":"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"}
@@ -1,8 +1,8 @@
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-3c67c00b.mjs";
5
- import { a as MagicLinkWrapper } from "./index-9b2501ca.mjs";
4
+ import { T as getBasename } from "./index-8933483b.mjs";
5
+ import { a as MagicLinkWrapper } from "./index-ce5995cd.mjs";
6
6
  import "@strapi/helper-plugin";
7
7
  import "react-dom/client";
8
8
  import "@strapi/design-system";
@@ -57,4 +57,4 @@ MagicLinkEE.propTypes = {
57
57
  export {
58
58
  MagicLinkEE
59
59
  };
60
- //# sourceMappingURL=index-707e89df.mjs.map
60
+ //# sourceMappingURL=index-308b73ba.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-707e89df.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLink/index.js"],"sourcesContent":["import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getBasename } from '../../../../../../../../../admin/src/core/utils/basename';\nimport MagicLinkWrapper from '../../../../../../../../../admin/src/pages/SettingsPage/pages/Users/components/MagicLink/MagicLinkWrapper';\n\n// FIXME replace with parts compo when ready\nexport const MagicLinkEE = ({ registrationToken }) => {\n const { formatMessage } = useIntl();\n\n if (registrationToken) {\n return (\n <MagicLinkWrapper\n target={`${\n window.location.origin\n }${getBasename()}/auth/register?registrationToken=${registrationToken}`}\n >\n {formatMessage({\n id: 'app.components.Users.MagicLink.connect',\n defaultMessage: 'Copy and share this link to give access to this user',\n })}\n </MagicLinkWrapper>\n );\n }\n\n return (\n <MagicLinkWrapper target={`${window.location.origin}${getBasename()}auth/login`}>\n {formatMessage({\n id: 'app.components.Users.MagicLink.connect.sso',\n defaultMessage:\n 'Send this link to the user, the first login can be made via a SSO provider.',\n })}\n </MagicLinkWrapper>\n );\n};\n\nMagicLinkEE.defaultProps = {\n registrationToken: '',\n};\n\nMagicLinkEE.propTypes = {\n registrationToken: PropTypes.string,\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,cAAc,CAAC,EAAE,wBAAwB;AAC9C,QAAA,EAAE,kBAAkB;AAE1B,MAAI,mBAAmB;AAEnB,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ,GACN,OAAO,SAAS,MAClB,GAAG,YAAa,CAAA,oCAAoC,iBAAiB;AAAA,QAEpE,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGE,SAAA,oBAAC,kBAAiB,EAAA,QAAQ,GAAG,OAAO,SAAS,MAAM,GAAG,YAAa,CAAA,cAChE,UAAc,cAAA;AAAA,IACb,IAAI;AAAA,IACJ,gBACE;AAAA,EACH,CAAA,EACH,CAAA;AAEJ;AAEA,YAAY,eAAe;AAAA,EACzB,mBAAmB;AACrB;AAEA,YAAY,YAAY;AAAA,EACtB,mBAAmB,UAAU;AAC/B;"}
1
+ {"version":3,"file":"index-308b73ba.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLink/index.js"],"sourcesContent":["import React from 'react';\n\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { getBasename } from '../../../../../../../../../admin/src/core/utils/basename';\nimport MagicLinkWrapper from '../../../../../../../../../admin/src/pages/SettingsPage/pages/Users/components/MagicLink/MagicLinkWrapper';\n\n// FIXME replace with parts compo when ready\nexport const MagicLinkEE = ({ registrationToken }) => {\n const { formatMessage } = useIntl();\n\n if (registrationToken) {\n return (\n <MagicLinkWrapper\n target={`${\n window.location.origin\n }${getBasename()}/auth/register?registrationToken=${registrationToken}`}\n >\n {formatMessage({\n id: 'app.components.Users.MagicLink.connect',\n defaultMessage: 'Copy and share this link to give access to this user',\n })}\n </MagicLinkWrapper>\n );\n }\n\n return (\n <MagicLinkWrapper target={`${window.location.origin}${getBasename()}auth/login`}>\n {formatMessage({\n id: 'app.components.Users.MagicLink.connect.sso',\n defaultMessage:\n 'Send this link to the user, the first login can be made via a SSO provider.',\n })}\n </MagicLinkWrapper>\n );\n};\n\nMagicLinkEE.defaultProps = {\n registrationToken: '',\n};\n\nMagicLinkEE.propTypes = {\n registrationToken: PropTypes.string,\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASO,MAAM,cAAc,CAAC,EAAE,wBAAwB;AAC9C,QAAA,EAAE,kBAAkB;AAE1B,MAAI,mBAAmB;AAEnB,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ,GACN,OAAO,SAAS,MAClB,GAAG,YAAa,CAAA,oCAAoC,iBAAiB;AAAA,QAEpE,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AAGE,SAAA,oBAAC,kBAAiB,EAAA,QAAQ,GAAG,OAAO,SAAS,MAAM,GAAG,YAAa,CAAA,cAChE,UAAc,cAAA;AAAA,IACb,IAAI;AAAA,IACJ,gBACE;AAAA,EACH,CAAA,EACH,CAAA;AAEJ;AAEA,YAAY,eAAe;AAAA,EACzB,mBAAmB;AACrB;AAEA,YAAY,YAAY;AAAA,EACtB,mBAAmB,UAAU;AAC/B;"}
@@ -2,7 +2,7 @@
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
3
  const PropTypes = require("prop-types");
4
4
  const reactIntl = require("react-intl");
5
- const index = require("./index-8f8eaed6.js");
5
+ const index = require("./index-4de70b5d.js");
6
6
  const designSystem = require("@strapi/design-system");
7
7
  const helperPlugin = require("@strapi/helper-plugin");
8
8
  const Icons = require("@strapi/icons");
@@ -131,4 +131,4 @@ SelectRoles.propTypes = {
131
131
  exports.MagicLinkCE = MagicLinkCE;
132
132
  exports.MagicLinkWrapper = MagicLinkWrapper;
133
133
  exports.SelectRoles = SelectRoles;
134
- //# sourceMappingURL=index-c6c83bb3.js.map
134
+ //# sourceMappingURL=index-34e41e15.js.map