@strapi/admin 4.1.4 → 4.1.6-alpha.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 (356) hide show
  1. package/admin/src/StrapiApp.js +40 -42
  2. package/admin/src/components/AuthenticatedApp/utils/api.js +1 -1
  3. package/admin/src/components/AutoReloadOverlayBlockerProvider/Blocker.js +1 -1
  4. package/admin/src/components/GuidedTour/Homepage/index.js +2 -2
  5. package/admin/src/components/GuidedTour/Modal/components/Modal.js +1 -1
  6. package/admin/src/components/LeftMenu/index.js +2 -2
  7. package/admin/src/components/Providers/index.js +65 -32
  8. package/admin/src/components/Theme/index.js +11 -12
  9. package/admin/src/components/ThemeToggleProvider/index.js +66 -0
  10. package/admin/src/content-manager/components/ComponentInitializer/index.js +9 -4
  11. package/admin/src/content-manager/components/DynamicTable/CellContent/RelationMultiple/index.js +135 -0
  12. package/admin/src/content-manager/components/DynamicTable/CellContent/RelationSingle/index.js +32 -0
  13. package/admin/src/content-manager/components/DynamicTable/CellContent/RepeatableComponent/index.js +62 -0
  14. package/admin/src/content-manager/components/DynamicTable/CellContent/SingleComponent/index.js +37 -0
  15. package/admin/src/content-manager/components/DynamicTable/CellContent/index.js +52 -27
  16. package/admin/src/content-manager/components/DynamicTable/CellContent/utils/hasContent.js +29 -0
  17. package/admin/src/content-manager/components/DynamicTable/CellContent/utils/isSingleRelation.js +3 -0
  18. package/admin/src/content-manager/components/DynamicTable/TableRows/index.js +1 -1
  19. package/admin/src/content-manager/components/RepeatableComponent/AccordionGroupCustom/index.js +3 -1
  20. package/admin/src/content-manager/components/SelectMany/index.js +1 -1
  21. package/admin/src/content-manager/components/SelectOne/index.js +1 -1
  22. package/admin/src/content-manager/components/SelectWrapper/utils/getSelectStyles.js +3 -1
  23. package/admin/src/content-manager/components/Wysiwyg/EditorStylesContainer.js +4 -2
  24. package/admin/src/content-manager/hooks/useFetchContentTypeLayout/utils/formatLayouts.js +23 -2
  25. package/admin/src/content-manager/pages/EditSettingsView/components/FieldButtonContent.js +1 -1
  26. package/admin/src/content-manager/pages/EditSettingsView/components/FormModal.js +1 -1
  27. package/admin/src/content-manager/pages/EditSettingsView/index.js +2 -2
  28. package/admin/src/content-manager/pages/EditView/Header/index.js +1 -1
  29. package/admin/src/content-manager/pages/ListSettingsView/components/EditFieldForm.js +1 -1
  30. package/admin/src/content-manager/pages/ListSettingsView/index.js +2 -2
  31. package/admin/src/content-manager/pages/ListView/actions.js +2 -1
  32. package/admin/src/content-manager/pages/ListView/index.js +2 -5
  33. package/admin/src/content-manager/pages/ListView/reducer.js +55 -21
  34. package/admin/src/content-manager/pages/ListViewLayoutManager/index.js +1 -1
  35. package/admin/src/content-manager/utils/checkIfAttributeIsDisplayable.js +1 -1
  36. package/admin/src/contexts/ThemeToggle/index.js +5 -0
  37. package/admin/src/contexts/index.js +1 -0
  38. package/admin/src/hooks/index.js +1 -0
  39. package/admin/src/hooks/useMenu/reducer.js +3 -3
  40. package/admin/src/hooks/useReleaseNotification/index.js +1 -1
  41. package/admin/src/hooks/useSettingsMenu/init.js +2 -2
  42. package/admin/src/hooks/useThemeToggle/index.js +10 -0
  43. package/admin/src/layouts/UnauthenticatedLayout/index.js +1 -1
  44. package/admin/src/pages/Admin/Onboarding/index.js +2 -2
  45. package/admin/src/pages/AuthPage/components/Login/BaseLogin.js +1 -1
  46. package/admin/src/pages/AuthPage/components/Register/index.js +6 -6
  47. package/admin/src/pages/AuthPage/components/ResetPassword/index.js +3 -3
  48. package/admin/src/pages/AuthPage/index.js +8 -3
  49. package/admin/src/pages/HomePage/ContentBlocks.js +1 -1
  50. package/admin/src/pages/HomePage/SocialLinks.js +1 -7
  51. package/admin/src/pages/InstalledPluginsPage/Plugins.js +3 -3
  52. package/admin/src/pages/InstalledPluginsPage/index.js +1 -1
  53. package/admin/src/pages/MarketplacePage/components/PluginCard/InstallPluginButton.js +66 -0
  54. package/admin/src/pages/MarketplacePage/components/PluginCard/index.js +13 -36
  55. package/admin/src/pages/MarketplacePage/index.js +18 -2
  56. package/admin/src/pages/ProfilePage/index.js +79 -15
  57. package/admin/src/pages/ProfilePage/utils/api.js +4 -2
  58. package/admin/src/pages/SettingsPage/components/SettingsNav/index.js +1 -1
  59. package/admin/src/pages/SettingsPage/index.js +1 -1
  60. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/components/LoadingView/index.js +1 -1
  61. package/admin/src/pages/SettingsPage/pages/ApiTokens/EditView/index.js +3 -3
  62. package/admin/src/pages/SettingsPage/pages/ApiTokens/ListView/DynamicTable/DeleteButton/index.js +1 -1
  63. package/admin/src/pages/SettingsPage/pages/ApplicationInfosPage/index.js +1 -1
  64. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/ConditionsButton/index.js +1 -1
  65. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/components/RoleForm/index.js +3 -3
  66. package/admin/src/pages/SettingsPage/pages/Roles/EditPage/index.js +2 -2
  67. package/admin/src/pages/SettingsPage/pages/Roles/ListPage/index.js +6 -6
  68. package/admin/src/pages/SettingsPage/pages/Users/EditPage/index.js +5 -5
  69. package/admin/src/pages/SettingsPage/pages/Users/EditPage/utils/layout.js +1 -1
  70. package/admin/src/pages/SettingsPage/pages/Users/ListPage/DynamicTable/TableRows/index.js +1 -1
  71. package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/index.js +1 -1
  72. package/admin/src/pages/SettingsPage/pages/Users/ListPage/ModalForm/utils/stepper.js +1 -1
  73. package/admin/src/pages/SettingsPage/pages/Users/ListPage/index.js +1 -1
  74. package/admin/src/pages/SettingsPage/pages/Webhooks/EditView/components/WebhookForm/index.js +3 -3
  75. package/admin/src/pages/SettingsPage/pages/Webhooks/ListView/index.js +7 -7
  76. package/admin/src/pages/UseCasePage/index.js +2 -2
  77. package/admin/src/translations/ar.json +0 -6
  78. package/admin/src/translations/cs.json +0 -8
  79. package/admin/src/translations/de.json +0 -26
  80. package/admin/src/translations/dk.json +0 -53
  81. package/admin/src/translations/en.json +87 -102
  82. package/admin/src/translations/es.json +0 -53
  83. package/admin/src/translations/fr.json +0 -56
  84. package/admin/src/translations/he.json +0 -24
  85. package/admin/src/translations/hu.json +0 -53
  86. package/admin/src/translations/id.json +0 -21
  87. package/admin/src/translations/it.json +0 -22
  88. package/admin/src/translations/ja.json +0 -53
  89. package/admin/src/translations/ko.json +0 -56
  90. package/admin/src/translations/ms.json +0 -12
  91. package/admin/src/translations/nl.json +0 -53
  92. package/admin/src/translations/no.json +0 -22
  93. package/admin/src/translations/pl.json +0 -26
  94. package/admin/src/translations/pt-BR.json +0 -53
  95. package/admin/src/translations/pt.json +0 -13
  96. package/admin/src/translations/ru.json +0 -25
  97. package/admin/src/translations/sk.json +0 -21
  98. package/admin/src/translations/sv.json +0 -6
  99. package/admin/src/translations/th.json +0 -21
  100. package/admin/src/translations/tr.json +0 -13
  101. package/admin/src/translations/uk.json +0 -12
  102. package/admin/src/translations/vi.json +1 -10
  103. package/admin/src/translations/zh-Hans.json +0 -53
  104. package/admin/src/translations/zh.json +0 -56
  105. package/build/4362.d8299f0c.chunk.js +1 -0
  106. package/build/{6250.836851ca.chunk.js → 6404.3c2d0a81.chunk.js} +1 -1
  107. package/build/849.82c29ba7.chunk.js +1 -0
  108. package/build/9260.4233fae2.chunk.js +2 -0
  109. package/build/{9260.fa40c7bd.chunk.js.LICENSE.txt → 9260.4233fae2.chunk.js.LICENSE.txt} +0 -0
  110. package/build/Admin-authenticatedApp.cf7104f9.chunk.js +1 -0
  111. package/build/Admin_homePage.4a3aa22e.chunk.js +1 -0
  112. package/build/Admin_marketplace.4748c8f6.chunk.js +1 -0
  113. package/build/Admin_pluginsPage.89a96d29.chunk.js +1 -0
  114. package/build/Admin_profilePage.7869a07a.chunk.js +1 -0
  115. package/build/Admin_settingsPage.2763454c.chunk.js +1 -0
  116. package/build/admin-edit-roles-page.fbcc195d.chunk.js +1 -0
  117. package/build/admin-edit-users.91e8f5e4.chunk.js +1 -0
  118. package/build/admin-users.0a6acd73.chunk.js +1 -0
  119. package/build/api-tokens-create-page.76e13a35.chunk.js +1 -0
  120. package/build/api-tokens-edit-page.b3d48a7f.chunk.js +1 -0
  121. package/build/api-tokens-list-page.4e822ac8.chunk.js +1 -0
  122. package/build/ar-json.cc19c13c.chunk.js +1 -0
  123. package/build/content-manager.2f6a2082.chunk.js +1 -0
  124. package/build/{content-type-builder-translation-ar-json.f1fedc12.chunk.js → content-type-builder-translation-ar-json.ab0a0caa.chunk.js} +1 -1
  125. package/build/content-type-builder-translation-cs-json.e3913c9f.chunk.js +1 -0
  126. package/build/content-type-builder-translation-de-json.5eb3135d.chunk.js +1 -0
  127. package/build/content-type-builder-translation-dk-json.52805572.chunk.js +1 -0
  128. package/build/content-type-builder-translation-en-json.e51b2ec3.chunk.js +1 -0
  129. package/build/content-type-builder-translation-es-json.5a362abf.chunk.js +1 -0
  130. package/build/content-type-builder-translation-fr-json.afd4a12f.chunk.js +1 -0
  131. package/build/content-type-builder-translation-id-json.4a21dfab.chunk.js +1 -0
  132. package/build/content-type-builder-translation-it-json.4fa203b1.chunk.js +1 -0
  133. package/build/{content-type-builder-translation-ja-json.1459fb88.chunk.js → content-type-builder-translation-ja-json.cbb3b88a.chunk.js} +1 -1
  134. package/build/content-type-builder-translation-ko-json.7daf86c3.chunk.js +1 -0
  135. package/build/content-type-builder-translation-ms-json.3755f8c8.chunk.js +1 -0
  136. package/build/content-type-builder-translation-nl-json.6f8d924b.chunk.js +1 -0
  137. package/build/{content-type-builder-translation-pl-json.01dc068c.chunk.js → content-type-builder-translation-pl-json.fc0b0c20.chunk.js} +1 -1
  138. package/build/{content-type-builder-translation-pt-BR-json.d311d056.chunk.js → content-type-builder-translation-pt-BR-json.86b192fa.chunk.js} +1 -1
  139. package/build/{content-type-builder-translation-pt-json.4893266f.chunk.js → content-type-builder-translation-pt-json.b584f79f.chunk.js} +1 -1
  140. package/build/content-type-builder-translation-ru-json.7648049a.chunk.js +1 -0
  141. package/build/content-type-builder-translation-sk-json.c12a8dec.chunk.js +1 -0
  142. package/build/content-type-builder-translation-th-json.668cd5f5.chunk.js +1 -0
  143. package/build/{content-type-builder-translation-tr-json.696283a5.chunk.js → content-type-builder-translation-tr-json.0f52e1e8.chunk.js} +1 -1
  144. package/build/content-type-builder-translation-uk-json.4bf80448.chunk.js +1 -0
  145. package/build/content-type-builder-translation-zh-Hans-json.76e58138.chunk.js +1 -0
  146. package/build/content-type-builder-translation-zh-json.0bec81f1.chunk.js +1 -0
  147. package/build/content-type-builder.19ae7eef.chunk.js +1 -0
  148. package/build/cs-json.ce6f2e52.chunk.js +1 -0
  149. package/build/de-json.2087d61e.chunk.js +1 -0
  150. package/build/dk-json.fb9ee45a.chunk.js +1 -0
  151. package/build/{email-settings-page.27ee4a98.chunk.js → email-settings-page.40ee2bda.chunk.js} +1 -1
  152. package/build/en-json.c55e5344.chunk.js +1 -0
  153. package/build/es-json.8f4d89e2.chunk.js +1 -0
  154. package/build/fr-json.2a0b93ed.chunk.js +1 -0
  155. package/build/he-json.917d416c.chunk.js +1 -0
  156. package/build/hu-json.bee23c51.chunk.js +1 -0
  157. package/build/{i18n-settings-page.c4018651.chunk.js → i18n-settings-page.1f6be747.chunk.js} +1 -1
  158. package/build/i18n-translation-de-json.96ae1f68.chunk.js +1 -0
  159. package/build/id-json.fef679cb.chunk.js +1 -0
  160. package/build/index.html +1 -1
  161. package/build/it-json.937b2108.chunk.js +1 -0
  162. package/build/ja-json.b4818378.chunk.js +1 -0
  163. package/build/ko-json.8294a7fc.chunk.js +1 -0
  164. package/build/{main.4f8479af.js → main.06e1a4bf.js} +2 -2
  165. package/build/{main.4f8479af.js.LICENSE.txt → main.06e1a4bf.js.LICENSE.txt} +0 -0
  166. package/build/ms-json.f46167ef.chunk.js +1 -0
  167. package/build/nl-json.86eae27d.chunk.js +1 -0
  168. package/build/no-json.17ecda5d.chunk.js +1 -0
  169. package/build/pl-json.0db77f2c.chunk.js +1 -0
  170. package/build/pt-BR-json.4c90cb2d.chunk.js +1 -0
  171. package/build/pt-json.ef0efd89.chunk.js +1 -0
  172. package/build/ru-json.da33236d.chunk.js +1 -0
  173. package/build/{runtime~main.0e904492.js → runtime~main.b090a1bb.js} +1 -1
  174. package/build/sk-json.797e898f.chunk.js +1 -0
  175. package/build/sso-settings-page.c5dda65d.chunk.js +1 -0
  176. package/build/sv-json.5bbe6a4f.chunk.js +1 -0
  177. package/build/th-json.c1393c06.chunk.js +1 -0
  178. package/build/tr-json.57cde8b0.chunk.js +1 -0
  179. package/build/uk-json.c6df66d2.chunk.js +1 -0
  180. package/build/{upload-settings.4401f36d.chunk.js → upload-settings.9d3231f4.chunk.js} +1 -1
  181. package/build/upload-translation-de-json.55a7e43a.chunk.js +1 -0
  182. package/build/upload-translation-dk-json.b74134c8.chunk.js +1 -0
  183. package/build/upload-translation-en-json.c4e56528.chunk.js +1 -0
  184. package/build/upload-translation-es-json.15a3015f.chunk.js +1 -0
  185. package/build/upload-translation-fr-json.b12f7247.chunk.js +1 -0
  186. package/build/upload-translation-he-json.bee013d1.chunk.js +1 -0
  187. package/build/upload-translation-it-json.43ec0a8d.chunk.js +1 -0
  188. package/build/upload-translation-ja-json.03f1af04.chunk.js +1 -0
  189. package/build/upload-translation-ko-json.08ad9013.chunk.js +1 -0
  190. package/build/upload-translation-ms-json.30974c82.chunk.js +1 -0
  191. package/build/upload-translation-pl-json.3740abed.chunk.js +1 -0
  192. package/build/upload-translation-pt-BR-json.c7656183.chunk.js +1 -0
  193. package/build/upload-translation-ru-json.0dd4f526.chunk.js +1 -0
  194. package/build/upload-translation-sk-json.55cacd22.chunk.js +1 -0
  195. package/build/upload-translation-th-json.f7aa9392.chunk.js +1 -0
  196. package/build/upload-translation-uk-json.696a16f3.chunk.js +1 -0
  197. package/build/upload-translation-zh-Hans-json.de7bc63f.chunk.js +1 -0
  198. package/build/upload-translation-zh-json.bbc1ed41.chunk.js +1 -0
  199. package/build/{upload.5a2dded7.chunk.js → upload.8edef1ea.chunk.js} +1 -1
  200. package/build/{users-advanced-settings-page.8905d8d8.chunk.js → users-advanced-settings-page.48c437f0.chunk.js} +1 -1
  201. package/build/users-email-settings-page.f39866d6.chunk.js +1 -0
  202. package/build/users-permissions-translation-ar-json.667e7eee.chunk.js +1 -0
  203. package/build/users-permissions-translation-cs-json.995b5d76.chunk.js +1 -0
  204. package/build/users-permissions-translation-de-json.a5c8db9c.chunk.js +1 -0
  205. package/build/users-permissions-translation-dk-json.1fe5e07a.chunk.js +1 -0
  206. package/build/users-permissions-translation-en-json.0e0bc290.chunk.js +1 -0
  207. package/build/users-permissions-translation-es-json.05669296.chunk.js +1 -0
  208. package/build/users-permissions-translation-fr-json.3e3522c3.chunk.js +1 -0
  209. package/build/users-permissions-translation-id-json.186a3f65.chunk.js +1 -0
  210. package/build/users-permissions-translation-it-json.ee5742c4.chunk.js +1 -0
  211. package/build/users-permissions-translation-ja-json.c9cafa6e.chunk.js +1 -0
  212. package/build/users-permissions-translation-ko-json.170f89c2.chunk.js +1 -0
  213. package/build/users-permissions-translation-ms-json.3a128ff4.chunk.js +1 -0
  214. package/build/users-permissions-translation-nl-json.4146aed1.chunk.js +1 -0
  215. package/build/users-permissions-translation-pl-json.a61de7ed.chunk.js +1 -0
  216. package/build/users-permissions-translation-pt-BR-json.51b1cc15.chunk.js +1 -0
  217. package/build/users-permissions-translation-pt-json.85f0e0e1.chunk.js +1 -0
  218. package/build/users-permissions-translation-ru-json.a19b2400.chunk.js +1 -0
  219. package/build/users-permissions-translation-sk-json.27af7260.chunk.js +1 -0
  220. package/build/users-permissions-translation-sv-json.739657b9.chunk.js +1 -0
  221. package/build/users-permissions-translation-th-json.f001fff3.chunk.js +1 -0
  222. package/build/users-permissions-translation-tr-json.3aae5dda.chunk.js +1 -0
  223. package/build/users-permissions-translation-uk-json.a66c7a8c.chunk.js +1 -0
  224. package/build/users-permissions-translation-vi-json.685c65cc.chunk.js +1 -0
  225. package/build/users-permissions-translation-zh-Hans-json.2202741e.chunk.js +1 -0
  226. package/build/users-permissions-translation-zh-json.429a3190.chunk.js +1 -0
  227. package/build/users-providers-settings-page.574ed765.chunk.js +1 -0
  228. package/build/{users-roles-settings-page.a2f6277a.chunk.js → users-roles-settings-page.b836dc30.chunk.js} +1 -1
  229. package/build/vi-json.104a6f3a.chunk.js +1 -0
  230. package/build/webhook-edit-page.b791c6f9.chunk.js +1 -0
  231. package/build/{webhook-list-page.c21b5a9a.chunk.js → webhook-list-page.502d1236.chunk.js} +1 -1
  232. package/build/zh-Hans-json.9afc1adf.chunk.js +1 -0
  233. package/build/zh-json.f36abb77.chunk.js +1 -0
  234. package/ee/admin/pages/AuthPage/components/Providers/SSOProviders.js +1 -1
  235. package/ee/admin/pages/SettingsPage/SingleSignOn/index.js +2 -2
  236. package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +5 -5
  237. package/ee/admin/pages/SettingsPage/pages/Roles/ListPage/index.js +6 -6
  238. package/package.json +5 -5
  239. package/scripts/build.js +15 -1
  240. package/server/bootstrap.js +6 -6
  241. package/admin/src/content-manager/components/DynamicTable/CellContent/Relation/PopoverContent.js +0 -87
  242. package/admin/src/content-manager/components/DynamicTable/CellContent/Relation/index.js +0 -107
  243. package/admin/src/themes/colors.js +0 -51
  244. package/admin/src/themes/fontWeights.js +0 -8
  245. package/admin/src/themes/index.js +0 -13
  246. package/admin/src/themes/sizes.js +0 -31
  247. package/build/4362.d13f7b42.chunk.js +0 -1
  248. package/build/849.17f011e8.chunk.js +0 -1
  249. package/build/9260.fa40c7bd.chunk.js +0 -2
  250. package/build/Admin-authenticatedApp.8766b04d.chunk.js +0 -1
  251. package/build/Admin_homePage.86604515.chunk.js +0 -1
  252. package/build/Admin_marketplace.89a0a014.chunk.js +0 -1
  253. package/build/Admin_pluginsPage.97a514db.chunk.js +0 -1
  254. package/build/Admin_profilePage.c497b39d.chunk.js +0 -1
  255. package/build/Admin_settingsPage.55ec1f30.chunk.js +0 -1
  256. package/build/admin-edit-roles-page.49b6f01d.chunk.js +0 -1
  257. package/build/admin-edit-users.381e4a0d.chunk.js +0 -1
  258. package/build/admin-users.2740c223.chunk.js +0 -1
  259. package/build/api-tokens-create-page.db17bb39.chunk.js +0 -1
  260. package/build/api-tokens-edit-page.c7299a77.chunk.js +0 -1
  261. package/build/api-tokens-list-page.26a05a21.chunk.js +0 -1
  262. package/build/ar-json.6a2565af.chunk.js +0 -1
  263. package/build/content-manager.31be1448.chunk.js +0 -1
  264. package/build/content-type-builder-translation-cs-json.89f7272e.chunk.js +0 -1
  265. package/build/content-type-builder-translation-de-json.0205697c.chunk.js +0 -1
  266. package/build/content-type-builder-translation-dk-json.235ff56e.chunk.js +0 -1
  267. package/build/content-type-builder-translation-en-json.8034dab6.chunk.js +0 -1
  268. package/build/content-type-builder-translation-es-json.13b2e2aa.chunk.js +0 -1
  269. package/build/content-type-builder-translation-fr-json.bee621f7.chunk.js +0 -1
  270. package/build/content-type-builder-translation-id-json.2fbf4f8c.chunk.js +0 -1
  271. package/build/content-type-builder-translation-it-json.a1afd7a9.chunk.js +0 -1
  272. package/build/content-type-builder-translation-ko-json.d2080111.chunk.js +0 -1
  273. package/build/content-type-builder-translation-ms-json.048122eb.chunk.js +0 -1
  274. package/build/content-type-builder-translation-nl-json.8d59e86b.chunk.js +0 -1
  275. package/build/content-type-builder-translation-ru-json.1285874d.chunk.js +0 -1
  276. package/build/content-type-builder-translation-sk-json.0064156b.chunk.js +0 -1
  277. package/build/content-type-builder-translation-th-json.5f690524.chunk.js +0 -1
  278. package/build/content-type-builder-translation-uk-json.87496bf9.chunk.js +0 -1
  279. package/build/content-type-builder-translation-zh-Hans-json.283c640e.chunk.js +0 -1
  280. package/build/content-type-builder-translation-zh-json.77aa2275.chunk.js +0 -1
  281. package/build/content-type-builder.de5d18ad.chunk.js +0 -1
  282. package/build/cs-json.8df09876.chunk.js +0 -1
  283. package/build/de-json.6e14f607.chunk.js +0 -1
  284. package/build/dk-json.be388470.chunk.js +0 -1
  285. package/build/en-json.2bc27a3d.chunk.js +0 -1
  286. package/build/es-json.61553168.chunk.js +0 -1
  287. package/build/fr-json.a9ce0700.chunk.js +0 -1
  288. package/build/he-json.1742494e.chunk.js +0 -1
  289. package/build/hu-json.e667d285.chunk.js +0 -1
  290. package/build/i18n-translation-de-json.c5c9054f.chunk.js +0 -1
  291. package/build/id-json.d87ebb20.chunk.js +0 -1
  292. package/build/it-json.a2880b81.chunk.js +0 -1
  293. package/build/ja-json.e13f04e8.chunk.js +0 -1
  294. package/build/ko-json.2200c9c9.chunk.js +0 -1
  295. package/build/ms-json.3a062984.chunk.js +0 -1
  296. package/build/nl-json.30ce02cb.chunk.js +0 -1
  297. package/build/no-json.9af40e9d.chunk.js +0 -1
  298. package/build/pl-json.fd373053.chunk.js +0 -1
  299. package/build/pt-BR-json.30e2d716.chunk.js +0 -1
  300. package/build/pt-json.3aaf9e05.chunk.js +0 -1
  301. package/build/ru-json.78c56e1c.chunk.js +0 -1
  302. package/build/sk-json.c0bf144c.chunk.js +0 -1
  303. package/build/sso-settings-page.121dd0a6.chunk.js +0 -1
  304. package/build/sv-json.aad187b9.chunk.js +0 -1
  305. package/build/th-json.e2b4a0fb.chunk.js +0 -1
  306. package/build/tr-json.0add11cd.chunk.js +0 -1
  307. package/build/uk-json.eb78e77e.chunk.js +0 -1
  308. package/build/upload-translation-de-json.1308dce5.chunk.js +0 -1
  309. package/build/upload-translation-dk-json.0d4e855f.chunk.js +0 -1
  310. package/build/upload-translation-en-json.c334dd82.chunk.js +0 -1
  311. package/build/upload-translation-es-json.81b13eac.chunk.js +0 -1
  312. package/build/upload-translation-fr-json.1bec79ec.chunk.js +0 -1
  313. package/build/upload-translation-he-json.1d28982f.chunk.js +0 -1
  314. package/build/upload-translation-it-json.7d4bdc5a.chunk.js +0 -1
  315. package/build/upload-translation-ja-json.97fcacd8.chunk.js +0 -1
  316. package/build/upload-translation-ko-json.d7345fe1.chunk.js +0 -1
  317. package/build/upload-translation-ms-json.081effd5.chunk.js +0 -1
  318. package/build/upload-translation-pl-json.2dfe78bb.chunk.js +0 -1
  319. package/build/upload-translation-pt-BR-json.65936d7b.chunk.js +0 -1
  320. package/build/upload-translation-ru-json.2d3b6f69.chunk.js +0 -1
  321. package/build/upload-translation-sk-json.f15c7fd6.chunk.js +0 -1
  322. package/build/upload-translation-th-json.6d3c2370.chunk.js +0 -1
  323. package/build/upload-translation-uk-json.a6c38449.chunk.js +0 -1
  324. package/build/upload-translation-zh-Hans-json.f6b26c45.chunk.js +0 -1
  325. package/build/upload-translation-zh-json.06052336.chunk.js +0 -1
  326. package/build/users-email-settings-page.862eb51e.chunk.js +0 -1
  327. package/build/users-permissions-translation-ar-json.bdddd0d7.chunk.js +0 -1
  328. package/build/users-permissions-translation-cs-json.7881d3ff.chunk.js +0 -1
  329. package/build/users-permissions-translation-de-json.8d53c619.chunk.js +0 -1
  330. package/build/users-permissions-translation-dk-json.89d41c4b.chunk.js +0 -1
  331. package/build/users-permissions-translation-en-json.21b0fd2f.chunk.js +0 -1
  332. package/build/users-permissions-translation-es-json.a4f81eaa.chunk.js +0 -1
  333. package/build/users-permissions-translation-fr-json.a2172545.chunk.js +0 -1
  334. package/build/users-permissions-translation-id-json.8f17982a.chunk.js +0 -1
  335. package/build/users-permissions-translation-it-json.87952a24.chunk.js +0 -1
  336. package/build/users-permissions-translation-ja-json.5915d9ef.chunk.js +0 -1
  337. package/build/users-permissions-translation-ko-json.f1ca6cc4.chunk.js +0 -1
  338. package/build/users-permissions-translation-ms-json.2268324c.chunk.js +0 -1
  339. package/build/users-permissions-translation-nl-json.4e1231dd.chunk.js +0 -1
  340. package/build/users-permissions-translation-pl-json.107638b5.chunk.js +0 -1
  341. package/build/users-permissions-translation-pt-BR-json.8dafc053.chunk.js +0 -1
  342. package/build/users-permissions-translation-pt-json.3322464f.chunk.js +0 -1
  343. package/build/users-permissions-translation-ru-json.5709c5a0.chunk.js +0 -1
  344. package/build/users-permissions-translation-sk-json.fe7cc044.chunk.js +0 -1
  345. package/build/users-permissions-translation-sv-json.e7e1684b.chunk.js +0 -1
  346. package/build/users-permissions-translation-th-json.bb544ee3.chunk.js +0 -1
  347. package/build/users-permissions-translation-tr-json.30f3ca90.chunk.js +0 -1
  348. package/build/users-permissions-translation-uk-json.634f2569.chunk.js +0 -1
  349. package/build/users-permissions-translation-vi-json.605d88bc.chunk.js +0 -1
  350. package/build/users-permissions-translation-zh-Hans-json.85480dab.chunk.js +0 -1
  351. package/build/users-permissions-translation-zh-json.99932731.chunk.js +0 -1
  352. package/build/users-providers-settings-page.368893ed.chunk.js +0 -1
  353. package/build/vi-json.1e850069.chunk.js +0 -1
  354. package/build/webhook-edit-page.d170eda1.chunk.js +0 -1
  355. package/build/zh-Hans-json.55f6475b.chunk.js +0 -1
  356. package/build/zh-json.c3c2b225.chunk.js +0 -1
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import styled from 'styled-components';
4
+ import { Tooltip } from '@strapi/design-system/Tooltip';
5
+ import { Typography } from '@strapi/design-system/Typography';
6
+
7
+ import CellValue from '../CellValue';
8
+
9
+ const TypographyMaxWidth = styled(Typography)`
10
+ max-width: 250px;
11
+ `;
12
+
13
+ const SingleComponentCell = ({ value, metadatas }) => {
14
+ const { mainField } = metadatas;
15
+ const content = value[mainField.name];
16
+
17
+ return (
18
+ <Tooltip label={content}>
19
+ <TypographyMaxWidth textColor="neutral800" ellipsis>
20
+ <CellValue type={mainField.type} value={content} />
21
+ </TypographyMaxWidth>
22
+ </Tooltip>
23
+ );
24
+ };
25
+
26
+ SingleComponentCell.propTypes = {
27
+ metadatas: PropTypes.shape({
28
+ mainField: PropTypes.shape({
29
+ name: PropTypes.string,
30
+ type: PropTypes.string,
31
+ value: PropTypes.string,
32
+ }),
33
+ }).isRequired,
34
+ value: PropTypes.object.isRequired,
35
+ };
36
+
37
+ export default SingleComponentCell;
@@ -4,44 +4,64 @@ import styled from 'styled-components';
4
4
  import { Typography } from '@strapi/design-system/Typography';
5
5
  import Media from './Media';
6
6
  import MultipleMedias from './MultipleMedias';
7
- import Relation from './Relation';
7
+ import RelationMultiple from './RelationMultiple';
8
+ import RelationSingle from './RelationSingle';
9
+ import RepeatableComponent from './RepeatableComponent';
10
+ import SingleComponent from './SingleComponent';
8
11
  import CellValue from './CellValue';
12
+ import hasContent from './utils/hasContent';
13
+ import isSingleRelation from './utils/isSingleRelation';
9
14
 
10
15
  const TypographyMaxWidth = styled(Typography)`
11
16
  max-width: 300px;
12
17
  `;
13
18
 
14
19
  const CellContent = ({ content, fieldSchema, metadatas, name, queryInfos, rowId }) => {
15
- if (content === null || content === undefined) {
20
+ const { type } = fieldSchema;
21
+
22
+ if (!hasContent(type, content, metadatas, fieldSchema)) {
16
23
  return <Typography textColor="neutral800">-</Typography>;
17
24
  }
18
25
 
19
- if (fieldSchema.type === 'media' && !fieldSchema.multiple) {
20
- return <Media {...content} />;
21
- }
26
+ switch (type) {
27
+ case 'media':
28
+ if (!fieldSchema.multiple) {
29
+ return <Media {...content} />;
30
+ }
22
31
 
23
- if (fieldSchema.type === 'media' && fieldSchema.multiple) {
24
- return <MultipleMedias value={content} />;
25
- }
32
+ return <MultipleMedias value={content} />;
26
33
 
27
- if (fieldSchema.type === 'relation') {
28
- return (
29
- <Relation
30
- fieldSchema={fieldSchema}
31
- queryInfos={queryInfos}
32
- metadatas={metadatas}
33
- value={content}
34
- name={name}
35
- rowId={rowId}
36
- />
37
- );
38
- }
34
+ case 'relation': {
35
+ if (isSingleRelation(fieldSchema.relation)) {
36
+ return <RelationSingle metadatas={metadatas} value={content} />;
37
+ }
39
38
 
40
- return (
41
- <TypographyMaxWidth ellipsis textColor="neutral800">
42
- <CellValue type={fieldSchema.type} value={content} />
43
- </TypographyMaxWidth>
44
- );
39
+ return (
40
+ <RelationMultiple
41
+ fieldSchema={fieldSchema}
42
+ queryInfos={queryInfos}
43
+ metadatas={metadatas}
44
+ value={content}
45
+ name={name}
46
+ rowId={rowId}
47
+ />
48
+ );
49
+ }
50
+
51
+ case 'component':
52
+ if (fieldSchema.repeatable === true) {
53
+ return <RepeatableComponent value={content} metadatas={metadatas} />;
54
+ }
55
+
56
+ return <SingleComponent value={content} metadatas={metadatas} />;
57
+
58
+ default:
59
+ return (
60
+ <TypographyMaxWidth ellipsis textColor="neutral800">
61
+ <CellValue type={type} value={content} />
62
+ </TypographyMaxWidth>
63
+ );
64
+ }
45
65
  };
46
66
 
47
67
  CellContent.defaultProps = {
@@ -51,8 +71,13 @@ CellContent.defaultProps = {
51
71
 
52
72
  CellContent.propTypes = {
53
73
  content: PropTypes.any,
54
- fieldSchema: PropTypes.shape({ multiple: PropTypes.bool, type: PropTypes.string.isRequired })
55
- .isRequired,
74
+ fieldSchema: PropTypes.shape({
75
+ component: PropTypes.string,
76
+ multiple: PropTypes.bool,
77
+ type: PropTypes.string.isRequired,
78
+ repeatable: PropTypes.bool,
79
+ relation: PropTypes.string,
80
+ }).isRequired,
56
81
  metadatas: PropTypes.object.isRequired,
57
82
  name: PropTypes.string.isRequired,
58
83
  rowId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
@@ -0,0 +1,29 @@
1
+ import isEmpty from 'lodash/isEmpty';
2
+
3
+ import isSingleRelation from './isSingleRelation';
4
+
5
+ export default function hasContent(type, content, metadatas, fieldSchema) {
6
+ if (type === 'component') {
7
+ const {
8
+ mainField: { name: mainFieldName },
9
+ } = metadatas;
10
+
11
+ // Repeatable fields show the ID as fallback, in case the mainField
12
+ // doesn't have any content
13
+ if (fieldSchema?.repeatable) {
14
+ return content.length > 0;
15
+ }
16
+
17
+ return !isEmpty(content[mainFieldName]);
18
+ }
19
+
20
+ if (type === 'relation') {
21
+ if (isSingleRelation(fieldSchema.relation)) {
22
+ return !isEmpty(content);
23
+ }
24
+
25
+ return content.count > 0;
26
+ }
27
+
28
+ return !isEmpty(content);
29
+ }
@@ -0,0 +1,3 @@
1
+ export default function isSingleRelation(type) {
2
+ return ['oneToOne', 'manyToOne', 'oneToOneMorph'].includes(type);
3
+ }
@@ -148,7 +148,7 @@ const TableRows = ({
148
148
  onClickDelete(data.id);
149
149
  }}
150
150
  label={formatMessage(
151
- { id: 'app.component.table.delete', defaultMessage: 'Delete {target}' },
151
+ { id: 'global.delete-target', defaultMessage: 'Delete {target}' },
152
152
  { target: itemLineText }
153
153
  )}
154
154
  noBorder
@@ -92,7 +92,7 @@ const AccordionGroupCustom = ({ children, footer, label, labelAction, error }) =
92
92
  {error && (
93
93
  <Box paddingTop={1}>
94
94
  <Typography variant="pi" textColor="danger600">
95
- {formatMessage({ id: error.id, defaultMessage: error.id })}
95
+ {formatMessage({ id: error.id, defaultMessage: error.id }, { ...error.values })}
96
96
  </Typography>
97
97
  </Box>
98
98
  )}
@@ -111,6 +111,8 @@ AccordionGroupCustom.propTypes = {
111
111
  children: PropTypes.node.isRequired,
112
112
  error: PropTypes.shape({
113
113
  id: PropTypes.string.isRequired,
114
+ defaultMessage: PropTypes.string.isRequired,
115
+ values: PropTypes.object,
114
116
  }),
115
117
  footer: PropTypes.node,
116
118
  label: PropTypes.string,
@@ -70,7 +70,7 @@ function SelectMany({
70
70
  onMenuOpen={onMenuOpen}
71
71
  onMenuScrollToBottom={onMenuScrollToBottom}
72
72
  placeholder={formatMessage(
73
- placeholder || { id: 'components.Select.placeholder', defaultMessage: 'Select...' }
73
+ placeholder || { id: 'global.select', defaultMessage: 'Select...' }
74
74
  )}
75
75
  styles={styles}
76
76
  value={[]}
@@ -46,7 +46,7 @@ function SelectOne({
46
46
  onMenuOpen={onMenuOpen}
47
47
  onMenuScrollToBottom={onMenuScrollToBottom}
48
48
  placeholder={formatMessage(
49
- placeholder || { id: 'components.Select.placeholder', defaultMessage: 'Select...' }
49
+ placeholder || { id: 'global.select', defaultMessage: 'Select...' }
50
50
  )}
51
51
  styles={styles}
52
52
  value={isNull(value) ? null : { label: get(value, [mainField.name], ''), value }}
@@ -49,6 +49,8 @@ const getSelectStyles = theme => {
49
49
  ...base,
50
50
  width: '100%',
51
51
  marginTop: theme.spaces[1],
52
+ backgroundColor: theme.colors.neutral0,
53
+ color: theme.colors.neutral800,
52
54
  borderRadius: '4px !important',
53
55
  borderTopLeftRadius: '4px !important',
54
56
  borderTopRightRadius: '4px !important',
@@ -76,7 +78,7 @@ const getSelectStyles = theme => {
76
78
  return { ...base, lineHeight: theme.spaces[5], backgroundColor, borderRadius: 4 };
77
79
  },
78
80
  placeholder: base => ({ ...base, marginLeft: 0 }),
79
- singleValue: base => ({ ...base, marginLeft: 0 }),
81
+ singleValue: base => ({ ...base, marginLeft: 0, color: theme.colors.neutral800 }),
80
82
  valueContainer: base => ({
81
83
  ...base,
82
84
  padding: 0,
@@ -29,7 +29,8 @@ export const EditorStylesContainer = styled.div`
29
29
 
30
30
  .CodeMirror-scrollbar-filler,
31
31
  .CodeMirror-gutter-filler {
32
- background-color: white; /* The little square between H and V scrollbars */
32
+ /* The little square between H and V scrollbars */
33
+ background-color: ${({ theme }) => `${theme.colors.neutral0}`};
33
34
  }
34
35
 
35
36
  /* GUTTER */
@@ -158,7 +159,7 @@ export const EditorStylesContainer = styled.div`
158
159
  .CodeMirror {
159
160
  position: relative;
160
161
  overflow: hidden;
161
- background: white;
162
+ background: ${({ theme }) => `${theme.colors.neutral0}`};
162
163
  }
163
164
 
164
165
  .CodeMirror-scroll {
@@ -292,6 +293,7 @@ export const EditorStylesContainer = styled.div`
292
293
  .CodeMirror-cursor {
293
294
  position: absolute;
294
295
  pointer-events: none;
296
+ border-color: ${({ theme }) => `${theme.colors.neutral800}`};
295
297
  }
296
298
  .CodeMirror-measure pre {
297
299
  position: static;
@@ -40,7 +40,7 @@ const formatLayouts = (initialData, models) => {
40
40
  const formattedCTEditLayout = formatLayoutWithMetas(data.contentType, null, models);
41
41
  const ctUid = data.contentType.uid;
42
42
  const formattedEditRelationsLayout = formatEditRelationsLayoutWithMetas(data.contentType, models);
43
- const formattedListLayout = formatListLayoutWithMetas(data.contentType, models);
43
+ const formattedListLayout = formatListLayoutWithMetas(data.contentType, data.components);
44
44
 
45
45
  set(data, ['contentType', 'layouts', 'edit'], formattedCTEditLayout);
46
46
  set(data, ['contentType', 'layouts', 'editRelations'], formattedEditRelationsLayout);
@@ -146,7 +146,7 @@ const formatLayoutWithMetas = (contentTypeConfiguration, ctUid, models) => {
146
146
  return formatted;
147
147
  };
148
148
 
149
- const formatListLayoutWithMetas = contentTypeConfiguration => {
149
+ const formatListLayoutWithMetas = (contentTypeConfiguration, components) => {
150
150
  const formatted = contentTypeConfiguration.layouts.list.reduce((acc, current) => {
151
151
  const fieldSchema = get(contentTypeConfiguration, ['attributes', current], {});
152
152
  const metadatas = get(contentTypeConfiguration, ['metadatas', current, 'list'], {});
@@ -164,6 +164,27 @@ const formatListLayoutWithMetas = contentTypeConfiguration => {
164
164
  return acc;
165
165
  }
166
166
 
167
+ if (type === 'component') {
168
+ const component = components[fieldSchema.component];
169
+ const mainFieldName = component.settings.mainField;
170
+ const mainFieldAttribute = component.attributes[mainFieldName];
171
+
172
+ acc.push({
173
+ key: `__${current}_key__`,
174
+ name: current,
175
+ fieldSchema,
176
+ metadatas: {
177
+ ...metadatas,
178
+ mainField: {
179
+ ...mainFieldAttribute,
180
+ name: mainFieldName,
181
+ },
182
+ },
183
+ });
184
+
185
+ return acc;
186
+ }
187
+
167
188
  acc.push({ key: `__${current}_key__`, name: current, fieldSchema, metadatas });
168
189
 
169
190
  return acc;
@@ -44,7 +44,7 @@ const FieldButtonContent = ({ attribute, onEditField, onDeleteField, children })
44
44
  <CustomIconButton
45
45
  label={formatMessage(
46
46
  {
47
- id: getTrad('app.component.table.delete'),
47
+ id: 'global.delete-target',
48
48
  defaultMessage: `Delete {target}`,
49
49
  },
50
50
  {
@@ -72,7 +72,7 @@ const FormModal = ({ onToggle, onMetaChange, onSizeChange, onSubmit, type }) =>
72
72
  }
73
73
  endActions={
74
74
  <Button type="submit">
75
- {formatMessage({ id: 'form.button.finish', defaultMessage: 'Finish' })}
75
+ {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}
76
76
  </Button>
77
77
  }
78
78
  />
@@ -250,7 +250,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
250
250
  to="/"
251
251
  >
252
252
  {formatMessage({
253
- id: 'app.components.go-back',
253
+ id: 'global.back',
254
254
  defaultMessage: 'Back',
255
255
  })}
256
256
  </Link>
@@ -261,7 +261,7 @@ const EditSettingsView = ({ mainLayout, components, isContentTypeView, slug, upd
261
261
  startIcon={<Check />}
262
262
  type="submit"
263
263
  >
264
- {formatMessage({ id: 'form.button.save', defaultMessage: 'Save' })}
264
+ {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}
265
265
  </Button>
266
266
  }
267
267
  />
@@ -172,7 +172,7 @@ const Header = ({
172
172
  to="/"
173
173
  >
174
174
  {formatMessage({
175
- id: 'app.components.HeaderLayout.link.go-back',
175
+ id: 'global.back',
176
176
  defaultMessage: 'Back',
177
177
  })}
178
178
  </Link>
@@ -113,7 +113,7 @@ const EditFieldForm = ({
113
113
  }
114
114
  endActions={
115
115
  <Button type="submit">
116
- {formatMessage({ id: 'form.button.finish', defaultMessage: 'Finish' })}
116
+ {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}
117
117
  </Button>
118
118
  }
119
119
  />
@@ -191,7 +191,7 @@ const ListSettingsView = ({ layout, slug }) => {
191
191
  <HeaderLayout
192
192
  navigationAction={
193
193
  <Link startIcon={<ArrowLeft />} to={goBackUrl} id="go-back">
194
- {formatMessage({ id: 'app.components.go-back', defaultMessage: 'Back' })}
194
+ {formatMessage({ id: 'global.back', defaultMessage: 'Back' })}
195
195
  </Link>
196
196
  }
197
197
  primaryAction={
@@ -201,7 +201,7 @@ const ListSettingsView = ({ layout, slug }) => {
201
201
  disabled={isEqual(modifiedData, initialData)}
202
202
  type="submit"
203
203
  >
204
- {formatMessage({ id: 'form.button.save', defaultMessage: 'Save' })}
204
+ {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}
205
205
  </Button>
206
206
  }
207
207
  subtitle={formatMessage({
@@ -21,11 +21,12 @@ export function resetProps() {
21
21
  return { type: RESET_PROPS };
22
22
  }
23
23
 
24
- export const setLayout = contentType => {
24
+ export const setLayout = ({ components, contentType }) => {
25
25
  const { layouts } = contentType;
26
26
 
27
27
  return {
28
28
  contentType,
29
+ components,
29
30
  displayedHeaders: layouts.list,
30
31
  type: SET_LIST_LAYOUT,
31
32
  };
@@ -267,7 +267,7 @@ function ListView({
267
267
  navigationAction={
268
268
  <Link startIcon={<ArrowLeft />} to="/content-manager/">
269
269
  {formatMessage({
270
- id: 'app.components.HeaderLayout.link.go-back',
270
+ id: 'global.back',
271
271
  defaultMessage: 'Back',
272
272
  })}
273
273
  </Link>
@@ -388,9 +388,6 @@ export function mapDispatchToProps(dispatch) {
388
388
  dispatch
389
389
  );
390
390
  }
391
- const withConnect = connect(
392
- mapStateToProps,
393
- mapDispatchToProps
394
- );
391
+ const withConnect = connect(mapStateToProps, mapDispatchToProps);
395
392
 
396
393
  export default compose(withConnect)(memo(ListView, isEqual));
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import produce from 'immer';
7
+ import get from 'lodash/get';
7
8
  import {
8
9
  GET_DATA,
9
10
  GET_DATA_SUCCEEDED,
@@ -17,6 +18,7 @@ export const initialState = {
17
18
  data: [],
18
19
  isLoading: true,
19
20
  contentType: {},
21
+ components: [],
20
22
  initialDisplayedHeaders: [],
21
23
  displayedHeaders: [],
22
24
  pagination: {
@@ -26,21 +28,22 @@ export const initialState = {
26
28
 
27
29
  const listViewReducer = (state = initialState, action) =>
28
30
  // eslint-disable-next-line consistent-return
29
- produce(state, drafState => {
31
+ produce(state, draftState => {
30
32
  switch (action.type) {
31
33
  case GET_DATA: {
32
34
  return {
33
35
  ...initialState,
34
36
  contentType: state.contentType,
37
+ components: state.components,
35
38
  initialDisplayedHeaders: state.initialDisplayedHeaders,
36
39
  displayedHeaders: state.displayedHeaders,
37
40
  };
38
41
  }
39
42
 
40
43
  case GET_DATA_SUCCEEDED: {
41
- drafState.pagination = action.pagination;
42
- drafState.data = action.data;
43
- drafState.isLoading = false;
44
+ draftState.pagination = action.pagination;
45
+ draftState.data = action.data;
46
+ draftState.isLoading = false;
44
47
  break;
45
48
  }
46
49
 
@@ -59,19 +62,49 @@ const listViewReducer = (state = initialState, action) =>
59
62
  key: `__${name}_key__`,
60
63
  };
61
64
 
62
- if (attributes[name].type === 'relation') {
63
- drafState.displayedHeaders.push({
64
- ...header,
65
- queryInfos: {
66
- defaultParams: {},
67
- endPoint: `collection-types/${uid}`,
68
- },
69
- });
70
- } else {
71
- drafState.displayedHeaders.push(header);
65
+ switch (attributes[name].type) {
66
+ case 'component': {
67
+ const componentName = attributes[name].component;
68
+ const mainFieldName = get(
69
+ state,
70
+ ['components', componentName, 'settings', 'mainField'],
71
+ null
72
+ );
73
+ const mainFieldAttribute = get(state, [
74
+ 'components',
75
+ componentName,
76
+ 'attributes',
77
+ mainFieldName,
78
+ ]);
79
+
80
+ draftState.displayedHeaders.push({
81
+ ...header,
82
+ metadatas: {
83
+ ...metas,
84
+ mainField: {
85
+ ...mainFieldAttribute,
86
+ name: mainFieldName,
87
+ },
88
+ },
89
+ });
90
+ break;
91
+ }
92
+
93
+ case 'relation':
94
+ draftState.displayedHeaders.push({
95
+ ...header,
96
+ queryInfos: {
97
+ defaultParams: {},
98
+ endPoint: `collection-types/${uid}`,
99
+ },
100
+ });
101
+ break;
102
+
103
+ default:
104
+ draftState.displayedHeaders.push(header);
72
105
  }
73
106
  } else {
74
- drafState.displayedHeaders = state.displayedHeaders.filter(
107
+ draftState.displayedHeaders = state.displayedHeaders.filter(
75
108
  header => header.name !== name
76
109
  );
77
110
  }
@@ -79,23 +112,24 @@ const listViewReducer = (state = initialState, action) =>
79
112
  break;
80
113
  }
81
114
  case ON_RESET_LIST_HEADERS: {
82
- drafState.displayedHeaders = state.initialDisplayedHeaders;
115
+ draftState.displayedHeaders = state.initialDisplayedHeaders;
83
116
  break;
84
117
  }
85
118
  case RESET_PROPS: {
86
119
  return initialState;
87
120
  }
88
121
  case SET_LIST_LAYOUT: {
89
- const { contentType, displayedHeaders } = action;
122
+ const { contentType, components, displayedHeaders } = action;
90
123
 
91
- drafState.contentType = contentType;
92
- drafState.displayedHeaders = displayedHeaders;
93
- drafState.initialDisplayedHeaders = displayedHeaders;
124
+ draftState.contentType = contentType;
125
+ draftState.components = components;
126
+ draftState.displayedHeaders = displayedHeaders;
127
+ draftState.initialDisplayedHeaders = displayedHeaders;
94
128
 
95
129
  break;
96
130
  }
97
131
  default:
98
- return drafState;
132
+ return draftState;
99
133
  }
100
134
  });
101
135
 
@@ -21,7 +21,7 @@ const ListViewLayout = ({ layout, ...props }) => {
21
21
  }, [rawQuery, replace, redirectionLink]);
22
22
 
23
23
  useEffect(() => {
24
- dispatch(setLayout(layout.contentType));
24
+ dispatch(setLayout(layout));
25
25
  }, [dispatch, layout]);
26
26
 
27
27
  useEffect(() => {
@@ -7,7 +7,7 @@ const checkIfAttributeIsDisplayable = attribute => {
7
7
  return !toLower(attribute.relationType).includes('morph');
8
8
  }
9
9
 
10
- return !['json', 'component', 'dynamiczone', 'richtext', 'password'].includes(type) && !!type;
10
+ return !['json', 'dynamiczone', 'richtext', 'password'].includes(type) && !!type;
11
11
  };
12
12
 
13
13
  export default checkIfAttributeIsDisplayable;
@@ -0,0 +1,5 @@
1
+ import { createContext } from 'react';
2
+
3
+ const ThemeToggleContext = createContext({});
4
+
5
+ export default ThemeToggleContext;
@@ -1,3 +1,4 @@
1
1
  export { default as AdminContext } from './Admin';
2
2
  export { default as ConfigurationsContext } from './Configurations';
3
3
  export { default as PermissionsDataManagerContext } from './PermisssionsDataManagerContext';
4
+ export { default as ThemeToggleContext } from './ThemeToggle';
@@ -8,3 +8,4 @@ export { default as useSettingsMenu } from './useSettingsMenu';
8
8
  export { default as useSettingsForm } from './useSettingsForm';
9
9
  export { default as usePermissionsDataManager } from './usePermissionsDataManager';
10
10
  export { default as useReleaseNotification } from './useReleaseNotification';
11
+ export { default as useThemeToggle } from './useThemeToggle';
@@ -10,7 +10,7 @@ const initialState = {
10
10
  {
11
11
  icon: Puzzle,
12
12
  intlLabel: {
13
- id: 'app.components.LeftMenuLinkContainer.listPlugins',
13
+ id: 'global.plugins',
14
14
  defaultMessage: 'Plugins',
15
15
  },
16
16
  to: '/list-plugins',
@@ -19,7 +19,7 @@ const initialState = {
19
19
  {
20
20
  icon: ShoppingCart,
21
21
  intlLabel: {
22
- id: 'app.components.LeftMenuLinkContainer.installNewPlugin',
22
+ id: 'global.marketplace',
23
23
  defaultMessage: 'Marketplace',
24
24
  },
25
25
  to: '/marketplace',
@@ -28,7 +28,7 @@ const initialState = {
28
28
  {
29
29
  icon: Cog,
30
30
  intlLabel: {
31
- id: 'app.components.LeftMenuLinkContainer.settings',
31
+ id: 'global.settings',
32
32
  defaultMessage: 'Settings',
33
33
  },
34
34
  to: '/settings',
@@ -15,7 +15,7 @@ const useReleaseNotification = () => {
15
15
  link: {
16
16
  url: `https://github.com/strapi/strapi/releases/tag/${latestStrapiReleaseTag}`,
17
17
  label: {
18
- id: 'notification.version.update.link',
18
+ id: 'global.see-more',
19
19
  },
20
20
  },
21
21
  blockTransition: true,