@strapi/admin 5.49.0 → 5.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/dist/admin/admin/src/components/ConfirmDialog.js +2 -2
  2. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  3. package/dist/admin/admin/src/components/ContentBox.js +3 -3
  4. package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
  5. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -8
  6. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  7. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs +8 -8
  8. package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/ErrorElement.js +100 -5
  10. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  11. package/dist/admin/admin/src/components/ErrorElement.mjs +99 -4
  12. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +41 -27
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/Form.mjs +41 -27
  16. package/dist/admin/admin/src/components/Form.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  19. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  20. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/FormInputs/Date.js +1 -1
  22. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  23. package/dist/admin/admin/src/components/FormInputs/Date.mjs +1 -1
  24. package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
  26. package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
  27. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +4 -1
  28. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  29. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +4 -1
  30. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  31. package/dist/admin/admin/src/components/FormInputs/Json.js +2 -1
  32. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  33. package/dist/admin/admin/src/components/FormInputs/Json.mjs +2 -1
  34. package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
  35. package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
  36. package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/FormInputs/Renderer.js +18 -26
  38. package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
  39. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs +20 -28
  40. package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
  42. package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
  43. package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
  44. package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/GapDropZone.js +2 -2
  46. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  47. package/dist/admin/admin/src/components/GradientBadge.js +3 -3
  48. package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
  49. package/dist/admin/admin/src/components/GuidedTour/Overview.js +8 -8
  50. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  51. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +4 -4
  52. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  53. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
  54. package/dist/admin/admin/src/components/GuidedTour/Tours.js +2 -2
  55. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  56. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +2 -2
  57. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  58. package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
  59. package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
  60. package/dist/admin/admin/src/components/Layouts/Layout.js +4 -4
  61. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  62. package/dist/admin/admin/src/components/LazyOutlet.js +57 -0
  63. package/dist/admin/admin/src/components/LazyOutlet.js.map +1 -0
  64. package/dist/admin/admin/src/components/LazyOutlet.mjs +35 -0
  65. package/dist/admin/admin/src/components/LazyOutlet.mjs.map +1 -0
  66. package/dist/admin/admin/src/components/LeftMenu.js +3 -3
  67. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  68. package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
  69. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  70. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +4 -4
  71. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
  72. package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
  73. package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
  74. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +3 -3
  75. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
  76. package/dist/admin/admin/src/components/MainNav/NavLink.js +8 -8
  77. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  78. package/dist/admin/admin/src/components/MainNav/NavUser.js +17 -7
  79. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  80. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +10 -0
  81. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  82. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +3 -3
  83. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  84. package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
  85. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  86. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  87. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  88. package/dist/admin/admin/src/components/RelativeTime.mjs +3 -2
  89. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  90. package/dist/admin/admin/src/components/ResizeIndicator.js +6 -6
  91. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  92. package/dist/admin/admin/src/components/SubNav.js +11 -9
  93. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  94. package/dist/admin/admin/src/components/SubNav.mjs +4 -2
  95. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  96. package/dist/admin/admin/src/components/Table.js +9 -5
  97. package/dist/admin/admin/src/components/Table.js.map +1 -1
  98. package/dist/admin/admin/src/components/Table.mjs +6 -2
  99. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  100. package/dist/admin/admin/src/components/Theme.js +2 -2
  101. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  102. package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
  103. package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
  104. package/dist/admin/admin/src/components/UpsellBanner.js +3 -3
  105. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  106. package/dist/admin/admin/src/components/WidgetRoot.js +4 -7
  107. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  108. package/dist/admin/admin/src/components/WidgetRoot.mjs +1 -1
  109. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
  110. package/dist/admin/admin/src/components/Widgets.js +5 -5
  111. package/dist/admin/admin/src/components/Widgets.js.map +1 -1
  112. package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
  113. package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
  114. package/dist/admin/admin/src/core/apis/Widgets.js +1 -1
  115. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  116. package/dist/admin/admin/src/core/apis/Widgets.mjs +1 -1
  117. package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
  118. package/dist/admin/admin/src/core/apis/router.js +19 -17
  119. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  120. package/dist/admin/admin/src/core/apis/router.mjs +19 -17
  121. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  122. package/dist/admin/admin/src/core/store/configure.js.map +1 -1
  123. package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
  124. package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
  125. package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
  126. package/dist/admin/admin/src/features/Tracking.js +3 -1
  127. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  128. package/dist/admin/admin/src/features/Tracking.mjs +3 -1
  129. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  130. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  131. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
  132. package/dist/admin/admin/src/hooks/useMediaQuery.js +4 -4
  133. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  134. package/dist/admin/admin/src/hooks/useMenu.js +5 -3
  135. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  136. package/dist/admin/admin/src/hooks/useMenu.mjs +5 -3
  137. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  138. package/dist/admin/admin/src/hooks/useQueryParams.js +0 -1
  139. package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
  140. package/dist/admin/admin/src/hooks/useQueryParams.mjs +0 -1
  141. package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
  142. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  143. package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
  144. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +5 -3
  145. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  146. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +5 -3
  147. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  148. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
  149. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Auth/AuthPage.js +3 -2
  151. package/dist/admin/admin/src/pages/Auth/AuthPage.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs +3 -2
  153. package/dist/admin/admin/src/pages/Auth/AuthPage.mjs.map +1 -1
  154. package/dist/admin/admin/src/pages/Auth/components/Register.js +17 -9
  155. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Auth/components/Register.mjs +15 -7
  157. package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
  158. package/dist/admin/admin/src/pages/Home/HomePage.js +2 -2
  159. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +3 -6
  161. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
  163. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
  164. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +4 -8
  165. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  167. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  168. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +4 -8
  169. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
  171. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
  172. package/dist/admin/admin/src/pages/SessionsPage.js +318 -0
  173. package/dist/admin/admin/src/pages/SessionsPage.js.map +1 -0
  174. package/dist/admin/admin/src/pages/SessionsPage.mjs +296 -0
  175. package/dist/admin/admin/src/pages/SessionsPage.mjs.map +1 -0
  176. package/dist/admin/admin/src/pages/Settings/Layout.js +4 -1
  177. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/Layout.mjs +5 -2
  179. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +2 -2
  181. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +2 -2
  184. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
  186. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +2 -2
  188. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
  190. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
  192. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -2
  196. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  197. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +1 -2
  198. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  199. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
  200. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  201. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +9 -2
  202. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +7 -0
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +7 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +7 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
  210. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
  211. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +44 -10
  212. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  213. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +34 -0
  214. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  215. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
  216. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  217. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
  218. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  219. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
  220. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
  221. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +38 -2
  222. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  223. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +38 -2
  224. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  225. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
  226. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  227. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
  228. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
  229. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +18 -1
  230. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  231. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs +18 -1
  232. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
  233. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js +59 -0
  234. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.js.map +1 -0
  235. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs +52 -0
  236. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.mjs.map +1 -0
  237. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  238. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
  239. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
  240. package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
  241. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
  242. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
  243. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
  244. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  245. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
  246. package/dist/admin/admin/src/router.js +9 -0
  247. package/dist/admin/admin/src/router.js.map +1 -1
  248. package/dist/admin/admin/src/router.mjs +9 -0
  249. package/dist/admin/admin/src/router.mjs.map +1 -1
  250. package/dist/admin/admin/src/services/auth.js +43 -2
  251. package/dist/admin/admin/src/services/auth.js.map +1 -1
  252. package/dist/admin/admin/src/services/auth.mjs +41 -3
  253. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  254. package/dist/admin/admin/src/translations/en.json.js +22 -0
  255. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  256. package/dist/admin/admin/src/translations/en.json.mjs +22 -0
  257. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  258. package/dist/admin/admin/src/translations/ja.json.js +726 -237
  259. package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
  260. package/dist/admin/admin/src/translations/ja.json.mjs +723 -238
  261. package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
  262. package/dist/admin/admin/src/translations/languageNativeNames.js +1 -0
  263. package/dist/admin/admin/src/translations/languageNativeNames.js.map +1 -1
  264. package/dist/admin/admin/src/translations/languageNativeNames.mjs +1 -0
  265. package/dist/admin/admin/src/translations/languageNativeNames.mjs.map +1 -1
  266. package/dist/admin/admin/src/translations/pl.json.js +22 -0
  267. package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
  268. package/dist/admin/admin/src/translations/pl.json.mjs +22 -0
  269. package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
  270. package/dist/admin/admin/src/utils/arrays.js.map +1 -1
  271. package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
  272. package/dist/admin/admin/src/utils/baseQuery.js +1 -1
  273. package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
  274. package/dist/admin/admin/src/utils/baseQuery.mjs +1 -1
  275. package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
  276. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  277. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  278. package/dist/admin/admin/src/utils/objects.js +43 -11
  279. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  280. package/dist/admin/admin/src/utils/objects.mjs +43 -11
  281. package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
  282. package/dist/admin/admin/src/utils/once.js.map +1 -1
  283. package/dist/admin/admin/src/utils/once.mjs.map +1 -1
  284. package/dist/admin/admin/src/utils/retryDynamicImport.js +85 -0
  285. package/dist/admin/admin/src/utils/retryDynamicImport.js.map +1 -0
  286. package/dist/admin/admin/src/utils/retryDynamicImport.mjs +80 -0
  287. package/dist/admin/admin/src/utils/retryDynamicImport.mjs.map +1 -0
  288. package/dist/admin/admin/src/utils/rulesEngine.js +2 -1
  289. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  290. package/dist/admin/admin/src/utils/rulesEngine.mjs +2 -1
  291. package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
  292. package/dist/admin/admin/src/utils/shims.js.map +1 -1
  293. package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
  294. package/dist/admin/admin/src/utils/widgetVisibility.js +16 -1
  295. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -1
  296. package/dist/admin/admin/src/utils/widgetVisibility.mjs +14 -2
  297. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -1
  298. package/dist/admin/admin/tests/server.js +25 -0
  299. package/dist/admin/admin/tests/server.js.map +1 -1
  300. package/dist/admin/admin/tests/server.mjs +25 -0
  301. package/dist/admin/admin/tests/server.mjs.map +1 -1
  302. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
  303. package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
  304. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +2 -2
  305. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  306. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs +2 -2
  307. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
  308. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
  309. package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
  310. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
  311. package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
  312. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
  313. package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
  314. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +3 -3
  315. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  316. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  317. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  318. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
  319. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
  320. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
  321. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  322. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  323. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  324. package/dist/admin/index.js +2 -0
  325. package/dist/admin/index.js.map +1 -1
  326. package/dist/admin/index.mjs +1 -0
  327. package/dist/admin/index.mjs.map +1 -1
  328. package/dist/admin/src/StrapiApp.d.ts +7 -7
  329. package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +2 -1
  330. package/dist/admin/src/components/Form.d.ts +14 -12
  331. package/dist/admin/src/components/FormInputs/Boolean.d.ts +0 -1
  332. package/dist/admin/src/components/FormInputs/Checkbox.d.ts +0 -1
  333. package/dist/admin/src/components/FormInputs/DateTime.d.ts +0 -1
  334. package/dist/admin/src/components/FormInputs/Email.d.ts +0 -1
  335. package/dist/admin/src/components/FormInputs/Enumeration.d.ts +0 -1
  336. package/dist/admin/src/components/FormInputs/Number.d.ts +0 -1
  337. package/dist/admin/src/components/FormInputs/Password.d.ts +0 -1
  338. package/dist/admin/src/components/FormInputs/Renderer.d.ts +1 -2
  339. package/dist/admin/src/components/FormInputs/String.d.ts +0 -1
  340. package/dist/admin/src/components/FormInputs/Textarea.d.ts +0 -1
  341. package/dist/admin/src/components/FormInputs/Time.d.ts +0 -1
  342. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +0 -1
  343. package/dist/admin/src/components/GuidedTour/Steps/Step.d.ts +1 -1
  344. package/dist/admin/src/components/LazyOutlet.d.ts +20 -0
  345. package/dist/admin/src/components/MainNav/MainNav.d.ts +1 -1
  346. package/dist/admin/src/components/MainNav/NavUser.d.ts +0 -1
  347. package/dist/admin/src/components/SubNav.d.ts +6 -7
  348. package/dist/admin/src/components/Table.d.ts +3 -2
  349. package/dist/admin/src/core/apis/Plugin.d.ts +2 -2
  350. package/dist/admin/src/core/apis/Widgets.d.ts +0 -1
  351. package/dist/admin/src/core/apis/router.d.ts +1 -1
  352. package/dist/admin/src/core/store/configure.d.ts +2 -2
  353. package/dist/admin/src/core/utils/createHook.d.ts +7 -7
  354. package/dist/admin/src/features/AppInfo.d.ts +1 -2
  355. package/dist/admin/src/features/StrapiApp.d.ts +1 -2
  356. package/dist/admin/src/hooks/useAPIErrorHandler.d.ts +1 -1
  357. package/dist/admin/src/hooks/useAdminRoles.d.ts +3 -3
  358. package/dist/admin/src/hooks/useFetchClient.d.ts +1 -1
  359. package/dist/admin/src/hooks/useMenu.d.ts +1 -1
  360. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  361. package/dist/admin/src/hooks/useQueryParams.d.ts +3 -2
  362. package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -2
  363. package/dist/admin/src/index.d.ts +1 -0
  364. package/dist/admin/src/layouts/UnauthenticatedLayout.d.ts +2 -2
  365. package/dist/admin/src/pages/SessionsPage.d.ts +2 -0
  366. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +1 -1
  367. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.d.ts +2 -3
  368. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.d.ts +2 -2
  369. package/dist/admin/src/pages/Settings/pages/Roles/components/HiddenAction.d.ts +0 -1
  370. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +2 -0
  371. package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +1 -1
  372. package/dist/admin/src/pages/Settings/pages/Roles/utils/forms.d.ts +1 -1
  373. package/dist/admin/src/pages/Settings/pages/Roles/utils/localePermissionValidation.d.ts +5 -0
  374. package/dist/admin/src/pages/Settings/pages/Roles/utils/permissions.d.ts +3 -1
  375. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +8 -8
  376. package/dist/admin/src/reducer.d.ts +1 -1
  377. package/dist/admin/src/services/admin.d.ts +8 -8
  378. package/dist/admin/src/services/api.d.ts +1 -1
  379. package/dist/admin/src/services/apiTokens.d.ts +3 -3
  380. package/dist/admin/src/services/auth.d.ts +29 -27
  381. package/dist/admin/src/services/contentApi.d.ts +2 -2
  382. package/dist/admin/src/services/contentManager.d.ts +1 -1
  383. package/dist/admin/src/services/homepage.d.ts +3 -3
  384. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  385. package/dist/admin/src/services/users.d.ts +15 -15
  386. package/dist/admin/src/services/webhooks.d.ts +4 -4
  387. package/dist/admin/src/translations/languageNativeNames.d.ts +1 -0
  388. package/dist/admin/src/utils/arrays.d.ts +1 -1
  389. package/dist/admin/src/utils/baseQuery.d.ts +1 -1
  390. package/dist/admin/src/utils/getFetchClient.d.ts +7 -7
  391. package/dist/admin/src/utils/locales.d.ts +0 -1
  392. package/dist/admin/src/utils/objects.d.ts +6 -4
  393. package/dist/admin/src/utils/once.d.ts +1 -1
  394. package/dist/admin/src/utils/retryDynamicImport.d.ts +19 -0
  395. package/dist/admin/src/utils/shims.d.ts +1 -1
  396. package/dist/admin/src/utils/widgetVisibility.d.ts +11 -0
  397. package/dist/admin/tests/store.d.ts +4 -4
  398. package/dist/admin/tests/utils.d.ts +5 -5
  399. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +1 -1
  400. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +2 -1
  401. package/dist/ee/admin/src/services/ai.d.ts +5 -5
  402. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  403. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +1 -1
  404. package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
  405. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +3 -3
  406. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  407. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -2
  408. package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
  409. package/dist/ee/server/src/bootstrap.d.ts.map +1 -1
  410. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +30 -31
  411. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  412. package/dist/ee/server/src/controllers/index.d.ts +1 -2
  413. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  414. package/dist/ee/server/src/controllers/user.d.ts +1 -1
  415. package/dist/ee/server/src/destroy.d.ts.map +1 -1
  416. package/dist/ee/server/src/index.d.ts +2 -3
  417. package/dist/ee/server/src/index.d.ts.map +1 -1
  418. package/dist/ee/server/src/register.d.ts.map +1 -1
  419. package/dist/ee/server/src/routes/utils.d.ts.map +1 -1
  420. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  421. package/dist/ee/server/src/services/index.d.ts +1 -1
  422. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  423. package/dist/ee/server/src/services/passport/sso.d.ts.map +1 -1
  424. package/dist/ee/server/src/services/persist-tables.d.ts +1 -1
  425. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  426. package/dist/ee/server/src/services/role.d.ts.map +1 -1
  427. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  428. package/dist/ee/server/src/utils/index.d.ts.map +1 -1
  429. package/dist/ee/server/src/utils/sso-lock.d.ts.map +1 -1
  430. package/dist/ee/server/src/validation/authentication.d.ts +2 -2
  431. package/dist/ee/server/src/validation/role.d.ts +6 -6
  432. package/dist/ee/server/src/validation/role.d.ts.map +1 -1
  433. package/dist/ee/server/src/validation/user.d.ts.map +1 -1
  434. package/dist/server/server/src/content-types/session.js +6 -0
  435. package/dist/server/server/src/content-types/session.js.map +1 -1
  436. package/dist/server/server/src/content-types/session.mjs +6 -0
  437. package/dist/server/server/src/content-types/session.mjs.map +1 -1
  438. package/dist/server/server/src/controllers/admin.js.map +1 -1
  439. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  440. package/dist/server/server/src/controllers/authenticated-session.js +61 -0
  441. package/dist/server/server/src/controllers/authenticated-session.js.map +1 -0
  442. package/dist/server/server/src/controllers/authenticated-session.mjs +59 -0
  443. package/dist/server/server/src/controllers/authenticated-session.mjs.map +1 -0
  444. package/dist/server/server/src/controllers/authentication.js +11 -4
  445. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  446. package/dist/server/server/src/controllers/authentication.mjs +12 -5
  447. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  448. package/dist/server/server/src/controllers/index.js +2 -0
  449. package/dist/server/server/src/controllers/index.js.map +1 -1
  450. package/dist/server/server/src/controllers/index.mjs +2 -0
  451. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  452. package/dist/server/server/src/controllers/role.js +2 -4
  453. package/dist/server/server/src/controllers/role.js.map +1 -1
  454. package/dist/server/server/src/controllers/role.mjs +2 -4
  455. package/dist/server/server/src/controllers/role.mjs.map +1 -1
  456. package/dist/server/server/src/routes/serve-admin-panel.js +1 -1
  457. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  458. package/dist/server/server/src/routes/serve-admin-panel.mjs +1 -1
  459. package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
  460. package/dist/server/server/src/routes/users.js +12 -26
  461. package/dist/server/server/src/routes/users.js.map +1 -1
  462. package/dist/server/server/src/routes/users.mjs +12 -26
  463. package/dist/server/server/src/routes/users.mjs.map +1 -1
  464. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +0 -2
  465. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  466. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +0 -2
  467. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  468. package/dist/server/server/src/services/permission/sections-builder/handlers.js +9 -2
  469. package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
  470. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +9 -2
  471. package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
  472. package/dist/server/server/src/services/role.js +7 -2
  473. package/dist/server/server/src/services/role.js.map +1 -1
  474. package/dist/server/server/src/services/role.mjs +7 -2
  475. package/dist/server/server/src/services/role.mjs.map +1 -1
  476. package/dist/server/server/src/strategies/admin.js +4 -0
  477. package/dist/server/server/src/strategies/admin.js.map +1 -1
  478. package/dist/server/server/src/strategies/admin.mjs +4 -0
  479. package/dist/server/server/src/strategies/admin.mjs.map +1 -1
  480. package/dist/server/server/src/validation/common-validators.js +19 -11
  481. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  482. package/dist/server/server/src/validation/common-validators.mjs +19 -11
  483. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  484. package/dist/server/server/src/validation/permission.js +1 -1
  485. package/dist/server/server/src/validation/permission.js.map +1 -1
  486. package/dist/server/server/src/validation/permission.mjs +1 -1
  487. package/dist/server/server/src/validation/permission.mjs.map +1 -1
  488. package/dist/server/server/src/validation/role.js +2 -2
  489. package/dist/server/server/src/validation/role.js.map +1 -1
  490. package/dist/server/server/src/validation/role.mjs +2 -2
  491. package/dist/server/server/src/validation/role.mjs.map +1 -1
  492. package/dist/server/src/ai/controllers/ai.d.ts +3 -3
  493. package/dist/server/src/ai/services/ai.d.ts.map +1 -1
  494. package/dist/server/src/bootstrap.d.ts.map +1 -1
  495. package/dist/server/src/config/admin-conditions.d.ts +2 -2
  496. package/dist/server/src/config/admin-conditions.d.ts.map +1 -1
  497. package/dist/server/src/content-types/index.d.ts +6 -0
  498. package/dist/server/src/content-types/index.d.ts.map +1 -1
  499. package/dist/server/src/content-types/session.d.ts +6 -0
  500. package/dist/server/src/content-types/session.d.ts.map +1 -1
  501. package/dist/server/src/controllers/admin-token.d.ts +5 -5
  502. package/dist/server/src/controllers/api-token.d.ts +1 -1
  503. package/dist/server/src/controllers/authenticated-session.d.ts +8 -0
  504. package/dist/server/src/controllers/authenticated-session.d.ts.map +1 -0
  505. package/dist/server/src/controllers/authenticated-user.d.ts +1 -1
  506. package/dist/server/src/controllers/authentication.d.ts +4 -4
  507. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  508. package/dist/server/src/controllers/formatters/conditions.d.ts +0 -1
  509. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  510. package/dist/server/src/controllers/formatters/format-actions-by-sections.d.ts.map +1 -1
  511. package/dist/server/src/controllers/homepage.d.ts +2 -2
  512. package/dist/server/src/controllers/homepage.d.ts.map +1 -1
  513. package/dist/server/src/controllers/index.d.ts +33 -43
  514. package/dist/server/src/controllers/index.d.ts.map +1 -1
  515. package/dist/server/src/controllers/role.d.ts +4 -4
  516. package/dist/server/src/controllers/transfer/runner.d.ts +4 -4
  517. package/dist/server/src/controllers/transfer/runner.d.ts.map +1 -1
  518. package/dist/server/src/controllers/transfer/token.d.ts +1 -1
  519. package/dist/server/src/controllers/user.d.ts +2 -2
  520. package/dist/server/src/controllers/webhooks.d.ts +4 -4
  521. package/dist/server/src/domain/action/index.d.ts +4 -65
  522. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  523. package/dist/server/src/domain/action/provider.d.ts +30 -3
  524. package/dist/server/src/domain/action/provider.d.ts.map +1 -1
  525. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  526. package/dist/server/src/domain/condition/provider.d.ts +19 -2
  527. package/dist/server/src/domain/condition/provider.d.ts.map +1 -1
  528. package/dist/server/src/domain/permission/index.d.ts +0 -1
  529. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  530. package/dist/server/src/domain/user.d.ts.map +1 -1
  531. package/dist/server/src/index.d.ts +51 -63
  532. package/dist/server/src/index.d.ts.map +1 -1
  533. package/dist/server/src/middlewares/data-transfer.d.ts.map +1 -1
  534. package/dist/server/src/middlewares/index.d.ts +0 -1
  535. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  536. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  537. package/dist/server/src/policies/hasPermissions.d.ts.map +1 -1
  538. package/dist/server/src/policies/index.d.ts.map +1 -1
  539. package/dist/server/src/policies/isAuthenticatedAdmin.d.ts.map +1 -1
  540. package/dist/server/src/policies/isTelemetryEnabled.d.ts.map +1 -1
  541. package/dist/server/src/register.d.ts.map +1 -1
  542. package/dist/server/src/routes/index.d.ts +0 -1
  543. package/dist/server/src/routes/index.d.ts.map +1 -1
  544. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  545. package/dist/server/src/routes/transfer.d.ts +0 -1
  546. package/dist/server/src/routes/transfer.d.ts.map +1 -1
  547. package/dist/server/src/routes/users.d.ts.map +1 -1
  548. package/dist/server/src/services/action.d.ts.map +1 -1
  549. package/dist/server/src/services/api-token.d.ts +5 -6
  550. package/dist/server/src/services/api-token.d.ts.map +1 -1
  551. package/dist/server/src/services/auth.d.ts.map +1 -1
  552. package/dist/server/src/services/condition.d.ts.map +1 -1
  553. package/dist/server/src/services/content-type.d.ts.map +1 -1
  554. package/dist/server/src/services/encryption.d.ts.map +1 -1
  555. package/dist/server/src/services/homepage.d.ts.map +1 -1
  556. package/dist/server/src/services/index.d.ts +12 -21
  557. package/dist/server/src/services/index.d.ts.map +1 -1
  558. package/dist/server/src/services/metrics.d.ts.map +1 -1
  559. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  560. package/dist/server/src/services/passport.d.ts +0 -1
  561. package/dist/server/src/services/passport.d.ts.map +1 -1
  562. package/dist/server/src/services/permission/engine.d.ts +1 -2
  563. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  564. package/dist/server/src/services/permission/permissions-manager/index.d.ts +5 -5
  565. package/dist/server/src/services/permission/permissions-manager/index.d.ts.map +1 -1
  566. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  567. package/dist/server/src/services/permission/permissions-manager/query-builders.d.ts.map +1 -1
  568. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts +3 -3
  569. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  570. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  571. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  572. package/dist/server/src/services/permission/sections-builder/builder.d.ts +4 -4
  573. package/dist/server/src/services/permission/sections-builder/builder.d.ts.map +1 -1
  574. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  575. package/dist/server/src/services/permission/sections-builder/index.d.ts +4 -4
  576. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  577. package/dist/server/src/services/permission/sections-builder/utils.d.ts +0 -1
  578. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  579. package/dist/server/src/services/permission.d.ts +13 -38
  580. package/dist/server/src/services/permission.d.ts.map +1 -1
  581. package/dist/server/src/services/project-settings.d.ts +2 -4
  582. package/dist/server/src/services/project-settings.d.ts.map +1 -1
  583. package/dist/server/src/services/role.d.ts +7 -1
  584. package/dist/server/src/services/role.d.ts.map +1 -1
  585. package/dist/server/src/services/token.d.ts +1 -1
  586. package/dist/server/src/services/token.d.ts.map +1 -1
  587. package/dist/server/src/services/transfer/token.d.ts +11 -11
  588. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  589. package/dist/server/src/services/user.d.ts +3 -3
  590. package/dist/server/src/services/user.d.ts.map +1 -1
  591. package/dist/server/src/strategies/admin-token.d.ts +4 -4
  592. package/dist/server/src/strategies/admin-token.d.ts.map +1 -1
  593. package/dist/server/src/strategies/admin.d.ts.map +1 -1
  594. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -1
  595. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  596. package/dist/server/src/strategies/data-transfer.d.ts.map +1 -1
  597. package/dist/server/src/utils/normalize-email.d.ts.map +1 -1
  598. package/dist/server/src/validation/action-provider.d.ts +2 -2
  599. package/dist/server/src/validation/action-provider.d.ts.map +1 -1
  600. package/dist/server/src/validation/admin-tokens.d.ts +2 -2
  601. package/dist/server/src/validation/api-tokens.d.ts +4 -4
  602. package/dist/server/src/validation/authentication/forgot-password.d.ts +1 -1
  603. package/dist/server/src/validation/authentication/login.d.ts +1 -1
  604. package/dist/server/src/validation/authentication/register.d.ts +6 -6
  605. package/dist/server/src/validation/authentication/register.d.ts.map +1 -1
  606. package/dist/server/src/validation/authentication/reset-password.d.ts +1 -1
  607. package/dist/server/src/validation/common-functions/check-fields-are-correctly-nested.d.ts.map +1 -1
  608. package/dist/server/src/validation/common-functions/check-fields-dont-have-duplicates.d.ts.map +1 -1
  609. package/dist/server/src/validation/common-validators.d.ts.map +1 -1
  610. package/dist/server/src/validation/permission.d.ts +6 -6
  611. package/dist/server/src/validation/permission.d.ts.map +1 -1
  612. package/dist/server/src/validation/policies/hasPermissions.d.ts +2 -2
  613. package/dist/server/src/validation/project-settings.d.ts +6 -6
  614. package/dist/server/src/validation/role.d.ts +8 -8
  615. package/dist/server/src/validation/role.d.ts.map +1 -1
  616. package/dist/server/src/validation/transfer/token.d.ts +4 -4
  617. package/dist/server/src/validation/user.d.ts +8 -8
  618. package/dist/shared/contracts/permissions.d.ts +1 -0
  619. package/dist/shared/contracts/permissions.d.ts.map +1 -1
  620. package/dist/shared/contracts/sessions.d.ts +62 -0
  621. package/dist/shared/contracts/sessions.d.ts.map +1 -0
  622. package/dist/shared/contracts/shared.d.ts +1 -1
  623. package/dist/shared/contracts/shared.d.ts.map +1 -1
  624. package/dist/shared/utils/session-auth.d.ts +1 -1
  625. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  626. package/package.json +12 -12
@@ -1,11 +1,12 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { Alert, Typography, Main, Flex, Link, Button } from '@strapi/design-system';
3
- import { WarningCircle, Duplicate } from '@strapi/icons';
2
+ import { Alert, Typography, Main, Flex, Button, Link } from '@strapi/design-system';
3
+ import { Clock, Duplicate, WarningCircle } from '@strapi/icons';
4
4
  import { useIntl } from 'react-intl';
5
5
  import { useRouteError } from 'react-router-dom';
6
6
  import { styled } from 'styled-components';
7
7
  import { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme.mjs';
8
8
  import { useClipboard } from '../hooks/useClipboard.mjs';
9
+ import { isChunkLoadError } from '../utils/retryDynamicImport.mjs';
9
10
 
10
11
  /**
11
12
  * @description this stops the app from going white, and instead shows the error message.
@@ -16,13 +17,103 @@ import { useClipboard } from '../hooks/useClipboard.mjs';
16
17
  const { copy } = useClipboard();
17
18
  if (error instanceof Error) {
18
19
  console.error(error);
19
- const handleClick = async ()=>{
20
+ const handleCopy = async ()=>{
20
21
  await copy(`
21
22
  \`\`\`
22
23
  ${error.stack}
23
24
  \`\`\`
24
25
  `);
25
26
  };
27
+ if (isChunkLoadError(error)) {
28
+ return /*#__PURE__*/ jsx(Main, {
29
+ height: "100%",
30
+ children: /*#__PURE__*/ jsx(Flex, {
31
+ alignItems: "center",
32
+ height: "100%",
33
+ justifyContent: "center",
34
+ paddingLeft: RESPONSIVE_DEFAULT_SPACING,
35
+ paddingRight: RESPONSIVE_DEFAULT_SPACING,
36
+ children: /*#__PURE__*/ jsxs(Flex, {
37
+ gap: 7,
38
+ padding: {
39
+ initial: 6,
40
+ small: 7,
41
+ medium: 8
42
+ },
43
+ direction: "column",
44
+ width: "100%",
45
+ maxWidth: "512px",
46
+ shadow: "tableShadow",
47
+ borderColor: "neutral150",
48
+ background: "neutral0",
49
+ hasRadius: true,
50
+ children: [
51
+ /*#__PURE__*/ jsxs(Flex, {
52
+ direction: "column",
53
+ gap: 2,
54
+ children: [
55
+ /*#__PURE__*/ jsx(Clock, {
56
+ width: "32px",
57
+ height: "32px",
58
+ fill: "primary600"
59
+ }),
60
+ /*#__PURE__*/ jsx(Typography, {
61
+ fontSize: 4,
62
+ fontWeight: "bold",
63
+ textAlign: "center",
64
+ children: formatMessage({
65
+ id: 'app.error.chunk.title',
66
+ defaultMessage: "This screen couldn't be loaded"
67
+ })
68
+ }),
69
+ /*#__PURE__*/ jsx(Typography, {
70
+ variant: "omega",
71
+ textAlign: "center",
72
+ children: formatMessage({
73
+ id: 'app.error.chunk.message',
74
+ defaultMessage: 'The admin could not load a screen. This often happens when the server is starting or the connection was interrupted. Reload the page to try again. If you recently deployed, you may need a full refresh to load the latest version.'
75
+ })
76
+ })
77
+ ]
78
+ }),
79
+ /*#__PURE__*/ jsxs(Flex, {
80
+ gap: 4,
81
+ direction: "column",
82
+ width: "100%",
83
+ children: [
84
+ /*#__PURE__*/ jsx(Button, {
85
+ onClick: ()=>window.location.reload(),
86
+ fullWidth: true,
87
+ children: formatMessage({
88
+ id: 'app.error.chunk.reload',
89
+ defaultMessage: 'Reload the page'
90
+ })
91
+ }),
92
+ /*#__PURE__*/ jsx(StyledAlert, {
93
+ onClose: ()=>{},
94
+ width: "100%",
95
+ closeLabel: "",
96
+ variant: "warning",
97
+ children: /*#__PURE__*/ jsx(ChunkErrorType, {
98
+ children: error.message
99
+ })
100
+ }),
101
+ /*#__PURE__*/ jsx(Button, {
102
+ onClick: handleCopy,
103
+ variant: "tertiary",
104
+ startIcon: /*#__PURE__*/ jsx(Duplicate, {}),
105
+ children: formatMessage({
106
+ id: 'app.error.copy',
107
+ defaultMessage: 'Copy to clipboard'
108
+ })
109
+ })
110
+ ]
111
+ })
112
+ ]
113
+ })
114
+ })
115
+ });
116
+ }
26
117
  return /*#__PURE__*/ jsx(Main, {
27
118
  height: "100%",
28
119
  children: /*#__PURE__*/ jsx(Flex, {
@@ -97,7 +188,7 @@ ${error.stack}
97
188
  })
98
189
  }),
99
190
  /*#__PURE__*/ jsx(Button, {
100
- onClick: handleClick,
191
+ onClick: handleCopy,
101
192
  variant: "tertiary",
102
193
  startIcon: /*#__PURE__*/ jsx(Duplicate, {}),
103
194
  children: formatMessage({
@@ -127,6 +218,10 @@ const ErrorType = styled(Typography)`
127
218
  word-break: break-all;
128
219
  color: ${({ theme })=>theme.colors.danger600};
129
220
  `;
221
+ const ChunkErrorType = styled(Typography)`
222
+ word-break: break-all;
223
+ color: ${({ theme })=>theme.colors.warning600};
224
+ `;
130
225
 
131
226
  export { ErrorElement };
132
227
  //# sourceMappingURL=ErrorElement.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorElement.mjs","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleClick} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleClick","stack","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","WarningCircle","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","link","Link","isExternal","endIcon","href","StyledAlert","onClose","closeLabel","ErrorType","message","Button","onClick","startIcon","Duplicate","styled","Alert","theme","colors","danger600"],"mappings":"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"}
1
+ {"version":3,"file":"ErrorElement.mjs","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Clock, Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\nimport { isChunkLoadError } from '../utils/retryDynamicImport';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleCopy = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n if (isChunkLoadError(error)) {\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <Clock width=\"32px\" height=\"32px\" fill=\"primary600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error.chunk.title',\n defaultMessage: \"This screen couldn't be loaded\",\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error.chunk.message',\n defaultMessage:\n 'The admin could not load a screen. This often happens when the server is starting or the connection was interrupted. Reload the page to try again. If you recently deployed, you may need a full refresh to load the latest version.',\n })}\n </Typography>\n </Flex>\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <Button onClick={() => window.location.reload()} fullWidth>\n {formatMessage({\n id: 'app.error.chunk.reload',\n defaultMessage: 'Reload the page',\n })}\n </Button>\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"warning\">\n <ChunkErrorType>{error.message}</ChunkErrorType>\n </StyledAlert>\n <Button onClick={handleCopy} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleCopy} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nconst ChunkErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.warning600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleCopy","stack","isChunkLoadError","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","Clock","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","Button","onClick","window","location","reload","fullWidth","StyledAlert","onClose","closeLabel","ChunkErrorType","message","startIcon","Duplicate","WarningCircle","link","Link","isExternal","endIcon","href","ErrorType","styled","Alert","theme","colors","danger600","warning600"],"mappings":"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"}
@@ -36,6 +36,12 @@ function _interopNamespace(e) {
36
36
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
37
37
  var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
38
38
 
39
+ const isArrayLikeOptions = (options)=>{
40
+ return typeof options === 'object' && options !== null && 'length' in options;
41
+ };
42
+ const isMultipleSelectTarget = (target)=>{
43
+ return 'multiple' in target && target.multiple === true && 'options' in target && isArrayLikeOptions(target.options);
44
+ };
39
45
  /**
40
46
  * @internal
41
47
  * @description We use this just to warn people that they're using the useForm
@@ -241,12 +247,22 @@ const [FormProvider, useForm] = Context.createContext('Form', {
241
247
  });
242
248
  return;
243
249
  }
244
- const target = eventOrPath.target || eventOrPath.currentTarget;
245
- const { type, name, id, value, options, multiple } = target;
246
- const field = name || id;
247
- if (!field && process.env.NODE_ENV !== 'production') {
250
+ const { target: eventTarget, currentTarget } = eventOrPath;
251
+ const target = eventTarget ?? currentTarget;
252
+ if (target === undefined) {
253
+ return;
254
+ }
255
+ const { type, name, id, value } = target;
256
+ let field = name;
257
+ if (field === undefined || field === '') {
258
+ field = id;
259
+ }
260
+ if ((field === undefined || field === '') && process.env.NODE_ENV !== 'production') {
248
261
  console.warn(`\`onChange\` was called with an event, but you forgot to pass a \`name\` or \`id'\` attribute to your input. The field to update cannot be determined`);
249
262
  }
263
+ if (field === undefined || field === '') {
264
+ return;
265
+ }
250
266
  /**
251
267
  * Because we handle any field from this function, we run through a series
252
268
  * of checks to understand how to use the value.
@@ -258,9 +274,9 @@ const [FormProvider, useForm] = Context.createContext('Form', {
258
274
  } else if (/checkbox/.test(type)) {
259
275
  // Get & invert the current value of the checkbox.
260
276
  val = !objects.getIn(state.values, field);
261
- } else if (options && multiple) {
277
+ } else if (isMultipleSelectTarget(target)) {
262
278
  // This will handle native select elements incl. ones with mulitple options.
263
- val = Array.from(options).filter((el)=>el.selected).map((el)=>el.value);
279
+ val = Array.from(target.options).filter((el)=>el.selected).map((el)=>el.value);
264
280
  } else {
265
281
  // NOTE: reset value to null so it failes required checks.
266
282
  // The API only considers a required field invalid if the value is null|undefined, to differentiate from min 1
@@ -270,15 +286,13 @@ const [FormProvider, useForm] = Context.createContext('Form', {
270
286
  val = value;
271
287
  }
272
288
  }
273
- if (field) {
274
- dispatch({
275
- type: 'SET_FIELD_VALUE',
276
- payload: {
277
- field,
278
- value: val
279
- }
280
- });
281
- }
289
+ dispatch({
290
+ type: 'SET_FIELD_VALUE',
291
+ payload: {
292
+ field,
293
+ value: val
294
+ }
295
+ });
282
296
  });
283
297
  const addFieldRow = React__namespace.useCallback((field, value, addAtIndex)=>{
284
298
  dispatch({
@@ -386,15 +400,16 @@ const [FormProvider, useForm] = Context.createContext('Form', {
386
400
  }
387
401
  return errors;
388
402
  };
403
+ const setDraftValues = (draft, values)=>{
404
+ draft.values = values;
405
+ };
389
406
  const reducer = (state, action)=>immer.produce(state, (draft)=>{
390
407
  switch(action.type){
391
408
  case 'SET_INITIAL_VALUES':
392
- // @ts-expect-error – TODO: figure out why this fails ts.
393
- draft.values = action.payload;
409
+ setDraftValues(draft, action.payload);
394
410
  break;
395
411
  case 'SET_VALUES':
396
- // @ts-expect-error – TODO: figure out why this fails ts.
397
- draft.values = action.payload;
412
+ setDraftValues(draft, action.payload);
398
413
  break;
399
414
  case 'SUBMIT_ATTEMPT':
400
415
  draft.isSubmitting = true;
@@ -406,7 +421,7 @@ const reducer = (state, action)=>immer.produce(state, (draft)=>{
406
421
  draft.isSubmitting = false;
407
422
  break;
408
423
  case 'SET_FIELD_VALUE':
409
- draft.values = objects.setIn(state.values, action.payload.field, action.payload.value);
424
+ setDraftValues(draft, objects.setIn(state.values, action.payload.field, action.payload.value));
410
425
  break;
411
426
  case 'ADD_FIELD_ROW':
412
427
  {
@@ -422,7 +437,7 @@ const reducer = (state, action)=>immer.produce(state, (draft)=>{
422
437
  // Collect all existing keys to ensure uniqueness.
423
438
  // Keys may be out of order after drag-and-drop moves, so we can't rely
424
439
  // on fractional indexing alone to avoid collisions.
425
- const existingKeys = new Set(currentField.map((item)=>item.__temp_key__).filter(Boolean));
440
+ const existingKeys = new Set(currentField.map((item)=>item.__temp_key__).filter((key)=>key !== undefined && key !== ''));
426
441
  // Generate a unique key, retrying if there's a collision
427
442
  let key;
428
443
  let lowerBound = existingKeys.size > 0 ? Array.from(existingKeys).sort().pop() : null;
@@ -434,10 +449,10 @@ const reducer = (state, action)=>immer.produce(state, (draft)=>{
434
449
  lowerBound = key;
435
450
  }
436
451
  }while (existingKeys.has(key))
437
- draft.values = objects.setIn(state.values, action.payload.field, currentField.toSpliced(position, 0, {
452
+ setDraftValues(draft, objects.setIn(state.values, action.payload.field, currentField.toSpliced(position, 0, {
438
453
  ...action.payload.value,
439
454
  __temp_key__: key
440
- }));
455
+ })));
441
456
  break;
442
457
  }
443
458
  case 'MOVE_FIELD_ROW':
@@ -453,7 +468,7 @@ const reducer = (state, action)=>immer.produce(state, (draft)=>{
453
468
  // The array order determines display order, so fractional key ordering isn't needed.
454
469
  currentField.splice(fromIndex, 1);
455
470
  currentField.splice(toIndex, 0, currentRow);
456
- draft.values = objects.setIn(state.values, field, currentField);
471
+ setDraftValues(draft, objects.setIn(state.values, field, currentField));
457
472
  break;
458
473
  }
459
474
  case 'REMOVE_FIELD_ROW':
@@ -471,7 +486,7 @@ const reducer = (state, action)=>immer.produce(state, (draft)=>{
471
486
  * filter out empty values from the array, the setIn function only deletes the value
472
487
  * when we pass undefined as opposed to "removing" it from said array.
473
488
  */ const newValue = objects.setIn(currentField, position.toString(), undefined).filter((val)=>val);
474
- draft.values = objects.setIn(state.values, action.payload.field, newValue.length > 0 ? newValue : []);
489
+ setDraftValues(draft, objects.setIn(state.values, action.payload.field, newValue.length > 0 ? newValue : []));
475
490
  break;
476
491
  }
477
492
  case 'SET_ERRORS':
@@ -484,8 +499,7 @@ const reducer = (state, action)=>immer.produce(state, (draft)=>{
484
499
  draft.isSubmitting = action.payload;
485
500
  break;
486
501
  case 'RESET_FORM':
487
- // @ts-expect-error – TODO: figure out why this fails ts.
488
- draft.values = action.payload.values;
502
+ setDraftValues(draft, action.payload.values);
489
503
  // @ts-expect-error – TODO: figure out why this fails ts.
490
504
  draft.errors = action.payload.errors;
491
505
  draft.isSubmitting = action.payload.isSubmitting;
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","sources":["../../../../../admin/src/components/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n type BoxProps,\n Button,\n Dialog,\n useCallbackRef,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { produce } from 'immer';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl, type MessageDescriptor, type PrimitiveType } from 'react-intl';\nimport { useBlocker } from 'react-router-dom';\n\nimport { useWarnIfUnsavedChanges } from '../hooks/useWarnIfUnsavedChanges';\nimport { getIn, setIn } from '../utils/objects';\n\nimport { createContext } from './Context';\n\nimport type {\n InputProps as InputPropsImpl,\n StringProps,\n EnumerationProps,\n} from './FormInputs/types';\nimport type * as Yup from 'yup';\n\n/* -------------------------------------------------------------------------------------------------\n * FormContext\n * -----------------------------------------------------------------------------------------------*/\ntype InputProps = InputPropsImpl | StringProps | EnumerationProps;\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ninterface FormValues {\n [field: string]: any;\n}\n\ninterface FormContextValue<TFormValues extends FormValues = FormValues>\n extends FormState<TFormValues> {\n disabled: boolean;\n getValues: () => TFormValues;\n initialValues: TFormValues;\n modified: boolean;\n /**\n * The default behaviour is to add the row to the end of the array, if you want to add it to a\n * specific index you can pass the index.\n */\n addFieldRow: (field: string, value: any, addAtIndex?: number) => void;\n moveFieldRow: (field: string, fromIndex: number, toIndex: number) => void;\n onChange: (eventOrPath: React.ChangeEvent<any> | string, value?: any) => void;\n /*\n * The default behaviour is to remove the last row, if you want to remove a specific index you can\n * pass the index.\n */\n removeFieldRow: (field: string, removeAtIndex?: number) => void;\n resetForm: (newInitialValues?: TFormValues) => void;\n setErrors: (errors: FormErrors<TFormValues>) => void;\n setSubmitting: (isSubmitting: boolean) => void;\n setValues: (values: TFormValues) => void;\n validate: (\n shouldSetErrors?: boolean,\n options?: Record<string, string>\n ) => Promise<\n { data: TFormValues; errors?: never } | { data?: never; errors: FormErrors<TFormValues> }\n >;\n}\n\n/**\n * @internal\n * @description We use this just to warn people that they're using the useForm\n * methods outside of a Form component, but we don't want to throw an error\n * because otherwise the DocumentActions list cannot be rendered in our list-view.\n */\nconst ERR_MSG =\n 'The Form Component has not been initialised, ensure you are using this hook within a Form component';\n\nconst [FormProvider, useForm] = createContext<FormContextValue>('Form', {\n disabled: false,\n errors: {},\n getValues: () => {\n throw new Error(ERR_MSG);\n },\n initialValues: {},\n isSubmitting: false,\n modified: false,\n addFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n moveFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n onChange: () => {\n throw new Error(ERR_MSG);\n },\n removeFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n resetForm: () => {\n throw new Error(ERR_MSG);\n },\n setErrors: () => {\n throw new Error(ERR_MSG);\n },\n setValues: () => {\n throw new Error(ERR_MSG);\n },\n setSubmitting: () => {\n throw new Error(ERR_MSG);\n },\n validate: async () => {\n throw new Error(ERR_MSG);\n },\n values: {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormHelpers<TFormValues extends FormValues = FormValues>\n extends Pick<FormContextValue<TFormValues>, 'setErrors' | 'setValues' | 'resetForm'> {}\n\ninterface FormProps<TFormValues extends FormValues = FormValues>\n extends Partial<Pick<FormContextValue<TFormValues>, 'disabled' | 'initialValues'>>,\n Pick<BoxProps, 'width' | 'height'> {\n children:\n | React.ReactNode\n | ((\n props: Pick<\n FormContextValue<TFormValues>,\n | 'disabled'\n | 'errors'\n | 'isSubmitting'\n | 'modified'\n | 'values'\n | 'resetForm'\n | 'onChange'\n | 'setErrors'\n >\n ) => React.ReactNode);\n method: 'POST' | 'PUT';\n onSubmit?: (values: TFormValues, helpers: FormHelpers<TFormValues>) => Promise<void> | void;\n // TODO: type the return value for a validation schema func from Yup.\n validationSchema?: Yup.AnySchema;\n initialErrors?: FormErrors<TFormValues>;\n // NOTE: we don't know what return type it can be here\n validate?: (values: TFormValues, options: Record<string, string>) => Promise<any>;\n}\n\n/**\n * @alpha\n * @description A form component that handles form state, validation and submission.\n * It can additionally handle nested fields and arrays. To access the data you can either\n * use the generic useForm hook or the useField hook when providing the name of your field.\n */\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n ({ disabled = false, method, onSubmit, initialErrors, ...props }, ref) => {\n const formRef = React.useRef<HTMLFormElement>(null!);\n const initialValues = React.useRef(props.initialValues ?? {});\n const [state, dispatch] = React.useReducer(reducer, {\n errors: initialErrors ?? {},\n isSubmitting: false,\n values: props.initialValues ?? {},\n });\n\n // Keep a ref to the latest form values so `getValues()` can always return fresh data.\n // We expose `getValues` as a stable callback so consumers (e.g. conditional/rules logic)\n // can call it without causing extra rerenders from changing function references.\n const valuesRef = React.useRef(state.values);\n /**\n * Keep the ref aligned with `state.values` during render (not only in an effect) so\n * `getValues()` / `validate()` always see the latest committed values. Effects run too late\n * for back-to-back user actions (e.g. fast e2e) where the next handler runs before the\n * effect has fired.\n */\n valuesRef.current = state.values;\n\n const getValues = React.useCallback(() => valuesRef.current, []);\n\n React.useEffect(() => {\n /**\n * ONLY update the initialValues if the prop has changed.\n */\n if (!isEqual(initialValues.current, props.initialValues)) {\n initialValues.current = props.initialValues ?? {};\n\n dispatch({\n type: 'SET_INITIAL_VALUES',\n payload: props.initialValues ?? {},\n });\n }\n }, [props.initialValues]);\n\n const setErrors = React.useCallback((errors: FormErrors) => {\n dispatch({\n type: 'SET_ERRORS',\n payload: errors,\n });\n }, []);\n\n const setValues = React.useCallback((values: FormValues) => {\n dispatch({\n type: 'SET_VALUES',\n payload: values,\n });\n }, []);\n\n React.useEffect(() => {\n if (Object.keys(state.errors).length === 0) return;\n\n /**\n * Small timeout to ensure the form has been\n * rendered before we try to focus on the first\n */\n const ref = setTimeout(() => {\n const [firstError] = formRef.current.querySelectorAll('[data-strapi-field-error]');\n\n if (firstError) {\n const errorId = firstError.getAttribute('id');\n const formElementInError = formRef.current.querySelector(\n `[aria-describedby=\"${errorId}\"]`\n );\n\n if (formElementInError && formElementInError instanceof HTMLElement) {\n formElementInError.focus();\n }\n }\n });\n\n return () => clearTimeout(ref);\n }, [state.errors]);\n\n /**\n * Uses the provided validation schema\n */\n const validate = React.useCallback(\n async (shouldSetErrors: boolean = true, options: Record<string, string> = {}) => {\n setErrors({});\n\n const valuesToValidate = valuesRef.current;\n\n if (!props.validationSchema && !props.validate) {\n return { data: valuesToValidate };\n }\n\n try {\n let data;\n if (props.validationSchema) {\n data = await props.validationSchema.validate(valuesToValidate, { abortEarly: false });\n } else if (props.validate) {\n data = await props.validate(valuesToValidate, options);\n } else {\n throw new Error('No validation schema or validate function provided');\n }\n\n return { data };\n } catch (err) {\n if (isErrorYupValidationError(err)) {\n const errors = getYupValidationErrors(err);\n\n if (shouldSetErrors) {\n setErrors(errors);\n }\n\n return { errors };\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Form validationSchema />`,\n err\n );\n }\n\n throw err;\n }\n }\n },\n [props, setErrors]\n );\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (!onSubmit) {\n return;\n }\n\n dispatch({\n type: 'SUBMIT_ATTEMPT',\n });\n\n try {\n const { data, errors } = await validate();\n\n if (errors) {\n setErrors(errors);\n\n throw new Error('Submission failed');\n }\n\n await onSubmit(data, {\n setErrors,\n setValues,\n resetForm,\n });\n\n dispatch({\n type: 'SUBMIT_SUCCESS',\n });\n } catch (err) {\n dispatch({\n type: 'SUBMIT_FAILURE',\n });\n\n if (err instanceof Error && err.message === 'Submission failed') {\n return;\n }\n }\n };\n\n const modified = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state.values, initialValues.current]\n );\n\n const handleChange: FormContextValue['onChange'] = useCallbackRef((eventOrPath, v) => {\n if (typeof eventOrPath === 'string') {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field: eventOrPath,\n value: v,\n },\n });\n\n return;\n }\n\n const target = eventOrPath.target || eventOrPath.currentTarget;\n\n const { type, name, id, value, options, multiple } = target;\n\n const field = name || id;\n\n if (!field && process.env.NODE_ENV !== 'production') {\n console.warn(\n `\\`onChange\\` was called with an event, but you forgot to pass a \\`name\\` or \\`id'\\` attribute to your input. The field to update cannot be determined`\n );\n }\n\n /**\n * Because we handle any field from this function, we run through a series\n * of checks to understand how to use the value.\n */\n let val;\n\n if (/number|range/.test(type)) {\n const parsed = parseFloat(value);\n // If the value isn't a number for whatever reason, don't let it through because that will break the API.\n val = isNaN(parsed) ? '' : parsed;\n } else if (/checkbox/.test(type)) {\n // Get & invert the current value of the checkbox.\n val = !getIn(state.values, field);\n } else if (options && multiple) {\n // This will handle native select elements incl. ones with mulitple options.\n val = Array.from<HTMLOptionElement>(options)\n .filter((el) => el.selected)\n .map((el) => el.value);\n } else {\n // NOTE: reset value to null so it failes required checks.\n // The API only considers a required field invalid if the value is null|undefined, to differentiate from min 1\n if (value === '') {\n val = null;\n } else {\n val = value;\n }\n }\n\n if (field) {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value: val,\n },\n });\n }\n });\n\n const addFieldRow: FormContextValue['addFieldRow'] = React.useCallback(\n (field, value, addAtIndex) => {\n dispatch({\n type: 'ADD_FIELD_ROW',\n payload: {\n field,\n value,\n addAtIndex,\n },\n });\n },\n []\n );\n\n const removeFieldRow: FormContextValue['removeFieldRow'] = React.useCallback(\n (field, removeAtIndex) => {\n dispatch({\n type: 'REMOVE_FIELD_ROW',\n payload: {\n field,\n removeAtIndex,\n },\n });\n },\n []\n );\n\n const moveFieldRow: FormContextValue['moveFieldRow'] = React.useCallback(\n (field, fromIndex, toIndex) => {\n dispatch({\n type: 'MOVE_FIELD_ROW',\n payload: {\n field,\n fromIndex,\n toIndex,\n },\n });\n },\n []\n );\n\n const resetForm: FormContextValue['resetForm'] = React.useCallback((newInitialValues) => {\n if (newInitialValues) {\n initialValues.current = newInitialValues;\n }\n dispatch({\n type: 'RESET_FORM',\n payload: {\n errors: {},\n isSubmitting: false,\n values: initialValues.current,\n },\n });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const composedRefs = useComposedRefs(formRef, ref);\n\n return (\n <Box\n tag=\"form\"\n ref={composedRefs}\n method={method}\n noValidate\n onSubmit={handleSubmit}\n width={props.width}\n height={props.height}\n >\n <FormProvider\n disabled={disabled}\n getValues={getValues}\n onChange={handleChange}\n initialValues={initialValues.current}\n modified={modified}\n addFieldRow={addFieldRow}\n moveFieldRow={moveFieldRow}\n removeFieldRow={removeFieldRow}\n resetForm={resetForm}\n setErrors={setErrors}\n setValues={setValues}\n setSubmitting={setSubmitting}\n validate={validate}\n {...state}\n >\n {typeof props.children === 'function'\n ? props.children({\n modified,\n disabled,\n onChange: handleChange,\n ...state,\n setErrors,\n resetForm,\n })\n : props.children}\n </FormProvider>\n </Box>\n );\n }\n) as <TFormValues extends FormValues>(\n p: FormProps<TFormValues> & { ref?: React.Ref<HTMLFormElement> }\n) => React.ReactElement; // we've cast this because we need the generic to infer the type of the form values.\n\n/**\n * @internal\n * @description Checks if the error is a Yup validation error.\n */\nconst isErrorYupValidationError = (err: any): err is Yup.ValidationError =>\n typeof err === 'object' &&\n err !== null &&\n 'name' in err &&\n typeof err.name === 'string' &&\n err.name === 'ValidationError';\n\n/* -------------------------------------------------------------------------------------------------\n * getYupValidationErrors\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description handy utility to convert a yup validation error into a form\n * error object. To be used elsewhere.\n */\nconst getYupValidationErrors = (err: Yup.ValidationError): FormErrors => {\n let errors: FormErrors = {};\n\n if (err.inner) {\n if (err.inner.length === 0) {\n return setIn(errors, err.path!, err.message);\n }\n for (const error of err.inner) {\n if (!getIn(errors, error.path!)) {\n errors = setIn(errors, error.path!, error.message);\n }\n }\n }\n\n return errors;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ntype FormErrors<TFormValues extends FormValues = FormValues> = {\n // is it a repeatable component or dynamic zone?\n [Key in keyof TFormValues]?: TFormValues[Key] extends any[]\n ? TFormValues[Key][number] extends object\n ? FormErrors<TFormValues[Key][number]>[] | string | string[]\n : string // this would let us support errors for the dynamic zone or repeatable component not the components within.\n : TFormValues[Key] extends object // is it a regular component?\n ? FormErrors<TFormValues[Key]> // handles nested components\n : string | TranslationMessage; // otherwise its just a field or a translation message.\n};\n\ninterface FormState<TFormValues extends FormValues = FormValues> {\n /**\n * TODO: make this a better type explaining errors could be nested because it follows the same\n * structure as the values.\n */\n errors: FormErrors<TFormValues>;\n isSubmitting: boolean;\n values: TFormValues;\n}\n\ntype FormActions<TFormValues extends FormValues = FormValues> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value: any } }\n | { type: 'ADD_FIELD_ROW'; payload: { field: string; value: any; addAtIndex?: number } }\n | { type: 'REMOVE_FIELD_ROW'; payload: { field: string; removeAtIndex?: number } }\n | { type: 'MOVE_FIELD_ROW'; payload: { field: string; fromIndex: number; toIndex: number } }\n | { type: 'SET_ERRORS'; payload: FormErrors<TFormValues> }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_INITIAL_VALUES'; payload: TFormValues }\n | { type: 'SET_VALUES'; payload: TFormValues }\n | { type: 'RESET_FORM'; payload: FormState<TFormValues> };\n\nconst reducer = <TFormValues extends FormValues = FormValues>(\n state: FormState<TFormValues>,\n action: FormActions<TFormValues>\n) =>\n produce(state, (draft) => {\n switch (action.type) {\n case 'SET_INITIAL_VALUES':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload;\n break;\n case 'SET_VALUES':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload;\n break;\n case 'SUBMIT_ATTEMPT':\n draft.isSubmitting = true;\n break;\n case 'SUBMIT_FAILURE':\n draft.isSubmitting = false;\n break;\n case 'SUBMIT_SUCCESS':\n draft.isSubmitting = false;\n break;\n case 'SET_FIELD_VALUE':\n draft.values = setIn(state.values, action.payload.field, action.payload.value);\n break;\n case 'ADD_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(state.values, action.payload.field, []) as Array<any>;\n\n let position = action.payload.addAtIndex;\n\n if (position === undefined) {\n position = currentField.length;\n } else if (position < 0) {\n position = 0;\n }\n\n // Collect all existing keys to ensure uniqueness.\n // Keys may be out of order after drag-and-drop moves, so we can't rely\n // on fractional indexing alone to avoid collisions.\n const existingKeys = new Set(currentField.map((item) => item.__temp_key__).filter(Boolean));\n\n // Generate a unique key, retrying if there's a collision\n let key: string;\n let lowerBound = existingKeys.size > 0 ? Array.from(existingKeys).sort().pop() : null;\n do {\n [key] = generateNKeysBetween(lowerBound, null, 1);\n // If collision, advance the lower bound so the next iteration\n // generates a key strictly after this one.\n if (existingKeys.has(key)) {\n lowerBound = key;\n }\n } while (existingKeys.has(key));\n\n draft.values = setIn(\n state.values,\n action.payload.field,\n currentField.toSpliced(position, 0, {\n ...action.payload.value,\n __temp_key__: key,\n })\n );\n\n break;\n }\n case 'MOVE_FIELD_ROW': {\n const { field, fromIndex, toIndex } = action.payload;\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = [...(getIn(state.values, field, []) as Array<any>)];\n const currentRow = currentField[fromIndex];\n\n // Preserve the original __temp_key__ to maintain stable identity during drag-and-drop.\n // The array order determines display order, so fractional key ordering isn't needed.\n currentField.splice(fromIndex, 1);\n currentField.splice(toIndex, 0, currentRow);\n\n draft.values = setIn(state.values, field, currentField);\n\n break;\n }\n case 'REMOVE_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(state.values, action.payload.field, []) as Array<any>;\n\n let position = action.payload.removeAtIndex;\n\n if (position === undefined) {\n position = currentField.length - 1;\n } else if (position < 0) {\n position = 0;\n }\n\n /**\n * filter out empty values from the array, the setIn function only deletes the value\n * when we pass undefined as opposed to \"removing\" it from said array.\n */\n const newValue = setIn(currentField, position.toString(), undefined).filter(\n (val: unknown) => val\n );\n\n draft.values = setIn(\n state.values,\n action.payload.field,\n newValue.length > 0 ? newValue : []\n );\n\n break;\n }\n case 'SET_ERRORS':\n if (!isEqual(state.errors, action.payload)) {\n // @ts-expect-error – TODO: figure out why this fails a TS check.\n draft.errors = action.payload;\n }\n break;\n case 'SET_ISSUBMITTING':\n draft.isSubmitting = action.payload;\n break;\n case 'RESET_FORM':\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.values = action.payload.values;\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.errors = action.payload.errors;\n draft.isSubmitting = action.payload.isSubmitting;\n break;\n default:\n break;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * useField\n * -----------------------------------------------------------------------------------------------*/\ninterface FieldValue<TValue = any> {\n error?: string;\n initialValue: TValue;\n onChange: (eventOrPath: React.ChangeEvent<any> | string, value?: TValue) => void;\n value: TValue;\n rawError?: any;\n}\n\nfunction useField<TValue = any>(path: string): FieldValue<TValue | undefined> {\n const { formatMessage } = useIntl();\n\n const initialValue = useForm(\n 'useField',\n (state) => getIn(state.initialValues, path) as FieldValue<TValue>['initialValue']\n );\n\n const value = useForm(\n 'useField',\n (state) => getIn(state.values, path) as FieldValue<TValue>['value']\n );\n\n const handleChange = useForm('useField', (state) => state.onChange);\n\n const rawError = useForm('useField', (state) => getIn(state.errors, path));\n\n const error = useForm('useField', (state) => {\n const error = getIn(state.errors, path);\n\n if (isErrorMessageDescriptor(error)) {\n const { values, ...message } = error;\n return formatMessage(message, values);\n }\n\n return error;\n });\n\n return {\n initialValue,\n /**\n * Errors can be a string, or a MessageDescriptor, so we need to handle both cases.\n * If it's anything else, we don't return it.\n */\n rawError,\n error: isErrorMessageDescriptor(error)\n ? formatMessage(\n {\n id: error.id,\n defaultMessage: error.defaultMessage,\n },\n error.values\n )\n : typeof error === 'string'\n ? error\n : undefined,\n onChange: handleChange,\n value: value,\n };\n}\n\nconst isErrorMessageDescriptor = (object?: object): object is TranslationMessage => {\n return (\n typeof object === 'object' &&\n object !== null &&\n !Array.isArray(object) &&\n 'id' in object &&\n 'defaultMessage' in object\n );\n};\n\n/**\n * Props for the Blocker component.\n * @param onProceed Function to be called when the user confirms the action that triggered the blocker.\n * @param onCancel Function to be called when the user cancels the action that triggered the blocker.\n */\ninterface BlockerProps {\n onProceed?: () => void;\n onCancel?: () => void;\n}\n/* -------------------------------------------------------------------------------------------------\n * Blocker\n * -----------------------------------------------------------------------------------------------*/\nconst Blocker = ({ onProceed = () => {}, onCancel = () => {} }: BlockerProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Blocker', (state) => state.modified);\n const isSubmitting = useForm('Blocker', (state) => state.isSubmitting);\n\n // this is trigering a native browser prompt on page unload\n // We aren't able to use our Dialog component in that scenario\n // so we fallback to the native browser one when the user is trying to close/refresh the tab/browser\n // This hook will be triggered on dev mode because of the live reloads but it's fine as it's only for that scenario\n useWarnIfUnsavedChanges(modified && !isSubmitting);\n\n const blocker = useBlocker(({ currentLocation, nextLocation }) => {\n return (\n !isSubmitting &&\n modified &&\n (currentLocation.pathname !== nextLocation.pathname ||\n currentLocation.search !== nextLocation.search)\n );\n });\n\n if (blocker.state === 'blocked') {\n const handleCancel = (isOpen: boolean) => {\n if (!isOpen) {\n onCancel();\n blocker.reset();\n }\n };\n\n return (\n <Dialog.Root open onOpenChange={handleCancel}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body\n icon={<WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />}\n textAlign=\"center\"\n >\n {formatMessage({\n id: 'global.prompt.unsaved',\n defaultMessage: 'You have unsaved changes, are you sure you want to leave?',\n })}\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button\n onClick={() => {\n onProceed();\n blocker.proceed();\n }}\n variant=\"danger\"\n fullWidth\n >\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n }\n\n return null;\n};\n\nexport { Form, Blocker, useField, useForm, getYupValidationErrors };\nexport type {\n FormErrors,\n FormHelpers,\n FormProps,\n FormValues,\n FormContextValue,\n FormState,\n FieldValue,\n InputProps,\n};\n"],"names":["ERR_MSG","FormProvider","useForm","createContext","disabled","errors","getValues","Error","initialValues","isSubmitting","modified","addFieldRow","moveFieldRow","onChange","removeFieldRow","resetForm","setErrors","setValues","setSubmitting","validate","values","Form","React","forwardRef","method","onSubmit","initialErrors","props","ref","formRef","useRef","state","dispatch","useReducer","reducer","valuesRef","current","useCallback","useEffect","isEqual","type","payload","Object","keys","length","setTimeout","firstError","querySelectorAll","errorId","getAttribute","formElementInError","querySelector","HTMLElement","focus","clearTimeout","shouldSetErrors","options","valuesToValidate","validationSchema","data","abortEarly","err","isErrorYupValidationError","getYupValidationErrors","process","env","NODE_ENV","console","warn","handleSubmit","e","stopPropagation","preventDefault","message","useMemo","handleChange","useCallbackRef","eventOrPath","v","field","value","target","currentTarget","name","id","multiple","val","test","parsed","parseFloat","isNaN","getIn","Array","from","filter","el","selected","map","addAtIndex","removeAtIndex","fromIndex","toIndex","newInitialValues","composedRefs","useComposedRefs","_jsx","Box","tag","noValidate","width","height","children","inner","setIn","path","error","action","produce","draft","currentField","position","undefined","existingKeys","Set","item","__temp_key__","Boolean","key","lowerBound","size","sort","pop","generateNKeysBetween","has","toSpliced","currentRow","splice","newValue","toString","useField","formatMessage","useIntl","initialValue","rawError","isErrorMessageDescriptor","defaultMessage","object","isArray","Blocker","onProceed","onCancel","useWarnIfUnsavedChanges","blocker","useBlocker","currentLocation","nextLocation","pathname","search","handleCancel","isOpen","reset","Dialog","Root","open","onOpenChange","_jsxs","Content","Header","Body","icon","WarningCircle","fill","textAlign","Footer","Cancel","Button","variant","fullWidth","onClick","proceed"],"mappings":"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"}
1
+ {"version":3,"file":"Form.js","sources":["../../../../../admin/src/components/Form.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n type BoxProps,\n Button,\n Dialog,\n useCallbackRef,\n useComposedRefs,\n} from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { produce, type Draft } from 'immer';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl, type MessageDescriptor, type PrimitiveType } from 'react-intl';\nimport { useBlocker } from 'react-router-dom';\n\nimport { useWarnIfUnsavedChanges } from '../hooks/useWarnIfUnsavedChanges';\nimport { getIn, setIn } from '../utils/objects';\n\nimport { createContext } from './Context';\n\nimport type {\n InputProps as InputPropsImpl,\n StringProps,\n EnumerationProps,\n} from './FormInputs/types';\nimport type * as Yup from 'yup';\n\n/* -------------------------------------------------------------------------------------------------\n * FormContext\n * -----------------------------------------------------------------------------------------------*/\ntype InputProps = InputPropsImpl | StringProps | EnumerationProps;\n\ninterface TranslationMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\ntype FormFieldValue = unknown;\ntype FormValues = object;\ntype FormFieldTarget = HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement;\ntype FormFieldEvent = React.ChangeEvent<FormFieldTarget>;\ntype FormFieldEventWithFallbackTarget = Omit<FormFieldEvent, 'target' | 'currentTarget'> & {\n target?: (FormFieldTarget & { id?: string; name?: string }) | undefined;\n currentTarget?: (FormFieldTarget & { id?: string; name?: string }) | undefined;\n};\ntype MultipleSelectTarget = FormFieldTarget & {\n multiple: true;\n options: ArrayLike<HTMLOptionElement>;\n};\ntype FormFieldRowValue = Record<string, unknown>;\ntype FormFieldRowValueWithKey = FormFieldRowValue & { __temp_key__?: string };\n\nconst isArrayLikeOptions = (options: unknown): options is ArrayLike<HTMLOptionElement> => {\n return typeof options === 'object' && options !== null && 'length' in options;\n};\n\nconst isMultipleSelectTarget = (target: FormFieldTarget): target is MultipleSelectTarget => {\n return (\n 'multiple' in target &&\n target.multiple === true &&\n 'options' in target &&\n isArrayLikeOptions(target.options)\n );\n};\n\ninterface FormContextValue<TFormValues extends FormValues = FormValues>\n extends FormState<TFormValues> {\n disabled: boolean;\n getValues: () => TFormValues;\n initialValues: TFormValues;\n modified: boolean;\n /**\n * The default behaviour is to add the row to the end of the array, if you want to add it to a\n * specific index you can pass the index.\n */\n addFieldRow: (field: string, value: FormFieldRowValue, addAtIndex?: number) => void;\n moveFieldRow: (field: string, fromIndex: number, toIndex: number) => void;\n onChange: (eventOrPath: FormFieldEvent | string, value?: FormFieldValue) => void;\n /*\n * The default behaviour is to remove the last row, if you want to remove a specific index you can\n * pass the index.\n */\n removeFieldRow: (field: string, removeAtIndex?: number) => void;\n resetForm: (newInitialValues?: TFormValues) => void;\n setErrors: (errors: FormErrors<TFormValues>) => void;\n setSubmitting: (isSubmitting: boolean) => void;\n setValues: (values: TFormValues) => void;\n validate: (\n shouldSetErrors?: boolean,\n options?: Record<string, string>\n ) => Promise<\n { data: TFormValues; errors?: never } | { data?: never; errors: FormErrors<TFormValues> }\n >;\n}\n\n/**\n * @internal\n * @description We use this just to warn people that they're using the useForm\n * methods outside of a Form component, but we don't want to throw an error\n * because otherwise the DocumentActions list cannot be rendered in our list-view.\n */\nconst ERR_MSG =\n 'The Form Component has not been initialised, ensure you are using this hook within a Form component';\n\nconst [FormProvider, useForm] = createContext<FormContextValue>('Form', {\n disabled: false,\n errors: {},\n getValues: () => {\n throw new Error(ERR_MSG);\n },\n initialValues: {},\n isSubmitting: false,\n modified: false,\n addFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n moveFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n onChange: () => {\n throw new Error(ERR_MSG);\n },\n removeFieldRow: () => {\n throw new Error(ERR_MSG);\n },\n resetForm: () => {\n throw new Error(ERR_MSG);\n },\n setErrors: () => {\n throw new Error(ERR_MSG);\n },\n setValues: () => {\n throw new Error(ERR_MSG);\n },\n setSubmitting: () => {\n throw new Error(ERR_MSG);\n },\n validate: async () => {\n throw new Error(ERR_MSG);\n },\n values: {},\n});\n\n/* -------------------------------------------------------------------------------------------------\n * Form\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormHelpers<TFormValues extends FormValues = FormValues>\n extends Pick<FormContextValue<TFormValues>, 'setErrors' | 'setValues' | 'resetForm'> {}\n\ninterface FormProps<TFormValues extends FormValues = FormValues>\n extends Partial<Pick<FormContextValue<TFormValues>, 'disabled' | 'initialValues'>>,\n Pick<BoxProps, 'width' | 'height'> {\n children:\n | React.ReactNode\n | ((\n props: Pick<\n FormContextValue<TFormValues>,\n | 'disabled'\n | 'errors'\n | 'isSubmitting'\n | 'modified'\n | 'values'\n | 'resetForm'\n | 'onChange'\n | 'setErrors'\n >\n ) => React.ReactNode);\n method: 'POST' | 'PUT';\n onSubmit?: (values: TFormValues, helpers: FormHelpers<TFormValues>) => Promise<void> | void;\n // TODO: type the return value for a validation schema func from Yup.\n validationSchema?: Yup.AnySchema;\n initialErrors?: FormErrors<TFormValues>;\n validate?: (values: TFormValues, options: Record<string, string>) => Promise<TFormValues>;\n}\n\n/**\n * @alpha\n * @description A form component that handles form state, validation and submission.\n * It can additionally handle nested fields and arrays. To access the data you can either\n * use the generic useForm hook or the useField hook when providing the name of your field.\n */\nconst Form = React.forwardRef<HTMLFormElement, FormProps>(\n ({ disabled = false, method, onSubmit, initialErrors, ...props }, ref) => {\n const formRef = React.useRef<HTMLFormElement>(null!);\n const initialValues = React.useRef(props.initialValues ?? {});\n const [state, dispatch] = React.useReducer(reducer, {\n errors: initialErrors ?? {},\n isSubmitting: false,\n values: props.initialValues ?? {},\n });\n\n // Keep a ref to the latest form values so `getValues()` can always return fresh data.\n // We expose `getValues` as a stable callback so consumers (e.g. conditional/rules logic)\n // can call it without causing extra rerenders from changing function references.\n const valuesRef = React.useRef(state.values);\n /**\n * Keep the ref aligned with `state.values` during render (not only in an effect) so\n * `getValues()` / `validate()` always see the latest committed values. Effects run too late\n * for back-to-back user actions (e.g. fast e2e) where the next handler runs before the\n * effect has fired.\n */\n valuesRef.current = state.values;\n\n const getValues = React.useCallback(() => valuesRef.current, []);\n\n React.useEffect(() => {\n /**\n * ONLY update the initialValues if the prop has changed.\n */\n if (!isEqual(initialValues.current, props.initialValues)) {\n initialValues.current = props.initialValues ?? {};\n\n dispatch({\n type: 'SET_INITIAL_VALUES',\n payload: props.initialValues ?? {},\n });\n }\n }, [props.initialValues]);\n\n const setErrors = React.useCallback((errors: FormErrors) => {\n dispatch({\n type: 'SET_ERRORS',\n payload: errors,\n });\n }, []);\n\n const setValues = React.useCallback((values: FormValues) => {\n dispatch({\n type: 'SET_VALUES',\n payload: values,\n });\n }, []);\n\n React.useEffect(() => {\n if (Object.keys(state.errors).length === 0) return;\n\n /**\n * Small timeout to ensure the form has been\n * rendered before we try to focus on the first\n */\n const ref = setTimeout(() => {\n const [firstError] = formRef.current.querySelectorAll('[data-strapi-field-error]');\n\n if (firstError) {\n const errorId = firstError.getAttribute('id');\n const formElementInError = formRef.current.querySelector(\n `[aria-describedby=\"${errorId}\"]`\n );\n\n if (formElementInError && formElementInError instanceof HTMLElement) {\n formElementInError.focus();\n }\n }\n });\n\n return () => clearTimeout(ref);\n }, [state.errors]);\n\n /**\n * Uses the provided validation schema\n */\n const validate = React.useCallback(\n async (shouldSetErrors: boolean = true, options: Record<string, string> = {}) => {\n setErrors({});\n\n const valuesToValidate = valuesRef.current;\n\n if (!props.validationSchema && !props.validate) {\n return { data: valuesToValidate };\n }\n\n try {\n let data;\n if (props.validationSchema) {\n data = await props.validationSchema.validate(valuesToValidate, { abortEarly: false });\n } else if (props.validate) {\n data = await props.validate(valuesToValidate, options);\n } else {\n throw new Error('No validation schema or validate function provided');\n }\n\n return { data };\n } catch (err) {\n if (isErrorYupValidationError(err)) {\n const errors = getYupValidationErrors(err);\n\n if (shouldSetErrors) {\n setErrors(errors);\n }\n\n return { errors };\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in <Form validationSchema />`,\n err\n );\n }\n\n throw err;\n }\n }\n },\n [props, setErrors]\n );\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\n e.stopPropagation();\n e.preventDefault();\n\n if (!onSubmit) {\n return;\n }\n\n dispatch({\n type: 'SUBMIT_ATTEMPT',\n });\n\n try {\n const { data, errors } = await validate();\n\n if (errors) {\n setErrors(errors);\n\n throw new Error('Submission failed');\n }\n\n await onSubmit(data, {\n setErrors,\n setValues,\n resetForm,\n });\n\n dispatch({\n type: 'SUBMIT_SUCCESS',\n });\n } catch (err) {\n dispatch({\n type: 'SUBMIT_FAILURE',\n });\n\n if (err instanceof Error && err.message === 'Submission failed') {\n return;\n }\n }\n };\n\n const modified = React.useMemo(\n () => !isEqual(initialValues.current, state.values),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state.values, initialValues.current]\n );\n\n const handleChange: FormContextValue['onChange'] = useCallbackRef((eventOrPath, v) => {\n if (typeof eventOrPath === 'string') {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field: eventOrPath,\n value: v,\n },\n });\n\n return;\n }\n\n const { target: eventTarget, currentTarget } =\n eventOrPath as FormFieldEventWithFallbackTarget;\n const target = eventTarget ?? currentTarget;\n\n if (target === undefined) {\n return;\n }\n\n const { type, name, id, value } = target;\n let field = name;\n\n if (field === undefined || field === '') {\n field = id;\n }\n\n if ((field === undefined || field === '') && process.env.NODE_ENV !== 'production') {\n console.warn(\n `\\`onChange\\` was called with an event, but you forgot to pass a \\`name\\` or \\`id'\\` attribute to your input. The field to update cannot be determined`\n );\n }\n\n if (field === undefined || field === '') {\n return;\n }\n\n /**\n * Because we handle any field from this function, we run through a series\n * of checks to understand how to use the value.\n */\n let val;\n\n if (/number|range/.test(type)) {\n const parsed = parseFloat(value);\n // If the value isn't a number for whatever reason, don't let it through because that will break the API.\n val = isNaN(parsed) ? '' : parsed;\n } else if (/checkbox/.test(type)) {\n // Get & invert the current value of the checkbox.\n val = !getIn(state.values, field);\n } else if (isMultipleSelectTarget(target)) {\n // This will handle native select elements incl. ones with mulitple options.\n val = Array.from<HTMLOptionElement>(target.options)\n .filter((el) => el.selected)\n .map((el) => el.value);\n } else {\n // NOTE: reset value to null so it failes required checks.\n // The API only considers a required field invalid if the value is null|undefined, to differentiate from min 1\n if (value === '') {\n val = null;\n } else {\n val = value;\n }\n }\n\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value: val,\n },\n });\n });\n\n const addFieldRow: FormContextValue['addFieldRow'] = React.useCallback(\n (field, value, addAtIndex) => {\n dispatch({\n type: 'ADD_FIELD_ROW',\n payload: {\n field,\n value,\n addAtIndex,\n },\n });\n },\n []\n );\n\n const removeFieldRow: FormContextValue['removeFieldRow'] = React.useCallback(\n (field, removeAtIndex) => {\n dispatch({\n type: 'REMOVE_FIELD_ROW',\n payload: {\n field,\n removeAtIndex,\n },\n });\n },\n []\n );\n\n const moveFieldRow: FormContextValue['moveFieldRow'] = React.useCallback(\n (field, fromIndex, toIndex) => {\n dispatch({\n type: 'MOVE_FIELD_ROW',\n payload: {\n field,\n fromIndex,\n toIndex,\n },\n });\n },\n []\n );\n\n const resetForm: FormContextValue['resetForm'] = React.useCallback((newInitialValues) => {\n if (newInitialValues) {\n initialValues.current = newInitialValues;\n }\n dispatch({\n type: 'RESET_FORM',\n payload: {\n errors: {},\n isSubmitting: false,\n values: initialValues.current,\n },\n });\n }, []);\n\n const setSubmitting = React.useCallback((isSubmitting: boolean) => {\n dispatch({ type: 'SET_ISSUBMITTING', payload: isSubmitting });\n }, []);\n\n const composedRefs = useComposedRefs(formRef, ref);\n\n return (\n <Box\n tag=\"form\"\n ref={composedRefs}\n method={method}\n noValidate\n onSubmit={handleSubmit}\n width={props.width}\n height={props.height}\n >\n <FormProvider\n disabled={disabled}\n getValues={getValues}\n onChange={handleChange}\n initialValues={initialValues.current}\n modified={modified}\n addFieldRow={addFieldRow}\n moveFieldRow={moveFieldRow}\n removeFieldRow={removeFieldRow}\n resetForm={resetForm}\n setErrors={setErrors}\n setValues={setValues}\n setSubmitting={setSubmitting}\n validate={validate}\n {...state}\n >\n {typeof props.children === 'function'\n ? props.children({\n modified,\n disabled,\n onChange: handleChange,\n ...state,\n setErrors,\n resetForm,\n })\n : props.children}\n </FormProvider>\n </Box>\n );\n }\n) as <TFormValues extends FormValues>(\n p: FormProps<TFormValues> & { ref?: React.Ref<HTMLFormElement> }\n) => React.ReactElement; // we've cast this because we need the generic to infer the type of the form values.\n\n/**\n * @internal\n * @description Checks if the error is a Yup validation error.\n */\nconst isErrorYupValidationError = (err: unknown): err is Yup.ValidationError =>\n typeof err === 'object' &&\n err !== null &&\n 'name' in err &&\n typeof err.name === 'string' &&\n err.name === 'ValidationError';\n\n/* -------------------------------------------------------------------------------------------------\n * getYupValidationErrors\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description handy utility to convert a yup validation error into a form\n * error object. To be used elsewhere.\n */\nconst getYupValidationErrors = (err: Yup.ValidationError): FormErrors => {\n let errors: FormErrors = {};\n\n if (err.inner) {\n if (err.inner.length === 0) {\n return setIn(errors, err.path!, err.message);\n }\n for (const error of err.inner) {\n if (!getIn(errors, error.path!)) {\n errors = setIn(errors, error.path!, error.message);\n }\n }\n }\n\n return errors;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ntype FormErrors<TFormValues extends FormValues = FormValues> = {\n // is it a repeatable component or dynamic zone?\n [Key in keyof TFormValues]?: TFormValues[Key] extends unknown[]\n ? TFormValues[Key][number] extends object\n ? FormErrors<TFormValues[Key][number]>[] | string | string[]\n : string // this would let us support errors for the dynamic zone or repeatable component not the components within.\n : TFormValues[Key] extends object // is it a regular component?\n ? FormErrors<TFormValues[Key]> // handles nested components\n : string | TranslationMessage; // otherwise its just a field or a translation message.\n};\n\ninterface FormState<TFormValues extends FormValues = FormValues> {\n /**\n * TODO: make this a better type explaining errors could be nested because it follows the same\n * structure as the values.\n */\n errors: FormErrors<TFormValues>;\n isSubmitting: boolean;\n values: TFormValues;\n}\n\nconst setDraftValues = <TFormValues extends FormValues>(\n draft: Draft<FormState<TFormValues>>,\n values: TFormValues\n) => {\n draft.values = values as Draft<TFormValues>;\n};\n\ntype FormActions<TFormValues extends FormValues = FormValues> =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value: FormFieldValue } }\n | {\n type: 'ADD_FIELD_ROW';\n payload: { field: string; value: FormFieldRowValue; addAtIndex?: number };\n }\n | { type: 'REMOVE_FIELD_ROW'; payload: { field: string; removeAtIndex?: number } }\n | { type: 'MOVE_FIELD_ROW'; payload: { field: string; fromIndex: number; toIndex: number } }\n | { type: 'SET_ERRORS'; payload: FormErrors<TFormValues> }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_INITIAL_VALUES'; payload: TFormValues }\n | { type: 'SET_VALUES'; payload: TFormValues }\n | { type: 'RESET_FORM'; payload: FormState<TFormValues> };\n\nconst reducer = <TFormValues extends FormValues = FormValues>(\n state: FormState<TFormValues>,\n action: FormActions<TFormValues>\n) =>\n produce(state, (draft) => {\n switch (action.type) {\n case 'SET_INITIAL_VALUES':\n setDraftValues(draft, action.payload);\n break;\n case 'SET_VALUES':\n setDraftValues(draft, action.payload);\n break;\n case 'SUBMIT_ATTEMPT':\n draft.isSubmitting = true;\n break;\n case 'SUBMIT_FAILURE':\n draft.isSubmitting = false;\n break;\n case 'SUBMIT_SUCCESS':\n draft.isSubmitting = false;\n break;\n case 'SET_FIELD_VALUE':\n setDraftValues(draft, setIn(state.values, action.payload.field, action.payload.value));\n break;\n case 'ADD_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(\n state.values,\n action.payload.field,\n []\n ) as FormFieldRowValueWithKey[];\n\n let position = action.payload.addAtIndex;\n\n if (position === undefined) {\n position = currentField.length;\n } else if (position < 0) {\n position = 0;\n }\n\n // Collect all existing keys to ensure uniqueness.\n // Keys may be out of order after drag-and-drop moves, so we can't rely\n // on fractional indexing alone to avoid collisions.\n const existingKeys = new Set(\n currentField\n .map((item) => item.__temp_key__)\n .filter((key): key is string => key !== undefined && key !== '')\n );\n\n // Generate a unique key, retrying if there's a collision\n let key: string;\n let lowerBound = existingKeys.size > 0 ? Array.from(existingKeys).sort().pop() : null;\n do {\n [key] = generateNKeysBetween(lowerBound, null, 1);\n // If collision, advance the lower bound so the next iteration\n // generates a key strictly after this one.\n if (existingKeys.has(key)) {\n lowerBound = key;\n }\n } while (existingKeys.has(key));\n\n setDraftValues(\n draft,\n setIn(\n state.values,\n action.payload.field,\n currentField.toSpliced(position, 0, {\n ...action.payload.value,\n __temp_key__: key,\n })\n )\n );\n\n break;\n }\n case 'MOVE_FIELD_ROW': {\n const { field, fromIndex, toIndex } = action.payload;\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = [...(getIn(state.values, field, []) as FormFieldRowValueWithKey[])];\n const currentRow = currentField[fromIndex];\n\n // Preserve the original __temp_key__ to maintain stable identity during drag-and-drop.\n // The array order determines display order, so fractional key ordering isn't needed.\n currentField.splice(fromIndex, 1);\n currentField.splice(toIndex, 0, currentRow);\n\n setDraftValues(draft, setIn(state.values, field, currentField));\n\n break;\n }\n case 'REMOVE_FIELD_ROW': {\n /**\n * TODO: add check for if the field is an array?\n */\n const currentField = getIn(\n state.values,\n action.payload.field,\n []\n ) as FormFieldRowValueWithKey[];\n\n let position = action.payload.removeAtIndex;\n\n if (position === undefined) {\n position = currentField.length - 1;\n } else if (position < 0) {\n position = 0;\n }\n\n /**\n * filter out empty values from the array, the setIn function only deletes the value\n * when we pass undefined as opposed to \"removing\" it from said array.\n */\n const newValue = setIn(currentField, position.toString(), undefined).filter(\n (val: unknown) => val\n );\n\n setDraftValues(\n draft,\n setIn(state.values, action.payload.field, newValue.length > 0 ? newValue : [])\n );\n\n break;\n }\n case 'SET_ERRORS':\n if (!isEqual(state.errors, action.payload)) {\n // @ts-expect-error – TODO: figure out why this fails a TS check.\n draft.errors = action.payload;\n }\n break;\n case 'SET_ISSUBMITTING':\n draft.isSubmitting = action.payload;\n break;\n case 'RESET_FORM':\n setDraftValues(draft, action.payload.values);\n // @ts-expect-error – TODO: figure out why this fails ts.\n draft.errors = action.payload.errors;\n draft.isSubmitting = action.payload.isSubmitting;\n break;\n default:\n break;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * useField\n * -----------------------------------------------------------------------------------------------*/\ninterface FieldValue<TValue = unknown> {\n error?: string;\n initialValue: TValue;\n onChange: (eventOrPath: FormFieldEvent | string, value?: TValue) => void;\n value: TValue;\n rawError?: unknown;\n}\n\nfunction useField<TValue = unknown>(path: string): FieldValue<TValue | undefined> {\n const { formatMessage } = useIntl();\n\n const initialValue = useForm(\n 'useField',\n (state) => getIn(state.initialValues, path) as FieldValue<TValue>['initialValue']\n );\n\n const value = useForm(\n 'useField',\n (state) => getIn(state.values, path) as FieldValue<TValue>['value']\n );\n\n const handleChange = useForm('useField', (state) => state.onChange);\n\n const rawError = useForm('useField', (state) => getIn(state.errors, path));\n\n const error = useForm('useField', (state) => {\n const error = getIn(state.errors, path);\n\n if (isErrorMessageDescriptor(error)) {\n const { values, ...message } = error;\n return formatMessage(message, values);\n }\n\n return error;\n });\n\n return {\n initialValue,\n /**\n * Errors can be a string, or a MessageDescriptor, so we need to handle both cases.\n * If it's anything else, we don't return it.\n */\n rawError,\n error: isErrorMessageDescriptor(error)\n ? formatMessage(\n {\n id: error.id,\n defaultMessage: error.defaultMessage,\n },\n error.values\n )\n : typeof error === 'string'\n ? error\n : undefined,\n onChange: handleChange,\n value: value,\n };\n}\n\nconst isErrorMessageDescriptor = (object: unknown): object is TranslationMessage => {\n return (\n typeof object === 'object' &&\n object !== null &&\n !Array.isArray(object) &&\n 'id' in object &&\n 'defaultMessage' in object\n );\n};\n\n/**\n * Props for the Blocker component.\n * @param onProceed Function to be called when the user confirms the action that triggered the blocker.\n * @param onCancel Function to be called when the user cancels the action that triggered the blocker.\n */\ninterface BlockerProps {\n onProceed?: () => void;\n onCancel?: () => void;\n}\n/* -------------------------------------------------------------------------------------------------\n * Blocker\n * -----------------------------------------------------------------------------------------------*/\nconst Blocker = ({ onProceed = () => {}, onCancel = () => {} }: BlockerProps) => {\n const { formatMessage } = useIntl();\n const modified = useForm('Blocker', (state) => state.modified);\n const isSubmitting = useForm('Blocker', (state) => state.isSubmitting);\n\n // this is trigering a native browser prompt on page unload\n // We aren't able to use our Dialog component in that scenario\n // so we fallback to the native browser one when the user is trying to close/refresh the tab/browser\n // This hook will be triggered on dev mode because of the live reloads but it's fine as it's only for that scenario\n useWarnIfUnsavedChanges(modified && !isSubmitting);\n\n const blocker = useBlocker(({ currentLocation, nextLocation }) => {\n return (\n !isSubmitting &&\n modified &&\n (currentLocation.pathname !== nextLocation.pathname ||\n currentLocation.search !== nextLocation.search)\n );\n });\n\n if (blocker.state === 'blocked') {\n const handleCancel = (isOpen: boolean) => {\n if (!isOpen) {\n onCancel();\n blocker.reset();\n }\n };\n\n return (\n <Dialog.Root open onOpenChange={handleCancel}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body\n icon={<WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />}\n textAlign=\"center\"\n >\n {formatMessage({\n id: 'global.prompt.unsaved',\n defaultMessage: 'You have unsaved changes, are you sure you want to leave?',\n })}\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button\n onClick={() => {\n onProceed();\n blocker.proceed();\n }}\n variant=\"danger\"\n fullWidth\n >\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n }\n\n return null;\n};\n\nexport { Form, Blocker, useField, useForm, getYupValidationErrors };\nexport type {\n FormErrors,\n FormHelpers,\n FormProps,\n FormValues,\n FormContextValue,\n FormState,\n FieldValue,\n InputProps,\n};\n"],"names":["isArrayLikeOptions","options","isMultipleSelectTarget","target","multiple","ERR_MSG","FormProvider","useForm","createContext","disabled","errors","getValues","Error","initialValues","isSubmitting","modified","addFieldRow","moveFieldRow","onChange","removeFieldRow","resetForm","setErrors","setValues","setSubmitting","validate","values","Form","React","forwardRef","method","onSubmit","initialErrors","props","ref","formRef","useRef","state","dispatch","useReducer","reducer","valuesRef","current","useCallback","useEffect","isEqual","type","payload","Object","keys","length","setTimeout","firstError","querySelectorAll","errorId","getAttribute","formElementInError","querySelector","HTMLElement","focus","clearTimeout","shouldSetErrors","valuesToValidate","validationSchema","data","abortEarly","err","isErrorYupValidationError","getYupValidationErrors","process","env","NODE_ENV","console","warn","handleSubmit","e","stopPropagation","preventDefault","message","useMemo","handleChange","useCallbackRef","eventOrPath","v","field","value","eventTarget","currentTarget","undefined","name","id","val","test","parsed","parseFloat","isNaN","getIn","Array","from","filter","el","selected","map","addAtIndex","removeAtIndex","fromIndex","toIndex","newInitialValues","composedRefs","useComposedRefs","_jsx","Box","tag","noValidate","width","height","children","inner","setIn","path","error","setDraftValues","draft","action","produce","currentField","position","existingKeys","Set","item","__temp_key__","key","lowerBound","size","sort","pop","generateNKeysBetween","has","toSpliced","currentRow","splice","newValue","toString","useField","formatMessage","useIntl","initialValue","rawError","isErrorMessageDescriptor","defaultMessage","object","isArray","Blocker","onProceed","onCancel","useWarnIfUnsavedChanges","blocker","useBlocker","currentLocation","nextLocation","pathname","search","handleCancel","isOpen","reset","Dialog","Root","open","onOpenChange","_jsxs","Content","Header","Body","icon","WarningCircle","fill","textAlign","Footer","Cancel","Button","variant","fullWidth","onClick","proceed"],"mappings":"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"}