strapi-plugin-navigation 2.3.2 → 2.4.0

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 (376) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +844 -0
  3. package/admin/src/components/AdditionalFieldInput/index.d.ts +2 -2
  4. package/admin/src/components/AdditionalFieldInput/index.js +36 -8
  5. package/admin/src/components/AdditionalFieldInput/types.d.ts +1 -1
  6. package/admin/src/components/DragButton/index.d.ts +3 -1
  7. package/admin/src/components/DragButton/index.js +2 -1
  8. package/admin/src/components/Item/ItemCardHeader/index.d.ts +1 -0
  9. package/admin/src/components/Item/ItemCardHeader/index.js +10 -5
  10. package/admin/src/components/Item/index.js +24 -4
  11. package/admin/src/components/NavigationItemList/index.js +1 -1
  12. package/admin/src/components/Search/index.d.ts +10 -4
  13. package/admin/src/components/Search/index.js +45 -6
  14. package/admin/src/components/TextArrayInput/index.d.ts +2 -1
  15. package/admin/src/pages/SettingsPage/common/const.d.ts +2 -0
  16. package/admin/src/pages/SettingsPage/common/const.js +5 -0
  17. package/admin/src/pages/SettingsPage/common/index.d.ts +2 -0
  18. package/admin/src/pages/SettingsPage/common/index.js +18 -0
  19. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js +27 -12
  20. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js +1 -1
  21. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts +2 -3
  22. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js +12 -14
  23. package/admin/src/pages/SettingsPage/index.js +3 -2
  24. package/admin/src/pages/SettingsPage/utils/form.js +2 -1
  25. package/admin/src/pages/View/components/NavigationItemForm/index.js +49 -19
  26. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts +2 -1
  27. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js +2 -0
  28. package/admin/src/pages/View/index.js +20 -10
  29. package/admin/src/pages/View/utils/form.d.ts +1 -1
  30. package/admin/src/pages/View/utils/types.d.ts +3 -0
  31. package/admin/src/pages/View/utils/types.js +3 -0
  32. package/admin/src/translations/ca.json +1 -0
  33. package/admin/src/translations/en.json +3 -0
  34. package/admin/src/translations/fr.json +1 -0
  35. package/admin/src/utils/api.js +1 -1
  36. package/package.json +76 -101
  37. package/server/content-types/index.d.ts +2 -0
  38. package/server/content-types/navigation/index.d.ts +1 -0
  39. package/server/content-types/navigation/index.js +3 -1
  40. package/server/content-types/navigation/lifecycles.d.ts +3 -0
  41. package/server/content-types/navigation/lifecycles.js +7 -0
  42. package/server/content-types/navigation-item/index.d.ts +1 -0
  43. package/server/content-types/navigation-item/index.js +3 -1
  44. package/server/content-types/navigation-item/lifecycles.d.ts +3 -0
  45. package/server/content-types/navigation-item/lifecycles.js +7 -0
  46. package/server/controllers/admin.js +19 -16
  47. package/server/controllers/client.js +2 -2
  48. package/server/graphql/queries/render-navigation-child.d.ts +1 -1
  49. package/server/graphql/queries/render-navigation.d.ts +1 -1
  50. package/server/graphql/types/index.js +1 -0
  51. package/server/graphql/types/navigation-item-additional-field-media.d.ts +5 -0
  52. package/server/graphql/types/navigation-item-additional-field-media.js +13 -0
  53. package/server/graphql/types/navigation-item.js +3 -0
  54. package/server/i18n/utils.d.ts +1 -0
  55. package/server/i18n/utils.js +4 -0
  56. package/server/index.d.ts +2 -0
  57. package/server/services/admin.js +18 -8
  58. package/server/services/client.js +42 -11
  59. package/server/services/common.js +16 -0
  60. package/server/utils/constant.d.ts +3 -0
  61. package/server/utils/constant.js +21 -1
  62. package/server/utils/functions.d.ts +11 -3
  63. package/server/utils/functions.js +21 -3
  64. package/strapi-server.d.ts +2 -0
  65. package/tsconfig.tsbuildinfo +1 -1
  66. package/types/contentTypes.d.ts +7 -2
  67. package/types/controllers.d.ts +4 -3
  68. package/types/index.d.ts +1 -0
  69. package/types/index.js +1 -0
  70. package/types/lifecycle.d.ts +22 -0
  71. package/types/lifecycle.js +3 -0
  72. package/types/services.d.ts +13 -1
  73. package/__mocks__/strapi.d.ts +0 -3
  74. package/__mocks__/strapi.d.ts.map +0 -1
  75. package/__mocks__/strapi.js +0 -206
  76. package/__mocks__/strapi.js.map +0 -1
  77. package/admin/src/components/AdditionalFieldInput/index.d.ts.map +0 -1
  78. package/admin/src/components/AdditionalFieldInput/index.js.map +0 -1
  79. package/admin/src/components/AdditionalFieldInput/types.d.ts.map +0 -1
  80. package/admin/src/components/AdditionalFieldInput/types.js.map +0 -1
  81. package/admin/src/components/Alert/styles.d.ts.map +0 -1
  82. package/admin/src/components/Alert/styles.js.map +0 -1
  83. package/admin/src/components/CollapseButton/index.d.ts.map +0 -1
  84. package/admin/src/components/CollapseButton/index.js.map +0 -1
  85. package/admin/src/components/ConfirmationDialog/index.d.ts.map +0 -1
  86. package/admin/src/components/ConfirmationDialog/index.js.map +0 -1
  87. package/admin/src/components/DragButton/index.d.ts.map +0 -1
  88. package/admin/src/components/DragButton/index.js.map +0 -1
  89. package/admin/src/components/EmptyView/index.d.ts.map +0 -1
  90. package/admin/src/components/EmptyView/index.js.map +0 -1
  91. package/admin/src/components/Item/ItemCardBadge/index.d.ts.map +0 -1
  92. package/admin/src/components/Item/ItemCardBadge/index.js.map +0 -1
  93. package/admin/src/components/Item/ItemCardHeader/Wrapper.d.ts.map +0 -1
  94. package/admin/src/components/Item/ItemCardHeader/Wrapper.js.map +0 -1
  95. package/admin/src/components/Item/ItemCardHeader/icons.d.ts.map +0 -1
  96. package/admin/src/components/Item/ItemCardHeader/icons.js.map +0 -1
  97. package/admin/src/components/Item/ItemCardHeader/index.d.ts.map +0 -1
  98. package/admin/src/components/Item/ItemCardHeader/index.js.map +0 -1
  99. package/admin/src/components/Item/ItemCardRemovedOverlay/index.d.ts.map +0 -1
  100. package/admin/src/components/Item/ItemCardRemovedOverlay/index.js.map +0 -1
  101. package/admin/src/components/Item/Wrapper.d.ts.map +0 -1
  102. package/admin/src/components/Item/Wrapper.js.map +0 -1
  103. package/admin/src/components/Item/index.d.ts.map +0 -1
  104. package/admin/src/components/Item/index.js.map +0 -1
  105. package/admin/src/components/NavigationItemList/Wrapper.d.ts.map +0 -1
  106. package/admin/src/components/NavigationItemList/Wrapper.js.map +0 -1
  107. package/admin/src/components/NavigationItemList/index.d.ts.map +0 -1
  108. package/admin/src/components/NavigationItemList/index.js.map +0 -1
  109. package/admin/src/components/RestartAlert/index.d.ts.map +0 -1
  110. package/admin/src/components/RestartAlert/index.js.map +0 -1
  111. package/admin/src/components/Search/index.d.ts.map +0 -1
  112. package/admin/src/components/Search/index.js.map +0 -1
  113. package/admin/src/components/TextArrayInput/index.d.ts.map +0 -1
  114. package/admin/src/components/TextArrayInput/index.js.map +0 -1
  115. package/admin/src/components/icons/navigation.d.ts.map +0 -1
  116. package/admin/src/components/icons/navigation.js.map +0 -1
  117. package/admin/src/contexts/DataManagerContext.d.ts.map +0 -1
  118. package/admin/src/contexts/DataManagerContext.js.map +0 -1
  119. package/admin/src/hooks/useAllContentTypes.d.ts.map +0 -1
  120. package/admin/src/hooks/useAllContentTypes.js.map +0 -1
  121. package/admin/src/hooks/useDataManager.d.ts.map +0 -1
  122. package/admin/src/hooks/useDataManager.js.map +0 -1
  123. package/admin/src/hooks/useI18nCopyNavigationItemsModal.d.ts.map +0 -1
  124. package/admin/src/hooks/useI18nCopyNavigationItemsModal.js.map +0 -1
  125. package/admin/src/hooks/useNavigationConfig.d.ts.map +0 -1
  126. package/admin/src/hooks/useNavigationConfig.js.map +0 -1
  127. package/admin/src/hooks/useNavigationManager.d.ts.map +0 -1
  128. package/admin/src/hooks/useNavigationManager.js.map +0 -1
  129. package/admin/src/index.d.ts.map +0 -1
  130. package/admin/src/index.js.map +0 -1
  131. package/admin/src/pages/App/index.d.ts.map +0 -1
  132. package/admin/src/pages/App/index.js.map +0 -1
  133. package/admin/src/pages/DataManagerProvider/actions.d.ts.map +0 -1
  134. package/admin/src/pages/DataManagerProvider/actions.js.map +0 -1
  135. package/admin/src/pages/DataManagerProvider/index.d.ts.map +0 -1
  136. package/admin/src/pages/DataManagerProvider/index.js.map +0 -1
  137. package/admin/src/pages/DataManagerProvider/init.d.ts.map +0 -1
  138. package/admin/src/pages/DataManagerProvider/init.js.map +0 -1
  139. package/admin/src/pages/DataManagerProvider/reducer.d.ts.map +0 -1
  140. package/admin/src/pages/DataManagerProvider/reducer.js.map +0 -1
  141. package/admin/src/pages/NoAccessPage/index.d.ts.map +0 -1
  142. package/admin/src/pages/NoAccessPage/index.js.map +0 -1
  143. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.d.ts.map +0 -1
  144. package/admin/src/pages/SettingsPage/components/CustomFieldForm/index.js.map +0 -1
  145. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.d.ts.map +0 -1
  146. package/admin/src/pages/SettingsPage/components/CustomFieldModal/index.js.map +0 -1
  147. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.d.ts.map +0 -1
  148. package/admin/src/pages/SettingsPage/components/CustomFieldTable/index.js.map +0 -1
  149. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.d.ts.map +0 -1
  150. package/admin/src/pages/SettingsPage/components/DisableI18nModal/index.js.map +0 -1
  151. package/admin/src/pages/SettingsPage/index.d.ts.map +0 -1
  152. package/admin/src/pages/SettingsPage/index.js.map +0 -1
  153. package/admin/src/pages/SettingsPage/types.d.ts.map +0 -1
  154. package/admin/src/pages/SettingsPage/types.js.map +0 -1
  155. package/admin/src/pages/SettingsPage/utils/form.d.ts.map +0 -1
  156. package/admin/src/pages/SettingsPage/utils/form.js.map +0 -1
  157. package/admin/src/pages/SettingsPage/utils/functions.d.ts.map +0 -1
  158. package/admin/src/pages/SettingsPage/utils/functions.js.map +0 -1
  159. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.d.ts.map +0 -1
  160. package/admin/src/pages/View/components/I18nCopyNavigationItems/index.js.map +0 -1
  161. package/admin/src/pages/View/components/NavigationContentHeader/index.d.ts.map +0 -1
  162. package/admin/src/pages/View/components/NavigationContentHeader/index.js.map +0 -1
  163. package/admin/src/pages/View/components/NavigationHeader/index.d.ts.map +0 -1
  164. package/admin/src/pages/View/components/NavigationHeader/index.js.map +0 -1
  165. package/admin/src/pages/View/components/NavigationHeader/styles.d.ts.map +0 -1
  166. package/admin/src/pages/View/components/NavigationHeader/styles.js.map +0 -1
  167. package/admin/src/pages/View/components/NavigationItemForm/index.d.ts.map +0 -1
  168. package/admin/src/pages/View/components/NavigationItemForm/index.js.map +0 -1
  169. package/admin/src/pages/View/components/NavigationItemForm/types.d.ts.map +0 -1
  170. package/admin/src/pages/View/components/NavigationItemForm/types.js.map +0 -1
  171. package/admin/src/pages/View/components/NavigationItemForm/utils/form.d.ts.map +0 -1
  172. package/admin/src/pages/View/components/NavigationItemForm/utils/form.js.map +0 -1
  173. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.d.ts.map +0 -1
  174. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupFooter.js.map +0 -1
  175. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.d.ts.map +0 -1
  176. package/admin/src/pages/View/components/NavigationItemPopup/NavigationItemPopupHeader.js.map +0 -1
  177. package/admin/src/pages/View/components/NavigationItemPopup/index.d.ts.map +0 -1
  178. package/admin/src/pages/View/components/NavigationItemPopup/index.js.map +0 -1
  179. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.d.ts.map +0 -1
  180. package/admin/src/pages/View/components/NavigationManager/AllNavigations/icons.js.map +0 -1
  181. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.d.ts.map +0 -1
  182. package/admin/src/pages/View/components/NavigationManager/AllNavigations/index.js.map +0 -1
  183. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.d.ts.map +0 -1
  184. package/admin/src/pages/View/components/NavigationManager/DeletionConfirm/index.js.map +0 -1
  185. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.d.ts.map +0 -1
  186. package/admin/src/pages/View/components/NavigationManager/ErrorDetails/index.js.map +0 -1
  187. package/admin/src/pages/View/components/NavigationManager/Footer/index.d.ts.map +0 -1
  188. package/admin/src/pages/View/components/NavigationManager/Footer/index.js.map +0 -1
  189. package/admin/src/pages/View/components/NavigationManager/Form/index.d.ts.map +0 -1
  190. package/admin/src/pages/View/components/NavigationManager/Form/index.js.map +0 -1
  191. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.d.ts.map +0 -1
  192. package/admin/src/pages/View/components/NavigationManager/NavigationUpdate/index.js.map +0 -1
  193. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.d.ts.map +0 -1
  194. package/admin/src/pages/View/components/NavigationManager/NewNavigation/index.js.map +0 -1
  195. package/admin/src/pages/View/components/NavigationManager/index.d.ts.map +0 -1
  196. package/admin/src/pages/View/components/NavigationManager/index.js.map +0 -1
  197. package/admin/src/pages/View/components/NavigationManager/types.d.ts.map +0 -1
  198. package/admin/src/pages/View/components/NavigationManager/types.js.map +0 -1
  199. package/admin/src/pages/View/index.d.ts.map +0 -1
  200. package/admin/src/pages/View/index.js.map +0 -1
  201. package/admin/src/pages/View/utils/form.d.ts.map +0 -1
  202. package/admin/src/pages/View/utils/form.js.map +0 -1
  203. package/admin/src/pages/View/utils/index.d.ts.map +0 -1
  204. package/admin/src/pages/View/utils/index.js.map +0 -1
  205. package/admin/src/pages/View/utils/parsers.d.ts.map +0 -1
  206. package/admin/src/pages/View/utils/parsers.js.map +0 -1
  207. package/admin/src/permissions.d.ts.map +0 -1
  208. package/admin/src/permissions.js.map +0 -1
  209. package/admin/src/pluginId.d.ts.map +0 -1
  210. package/admin/src/pluginId.js.map +0 -1
  211. package/admin/src/translations/index.d.ts.map +0 -1
  212. package/admin/src/translations/index.js.map +0 -1
  213. package/admin/src/utils/api.d.ts.map +0 -1
  214. package/admin/src/utils/api.js.map +0 -1
  215. package/admin/src/utils/enums.d.ts.map +0 -1
  216. package/admin/src/utils/enums.js.map +0 -1
  217. package/admin/src/utils/functions.d.ts.map +0 -1
  218. package/admin/src/utils/functions.js.map +0 -1
  219. package/admin/src/utils/index.d.ts.map +0 -1
  220. package/admin/src/utils/index.js.map +0 -1
  221. package/permissions.d.ts.map +0 -1
  222. package/permissions.js.map +0 -1
  223. package/server/bootstrap/index.d.ts.map +0 -1
  224. package/server/bootstrap/index.js.map +0 -1
  225. package/server/config/index.d.ts.map +0 -1
  226. package/server/config/index.js.map +0 -1
  227. package/server/config/setupStrategy.d.ts.map +0 -1
  228. package/server/config/setupStrategy.js.map +0 -1
  229. package/server/content-types/audience/index.d.ts.map +0 -1
  230. package/server/content-types/audience/index.js.map +0 -1
  231. package/server/content-types/audience/schema.d.ts.map +0 -1
  232. package/server/content-types/audience/schema.js.map +0 -1
  233. package/server/content-types/index.d.ts.map +0 -1
  234. package/server/content-types/index.js.map +0 -1
  235. package/server/content-types/navigation/index.d.ts.map +0 -1
  236. package/server/content-types/navigation/index.js.map +0 -1
  237. package/server/content-types/navigation/schema.d.ts.map +0 -1
  238. package/server/content-types/navigation/schema.js.map +0 -1
  239. package/server/content-types/navigation-item/index.d.ts.map +0 -1
  240. package/server/content-types/navigation-item/index.js.map +0 -1
  241. package/server/content-types/navigation-item/schema.d.ts.map +0 -1
  242. package/server/content-types/navigation-item/schema.js.map +0 -1
  243. package/server/content-types/navigations-items-related/index.d.ts.map +0 -1
  244. package/server/content-types/navigations-items-related/index.js.map +0 -1
  245. package/server/content-types/navigations-items-related/schema.d.ts.map +0 -1
  246. package/server/content-types/navigations-items-related/schema.js.map +0 -1
  247. package/server/controllers/admin.d.ts.map +0 -1
  248. package/server/controllers/admin.js.map +0 -1
  249. package/server/controllers/client.d.ts.map +0 -1
  250. package/server/controllers/client.js.map +0 -1
  251. package/server/controllers/index.d.ts.map +0 -1
  252. package/server/controllers/index.js.map +0 -1
  253. package/server/destroy.d.ts.map +0 -1
  254. package/server/destroy.js.map +0 -1
  255. package/server/graphql/config.d.ts.map +0 -1
  256. package/server/graphql/config.js.map +0 -1
  257. package/server/graphql/index.d.ts.map +0 -1
  258. package/server/graphql/index.js.map +0 -1
  259. package/server/graphql/queries/index.d.ts.map +0 -1
  260. package/server/graphql/queries/index.js.map +0 -1
  261. package/server/graphql/queries/render-navigation-child.d.ts.map +0 -1
  262. package/server/graphql/queries/render-navigation-child.js.map +0 -1
  263. package/server/graphql/queries/render-navigation.d.ts.map +0 -1
  264. package/server/graphql/queries/render-navigation.js.map +0 -1
  265. package/server/graphql/resolvers-config.d.ts.map +0 -1
  266. package/server/graphql/resolvers-config.js.map +0 -1
  267. package/server/graphql/setupStrategy.d.ts.map +0 -1
  268. package/server/graphql/setupStrategy.js.map +0 -1
  269. package/server/graphql/types/content-types-name-fields.d.ts.map +0 -1
  270. package/server/graphql/types/content-types-name-fields.js.map +0 -1
  271. package/server/graphql/types/content-types.d.ts.map +0 -1
  272. package/server/graphql/types/content-types.js.map +0 -1
  273. package/server/graphql/types/create-navigation-item.d.ts.map +0 -1
  274. package/server/graphql/types/create-navigation-item.js.map +0 -1
  275. package/server/graphql/types/create-navigation-related.d.ts.map +0 -1
  276. package/server/graphql/types/create-navigation-related.js.map +0 -1
  277. package/server/graphql/types/create-navigation.d.ts.map +0 -1
  278. package/server/graphql/types/create-navigation.js.map +0 -1
  279. package/server/graphql/types/index.d.ts.map +0 -1
  280. package/server/graphql/types/index.js.map +0 -1
  281. package/server/graphql/types/navigation-config.d.ts.map +0 -1
  282. package/server/graphql/types/navigation-config.js.map +0 -1
  283. package/server/graphql/types/navigation-details.d.ts.map +0 -1
  284. package/server/graphql/types/navigation-details.js.map +0 -1
  285. package/server/graphql/types/navigation-item-related-data.d.ts.map +0 -1
  286. package/server/graphql/types/navigation-item-related-data.js.map +0 -1
  287. package/server/graphql/types/navigation-item-related.d.ts.map +0 -1
  288. package/server/graphql/types/navigation-item-related.js.map +0 -1
  289. package/server/graphql/types/navigation-item.d.ts.map +0 -1
  290. package/server/graphql/types/navigation-item.js.map +0 -1
  291. package/server/graphql/types/navigation-render-type.d.ts.map +0 -1
  292. package/server/graphql/types/navigation-render-type.js.map +0 -1
  293. package/server/graphql/types/navigation.d.ts.map +0 -1
  294. package/server/graphql/types/navigation.js.map +0 -1
  295. package/server/i18n/constant.d.ts.map +0 -1
  296. package/server/i18n/constant.js.map +0 -1
  297. package/server/i18n/errors.d.ts.map +0 -1
  298. package/server/i18n/errors.js.map +0 -1
  299. package/server/i18n/graphQLEnhancers.d.ts.map +0 -1
  300. package/server/i18n/graphQLEnhancers.js.map +0 -1
  301. package/server/i18n/index.d.ts.map +0 -1
  302. package/server/i18n/index.js.map +0 -1
  303. package/server/i18n/navigationSetupStrategy.d.ts.map +0 -1
  304. package/server/i18n/navigationSetupStrategy.js.map +0 -1
  305. package/server/i18n/serviceEnhancers.d.ts.map +0 -1
  306. package/server/i18n/serviceEnhancers.js.map +0 -1
  307. package/server/i18n/types.d.ts.map +0 -1
  308. package/server/i18n/types.js.map +0 -1
  309. package/server/i18n/utils.d.ts.map +0 -1
  310. package/server/i18n/utils.js.map +0 -1
  311. package/server/index.d.ts.map +0 -1
  312. package/server/index.js.map +0 -1
  313. package/server/navigation/index.d.ts.map +0 -1
  314. package/server/navigation/index.js.map +0 -1
  315. package/server/navigation/setupStrategy.d.ts.map +0 -1
  316. package/server/navigation/setupStrategy.js.map +0 -1
  317. package/server/register/index.d.ts.map +0 -1
  318. package/server/register/index.js.map +0 -1
  319. package/server/routes/admin.d.ts.map +0 -1
  320. package/server/routes/admin.js.map +0 -1
  321. package/server/routes/client.d.ts.map +0 -1
  322. package/server/routes/client.js.map +0 -1
  323. package/server/routes/index.d.ts.map +0 -1
  324. package/server/routes/index.js.map +0 -1
  325. package/server/services/__tests__/service.test.d.ts +0 -2
  326. package/server/services/__tests__/service.test.d.ts.map +0 -1
  327. package/server/services/__tests__/service.test.js +0 -131
  328. package/server/services/__tests__/service.test.js.map +0 -1
  329. package/server/services/admin.d.ts.map +0 -1
  330. package/server/services/admin.js.map +0 -1
  331. package/server/services/client.d.ts.map +0 -1
  332. package/server/services/client.js.map +0 -1
  333. package/server/services/common.d.ts.map +0 -1
  334. package/server/services/common.js.map +0 -1
  335. package/server/services/index.d.ts.map +0 -1
  336. package/server/services/index.js.map +0 -1
  337. package/server/utils/__tests__/functions.test.d.ts +0 -2
  338. package/server/utils/__tests__/functions.test.d.ts.map +0 -1
  339. package/server/utils/__tests__/functions.test.js +0 -153
  340. package/server/utils/__tests__/functions.test.js.map +0 -1
  341. package/server/utils/constant.d.ts.map +0 -1
  342. package/server/utils/constant.js.map +0 -1
  343. package/server/utils/functions.d.ts.map +0 -1
  344. package/server/utils/functions.js.map +0 -1
  345. package/server/utils/index.d.ts.map +0 -1
  346. package/server/utils/index.js.map +0 -1
  347. package/setup-package.d.ts +0 -2
  348. package/setup-package.d.ts.map +0 -1
  349. package/setup-package.js +0 -19
  350. package/setup-package.js.map +0 -1
  351. package/strapi-admin.d.ts.map +0 -1
  352. package/strapi-admin.js.map +0 -1
  353. package/strapi-server.d.ts.map +0 -1
  354. package/strapi-server.js.map +0 -1
  355. package/types/bootstrap.d.ts.map +0 -1
  356. package/types/bootstrap.js.map +0 -1
  357. package/types/config.d.ts.map +0 -1
  358. package/types/config.js.map +0 -1
  359. package/types/contentTypes.d.ts.map +0 -1
  360. package/types/contentTypes.js.map +0 -1
  361. package/types/controllers.d.ts.map +0 -1
  362. package/types/controllers.js.map +0 -1
  363. package/types/graphQL.d.ts.map +0 -1
  364. package/types/graphQL.js.map +0 -1
  365. package/types/i18n.d.ts.map +0 -1
  366. package/types/i18n.js.map +0 -1
  367. package/types/index.d.ts.map +0 -1
  368. package/types/index.js.map +0 -1
  369. package/types/services.d.ts.map +0 -1
  370. package/types/services.js.map +0 -1
  371. package/types/utils.d.ts.map +0 -1
  372. package/types/utils.js.map +0 -1
  373. package/utils/InvalidParamNavigationError.d.ts.map +0 -1
  374. package/utils/InvalidParamNavigationError.js.map +0 -1
  375. package/utils/NavigationError.d.ts.map +0 -1
  376. package/utils/NavigationError.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { AdditionalFieldInputProps } from './types';
1
+ import React from "react";
2
+ import { AdditionalFieldInputProps } from "./types";
3
3
  declare const AdditionalFieldInput: React.FC<AdditionalFieldInputProps>;
4
4
  export default AdditionalFieldInput;
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -34,9 +34,24 @@ const lodash_1 = require("lodash");
34
34
  const react_intl_1 = require("react-intl");
35
35
  const DEFAULT_STRING_VALUE = "";
36
36
  const handlerFactory = ({ field, prop, onChange }) => ({ target }) => {
37
- onChange(field.name, target[prop]);
37
+ onChange(field.name, target[prop], field.type);
38
38
  };
39
- const AdditionalFieldInput = ({ field, isLoading, onChange, value, disabled, error }) => {
39
+ const mediaAttribute = {
40
+ type: "media",
41
+ multiple: false,
42
+ required: false,
43
+ allowedTypes: ["images"],
44
+ pluginOptions: {
45
+ i18n: {
46
+ localized: false,
47
+ },
48
+ },
49
+ };
50
+ const AdditionalFieldInput = ({ field, isLoading, onChange, value: baseValue, disabled, error, }) => {
51
+ const { fields } = (0, helper_plugin_1.useLibrary)();
52
+ const value = (0, react_1.useMemo)(() => field.type === "media" && baseValue
53
+ ? JSON.parse(baseValue)
54
+ : baseValue, [baseValue, field.type]);
40
55
  const toggleNotification = (0, helper_plugin_1.useNotification)();
41
56
  const { formatMessage } = (0, react_intl_1.useIntl)();
42
57
  const defaultInputProps = (0, react_1.useMemo)(() => ({
@@ -48,21 +63,34 @@ const AdditionalFieldInput = ({ field, isLoading, onChange, value, disabled, err
48
63
  }), [field, isLoading, error]);
49
64
  const handleBoolean = (0, react_1.useMemo)(() => handlerFactory({ field, onChange, prop: "checked" }), [onChange, field]);
50
65
  const handleString = (0, react_1.useMemo)(() => handlerFactory({ field, onChange, prop: "value" }), [onChange, field]);
66
+ const handleMedia = (0, react_1.useMemo)(() => handlerFactory({ field, onChange, prop: "value" }), [onChange, field]);
67
+ const MediaInput = (fields?.media ??
68
+ (() => react_1.default.createElement(react_1.default.Fragment, null)));
69
+ (0, react_1.useEffect)(() => {
70
+ if (!MediaInput) {
71
+ toggleNotification({
72
+ type: "warning",
73
+ message: (0, translations_1.getTrad)("notification.error.customField.media.missing"),
74
+ });
75
+ }
76
+ }, []);
51
77
  switch (field.type) {
52
- case 'boolean':
78
+ case "boolean":
53
79
  if (!(0, lodash_1.isNil)(value))
54
80
  (0, types_1.assertBoolean)(value);
55
81
  return (react_1.default.createElement(ToggleInput_1.ToggleInput, { ...defaultInputProps, checked: !!value, onChange: handleBoolean, onLabel: "true", offLabel: "false" }));
56
- case 'string':
82
+ case "string":
57
83
  if (!(0, lodash_1.isNil)(value))
58
84
  (0, types_1.assertString)(value);
59
85
  return (react_1.default.createElement(TextInput_1.TextInput, { ...defaultInputProps, onChange: handleString, value: value || DEFAULT_STRING_VALUE }));
60
- case 'select':
61
- return (react_1.default.createElement(Select_1.Select, { ...defaultInputProps, onChange: (v) => onChange(field.name, v), value: (0, lodash_1.isNil)(value) ? field.multi ? [] : null : value, multi: field.multi, withTags: field.multi }, field.options.map((option, index) => (react_1.default.createElement(Select_1.Option, { key: `${field.name}-option-${index}`, value: option }, option)))));
86
+ case "select":
87
+ return (react_1.default.createElement(Select_1.Select, { ...defaultInputProps, onChange: (v) => onChange(field.name, v, "select"), value: (0, lodash_1.isNil)(value) ? (field.multi ? [] : null) : value, multi: field.multi, withTags: field.multi }, field.options.map((option, index) => (react_1.default.createElement(Select_1.Option, { key: `${field.name}-option-${index}`, value: option }, option)))));
88
+ case "media":
89
+ return (react_1.default.createElement(MediaInput, { ...defaultInputProps, id: "navigation-item-media", onChange: handleMedia, value: value || [], intlLabel: defaultInputProps.label, attribute: mediaAttribute }));
62
90
  default:
63
91
  toggleNotification({
64
- type: 'warning',
65
- message: (0, translations_1.getTrad)('notification.error.customField.type'),
92
+ type: "warning",
93
+ message: (0, translations_1.getTrad)("notification.error.customField.type"),
66
94
  });
67
95
  throw new Error(`Type of custom field is unsupported`);
68
96
  }
@@ -3,7 +3,7 @@ import { NavigationItemCustomField } from "../../../../types";
3
3
  export type AdditionalFieldInputProps = {
4
4
  field: NavigationItemCustomField;
5
5
  isLoading: boolean;
6
- onChange: (name: string, value: string) => void;
6
+ onChange: (name: string, value: string, fieldType: string) => void;
7
7
  value: string | boolean | string[] | null;
8
8
  disabled: boolean;
9
9
  error: MessageDescriptor | null;
@@ -1,4 +1,6 @@
1
1
  import React from 'react';
2
- declare const DragButton: React.ForwardRefExoticComponent<React.RefAttributes<unknown>>;
2
+ declare const DragButton: React.ForwardRefExoticComponent<{
3
+ isActive?: boolean | undefined;
4
+ } & React.RefAttributes<unknown>>;
3
5
  export default DragButton;
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -16,10 +16,11 @@ const DragButtonWrapper = styled_components_1.default.span `
16
16
  width: ${DRAG_BUTTON_SIZE_IN_REM}rem;
17
17
  padding: ${({ theme }) => theme.spaces[2]};
18
18
 
19
- background: ${({ theme }) => theme.colors.neutral0};
19
+ background: ${({ theme, isActive }) => isActive ? theme.colors.neutral150 : theme.colors.neutral0};
20
20
  border: 1px solid ${({ theme }) => theme.colors.neutral200};
21
21
  border-radius: ${({ theme }) => theme.borderRadius};
22
22
  cursor: pointer;
23
+ transition: background-color 0.3s ease-in;
23
24
 
24
25
  svg {
25
26
  height: ${({ theme }) => theme.spaces[3]};
@@ -10,6 +10,7 @@ interface IProps {
10
10
  onItemEdit: VoidEffect;
11
11
  onItemRestore: VoidEffect;
12
12
  dragRef: React.MutableRefObject<HTMLHeadingElement>;
13
+ isSearchActive?: boolean;
13
14
  }
14
15
  declare const ItemCardHeader: React.FC<IProps>;
15
16
  export default ItemCardHeader;
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const react_1 = __importDefault(require("react"));
7
+ const styled_components_1 = __importDefault(require("styled-components"));
7
8
  const Flex_1 = require("@strapi/design-system/Flex");
8
9
  const Typography_1 = require("@strapi/design-system/Typography");
9
10
  const IconButton_1 = require("@strapi/design-system/IconButton");
@@ -15,9 +16,9 @@ const utils_1 = require("../../../utils");
15
16
  const icons_1 = require("./icons");
16
17
  const wrapperStyle = { zIndex: 2 };
17
18
  const pathWrapperStyle = { maxWidth: "425px" };
18
- const ItemCardHeader = ({ title, path, icon, removed, canUpdate, onItemRemove, onItemEdit, onItemRestore, dragRef }) => (react_1.default.createElement(Wrapper_1.default, null,
19
+ const ItemCardHeader = ({ title, path, icon, removed, canUpdate, onItemRemove, onItemEdit, onItemRestore, dragRef, isSearchActive }) => (react_1.default.createElement(Wrapper_1.default, null,
19
20
  react_1.default.createElement(Flex_1.Flex, { alignItems: "center" },
20
- canUpdate && (react_1.default.createElement(DragButton_1.default, { ref: dragRef })),
21
+ canUpdate && (react_1.default.createElement(DragButton_1.default, { ref: dragRef, isActive: isSearchActive })),
21
22
  react_1.default.createElement(Typography_1.Typography, { variant: "omega", fontWeight: "bold" }, title),
22
23
  react_1.default.createElement(Typography_1.Typography, { variant: "omega", fontWeight: "bold", textColor: 'neutral500', ellipsis: true, style: pathWrapperStyle }, path),
23
24
  react_1.default.createElement(Flex_1.Flex, null,
@@ -25,9 +26,13 @@ const ItemCardHeader = ({ title, path, icon, removed, canUpdate, onItemRemove, o
25
26
  react_1.default.createElement(Flex_1.Flex, { alignItems: "center", style: wrapperStyle },
26
27
  removed &&
27
28
  (react_1.default.createElement(ItemCardBadge_1.default, { borderColor: "danger200", backgroundColor: "danger100", textColor: "danger600" }, (0, utils_1.getMessage)("components.navigationItem.badge.removed"))),
28
- react_1.default.createElement(IconButton_1.IconButton, { disabled: removed, onClick: onItemEdit, label: (0, utils_1.getMessage)(`components.navigationItem.action.${canUpdate ? 'edit' : 'view'}`, canUpdate ? 'Edit' : 'View'), icon: canUpdate ? icons_1.pencilIcon : icons_1.eyeIcon }),
29
+ react_1.default.createElement(IconButton, { isActive: isSearchActive, disabled: removed, onClick: onItemEdit, label: (0, utils_1.getMessage)(`components.navigationItem.action.${canUpdate ? 'edit' : 'view'}`, canUpdate ? 'Edit' : 'View'), icon: canUpdate ? icons_1.pencilIcon : icons_1.eyeIcon }),
29
30
  canUpdate && (react_1.default.createElement(react_1.default.Fragment, null, removed ?
30
- react_1.default.createElement(IconButton_1.IconButton, { onClick: onItemRestore, label: (0, utils_1.getMessage)('components.navigationItem.action.restore', "Restore"), icon: icons_1.refreshIcon }) :
31
- react_1.default.createElement(IconButton_1.IconButton, { onClick: onItemRemove, label: (0, utils_1.getMessage)('components.navigationItem.action.remove', "Remove"), icon: icons_1.trashIcon }))))));
31
+ react_1.default.createElement(IconButton, { isActive: isSearchActive, onClick: onItemRestore, label: (0, utils_1.getMessage)('components.navigationItem.action.restore', "Restore"), icon: icons_1.refreshIcon }) :
32
+ react_1.default.createElement(IconButton, { isActive: isSearchActive, onClick: onItemRemove, label: (0, utils_1.getMessage)('components.navigationItem.action.remove', "Remove"), icon: icons_1.trashIcon }))))));
33
+ const IconButton = (0, styled_components_1.default)(IconButton_1.IconButton) `
34
+ transition: background-color 0.3s ease-in;
35
+ ${({ isActive, theme }) => isActive ? `background-color: ${theme.colors.neutral150} ;` : ''}
36
+ `;
32
37
  exports.default = ItemCardHeader;
33
38
  //# sourceMappingURL=index.js.map
@@ -30,6 +30,7 @@ const react_1 = __importStar(require("react"));
30
30
  const prop_types_1 = __importDefault(require("prop-types"));
31
31
  const react_dnd_1 = require("react-dnd");
32
32
  const lodash_1 = require("lodash");
33
+ const styled_components_1 = require("styled-components");
33
34
  const Card_1 = require("@strapi/design-system/Card");
34
35
  const Divider_1 = require("@strapi/design-system/Divider");
35
36
  const Flex_1 = require("@strapi/design-system/Flex");
@@ -47,7 +48,7 @@ const utils_1 = require("../../utils");
47
48
  const CollapseButton_1 = __importDefault(require("../CollapseButton"));
48
49
  const Item = (props) => {
49
50
  const { item, isLast = false, level = 0, levelPath = '', allowedLevels, relatedRef, isParentAttachedToMenu, onItemLevelAdd, onItemRemove, onItemRestore, onItemEdit, onItemReOrder, onItemToggleCollapse, error, displayChildren, config = {}, permissions = {}, } = props;
50
- const { viewId, title, type, path, removed, externalPath, menuAttached, collapsed, structureId, items = [], } = item;
51
+ const { viewId, title, type, path, removed, externalPath, menuAttached, collapsed, structureId, items = [], isSearchActive, } = item;
51
52
  const { contentTypes = [], contentTypesNameFields } = config;
52
53
  const isExternal = type === utils_1.navigationItemType.EXTERNAL;
53
54
  const isWrapper = type === utils_1.navigationItemType.WRAPPER;
@@ -110,11 +111,29 @@ const Item = (props) => {
110
111
  const generatePreviewUrl = entity => {
111
112
  const { isSingle } = contentType;
112
113
  const entityLocale = entity?.locale ? `?plugins[i18n][locale]=${entity?.locale}` : '';
113
- return `/content-manager/${isSingle ? 'singleType' : 'collectionType'}/${entity?.__collectionUid}${!isSingle ? '/' + entity?.id : ''}${entityLocale}`;
114
+ return `/content-manager/${isSingle ? 'single-types' : 'collection-types'}/${entity?.__collectionUid}${!isSingle ? '/' + entity?.id : ''}${entityLocale}`;
114
115
  };
115
116
  const onNewItemClick = (0, react_1.useCallback)((event) => canUpdate && onItemLevelAdd(event, viewId, isNextMenuAllowedLevel, absolutePath, menuAttached, `${structureId}.${items.length}`), [viewId, isNextMenuAllowedLevel, absolutePath, menuAttached, structureId, items, canUpdate]);
117
+ (0, react_1.useEffect)(() => {
118
+ if (isSearchActive) {
119
+ refs.dropRef.current?.scrollIntoView?.({
120
+ behavior: "smooth",
121
+ block: "center",
122
+ inline: "center",
123
+ });
124
+ }
125
+ }, [isSearchActive, refs.dropRef.current]);
126
+ const theme = (0, styled_components_1.useTheme)();
116
127
  return (react_1.default.createElement(Wrapper_1.default, { level: level, isLast: isLast, style: { opacity: isDragging ? 0.2 : 1 }, ref: refs ? refs.dropRef : null },
117
- react_1.default.createElement(Card_1.Card, { style: { width: "728px", zIndex: 1, position: "relative", overflow: 'hidden' } },
128
+ react_1.default.createElement(Card_1.Card, { style: {
129
+ width: "728px",
130
+ zIndex: 1,
131
+ position: "relative",
132
+ overflow: "hidden",
133
+ backgroundColor: isSearchActive ? theme.colors.neutral150 : undefined,
134
+ borderColor: isSearchActive ? theme.colors.neutral300 : undefined,
135
+ transition: "background-color 0.3s ease-in"
136
+ } },
118
137
  removed && (react_1.default.createElement(ItemCardRemovedOverlay_1.ItemCardRemovedOverlay, null)),
119
138
  react_1.default.createElement("div", { ref: refs.previewRef },
120
139
  react_1.default.createElement(Card_1.CardBody, null,
@@ -122,7 +141,8 @@ const Item = (props) => {
122
141
  ...item,
123
142
  isMenuAllowedLevel,
124
143
  isParentAttachedToMenu,
125
- }, levelPath, isParentAttachedToMenu), onItemRestore: () => onItemRestore(item), dragRef: refs.dragRef, removed: removed, canUpdate: canUpdate })),
144
+ isSearchActive: false,
145
+ }, levelPath, isParentAttachedToMenu), onItemRestore: () => onItemRestore(item), dragRef: refs.dragRef, removed: removed, canUpdate: canUpdate, isSearchActive: isSearchActive })),
126
146
  react_1.default.createElement(Divider_1.Divider, null),
127
147
  !isExternal && (react_1.default.createElement(Card_1.CardBody, { style: { padding: '8px' } },
128
148
  react_1.default.createElement(Flex_1.Flex, { style: { width: '100%' }, direction: "row", alignItems: "center", justifyContent: "space-between" },
@@ -12,7 +12,7 @@ const List = ({ allowedLevels, error, isParentAttachedToMenu = false, items, lev
12
12
  return (react_1.default.createElement(Item_1.default, { key: `list-item-${item.viewId || n}`, item: itemProps, isLast: n === items.length - 1, relatedRef: relatedRef, level: level, levelPath: levelPath, isParentAttachedToMenu: isParentAttachedToMenu, allowedLevels: allowedLevels, onItemRestore: onItemRestore, onItemLevelAdd: onItemLevelAdd, onItemRemove: onItemRemove, onItemEdit: onItemEdit, onItemReOrder: onItemReOrder, onItemToggleCollapse: onItemToggleCollapse, error: error, displayChildren: displayFlat, config: {
13
13
  contentTypes,
14
14
  contentTypesNameFields
15
- }, permissions: permissions }));
15
+ }, permissions: permissions, isSearchActive: !!item.isSearchActive }));
16
16
  })));
17
17
  List.propTypes = {
18
18
  allowedLevels: prop_types_1.default.number,
@@ -1,6 +1,12 @@
1
+ import { Effect } from "../../../../types";
2
+ interface Props {
3
+ value: string;
4
+ setValue: Effect<{
5
+ value: string;
6
+ index: number;
7
+ }>;
8
+ initialIndex?: number;
9
+ }
10
+ declare const Search: ({ value, setValue, initialIndex }: Props) => JSX.Element;
1
11
  export default Search;
2
- declare function Search({ value, setValue }: {
3
- value: any;
4
- setValue: any;
5
- }): JSX.Element;
6
12
  //# sourceMappingURL=index.d.ts.map
@@ -30,25 +30,64 @@ const react_1 = __importStar(require("react"));
30
30
  const react_intl_1 = require("react-intl");
31
31
  const IconButton_1 = require("@strapi/design-system/IconButton");
32
32
  const Searchbar_1 = require("@strapi/design-system/Searchbar");
33
+ const Typography_1 = require("@strapi/design-system/Typography");
33
34
  const Search_1 = __importDefault(require("@strapi/icons/Search"));
34
35
  const translations_1 = require("../../translations");
35
- const Search = ({ value, setValue }) => {
36
+ const DEFAULT_INDEX = 0;
37
+ const Search = ({ value, setValue, initialIndex = DEFAULT_INDEX }) => {
38
+ const [currentValue, setCurrentValue] = (0, react_1.useState)(value);
39
+ const [previousValue, setPreviousValue] = (0, react_1.useState)(value);
40
+ const [currentIndex, setCurrentIndex] = (0, react_1.useState)(initialIndex);
36
41
  const [isOpen, setIsOpen] = (0, react_1.useState)(!!value);
37
42
  const wrapperRef = (0, react_1.useRef)(null);
38
43
  const { formatMessage } = (0, react_intl_1.useIntl)();
39
44
  (0, react_1.useEffect)(() => {
40
45
  if (isOpen) {
41
46
  setTimeout(() => {
42
- wrapperRef.current.querySelector('input').focus();
47
+ wrapperRef.current?.querySelector("input")?.focus();
43
48
  }, 0);
44
49
  }
45
50
  }, [isOpen]);
51
+ (0, react_1.useEffect)(() => {
52
+ if (currentIndex && currentValue === previousValue) {
53
+ setValue({
54
+ value: currentValue,
55
+ index: currentIndex,
56
+ });
57
+ }
58
+ }, [currentIndex, currentValue, previousValue]);
59
+ (0, react_1.useEffect)(() => {
60
+ if (currentValue !== previousValue) {
61
+ setPreviousValue(currentValue);
62
+ setCurrentIndex(DEFAULT_INDEX);
63
+ setValue({
64
+ value: currentValue,
65
+ index: DEFAULT_INDEX,
66
+ });
67
+ }
68
+ }, [currentValue, previousValue]);
69
+ const onKeyDown = (0, react_1.useCallback)((e) => {
70
+ if (e.code.toLowerCase() === "enter") {
71
+ setCurrentIndex((current) => current + 1);
72
+ }
73
+ }, []);
74
+ const onChange = (0, react_1.useCallback)((e) => {
75
+ setCurrentValue(e.target.value);
76
+ }, [setCurrentValue]);
77
+ const onClear = (0, react_1.useCallback)(() => {
78
+ setCurrentValue("");
79
+ setIsOpen(false);
80
+ }, [setCurrentValue, setIsOpen]);
46
81
  if (isOpen) {
47
82
  return (react_1.default.createElement("div", { ref: wrapperRef },
48
- react_1.default.createElement(Searchbar_1.Searchbar, { name: "searchbar", onClear: () => { setValue(''); setIsOpen(false); }, value: value, size: "S", onChange: (e) => setValue(e.target.value), clearLabel: "Clearing the search", placeholder: formatMessage({
49
- id: (0, translations_1.getTradId)('pages.main.search.placeholder'),
50
- defaultMessage: 'Type to start searching...',
51
- }) }, "Search for navigation items")));
83
+ react_1.default.createElement(Searchbar_1.Searchbar, { name: "searchbar", onClear: onClear, value: value, size: "S", onChange: onChange, clearLabel: "Clearing the search", placeholder: formatMessage({
84
+ id: (0, translations_1.getTradId)("pages.main.search.placeholder"),
85
+ defaultMessage: "Type to start searching...",
86
+ }), onKeyDown: onKeyDown }, "Search for navigation items"),
87
+ react_1.default.createElement(Typography_1.Typography, { variant: "pi", fontColor: "neutral150", style: { margin: "3px 0 0", display: "inline-block" } }, formatMessage({
88
+ id: (0, translations_1.getTradId)("pages.main.search.subLabel"),
89
+ defaultMessage: "press ENTER to highlight next item",
90
+ }))));
52
91
  }
53
92
  else {
54
93
  return (react_1.default.createElement(IconButton_1.IconButton, { icon: react_1.default.createElement(Search_1.default, null), onClick: () => setIsOpen(!isOpen) }));
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Effect } from '../../../../types';
3
+ import { GenericInputProps } from "@strapi/helper-plugin";
3
4
  interface IProps {
4
5
  onChange: Effect<string[]>;
5
6
  initialValue?: string[];
@@ -7,7 +8,7 @@ interface IProps {
7
8
  name?: string;
8
9
  label?: string;
9
10
  disabled?: boolean;
10
- error?: string | string[];
11
+ error?: GenericInputProps["error"];
11
12
  }
12
13
  declare const TextArrayInput: React.FC<IProps>;
13
14
  export default TextArrayInput;
@@ -0,0 +1,2 @@
1
+ export declare const customFieldsTypes: string[];
2
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.customFieldsTypes = void 0;
4
+ exports.customFieldsTypes = ["string", "boolean", "select", "media"];
5
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1,2 @@
1
+ export * from "./const";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./const"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -37,21 +37,23 @@ const utils_1 = require("../../../../utils");
37
37
  const lodash_1 = require("lodash");
38
38
  const translations_1 = require("../../../../translations");
39
39
  const TextArrayInput_1 = __importDefault(require("../../../../components/TextArrayInput"));
40
+ const common_1 = require("../../common");
40
41
  const tradPrefix = 'pages.settings.form.customFields.popup.';
41
- const customFieldsTypes = ["string", "boolean", "select"];
42
42
  const prepareSelectOptions = (options) => options.map((option, index) => ({
43
- key: index,
43
+ key: `${option}-${index}`,
44
44
  metadatas: {
45
45
  intlLabel: {
46
46
  id: option,
47
47
  defaultMessage: option,
48
- }
48
+ },
49
+ hidden: false,
50
+ disabled: false,
49
51
  },
50
52
  value: option,
51
53
  label: option,
52
54
  }));
53
55
  const CustomFieldForm = ({ isEditForm, customField, onSubmit, onClose, usedCustomFieldNames }) => {
54
- const typeSelectOptions = prepareSelectOptions(customFieldsTypes);
56
+ const typeSelectOptions = prepareSelectOptions(common_1.customFieldsTypes);
55
57
  const initialValues = (0, react_1.useMemo)(() => {
56
58
  if ((0, lodash_1.isNil)(customField.type)) {
57
59
  return formDefinition.defaultValues;
@@ -85,18 +87,21 @@ const CustomFieldForm = ({ isEditForm, customField, onSubmit, onClose, usedCusto
85
87
  validationSchema: formDefinition.schemaFactory(usedCustomFieldNames),
86
88
  validateOnChange: false,
87
89
  });
88
- const defaultProps = (0, react_1.useCallback)((fieldName) => ({
89
- intlLabel: (0, translations_1.getTrad)(`${tradPrefix}${fieldName}.label`),
90
- onChange: handleChange,
91
- name: fieldName,
92
- value: values[fieldName],
93
- error: errors[fieldName],
94
- }), [values, errors, handleChange]);
90
+ const defaultProps = (0, react_1.useCallback)((fieldName) => {
91
+ const error = mapError(errors[fieldName]);
92
+ return {
93
+ intlLabel: (0, translations_1.getTrad)(`${tradPrefix}${fieldName}.label`),
94
+ onChange: handleChange,
95
+ name: fieldName,
96
+ value: values[fieldName],
97
+ error,
98
+ };
99
+ }, [values, errors, handleChange]);
95
100
  return (react_1.default.createElement("form", null,
96
101
  react_1.default.createElement(ModalLayout_1.ModalBody, null,
97
102
  react_1.default.createElement(Grid_1.Grid, { gap: 5 },
98
103
  react_1.default.createElement(Grid_1.GridItem, { key: "name", col: 12 },
99
- react_1.default.createElement(helper_plugin_1.GenericInput, { ...defaultProps("name"), autoFocused: true, placeholder: (0, translations_1.getTrad)(`${tradPrefix}name.placeholder`), description: (0, translations_1.getTrad)(`${tradPrefix}name.description`), type: "text", disabled: isEditForm })),
104
+ react_1.default.createElement(helper_plugin_1.GenericInput, { ...defaultProps("name"), placeholder: (0, translations_1.getTrad)(`${tradPrefix}name.placeholder`), description: (0, translations_1.getTrad)(`${tradPrefix}name.description`), type: "text", disabled: isEditForm })),
100
105
  react_1.default.createElement(Grid_1.GridItem, { key: "label", col: 12 },
101
106
  react_1.default.createElement(helper_plugin_1.GenericInput, { ...defaultProps("label"), placeholder: (0, translations_1.getTrad)(`${tradPrefix}label.placeholder`), description: (0, translations_1.getTrad)(`${tradPrefix}label.description`), type: "text" })),
102
107
  react_1.default.createElement(Grid_1.GridItem, { key: "type", col: 12 },
@@ -111,4 +116,14 @@ const CustomFieldForm = ({ isEditForm, customField, onSubmit, onClose, usedCusto
111
116
  react_1.default.createElement(ModalLayout_1.ModalFooter, { startActions: react_1.default.createElement(Button_1.Button, { onClick: onClose, variant: "tertiary" }, (0, utils_1.getMessage)('popup.item.form.button.cancel')), endActions: react_1.default.createElement(Button_1.Button, { onClick: handleSubmit, disabled: !(0, lodash_1.isEmpty)(errors) || isSubmitting }, (0, utils_1.getMessage)(`popup.item.form.button.save`)) })));
112
117
  };
113
118
  exports.default = CustomFieldForm;
119
+ const mapError = (err) => {
120
+ if (typeof err === "string") {
121
+ return err;
122
+ }
123
+ if (typeof err === "object" &&
124
+ err &&
125
+ (err.id || err.description || err.defaultMessage)) {
126
+ return err;
127
+ }
128
+ };
114
129
  //# sourceMappingURL=index.js.map
@@ -61,7 +61,7 @@ const CustomFieldTable = ({ data, onOpenModal, onRemoveCustomField, onToggleCust
61
61
  type: 'warning',
62
62
  message: {
63
63
  id: (0, translations_1.getTradId)(`${tradPrefix}confirmation.error`),
64
- default: 'Something went wrong',
64
+ defaultMessage: 'Something went wrong',
65
65
  }
66
66
  });
67
67
  }
@@ -1,5 +1,4 @@
1
- import React, { VFC } from "react";
2
- import { Form } from "@strapi/helper-plugin";
1
+ import React, { FC } from "react";
3
2
  interface Form {
4
3
  pruneNavigations: boolean;
5
4
  enabled: boolean;
@@ -14,7 +13,7 @@ interface Props {
14
13
  onSubmit: SubmitEffect;
15
14
  onCancel: CancelEffect;
16
15
  }
17
- export declare const DisableI18nModal: VFC<Props>;
16
+ export declare const DisableI18nModal: FC<Props>;
18
17
  export declare const useDisableI18nModal: (onSubmit: SubmitEffect) => {
19
18
  setDisableI18nModalOpened: React.Dispatch<React.SetStateAction<boolean>>;
20
19
  setI18nModalOnCancel: React.Dispatch<React.SetStateAction<() => void>>;
@@ -31,7 +31,6 @@ const react_1 = __importStar(require("react"));
31
31
  const ConfirmationDialog_1 = __importDefault(require("../../../../components/ConfirmationDialog"));
32
32
  const utils_1 = require("../../../../utils");
33
33
  const formik_1 = require("formik");
34
- const helper_plugin_1 = require("@strapi/helper-plugin");
35
34
  const Stack_1 = require("@strapi/design-system/Stack");
36
35
  const Box_1 = require("@strapi/design-system/Box");
37
36
  const Grid_1 = require("@strapi/design-system/Grid");
@@ -45,25 +44,24 @@ const DisableI18nModal = ({ onSubmit, onCancel }) => {
45
44
  onSubmit(state);
46
45
  }, [onSubmit, state]);
47
46
  return (react_1.default.createElement(ConfirmationDialog_1.default, { isVisible: true, header: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.confirmation.header"), labelConfirm: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.confirmation.confirm"), iconConfirm: refreshIcon, mainIcon: refreshIcon, onConfirm: onConfirm, onCancel: onCancel },
48
- react_1.default.createElement(formik_1.Formik, { initialValues: INITIAL_VALUES, onSubmit: onConfirm }, ({ handleSubmit, setFieldValue, values }) => (react_1.default.createElement(react_1.default.Fragment, null,
47
+ react_1.default.createElement(formik_1.Formik, { initialValues: INITIAL_VALUES, onSubmit: onConfirm }, ({ setFieldValue, values }) => (react_1.default.createElement(react_1.default.Fragment, null,
49
48
  react_1.default.createElement(Grid_1.Grid, { gap: 4 },
50
49
  react_1.default.createElement(Grid_1.GridItem, { col: 12 },
51
50
  react_1.default.createElement(Box_1.Box, { padding: 2 }, (0, utils_1.getMessage)("pages.settings.actions.disableI18n.confirmation.description.line1")),
52
51
  react_1.default.createElement(Box_1.Box, { padding: 2 }, (0, utils_1.getMessage)("pages.settings.actions.disableI18n.confirmation.description.line2")),
53
52
  react_1.default.createElement(Box_1.Box, { padding: 2 },
54
53
  react_1.default.createElement(Typography_1.Typography, { fontWeight: "bold" }, (0, utils_1.getMessage)("pages.settings.actions.disableI18n.confirmation.description.line3"))))),
55
- react_1.default.createElement(helper_plugin_1.Form, { noValidate: true, onSubmit: handleSubmit },
56
- react_1.default.createElement(Stack_1.Stack, { spacing: 4 },
57
- react_1.default.createElement(Grid_1.Grid, { gap: 4 },
58
- react_1.default.createElement(Grid_1.GridItem, { col: 12 },
59
- react_1.default.createElement(Box_1.Box, { padding: 2 },
60
- react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "audienceFieldChecked", label: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.prune.label"), hint: "", checked: values.pruneNavigations, onChange: ({ target: { checked }, }) => {
61
- setFieldValue("pruneNavigations", checked, false);
62
- setState((state) => ({
63
- ...state,
64
- pruneNavigations: checked,
65
- }));
66
- }, onLabel: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.prune.on"), offLabel: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.prune.off") })))))))))));
54
+ react_1.default.createElement(Stack_1.Stack, { spacing: 4 },
55
+ react_1.default.createElement(Grid_1.Grid, { gap: 4 },
56
+ react_1.default.createElement(Grid_1.GridItem, { col: 12 },
57
+ react_1.default.createElement(Box_1.Box, { padding: 2 },
58
+ react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "audienceFieldChecked", label: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.prune.label"), hint: "", checked: values.pruneNavigations, onChange: ({ target: { checked }, }) => {
59
+ setFieldValue("pruneNavigations", checked, false);
60
+ setState((state) => ({
61
+ ...state,
62
+ pruneNavigations: checked,
63
+ }));
64
+ }, onLabel: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.prune.on"), offLabel: (0, utils_1.getMessage)("pages.settings.actions.disableI18n.prune.off") }))))))))));
67
65
  };
68
66
  exports.DisableI18nModal = DisableI18nModal;
69
67
  const useDisableI18nModal = (onSubmit) => {
@@ -67,9 +67,10 @@ const BOX_DEFAULT_PROPS = {
67
67
  shadow: "filterShadow",
68
68
  padding: 6,
69
69
  };
70
+ const noopFallback = () => { };
70
71
  const SettingsPage = () => {
71
- const { lockApp, unlockApp } = (0, helper_plugin_1.useOverlayBlocker)();
72
- const { lockAppWithAutoreload, unlockAppWithAutoreload } = (0, helper_plugin_1.useAutoReloadOverlayBlocker)();
72
+ const { lockApp = noopFallback, unlockApp = noopFallback } = (0, helper_plugin_1.useOverlayBlocker)();
73
+ const { lockAppWithAutoreload = noopFallback, unlockAppWithAutoreload = noopFallback } = (0, helper_plugin_1.useAutoReloadOverlayBlocker)();
73
74
  const [restartStatus, setRestartStatus] = (0, react_1.useState)(RESTART_NOT_REQUIRED);
74
75
  const [pruneObsoleteI18nNavigations, setPruneObsoleteI18nNavigations] = (0, react_1.useState)(false);
75
76
  const [isCustomFieldModalOpen, setIsCustomFieldModalOpen] = (0, react_1.useState)(false);
@@ -4,11 +4,12 @@ exports.defaultValues = exports.schemaFactory = void 0;
4
4
  const yup_1 = require("yup");
5
5
  const helper_plugin_1 = require("@strapi/helper-plugin");
6
6
  const translations_1 = require("../../../translations");
7
+ const common_1 = require("../common");
7
8
  const schemaFactory = (usedCustomFieldNames) => {
8
9
  return (0, yup_1.object)({
9
10
  name: (0, yup_1.string)().matches(/^\S+$/, "Invalid name string. Name cannot contain spaces").required(helper_plugin_1.translatedErrors.required).notOneOf(usedCustomFieldNames, helper_plugin_1.translatedErrors.unique),
10
11
  label: (0, yup_1.string)().required(helper_plugin_1.translatedErrors.required),
11
- type: (0, yup_1.mixed)().required(helper_plugin_1.translatedErrors.required).oneOf(['string', 'boolean', 'select'], (0, translations_1.getTradId)("notification.error.customField.type")),
12
+ type: (0, yup_1.mixed)().required(helper_plugin_1.translatedErrors.required).oneOf(common_1.customFieldsTypes, (0, translations_1.getTradId)("notification.error.customField.type")),
12
13
  required: (0, yup_1.bool)().required(helper_plugin_1.translatedErrors.required),
13
14
  multi: (0, yup_1.mixed)().when('type', {
14
15
  is: (val) => val === 'select',