@strapi/admin 4.0.2 → 4.0.6

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 (316) hide show
  1. package/admin/src/components/LeftMenu/index.js +13 -5
  2. package/admin/src/components/UpgradePlanModal/index.js +7 -2
  3. package/admin/src/content-manager/components/DynamicTable/CellContent/CellValue.js +12 -2
  4. package/admin/src/content-manager/components/DynamicTable/CellContent/utils/getNumberOfDecimals.js +8 -0
  5. package/admin/src/content-manager/components/DynamicZone/components/DzLabel/index.js +24 -7
  6. package/admin/src/content-manager/components/DynamicZone/index.js +6 -10
  7. package/admin/src/content-manager/components/InputUID/index.js +4 -0
  8. package/admin/src/content-manager/components/PreviewWysiwyg/Wrapper.js +8 -0
  9. package/admin/src/content-manager/components/PreviewWysiwyg/utils/mdRenderer.js +1 -1
  10. package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/IconButtonCustoms.js +0 -4
  11. package/admin/src/content-manager/components/RepeatableComponent/DraggedItem/index.js +36 -14
  12. package/admin/src/content-manager/components/RepeatableComponent/index.js +2 -2
  13. package/admin/src/content-manager/components/Wysiwyg/Editor.js +6 -4
  14. package/admin/src/content-manager/components/Wysiwyg/EditorLayout.js +2 -0
  15. package/admin/src/content-manager/components/Wysiwyg/EditorStylesContainer.js +2 -1
  16. package/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js +2 -4
  17. package/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +79 -68
  18. package/admin/src/content-manager/components/Wysiwyg/WysiwygStyles.js +1 -0
  19. package/admin/src/content-manager/components/Wysiwyg/index.js +17 -5
  20. package/admin/src/content-manager/pages/App/index.js +9 -3
  21. package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFieldButton.js +1 -1
  22. package/admin/src/content-manager/pages/EditSettingsView/components/DisplayedFields.js +1 -3
  23. package/admin/src/content-manager/pages/EditSettingsView/components/FieldButtonContent.js +1 -1
  24. package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +6 -7
  25. package/admin/src/content-manager/pages/EditSettingsView/components/RelationalFieldButton.js +1 -1
  26. package/admin/src/content-manager/pages/ListSettingsView/components/DraggableCard.js +1 -0
  27. package/admin/src/pages/Admin/index.js +2 -0
  28. package/admin/src/pages/AuthPage/components/Register/index.js +4 -1
  29. package/admin/src/pages/AuthPage/utils/forms.js +2 -0
  30. package/admin/src/pages/InternalErrorPage/index.js +53 -0
  31. package/admin/src/pages/NotFoundPage/index.js +45 -2
  32. package/admin/src/pages/ProfilePage/index.js +2 -0
  33. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +1 -0
  34. package/admin/src/pages/SettingsPage/pages/Users/EditPage/utils/layout.js +2 -0
  35. package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/layout.js +2 -0
  36. package/admin/src/pages/SettingsPage/pages/Users/components/SelectRoles/index.js +1 -0
  37. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/EventInput/index.js +1 -9
  38. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +2 -0
  39. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/utils/schema.js +1 -4
  40. package/admin/src/translations/dk.json +300 -110
  41. package/admin/src/translations/en.json +4 -0
  42. package/admin/src/translations/es.json +204 -4
  43. package/admin/src/translations/hu.json +672 -0
  44. package/admin/src/translations/ja.json +327 -7
  45. package/admin/src/translations/languageNativeNames.js +1 -0
  46. package/admin/src/translations/nl.json +512 -125
  47. package/admin/src/translations/pt-BR.json +398 -19
  48. package/admin/src/translations/uk.json +40 -40
  49. package/admin/src/translations/zh-Hans.json +554 -204
  50. package/admin/src/translations/zh.json +7 -0
  51. package/build/{1024.1b15fbb5.chunk.js → 1024.595f3e01.chunk.js} +1 -1
  52. package/build/{1856.0a6992d6.chunk.js → 1856.cc060f4a.chunk.js} +1 -1
  53. package/build/{5881.deb18c91.chunk.js → 3215.03a0bf5d.chunk.js} +2 -2
  54. package/build/{5881.deb18c91.chunk.js.LICENSE.txt → 3215.03a0bf5d.chunk.js.LICENSE.txt} +0 -0
  55. package/build/4261.061aed35.chunk.js +1 -0
  56. package/build/4362.1b2440be.chunk.js +1 -0
  57. package/build/4672.68466ddc.chunk.js +1 -0
  58. package/build/{4715.f134f37a.chunk.js → 4715.a5e6716c.chunk.js} +1 -1
  59. package/build/4741.18bf386b.chunk.js +2 -0
  60. package/build/{4741.1fb6ad6e.chunk.js.LICENSE.txt → 4741.18bf386b.chunk.js.LICENSE.txt} +0 -0
  61. package/build/4801.44382ab3.chunk.js +2 -0
  62. package/build/{2664.f33f619d.chunk.js.LICENSE.txt → 4801.44382ab3.chunk.js.LICENSE.txt} +0 -0
  63. package/build/{497.726adbfa.chunk.js → 497.a28b7510.chunk.js} +1 -1
  64. package/build/{4982.a7f87e6c.chunk.js → 4982.4666f610.chunk.js} +1 -1
  65. package/build/6060.72f9dda2.chunk.js +2 -0
  66. package/build/{3226.1a4b5cd1.chunk.js.LICENSE.txt → 6060.72f9dda2.chunk.js.LICENSE.txt} +1 -1
  67. package/build/{6250.11ba8b50.chunk.js → 6250.6c7a86f7.chunk.js} +1 -1
  68. package/build/849.2f8d8ef9.chunk.js +1 -0
  69. package/build/9235.63b1528f.chunk.js +1 -0
  70. package/build/Admin-authenticatedApp.b9ff71df.chunk.js +1 -0
  71. package/build/Admin_homePage.964f59a3.chunk.js +1 -0
  72. package/build/Admin_marketplace.1cf20eeb.chunk.js +1 -0
  73. package/build/{Admin_pluginsPage.22390055.chunk.js → Admin_pluginsPage.0d59d86e.chunk.js} +1 -1
  74. package/build/Admin_profilePage.c08119de.chunk.js +1 -0
  75. package/build/Admin_settingsPage.23cd984a.chunk.js +1 -0
  76. package/build/admin-edit-roles-page.57fa787d.chunk.js +1 -0
  77. package/build/admin-edit-users.572c68f8.chunk.js +1 -0
  78. package/build/admin-users.fa7573b6.chunk.js +1 -0
  79. package/build/{api-tokens-create-page.ab33d46d.chunk.js → api-tokens-create-page.ef71291c.chunk.js} +1 -1
  80. package/build/{api-tokens-edit-page.749496cc.chunk.js → api-tokens-edit-page.1486974f.chunk.js} +1 -1
  81. package/build/api-tokens-list-page.05f53943.chunk.js +1 -0
  82. package/build/{ar-json.9805489e.chunk.js → ar-json.d79e4709.chunk.js} +1 -1
  83. package/build/codemirror-css.17bc19d4.chunk.js +1 -0
  84. package/build/codemirror-theme.b5559efc.chunk.js +1 -0
  85. package/build/content-manager.006dc634.chunk.js +1 -0
  86. package/build/{content-type-builder-translation-ar-json.bce4d624.chunk.js → content-type-builder-translation-ar-json.f1fedc12.chunk.js} +1 -1
  87. package/build/{content-type-builder-translation-cs-json.785866b6.chunk.js → content-type-builder-translation-cs-json.2f7e2289.chunk.js} +1 -1
  88. package/build/{content-type-builder-translation-de-json.6faa019a.chunk.js → content-type-builder-translation-de-json.46017754.chunk.js} +1 -1
  89. package/build/content-type-builder-translation-dk-json.098bd218.chunk.js +1 -0
  90. package/build/{content-type-builder-translation-en-json.81257d0d.chunk.js → content-type-builder-translation-en-json.d70fc3af.chunk.js} +1 -1
  91. package/build/content-type-builder-translation-es-json.20c177ee.chunk.js +1 -0
  92. package/build/{content-type-builder-translation-fr-json.2156f48c.chunk.js → content-type-builder-translation-fr-json.8f66eb66.chunk.js} +1 -1
  93. package/build/content-type-builder-translation-id-json.aab2f426.chunk.js +1 -0
  94. package/build/{content-type-builder-translation-it-json.dc154c62.chunk.js → content-type-builder-translation-it-json.4c91e895.chunk.js} +1 -1
  95. package/build/{content-type-builder-translation-ja-json.9f8695a0.chunk.js → content-type-builder-translation-ja-json.c239ba90.chunk.js} +1 -1
  96. package/build/{content-type-builder-translation-ko-json.0288cb2b.chunk.js → content-type-builder-translation-ko-json.2a5e0769.chunk.js} +1 -1
  97. package/build/{content-type-builder-translation-ms-json.cfc21fb6.chunk.js → content-type-builder-translation-ms-json.124be88c.chunk.js} +1 -1
  98. package/build/{content-type-builder-translation-nl-json.4d742025.chunk.js → content-type-builder-translation-nl-json.98a240b8.chunk.js} +1 -1
  99. package/build/{content-type-builder-translation-pl-json.1b701a76.chunk.js → content-type-builder-translation-pl-json.2abc61bd.chunk.js} +1 -1
  100. package/build/{content-type-builder-translation-pt-BR-json.2c514ada.chunk.js → content-type-builder-translation-pt-BR-json.c0415545.chunk.js} +1 -1
  101. package/build/{content-type-builder-translation-pt-json.a3c4315c.chunk.js → content-type-builder-translation-pt-json.ab3e086d.chunk.js} +1 -1
  102. package/build/{content-type-builder-translation-ru-json.72173619.chunk.js → content-type-builder-translation-ru-json.1a6779fd.chunk.js} +1 -1
  103. package/build/{content-type-builder-translation-sk-json.e654be3b.chunk.js → content-type-builder-translation-sk-json.5c82f020.chunk.js} +1 -1
  104. package/build/{content-type-builder-translation-th-json.403aa6a4.chunk.js → content-type-builder-translation-th-json.24ee19eb.chunk.js} +1 -1
  105. package/build/{content-type-builder-translation-tr-json.72027971.chunk.js → content-type-builder-translation-tr-json.30434835.chunk.js} +1 -1
  106. package/build/{content-type-builder-translation-uk-json.a1b9f71b.chunk.js → content-type-builder-translation-uk-json.771662ef.chunk.js} +1 -1
  107. package/build/{content-type-builder-translation-zh-Hans-json.4c242866.chunk.js → content-type-builder-translation-zh-Hans-json.070020ae.chunk.js} +1 -1
  108. package/build/{content-type-builder-translation-zh-json.3b3eb4e8.chunk.js → content-type-builder-translation-zh-json.9708310d.chunk.js} +1 -1
  109. package/build/content-type-builder.2e3a53f1.chunk.js +1 -0
  110. package/build/cropper-css.ace19575.chunk.js +1 -0
  111. package/build/{cs-json.ff08076e.chunk.js → cs-json.b8ba75b8.chunk.js} +1 -1
  112. package/build/de-json.e01bdeae.chunk.js +1 -0
  113. package/build/dk-json.7356ea4b.chunk.js +1 -0
  114. package/build/email-settings-page.8f22f49c.chunk.js +1 -0
  115. package/build/email-translation-ar-json.95d90eb4.chunk.js +1 -0
  116. package/build/email-translation-cs-json.dfd1f3f2.chunk.js +1 -0
  117. package/build/email-translation-de-json.559a7d5f.chunk.js +1 -0
  118. package/build/email-translation-dk-json.f8a595bf.chunk.js +1 -0
  119. package/build/{email-translation-en-json.ef8208e3.chunk.js → email-translation-en-json.fa0dc92b.chunk.js} +1 -1
  120. package/build/email-translation-es-json.eb303dea.chunk.js +1 -0
  121. package/build/email-translation-fr-json.49c3c888.chunk.js +1 -0
  122. package/build/email-translation-id-json.e3c2101d.chunk.js +1 -0
  123. package/build/email-translation-it-json.3de61cb6.chunk.js +1 -0
  124. package/build/{email-translation-ja-json.66b21ec1.chunk.js → email-translation-ja-json.66337e44.chunk.js} +1 -1
  125. package/build/{email-translation-ko-json.e383ad57.chunk.js → email-translation-ko-json.52bbd7b4.chunk.js} +1 -1
  126. package/build/email-translation-ms-json.e39256df.chunk.js +1 -0
  127. package/build/email-translation-nl-json.12d28adb.chunk.js +1 -0
  128. package/build/email-translation-pl-json.9585a84e.chunk.js +1 -0
  129. package/build/email-translation-pt-BR-json.6c04b3ef.chunk.js +1 -0
  130. package/build/email-translation-pt-json.0239be04.chunk.js +1 -0
  131. package/build/email-translation-ru-json.f3b4fecc.chunk.js +1 -0
  132. package/build/email-translation-sk-json.76dbaaa6.chunk.js +1 -0
  133. package/build/email-translation-th-json.25ad73e7.chunk.js +1 -0
  134. package/build/email-translation-tr-json.ae04a9f2.chunk.js +1 -0
  135. package/build/email-translation-uk-json.03b27b08.chunk.js +1 -0
  136. package/build/email-translation-vi-json.3e1dd5b3.chunk.js +1 -0
  137. package/build/email-translation-zh-Hans-json.0df4ca59.chunk.js +1 -0
  138. package/build/email-translation-zh-json.82978eb0.chunk.js +1 -0
  139. package/build/en-json.ec998c8f.chunk.js +1 -0
  140. package/build/es-json.ed9c8bef.chunk.js +1 -0
  141. package/build/fontawesome-css-all.3b89f909.chunk.js +1 -0
  142. package/build/fontawesome-css.ef93ee2a.chunk.js +1 -0
  143. package/build/fr-json.bae03a2c.chunk.js +1 -0
  144. package/build/{he-json.fafa8569.chunk.js → he-json.86f9e663.chunk.js} +1 -1
  145. package/build/highlight.js.6321cb45.chunk.js +1 -0
  146. package/build/hu-json.a741d263.chunk.js +1 -0
  147. package/build/i18n-translation-dk-json.932d3cc2.chunk.js +1 -0
  148. package/build/{i18n-translation-en-json.a90b9dc5.chunk.js → i18n-translation-en-json.239b740f.chunk.js} +1 -1
  149. package/build/i18n-translation-es-json.347904f3.chunk.js +1 -0
  150. package/build/i18n-translation-fr-json.b52474fc.chunk.js +1 -0
  151. package/build/{i18n-translation-ko-json.f0628aff.chunk.js → i18n-translation-ko-json.e88e11ef.chunk.js} +1 -1
  152. package/build/{i18n-translation-zh-Hans-json.670b4940.chunk.js → i18n-translation-zh-Hans-json.4c17fed0.chunk.js} +1 -1
  153. package/build/{id-json.3372dadc.chunk.js → id-json.0b0c9731.chunk.js} +1 -1
  154. package/build/index.html +1 -1
  155. package/build/{it-json.0e5d5fdb.chunk.js → it-json.939916bc.chunk.js} +1 -1
  156. package/build/ja-json.52581a2a.chunk.js +1 -0
  157. package/build/{ko-json.35832b30.chunk.js → ko-json.29633034.chunk.js} +1 -1
  158. package/build/main.815f1087.js +2 -0
  159. package/build/{main.dfa22c7a.js.LICENSE.txt → main.815f1087.js.LICENSE.txt} +0 -0
  160. package/build/{ms-json.a66beabc.chunk.js → ms-json.5e5d12f9.chunk.js} +1 -1
  161. package/build/nl-json.ac661b7f.chunk.js +1 -0
  162. package/build/{no-json.25f63ee7.chunk.js → no-json.ff46b126.chunk.js} +1 -1
  163. package/build/{pl-json.3d7884e1.chunk.js → pl-json.6bff1d54.chunk.js} +1 -1
  164. package/build/pt-BR-json.8b3f799d.chunk.js +1 -0
  165. package/build/{pt-json.21a66a61.chunk.js → pt-json.b23d9a79.chunk.js} +1 -1
  166. package/build/{ru-json.ca2b6c3c.chunk.js → ru-json.bff93229.chunk.js} +1 -1
  167. package/build/runtime~main.85d349af.js +1 -0
  168. package/build/{sk-json.7f750e28.chunk.js → sk-json.a40bc2c8.chunk.js} +1 -1
  169. package/build/{sso-settings-page.bd7a8fd7.chunk.js → sso-settings-page.36c35df0.chunk.js} +1 -1
  170. package/build/{sv-json.3b5cc7f9.chunk.js → sv-json.8ac61ecf.chunk.js} +1 -1
  171. package/build/{th-json.694b4038.chunk.js → th-json.6e4502a3.chunk.js} +1 -1
  172. package/build/{tr-json.a842843a.chunk.js → tr-json.eaca955b.chunk.js} +1 -1
  173. package/build/uk-json.da2ed14e.chunk.js +1 -0
  174. package/build/{upload-translation-de-json.b4ff3c56.chunk.js → upload-translation-de-json.00f90715.chunk.js} +1 -1
  175. package/build/{upload-translation-dk-json.f37ae5c0.chunk.js → upload-translation-dk-json.bc6af8b4.chunk.js} +1 -1
  176. package/build/upload-translation-en-json.6b529046.chunk.js +1 -0
  177. package/build/upload-translation-es-json.b53d6641.chunk.js +1 -0
  178. package/build/{upload-translation-fr-json.0f4b3839.chunk.js → upload-translation-fr-json.ccb4ad8b.chunk.js} +1 -1
  179. package/build/{upload-translation-he-json.4b5e48bc.chunk.js → upload-translation-he-json.5dc34ea8.chunk.js} +1 -1
  180. package/build/upload-translation-it-json.c1809a47.chunk.js +1 -0
  181. package/build/{upload-translation-ja-json.9e1193c7.chunk.js → upload-translation-ja-json.71aa85eb.chunk.js} +1 -1
  182. package/build/{upload-translation-ko-json.b6602572.chunk.js → upload-translation-ko-json.da369eef.chunk.js} +1 -1
  183. package/build/{upload-translation-ms-json.bfb86c2e.chunk.js → upload-translation-ms-json.be669f81.chunk.js} +1 -1
  184. package/build/{upload-translation-pl-json.e0282fa4.chunk.js → upload-translation-pl-json.67685825.chunk.js} +1 -1
  185. package/build/{upload-translation-pt-BR-json.ad6bb9f8.chunk.js → upload-translation-pt-BR-json.f7b1133d.chunk.js} +1 -1
  186. package/build/{upload-translation-ru-json.4303b6a0.chunk.js → upload-translation-ru-json.54c031aa.chunk.js} +1 -1
  187. package/build/{upload-translation-sk-json.90a0bc6c.chunk.js → upload-translation-sk-json.f643dfc2.chunk.js} +1 -1
  188. package/build/{upload-translation-th-json.cf0d62e0.chunk.js → upload-translation-th-json.88ee2090.chunk.js} +1 -1
  189. package/build/{upload-translation-uk-json.ec345d61.chunk.js → upload-translation-uk-json.1a90e73c.chunk.js} +1 -1
  190. package/build/{upload-translation-zh-Hans-json.f320fa39.chunk.js → upload-translation-zh-Hans-json.ac1dc0b9.chunk.js} +1 -1
  191. package/build/{upload-translation-zh-json.9ad30216.chunk.js → upload-translation-zh-json.164ac601.chunk.js} +1 -1
  192. package/build/{upload.1e3e2685.chunk.js → upload.6f33785e.chunk.js} +1 -1
  193. package/build/users-email-settings-page.678794aa.chunk.js +1 -0
  194. package/build/{users-permissions-translation-ar-json.6fe0dcf5.chunk.js → users-permissions-translation-ar-json.bdddd0d7.chunk.js} +1 -1
  195. package/build/{users-permissions-translation-cs-json.dd4bb452.chunk.js → users-permissions-translation-cs-json.7881d3ff.chunk.js} +1 -1
  196. package/build/{users-permissions-translation-de-json.1505b462.chunk.js → users-permissions-translation-de-json.8d53c619.chunk.js} +1 -1
  197. package/build/{users-permissions-translation-dk-json.6b47229f.chunk.js → users-permissions-translation-dk-json.3e0295e5.chunk.js} +1 -1
  198. package/build/{users-permissions-translation-en-json.3e650c44.chunk.js → users-permissions-translation-en-json.1993655e.chunk.js} +1 -1
  199. package/build/users-permissions-translation-es-json.a4f81eaa.chunk.js +1 -0
  200. package/build/users-permissions-translation-fr-json.a2172545.chunk.js +1 -0
  201. package/build/users-permissions-translation-id-json.8f17982a.chunk.js +1 -0
  202. package/build/{users-permissions-translation-it-json.baa4f859.chunk.js → users-permissions-translation-it-json.87952a24.chunk.js} +1 -1
  203. package/build/{users-permissions-translation-ja-json.3ddd4418.chunk.js → users-permissions-translation-ja-json.5915d9ef.chunk.js} +1 -1
  204. package/build/users-permissions-translation-ko-json.f1ca6cc4.chunk.js +1 -0
  205. package/build/{users-permissions-translation-ms-json.dc405667.chunk.js → users-permissions-translation-ms-json.2268324c.chunk.js} +1 -1
  206. package/build/{users-permissions-translation-nl-json.2d8e847a.chunk.js → users-permissions-translation-nl-json.4e1231dd.chunk.js} +1 -1
  207. package/build/{users-permissions-translation-pl-json.b150dfb0.chunk.js → users-permissions-translation-pl-json.107638b5.chunk.js} +1 -1
  208. package/build/{users-permissions-translation-pt-BR-json.0c494c69.chunk.js → users-permissions-translation-pt-BR-json.8dafc053.chunk.js} +1 -1
  209. package/build/{users-permissions-translation-pt-json.0fccc389.chunk.js → users-permissions-translation-pt-json.3322464f.chunk.js} +1 -1
  210. package/build/users-permissions-translation-ru-json.5709c5a0.chunk.js +1 -0
  211. package/build/{users-permissions-translation-sk-json.2602e768.chunk.js → users-permissions-translation-sk-json.fe7cc044.chunk.js} +1 -1
  212. package/build/users-permissions-translation-sv-json.e7e1684b.chunk.js +1 -0
  213. package/build/{users-permissions-translation-th-json.abe0558b.chunk.js → users-permissions-translation-th-json.bb544ee3.chunk.js} +1 -1
  214. package/build/{users-permissions-translation-tr-json.269ee593.chunk.js → users-permissions-translation-tr-json.30f3ca90.chunk.js} +1 -1
  215. package/build/{users-permissions-translation-uk-json.ffd9a4ee.chunk.js → users-permissions-translation-uk-json.634f2569.chunk.js} +1 -1
  216. package/build/{users-permissions-translation-vi-json.c2cd19d5.chunk.js → users-permissions-translation-vi-json.605d88bc.chunk.js} +1 -1
  217. package/build/{users-permissions-translation-zh-Hans-json.2d909528.chunk.js → users-permissions-translation-zh-Hans-json.85480dab.chunk.js} +1 -1
  218. package/build/{users-permissions-translation-zh-json.7f3027c5.chunk.js → users-permissions-translation-zh-json.99932731.chunk.js} +1 -1
  219. package/build/users-providers-settings-page.fa21d558.chunk.js +1 -0
  220. package/build/users-roles-settings-page.e65d4d62.chunk.js +1 -0
  221. package/build/{vi-json.c25f42fe.chunk.js → vi-json.e993857a.chunk.js} +1 -1
  222. package/build/webhook-edit-page.640e85eb.chunk.js +1 -0
  223. package/build/{webhook-list-page.8abf0b5f.chunk.js → webhook-list-page.93432566.chunk.js} +1 -1
  224. package/build/zh-Hans-json.fcc53388.chunk.js +1 -0
  225. package/build/zh-json.2e4c9ef4.chunk.js +1 -0
  226. package/ee/admin/pages/App/utils/customRoutes.js +1 -1
  227. package/ee/server/controllers/authentication/utils.js +1 -1
  228. package/index.html +1 -1
  229. package/index.js +43 -26
  230. package/package.json +30 -37
  231. package/server/bootstrap.js +16 -0
  232. package/server/controllers/webhooks.js +6 -10
  233. package/server/services/api-token.js +1 -1
  234. package/server/services/metrics.js +6 -0
  235. package/server/services/permission/permissions-manager/sanitize.js +13 -5
  236. package/server/services/user.js +10 -0
  237. package/server/strategies/api-token.js +0 -3
  238. package/webpack.alias.js +0 -6
  239. package/webpack.config.js +1 -3
  240. package/build/2664.f33f619d.chunk.js +0 -2
  241. package/build/3226.1a4b5cd1.chunk.js +0 -2
  242. package/build/4064.2683bcce.chunk.js +0 -1
  243. package/build/4261.b7b7ac00.chunk.js +0 -1
  244. package/build/4362.c65ab24b.chunk.js +0 -1
  245. package/build/4741.1fb6ad6e.chunk.js +0 -2
  246. package/build/849.35b7e7af.chunk.js +0 -1
  247. package/build/9238.63386655.chunk.js +0 -1
  248. package/build/Admin-authenticatedApp.5e99b423.chunk.js +0 -1
  249. package/build/Admin_homePage.74b48134.chunk.js +0 -1
  250. package/build/Admin_marketplace.8d0028cc.chunk.js +0 -1
  251. package/build/Admin_profilePage.f276f571.chunk.js +0 -1
  252. package/build/Admin_settingsPage.1947fe0c.chunk.js +0 -1
  253. package/build/admin-edit-roles-page.2bccaf76.chunk.js +0 -1
  254. package/build/admin-edit-users.1632dcf7.chunk.js +0 -1
  255. package/build/admin-users.1f0533e6.chunk.js +0 -1
  256. package/build/api-tokens-list-page.d451255e.chunk.js +0 -1
  257. package/build/codemirror-css.d09c79d2.chunk.js +0 -1
  258. package/build/codemirror-theme.4a209ed5.chunk.js +0 -1
  259. package/build/content-manager.363a1bad.chunk.js +0 -1
  260. package/build/content-type-builder-translation-dk-json.215eca36.chunk.js +0 -1
  261. package/build/content-type-builder-translation-es-json.5a4f519b.chunk.js +0 -1
  262. package/build/content-type-builder-translation-id-json.e66f4e0a.chunk.js +0 -1
  263. package/build/content-type-builder.aa13e7a4.chunk.js +0 -1
  264. package/build/cropper-css.b71d1229.chunk.js +0 -1
  265. package/build/de-json.93987708.chunk.js +0 -1
  266. package/build/dk-json.97f8f309.chunk.js +0 -1
  267. package/build/email-settings-page.d3ce077f.chunk.js +0 -1
  268. package/build/email-translation-ar-json.536b0217.chunk.js +0 -1
  269. package/build/email-translation-cs-json.8f533c9b.chunk.js +0 -1
  270. package/build/email-translation-de-json.89f5373e.chunk.js +0 -1
  271. package/build/email-translation-dk-json.9c95cf96.chunk.js +0 -1
  272. package/build/email-translation-es-json.fec78330.chunk.js +0 -1
  273. package/build/email-translation-fr-json.76afb1c3.chunk.js +0 -1
  274. package/build/email-translation-id-json.1b3e055a.chunk.js +0 -1
  275. package/build/email-translation-it-json.7273fee2.chunk.js +0 -1
  276. package/build/email-translation-ms-json.af7c5861.chunk.js +0 -1
  277. package/build/email-translation-nl-json.10fec023.chunk.js +0 -1
  278. package/build/email-translation-pl-json.ebda42d5.chunk.js +0 -1
  279. package/build/email-translation-pt-BR-json.338d8b7c.chunk.js +0 -1
  280. package/build/email-translation-pt-json.1cd0fedf.chunk.js +0 -1
  281. package/build/email-translation-ru-json.2c369331.chunk.js +0 -1
  282. package/build/email-translation-sk-json.ba2e026d.chunk.js +0 -1
  283. package/build/email-translation-th-json.16457076.chunk.js +0 -1
  284. package/build/email-translation-tr-json.92e0a5d9.chunk.js +0 -1
  285. package/build/email-translation-uk-json.d00dd5b1.chunk.js +0 -1
  286. package/build/email-translation-vi-json.ed425dde.chunk.js +0 -1
  287. package/build/email-translation-zh-Hans-json.e2c630b6.chunk.js +0 -1
  288. package/build/email-translation-zh-json.2a06ebac.chunk.js +0 -1
  289. package/build/en-json.4c3c1c95.chunk.js +0 -1
  290. package/build/es-json.060b658c.chunk.js +0 -1
  291. package/build/fontawesome-css-all.90be2358.chunk.js +0 -1
  292. package/build/fontawesome-css.32df0f91.chunk.js +0 -1
  293. package/build/fr-json.c75e1a2e.chunk.js +0 -1
  294. package/build/highlight.js.3f31aed7.chunk.js +0 -1
  295. package/build/i18n-translation-fr-json.482f6933.chunk.js +0 -1
  296. package/build/ja-json.14eaee93.chunk.js +0 -1
  297. package/build/main.dfa22c7a.js +0 -2
  298. package/build/nl-json.9e55cf9c.chunk.js +0 -1
  299. package/build/pt-BR-json.e21cd994.chunk.js +0 -1
  300. package/build/runtime~main.2d8596f7.js +0 -1
  301. package/build/uk-json.3b8f967b.chunk.js +0 -1
  302. package/build/upload-translation-en-json.d205cecd.chunk.js +0 -1
  303. package/build/upload-translation-es-json.f9e9ffdf.chunk.js +0 -1
  304. package/build/upload-translation-it-json.fb24c332.chunk.js +0 -1
  305. package/build/users-email-settings-page.36142cd7.chunk.js +0 -1
  306. package/build/users-permissions-translation-es-json.768cc00e.chunk.js +0 -1
  307. package/build/users-permissions-translation-fr-json.12f3c930.chunk.js +0 -1
  308. package/build/users-permissions-translation-id-json.ec3deaf0.chunk.js +0 -1
  309. package/build/users-permissions-translation-ko-json.4677f640.chunk.js +0 -1
  310. package/build/users-permissions-translation-ru-json.4389c542.chunk.js +0 -1
  311. package/build/users-permissions-translation-sv-json.438e46f7.chunk.js +0 -1
  312. package/build/users-providers-settings-page.2c0685d3.chunk.js +0 -1
  313. package/build/users-roles-settings-page.61c9b376.chunk.js +0 -1
  314. package/build/webhook-edit-page.36755ae4.chunk.js +0 -1
  315. package/build/zh-Hans-json.e5041b18.chunk.js +0 -1
  316. package/build/zh-json.3b683748.chunk.js +0 -1
@@ -1,6 +1,7 @@
1
1
  import React, { useRef, useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from 'react-intl';
4
+ import { FocusTrap } from '@strapi/design-system/FocusTrap';
4
5
  import { Box } from '@strapi/design-system/Box';
5
6
  import { Button } from '@strapi/design-system/Button';
6
7
  import { IconButtonGroup } from '@strapi/design-system/IconButton';
@@ -27,7 +28,9 @@ import {
27
28
  } from './WysiwygStyles';
28
29
 
29
30
  const WysiwygNav = ({
31
+ disabled,
30
32
  editorRef,
33
+ isExpandMode,
31
34
  isPreviewMode,
32
35
  onActionClick,
33
36
  onToggleMediaLib,
@@ -41,9 +44,11 @@ const WysiwygNav = ({
41
44
  });
42
45
  const buttonMoreRef = useRef();
43
46
 
44
- const handleTogglePopover = () => setVisiblePopover(prev => !prev);
47
+ const handleTogglePopover = () => {
48
+ setVisiblePopover(prev => !prev);
49
+ };
45
50
 
46
- if (isPreviewMode) {
51
+ if (disabled || isPreviewMode) {
47
52
  return (
48
53
  <Box padding={2} background="neutral100">
49
54
  <Flex justifyContent="space-between">
@@ -81,15 +86,17 @@ const WysiwygNav = ({
81
86
  />
82
87
  </MainButtons>
83
88
 
84
- <MoreButton disabled ref={buttonMoreRef} id="more" label="More" icon={<More />} />
89
+ <MoreButton disabled id="more" label="More" icon={<More />} />
85
90
  </Flex>
86
91
 
87
- <Button onClick={onTogglePreviewMode} variant="tertiary" size="L" id="preview">
88
- {formatMessage({
89
- id: 'components.Wysiwyg.ToggleMode.markdown-mode',
90
- defaultMessage: 'Markdown mode',
91
- })}
92
- </Button>
92
+ {!isExpandMode && (
93
+ <Button onClick={onTogglePreviewMode} variant="tertiary" id="preview">
94
+ {formatMessage({
95
+ id: 'components.Wysiwyg.ToggleMode.markdown-mode',
96
+ defaultMessage: 'Markdown mode',
97
+ })}
98
+ </Button>
99
+ )}
93
100
  </Flex>
94
101
  </Box>
95
102
  );
@@ -146,65 +153,67 @@ const WysiwygNav = ({
146
153
  />
147
154
  {visiblePopover && (
148
155
  <Popover centered source={buttonMoreRef} spacing={4} id="popover">
149
- <Flex>
150
- <IconButtonGroupMargin>
151
- <CustomIconButton
152
- onClick={() => onActionClick('Strikethrough', editorRef, handleTogglePopover)}
153
- id="Strikethrough"
154
- label="Strikethrough"
155
- name="Strikethrough"
156
- icon={<Strikethrough />}
157
- />
158
- <CustomIconButton
159
- onClick={() => onActionClick('BulletList', editorRef, handleTogglePopover)}
160
- id="BulletList"
161
- label="BulletList"
162
- name="BulletList"
163
- icon={<BulletList />}
164
- />
165
- <CustomIconButton
166
- onClick={() => onActionClick('NumberList', editorRef, handleTogglePopover)}
167
- id="NumberList"
168
- label="NumberList"
169
- name="NumberList"
170
- icon={<NumberList />}
171
- />
172
- </IconButtonGroupMargin>
173
- <IconButtonGroup>
174
- <CustomIconButton
175
- onClick={() => onActionClick('Code', editorRef, handleTogglePopover)}
176
- id="Code"
177
- label="Code"
178
- name="Code"
179
- icon={<Code />}
180
- />
181
- <CustomIconButton
182
- onClick={() => {
183
- handleTogglePopover();
184
- onToggleMediaLib();
185
- }}
186
- id="Image"
187
- label="Image"
188
- name="Image"
189
- icon={<Image />}
190
- />
191
- <CustomLinkIconButton
192
- onClick={() => onActionClick('Link', editorRef, handleTogglePopover)}
193
- id="Link"
194
- label="Link"
195
- name="Link"
196
- // eslint-disable-next-line jsx-a11y/anchor-is-valid
197
- icon={<Link />}
198
- />
199
- <CustomIconButton
200
- onClick={() => onActionClick('Quote', editorRef, handleTogglePopover)}
201
- id="Quote"
202
- label="Quote"
203
- name="Quote"
204
- icon={<Quote />}
205
- />
206
- </IconButtonGroup>
207
- </Flex>
156
+ <FocusTrap onEscape={handleTogglePopover} restoreFocus={false}>
157
+ <Flex>
158
+ <IconButtonGroupMargin>
159
+ <CustomIconButton
160
+ onClick={() => onActionClick('Strikethrough', editorRef, handleTogglePopover)}
161
+ id="Strikethrough"
162
+ label="Strikethrough"
163
+ name="Strikethrough"
164
+ icon={<Strikethrough />}
165
+ />
166
+ <CustomIconButton
167
+ onClick={() => onActionClick('BulletList', editorRef, handleTogglePopover)}
168
+ id="BulletList"
169
+ label="BulletList"
170
+ name="BulletList"
171
+ icon={<BulletList />}
172
+ />
173
+ <CustomIconButton
174
+ onClick={() => onActionClick('NumberList', editorRef, handleTogglePopover)}
175
+ id="NumberList"
176
+ label="NumberList"
177
+ name="NumberList"
178
+ icon={<NumberList />}
179
+ />
180
+ </IconButtonGroupMargin>
181
+ <IconButtonGroup>
182
+ <CustomIconButton
183
+ onClick={() => onActionClick('Code', editorRef, handleTogglePopover)}
184
+ id="Code"
185
+ label="Code"
186
+ name="Code"
187
+ icon={<Code />}
188
+ />
189
+ <CustomIconButton
190
+ onClick={() => {
191
+ handleTogglePopover();
192
+ onToggleMediaLib();
193
+ }}
194
+ id="Image"
195
+ label="Image"
196
+ name="Image"
197
+ icon={<Image />}
198
+ />
199
+ <CustomLinkIconButton
200
+ onClick={() => onActionClick('Link', editorRef, handleTogglePopover)}
201
+ id="Link"
202
+ label="Link"
203
+ name="Link"
204
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
205
+ icon={<Link />}
206
+ />
207
+ <CustomIconButton
208
+ onClick={() => onActionClick('Quote', editorRef, handleTogglePopover)}
209
+ id="Quote"
210
+ label="Quote"
211
+ name="Quote"
212
+ icon={<Quote />}
213
+ />
214
+ </IconButtonGroup>
215
+ </Flex>
216
+ </FocusTrap>
208
217
  </Popover>
209
218
  )}
210
219
  </Flex>
@@ -230,7 +239,9 @@ WysiwygNav.defaultProps = {
230
239
  };
231
240
 
232
241
  WysiwygNav.propTypes = {
242
+ disabled: PropTypes.bool.isRequired,
233
243
  editorRef: PropTypes.shape({ current: PropTypes.any }).isRequired,
244
+ isExpandMode: PropTypes.bool.isRequired,
234
245
  isPreviewMode: PropTypes.bool,
235
246
  onActionClick: PropTypes.func,
236
247
  onToggleMediaLib: PropTypes.func,
@@ -45,6 +45,7 @@ export const IconButtonGroupMargin = styled(IconButtonGroup)`
45
45
 
46
46
  export const EditorAndPreviewWrapper = styled.div`
47
47
  position: relative;
48
+ height: calc(100% - 48px);
48
49
  `;
49
50
 
50
51
  // FOOTER
@@ -26,6 +26,10 @@ const LabelAction = styled(Box)`
26
26
  }
27
27
  `;
28
28
 
29
+ const TypographyAsterisk = styled(Typography)`
30
+ line-height: 0;
31
+ `;
32
+
29
33
  const Wysiwyg = ({
30
34
  description,
31
35
  disabled,
@@ -36,6 +40,7 @@ const Wysiwyg = ({
36
40
  onChange,
37
41
  placeholder,
38
42
  value,
43
+ required,
39
44
  }) => {
40
45
  const { formatMessage } = useIntl();
41
46
  const textareaRef = useRef(null);
@@ -49,7 +54,10 @@ const Wysiwyg = ({
49
54
 
50
55
  const handleToggleMediaLib = () => setMediaLibVisible(prev => !prev);
51
56
  const handleTogglePreviewMode = () => setIsPreviewMode(prev => !prev);
52
- const handleToggleExpand = () => setIsExpandMode(prev => !prev);
57
+ const handleToggleExpand = () => {
58
+ setIsPreviewMode(false);
59
+ setIsExpandMode(prev => !prev);
60
+ };
53
61
 
54
62
  const handleActionClick = (value, currentEditorRef, togglePopover) => {
55
63
  switch (value) {
@@ -124,6 +132,7 @@ const Wysiwyg = ({
124
132
  <Stack horizontal size={1}>
125
133
  <Typography variant="pi" fontWeight="bold" textColor="neutral800">
126
134
  {label}
135
+ {required && <TypographyAsterisk textColor="danger600">*</TypographyAsterisk>}
127
136
  </Typography>
128
137
  {labelAction && <LabelAction paddingLeft={1}>{labelAction}</LabelAction>}
129
138
  </Stack>
@@ -135,15 +144,18 @@ const Wysiwyg = ({
135
144
  onCollapse={handleToggleExpand}
136
145
  >
137
146
  <WysiwygNav
147
+ isExpandMode={isExpandMode}
138
148
  editorRef={editorRef}
139
149
  isPreviewMode={isPreviewMode}
140
150
  onActionClick={handleActionClick}
141
151
  onToggleMediaLib={handleToggleMediaLib}
142
152
  onTogglePreviewMode={isExpandMode ? undefined : handleTogglePreviewMode}
153
+ disabled={disabled}
143
154
  />
144
155
 
145
156
  <Editor
146
157
  disabled={disabled}
158
+ isExpandMode={isExpandMode}
147
159
  editorRef={editorRef}
148
160
  error={errorMessage}
149
161
  isPreviewMode={isPreviewMode}
@@ -154,9 +166,7 @@ const Wysiwyg = ({
154
166
  value={value}
155
167
  />
156
168
 
157
- {!isExpandMode && (
158
- <WysiwygFooter isPreviewMode={isPreviewMode} onToggleExpand={handleToggleExpand} />
159
- )}
169
+ {!isExpandMode && <WysiwygFooter onToggleExpand={handleToggleExpand} />}
160
170
  </EditorLayout>
161
171
  <Hint description={description} name={name} error={error} />
162
172
  </Stack>
@@ -178,10 +188,11 @@ const Wysiwyg = ({
178
188
 
179
189
  Wysiwyg.defaultProps = {
180
190
  description: null,
181
- disabled: true,
191
+ disabled: false,
182
192
  error: '',
183
193
  labelAction: undefined,
184
194
  placeholder: null,
195
+ required: false,
185
196
  value: '',
186
197
  };
187
198
 
@@ -206,6 +217,7 @@ Wysiwyg.propTypes = {
206
217
  defaultMessage: PropTypes.string.isRequired,
207
218
  values: PropTypes.object,
208
219
  }),
220
+ required: PropTypes.bool,
209
221
  value: PropTypes.string,
210
222
  };
211
223
 
@@ -43,14 +43,20 @@ const App = () => {
43
43
  );
44
44
  }
45
45
 
46
+ // Array of models that are displayed in the content manager
47
+ const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);
48
+
46
49
  // Redirect the user to the 403 page
47
- // FIXME when changing the routing
48
- if (authorisedModels.length === 0 && models.length > 0 && pathname !== '/content-manager/403') {
50
+ if (
51
+ authorisedModels.length === 0 &&
52
+ supportedModelsToDisplay.length > 0 &&
53
+ pathname !== '/content-manager/403'
54
+ ) {
49
55
  return <Redirect to="/content-manager/403" />;
50
56
  }
51
57
 
52
58
  // Redirect the user to the create content type page
53
- if (models.length === 0 && pathname !== '/content-manager/no-content-types') {
59
+ if (supportedModelsToDisplay.length === 0 && pathname !== '/content-manager/no-content-types') {
54
60
  return <Redirect to="/content-manager/no-content-types" />;
55
61
  }
56
62
 
@@ -341,7 +341,7 @@ const DisplayedFieldButton = ({
341
341
  isHidden={isHidden}
342
342
  >
343
343
  <DragButton
344
- as="button"
344
+ as="span"
345
345
  type="button"
346
346
  ref={refs.dragRef}
347
347
  onClick={e => e.stopPropagation()}
@@ -41,9 +41,7 @@ const DisplayedFields = ({ editLayout, editLayoutRemainingFields, onRemoveField,
41
41
  <Box padding={4} hasRadius borderStyle="dashed" borderWidth="1px" borderColor="neutral300">
42
42
  <Stack size={2}>
43
43
  {editLayout.map((row, index) => (
44
- <React.Fragment key={row.rowId}>
45
- <RowsLayout row={row} rowIndex={index} onRemoveField={onRemoveField} />
46
- </React.Fragment>
44
+ <RowsLayout key={row.rowId} row={row} rowIndex={index} onRemoveField={onRemoveField} />
47
45
  ))}
48
46
  <SimpleMenu
49
47
  id="label"
@@ -24,7 +24,7 @@ const FieldButtonContent = ({ attribute, onEditField, onDeleteField, children })
24
24
 
25
25
  return (
26
26
  <Box overflow="hidden" width="100%">
27
- <Flex paddingLeft={3} alignItems="baseline" justifyContent="space-between">
27
+ <Flex paddingLeft={3} alignItems="center" justifyContent="space-between">
28
28
  <Typography fontWeight="semiBold" textColor="neutral800" ellipsis>
29
29
  {children}
30
30
  </Typography>
@@ -47,19 +47,18 @@ const ModalForm = ({ onChange }) => {
47
47
  return formToDisplay.map(meta => {
48
48
  const formType = get(attributes, [selectedField, 'type']);
49
49
 
50
- if (formType === 'dynamiczone' && !['label', 'description'].includes(meta)) {
50
+ if (
51
+ formType === 'dynamiczone' ||
52
+ (formType === 'component' && !['label', 'description'].includes(meta))
53
+ ) {
51
54
  return null;
52
55
  }
53
56
 
54
- if ((formType === 'component' || formType === 'media') && meta !== 'label') {
57
+ if (formType === 'component' && meta !== 'label') {
55
58
  return null;
56
59
  }
57
60
 
58
- if ((formType === 'json' || formType === 'boolean') && meta === 'placeholder') {
59
- return null;
60
- }
61
-
62
- if (formType === 'richtext' && meta === 'editable') {
61
+ if (['media', 'json', 'boolean'].includes(formType) && meta === 'placeholder') {
63
62
  return null;
64
63
  }
65
64
 
@@ -91,7 +91,7 @@ const RelationalFieldButton = ({
91
91
  isDragging={isDragging}
92
92
  >
93
93
  <DragButton
94
- as="button"
94
+ as="span"
95
95
  type="button"
96
96
  ref={dragButtonRef}
97
97
  onClick={e => e.stopPropagation()}
@@ -195,6 +195,7 @@ const DraggableCard = ({
195
195
  >
196
196
  <Stack horizontal size={3}>
197
197
  <DragButton
198
+ as='span'
198
199
  aria-label={formatMessage(
199
200
  {
200
201
  id: getTrad('components.DraggableCard.move.field'),
@@ -27,6 +27,7 @@ const MarketplacePage = lazy(() =>
27
27
  import(/* webpackChunkName: "Admin_marketplace" */ '../MarketplacePage')
28
28
  );
29
29
  const NotFoundPage = lazy(() => import('../NotFoundPage'));
30
+ const InternalErrorPage = lazy(() => import('../InternalErrorPage'));
30
31
 
31
32
  const ProfilePage = lazy(() =>
32
33
  import(/* webpackChunkName: "Admin_profilePage" */ '../ProfilePage')
@@ -87,6 +88,7 @@ const Admin = () => {
87
88
  <InstalledPluginsPage />
88
89
  </Route>
89
90
  <Route path="/404" component={NotFoundPage} />
91
+ <Route path="/500" component={InternalErrorPage} />
90
92
  <Route path="" component={NotFoundPage} />
91
93
  </Switch>
92
94
  </Suspense>
@@ -178,7 +178,10 @@ const Register = ({ fieldsToDisable, noSignin, onSubmit, schema }) => {
178
178
  : undefined
179
179
  }
180
180
  required
181
- label={formatMessage({ id: 'Auth.form.email.label', defaultMessage: 'Email' })}
181
+ label={formatMessage({
182
+ id: 'Auth.form.email.label',
183
+ defaultMessage: 'Email',
184
+ })}
182
185
  type="email"
183
186
  />
184
187
  <PasswordInput
@@ -94,6 +94,8 @@ const forms = {
94
94
  email: yup
95
95
  .string()
96
96
  .email(translatedErrors.email)
97
+ .strict()
98
+ .lowercase(translatedErrors.lowercase)
97
99
  .required(translatedErrors.required),
98
100
  confirmPassword: yup
99
101
  .string()
@@ -0,0 +1,53 @@
1
+ /**
2
+ * InternalErrorPage
3
+ *
4
+ * This is the page we show when the user gets a 500 error
5
+ *
6
+ */
7
+ import React from 'react';
8
+ import { useFocusWhenNavigate } from '@strapi/helper-plugin';
9
+ import { Main } from '@strapi/design-system/Main';
10
+ import { LinkButton } from '@strapi/design-system/LinkButton';
11
+ import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
12
+ import { EmptyStateLayout } from '@strapi/design-system/EmptyStateLayout';
13
+ import EmptyPictures from '@strapi/icons/EmptyPictures';
14
+ import ArrowRight from '@strapi/icons/ArrowRight';
15
+ import { useIntl } from 'react-intl';
16
+
17
+ const InternalErrorPage = () => {
18
+ const { formatMessage } = useIntl();
19
+ useFocusWhenNavigate();
20
+
21
+ return (
22
+ <Main labelledBy="title">
23
+ <HeaderLayout
24
+ id="title"
25
+ title={formatMessage({
26
+ id: 'content-manager.pageNotFound',
27
+ defaultMessage: 'Page not found',
28
+ })}
29
+ />
30
+ <ContentLayout>
31
+ <EmptyStateLayout
32
+ action={
33
+ <LinkButton variant="secondary" endIcon={<ArrowRight />} to="/">
34
+ {formatMessage({
35
+ id: 'app.components.NotFoundPage.back',
36
+ defaultMessage: 'Back to homepage',
37
+ })}
38
+ </LinkButton>
39
+ }
40
+ content={formatMessage({
41
+ id: 'notification.error',
42
+ defaultMessage: 'An error occured',
43
+ })}
44
+ hasRadius
45
+ icon={<EmptyPictures width="10rem" />}
46
+ shadow="tableShadow"
47
+ />
48
+ </ContentLayout>
49
+ </Main>
50
+ );
51
+ };
52
+
53
+ export default InternalErrorPage;
@@ -4,7 +4,50 @@
4
4
  * This is the page we show when the user visits a url that doesn't have a route
5
5
  *
6
6
  */
7
+ import React from 'react';
8
+ import { useFocusWhenNavigate } from '@strapi/helper-plugin';
9
+ import { Main } from '@strapi/design-system/Main';
10
+ import { LinkButton } from '@strapi/design-system/LinkButton';
11
+ import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
12
+ import { EmptyStateLayout } from '@strapi/design-system/EmptyStateLayout';
13
+ import EmptyPictures from '@strapi/icons/EmptyPictures';
14
+ import ArrowRight from '@strapi/icons/ArrowRight';
15
+ import { useIntl } from 'react-intl';
7
16
 
8
- const NotFoundPage = () => 'TODO NOT FOUND';
17
+ const NoContentType = () => {
18
+ const { formatMessage } = useIntl();
19
+ useFocusWhenNavigate();
9
20
 
10
- export default NotFoundPage;
21
+ return (
22
+ <Main labelledBy="title">
23
+ <HeaderLayout
24
+ id="title"
25
+ title={formatMessage({
26
+ id: 'content-manager.pageNotFound',
27
+ defaultMessage: 'Page not found',
28
+ })}
29
+ />
30
+ <ContentLayout>
31
+ <EmptyStateLayout
32
+ action={
33
+ <LinkButton variant="secondary" endIcon={<ArrowRight />} to="/">
34
+ {formatMessage({
35
+ id: 'app.components.NotFoundPage.back',
36
+ defaultMessage: 'Back to homepage',
37
+ })}
38
+ </LinkButton>
39
+ }
40
+ content={formatMessage({
41
+ id: 'app.page.not.found',
42
+ defaultMessage: "Oops! We can't seem to find the page you're looging for...",
43
+ })}
44
+ hasRadius
45
+ icon={<EmptyPictures width="10rem" />}
46
+ shadow="tableShadow"
47
+ />
48
+ </ContentLayout>
49
+ </Main>
50
+ );
51
+ };
52
+
53
+ export default NoContentType;
@@ -211,6 +211,7 @@ const ProfilePage = () => {
211
211
  value={values.firstname || ''}
212
212
  type="text"
213
213
  name="firstname"
214
+ required
214
215
  />
215
216
  </GridItem>
216
217
  <GridItem s={12} col={6}>
@@ -234,6 +235,7 @@ const ProfilePage = () => {
234
235
  value={values.email || ''}
235
236
  type="email"
236
237
  name="email"
238
+ required
237
239
  />
238
240
  </GridItem>
239
241
  <GridItem s={12} col={6}>
@@ -208,6 +208,7 @@ const ApiTokenCreateView = () => {
208
208
  })}
209
209
  onChange={handleChange}
210
210
  value={values.name}
211
+ required
211
212
  />
212
213
  </GridItem>
213
214
  <GridItem key="description" col={6} xs={12}>
@@ -15,6 +15,7 @@ const layout = [
15
15
  col: 6,
16
16
  xs: 12,
17
17
  },
18
+ required: true,
18
19
  },
19
20
  {
20
21
  intlLabel: {
@@ -49,6 +50,7 @@ const layout = [
49
50
  col: 6,
50
51
  xs: 12,
51
52
  },
53
+ required: true,
52
54
  },
53
55
  {
54
56
  intlLabel: {
@@ -15,6 +15,7 @@ const layout = [
15
15
  col: 6,
16
16
  xs: 12,
17
17
  },
18
+ required: true,
18
19
  },
19
20
  {
20
21
  intlLabel: {
@@ -49,6 +50,7 @@ const layout = [
49
50
  col: 6,
50
51
  xs: 12,
51
52
  },
53
+ required: true,
52
54
  },
53
55
  ],
54
56
  ];
@@ -68,6 +68,7 @@ const SelectRoles = ({ disabled, error, onChange, value }) => {
68
68
  startIcon={startIcon}
69
69
  value={value}
70
70
  withTags
71
+ required
71
72
  >
72
73
  {(data || []).map(role => {
73
74
  return (
@@ -63,7 +63,7 @@ const EventInput = ({ isDraftAndPublish }) => {
63
63
  : displayedData.events.default;
64
64
 
65
65
  const { formatMessage } = useIntl();
66
- const { values, errors, handleChange: onChange } = useFormikContext();
66
+ const { values, handleChange: onChange } = useFormikContext();
67
67
 
68
68
  const inputName = 'events';
69
69
  const inputValue = values.events;
@@ -154,14 +154,6 @@ const EventInput = ({ isDraftAndPublish }) => {
154
154
  })}
155
155
  </tbody>
156
156
  </StyledTable>
157
- {errors.events && (
158
- <Typography variant="pi" textColor="danger600" data-strapi-field-error>
159
- {formatMessage({
160
- id: 'components.Input.error.validation.required',
161
- defaultMessage: 'This value is required',
162
- })}
163
- </Typography>
164
- )}
165
157
  </Stack>
166
158
  );
167
159
  };
@@ -114,6 +114,7 @@ const WebhookForm = ({
114
114
  id: 'Settings.webhooks.form.name',
115
115
  defaultMessage: 'Name',
116
116
  })}
117
+ required
117
118
  />
118
119
  </GridItem>
119
120
  <GridItem col={12}>
@@ -125,6 +126,7 @@ const WebhookForm = ({
125
126
  id: 'Settings.roles.form.input.url',
126
127
  defaultMessage: 'Url',
127
128
  })}
129
+ required
128
130
  />
129
131
  </GridItem>
130
132
  </Grid>