@firecms/core 3.0.1 → 3.1.0-canary.02232f4

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 (334) hide show
  1. package/README.md +1 -1
  2. package/dist/components/AIIcon.d.ts +16 -0
  3. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +7 -1
  4. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  5. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +14 -0
  6. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +6 -0
  7. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +5 -4
  8. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +6 -0
  9. package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +2 -2
  10. package/dist/components/EntityCollectionView/Board.d.ts +2 -0
  11. package/dist/components/EntityCollectionView/BoardColumn.d.ts +42 -0
  12. package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +9 -0
  13. package/dist/components/EntityCollectionView/BoardSortableList.d.ts +14 -0
  14. package/dist/components/EntityCollectionView/CollectionDataErrorBanner.d.ts +4 -0
  15. package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +26 -0
  16. package/dist/components/EntityCollectionView/EntityCard.d.ts +19 -0
  17. package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +20 -0
  18. package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +31 -0
  19. package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +2 -2
  20. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +7 -3
  21. package/dist/components/EntityCollectionView/FiltersDialog.d.ts +14 -0
  22. package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +44 -0
  23. package/dist/components/EntityCollectionView/board_types.d.ts +105 -0
  24. package/dist/components/EntityCollectionView/useBoardDataController.d.ts +60 -0
  25. package/dist/components/ErrorBoundary.d.ts +4 -2
  26. package/dist/components/HomePage/DefaultHomePage.d.ts +0 -1
  27. package/dist/components/LanguageToggle.d.ts +1 -0
  28. package/dist/components/SelectableTable/SelectableTable.d.ts +5 -1
  29. package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -1
  30. package/dist/components/UnsavedChangesDialog.d.ts +1 -0
  31. package/dist/components/VirtualTable/VirtualTableCell.d.ts +6 -0
  32. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +4 -1
  33. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +1 -1
  34. package/dist/components/VirtualTable/VirtualTableProps.d.ts +17 -1
  35. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +1 -0
  36. package/dist/components/VirtualTable/types.d.ts +3 -0
  37. package/dist/components/index.d.ts +4 -0
  38. package/dist/contexts/index.d.ts +10 -0
  39. package/dist/core/DrawerNavigationGroup.d.ts +45 -0
  40. package/dist/core/index.d.ts +1 -0
  41. package/dist/editor/components/SlashCommandMenu.d.ts +6 -0
  42. package/dist/editor/components/editor-bubble-item.d.ts +8 -0
  43. package/dist/editor/components/editor-bubble.d.ts +8 -0
  44. package/dist/editor/components/image-bubble.d.ts +5 -0
  45. package/dist/editor/components/index.d.ts +16 -0
  46. package/dist/editor/components/table-bubble.d.ts +5 -0
  47. package/dist/editor/editor.d.ts +30 -0
  48. package/dist/editor/extensions/HighlightDecorationExtension.d.ts +24 -0
  49. package/dist/editor/extensions/Image/index.d.ts +6 -0
  50. package/dist/editor/extensions/Image.d.ts +6 -0
  51. package/dist/editor/extensions/TextLoadingDecorationExtension.d.ts +16 -0
  52. package/dist/editor/extensions/clipboard.d.ts +7 -0
  53. package/dist/editor/extensions/custom-keymap.d.ts +1 -0
  54. package/dist/editor/extensions/drag-and-drop.d.ts +9 -0
  55. package/dist/editor/hooks/useProseMirror.d.ts +13 -0
  56. package/dist/editor/hooks/useProseMirrorContext.d.ts +9 -0
  57. package/dist/editor/index.d.ts +2 -0
  58. package/dist/editor/markdown.d.ts +5 -0
  59. package/dist/editor/nodeViews/ImageComponent.d.ts +3 -0
  60. package/dist/editor/nodeViews/ReactNodeView.d.ts +29 -0
  61. package/dist/editor/nodeViews/TaskItemComponent.d.ts +3 -0
  62. package/dist/editor/nodeViews/index.d.ts +6 -0
  63. package/dist/editor/plugins/index.d.ts +2 -0
  64. package/dist/editor/plugins/inputrules.d.ts +6 -0
  65. package/dist/editor/plugins/placeholderPlugin.d.ts +3 -0
  66. package/dist/editor/plugins/slashCommandPlugin.d.ts +12 -0
  67. package/dist/editor/schema.d.ts +2 -0
  68. package/dist/editor/selectors/ai-selector.d.ts +0 -0
  69. package/dist/editor/selectors/color-selector.d.ts +10 -0
  70. package/dist/editor/selectors/link-selector.d.ts +8 -0
  71. package/dist/editor/selectors/node-selector.d.ts +15 -0
  72. package/dist/editor/selectors/text-buttons.d.ts +1 -0
  73. package/dist/editor/types.d.ts +5 -0
  74. package/dist/editor/useProseMirror.d.ts +16 -0
  75. package/dist/editor/utils/prosemirror-utils.d.ts +6 -0
  76. package/dist/editor/utils/remove_classes.d.ts +1 -0
  77. package/dist/editor/utils/useDebouncedCallback.d.ts +1 -0
  78. package/dist/form/components/ErrorFocus.d.ts +1 -1
  79. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  80. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +1 -1
  81. package/dist/form/validation.d.ts +3 -2
  82. package/dist/hooks/index.d.ts +1 -0
  83. package/dist/hooks/useBreadcrumbsController.d.ts +16 -0
  84. package/dist/hooks/useBuildNavigationController.d.ts +0 -1
  85. package/dist/hooks/useCollapsedGroups.d.ts +6 -3
  86. package/dist/hooks/useTranslation.d.ts +17 -0
  87. package/dist/i18n/FireCMSi18nProvider.d.ts +33 -0
  88. package/dist/index.d.ts +5 -0
  89. package/dist/index.es.js +30146 -15178
  90. package/dist/index.es.js.map +1 -1
  91. package/dist/index.umd.js +30032 -15085
  92. package/dist/index.umd.js.map +1 -1
  93. package/dist/internal/useRestoreScroll.d.ts +1 -1
  94. package/dist/locales/de.d.ts +2 -0
  95. package/dist/locales/en.d.ts +10 -0
  96. package/dist/locales/es.d.ts +10 -0
  97. package/dist/locales/fr.d.ts +2 -0
  98. package/dist/locales/hi.d.ts +2 -0
  99. package/dist/locales/it.d.ts +2 -0
  100. package/dist/locales/pt.d.ts +7 -0
  101. package/dist/preview/PropertyPreviewProps.d.ts +5 -0
  102. package/dist/preview/components/DatePreview.d.ts +13 -3
  103. package/dist/preview/components/ImagePreview.d.ts +5 -1
  104. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  105. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  106. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +1 -1
  107. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +1 -1
  108. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +1 -1
  109. package/dist/types/analytics.d.ts +1 -1
  110. package/dist/types/collections.d.ts +88 -2
  111. package/dist/types/customization_controller.d.ts +2 -1
  112. package/dist/types/datasource.d.ts +0 -1
  113. package/dist/types/firecms.d.ts +2 -1
  114. package/dist/types/index.d.ts +1 -0
  115. package/dist/types/navigation.d.ts +2 -2
  116. package/dist/types/plugins.d.ts +69 -1
  117. package/dist/types/properties.d.ts +268 -12
  118. package/dist/types/storage.d.ts +1 -0
  119. package/dist/types/translations.d.ts +669 -0
  120. package/dist/util/__tests__/conditions.test.d.ts +1 -0
  121. package/dist/util/__tests__/objects.test.d.ts +1 -0
  122. package/dist/util/conditions.d.ts +26 -0
  123. package/dist/util/entities.d.ts +2 -3
  124. package/dist/util/index.d.ts +3 -1
  125. package/dist/util/lazy_eager.d.ts +7 -0
  126. package/dist/util/objects.d.ts +1 -0
  127. package/dist/util/property_utils.d.ts +2 -1
  128. package/dist/util/resolutions.d.ts +3 -3
  129. package/dist/util/useStorageUploadController.d.ts +10 -1
  130. package/package.json +51 -12
  131. package/src/app/Scaffold.tsx +20 -19
  132. package/src/components/AIIcon.tsx +41 -0
  133. package/src/components/ArrayContainer.tsx +7 -8
  134. package/src/components/ClearFilterSortButton.tsx +25 -19
  135. package/src/components/ConfirmationDialog.tsx +4 -4
  136. package/src/components/DeleteEntityDialog.tsx +12 -11
  137. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +82 -43
  138. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +130 -79
  139. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +121 -104
  140. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +132 -103
  141. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +6 -3
  142. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +24 -44
  143. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +90 -49
  144. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +1 -1
  145. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +3 -2
  146. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +11 -11
  147. package/src/components/EntityCollectionView/Board.tsx +324 -0
  148. package/src/components/EntityCollectionView/BoardColumn.tsx +158 -0
  149. package/src/components/EntityCollectionView/BoardColumnTitle.tsx +45 -0
  150. package/src/components/EntityCollectionView/BoardSortableList.tsx +174 -0
  151. package/src/components/EntityCollectionView/CollectionDataErrorBanner.tsx +43 -0
  152. package/src/components/EntityCollectionView/EntityBoardCard.tsx +212 -0
  153. package/src/components/EntityCollectionView/EntityCard.tsx +235 -0
  154. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +706 -0
  155. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +236 -0
  156. package/src/components/EntityCollectionView/EntityCollectionView.tsx +531 -209
  157. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +35 -22
  158. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +86 -15
  159. package/src/components/EntityCollectionView/FiltersDialog.tsx +252 -0
  160. package/src/components/EntityCollectionView/ViewModeToggle.tsx +202 -0
  161. package/src/components/EntityCollectionView/board_types.ts +113 -0
  162. package/src/components/EntityCollectionView/useBoardDataController.tsx +490 -0
  163. package/src/components/EntityJsonPreview.tsx +2 -1
  164. package/src/components/EntityView.tsx +3 -2
  165. package/src/components/ErrorBoundary.tsx +27 -15
  166. package/src/components/ErrorTooltip.tsx +2 -1
  167. package/src/components/HomePage/DefaultHomePage.tsx +65 -22
  168. package/src/components/HomePage/HomePageDnD.tsx +59 -42
  169. package/src/components/HomePage/NavigationCard.tsx +20 -18
  170. package/src/components/HomePage/NavigationGroup.tsx +20 -17
  171. package/src/components/HomePage/RenameGroupDialog.tsx +15 -15
  172. package/src/components/HomePage/SmallNavigationCard.tsx +10 -9
  173. package/src/components/LanguageToggle.tsx +66 -0
  174. package/src/components/NotFoundPage.tsx +5 -3
  175. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +12 -17
  176. package/src/components/ReferenceWidget.tsx +5 -6
  177. package/src/components/SearchIconsView.tsx +3 -1
  178. package/src/components/SelectableTable/SelectableTable.tsx +75 -67
  179. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +7 -6
  180. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +50 -40
  181. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +53 -40
  182. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +60 -58
  183. package/src/components/UnsavedChangesDialog.tsx +6 -6
  184. package/src/components/UserDisplay.tsx +4 -4
  185. package/src/components/VirtualTable/VirtualTable.performance.test.tsx +1 -0
  186. package/src/components/VirtualTable/VirtualTable.tsx +275 -119
  187. package/src/components/VirtualTable/VirtualTableCell.tsx +18 -2
  188. package/src/components/VirtualTable/VirtualTableHeader.tsx +76 -64
  189. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +163 -42
  190. package/src/components/VirtualTable/VirtualTableProps.tsx +21 -2
  191. package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
  192. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +3 -0
  193. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +19 -6
  194. package/src/components/VirtualTable/types.tsx +3 -0
  195. package/src/components/common/default_entity_actions.tsx +4 -0
  196. package/src/components/common/useColumnsIds.tsx +95 -3
  197. package/src/components/common/useDataSourceTableController.tsx +12 -4
  198. package/src/components/index.tsx +5 -0
  199. package/src/contexts/BreacrumbsContext.tsx +15 -8
  200. package/src/contexts/index.ts +10 -0
  201. package/src/core/DefaultAppBar.tsx +49 -32
  202. package/src/core/DefaultDrawer.tsx +49 -57
  203. package/src/core/DrawerNavigationGroup.tsx +120 -0
  204. package/src/core/DrawerNavigationItem.tsx +4 -3
  205. package/src/core/EntityEditView.tsx +94 -50
  206. package/src/core/EntityEditViewFormActions.tsx +24 -17
  207. package/src/core/EntitySidePanel.tsx +34 -30
  208. package/src/core/FireCMS.tsx +33 -6
  209. package/src/core/SideDialogs.tsx +4 -2
  210. package/src/core/field_configs.tsx +18 -11
  211. package/src/core/index.tsx +1 -0
  212. package/src/editor/components/SlashCommandMenu.tsx +516 -0
  213. package/src/editor/components/editor-bubble-item.tsx +32 -0
  214. package/src/editor/components/editor-bubble.tsx +118 -0
  215. package/src/editor/components/image-bubble.tsx +156 -0
  216. package/src/editor/components/index.ts +14 -0
  217. package/src/editor/components/table-bubble.tsx +165 -0
  218. package/src/editor/editor.tsx +455 -0
  219. package/src/editor/extensions/HighlightDecorationExtension.ts +114 -0
  220. package/src/editor/extensions/Image/index.ts +133 -0
  221. package/src/editor/extensions/Image.ts +159 -0
  222. package/src/editor/extensions/TextLoadingDecorationExtension.tsx +107 -0
  223. package/src/editor/extensions/clipboard.ts +72 -0
  224. package/src/editor/extensions/custom-keymap.ts +24 -0
  225. package/src/editor/extensions/drag-and-drop.tsx +480 -0
  226. package/src/editor/hooks/useProseMirror.ts +124 -0
  227. package/src/editor/hooks/useProseMirrorContext.ts +15 -0
  228. package/src/editor/index.ts +2 -0
  229. package/src/editor/markdown.ts +172 -0
  230. package/src/editor/nodeViews/ImageComponent.tsx +20 -0
  231. package/src/editor/nodeViews/ReactNodeView.tsx +89 -0
  232. package/src/editor/nodeViews/TaskItemComponent.tsx +29 -0
  233. package/src/editor/nodeViews/index.ts +35 -0
  234. package/src/editor/plugins/index.ts +58 -0
  235. package/src/editor/plugins/inputrules.ts +82 -0
  236. package/src/editor/plugins/placeholderPlugin.ts +55 -0
  237. package/src/editor/plugins/slashCommandPlugin.ts +61 -0
  238. package/src/editor/schema.ts +240 -0
  239. package/src/editor/selectors/ai-selector.tsx +111 -0
  240. package/src/editor/selectors/color-selector.tsx +200 -0
  241. package/src/editor/selectors/link-selector.tsx +118 -0
  242. package/src/editor/selectors/node-selector.tsx +157 -0
  243. package/src/editor/selectors/text-buttons.tsx +86 -0
  244. package/src/editor/types.ts +6 -0
  245. package/src/editor/useProseMirror.ts +126 -0
  246. package/src/editor/utils/prosemirror-utils.ts +108 -0
  247. package/src/editor/utils/remove_classes.ts +17 -0
  248. package/src/editor/utils/useDebouncedCallback.ts +25 -0
  249. package/src/form/EntityForm.tsx +149 -67
  250. package/src/form/EntityFormActions.tsx +19 -12
  251. package/src/form/PropertyFieldBinding.tsx +68 -51
  252. package/src/form/components/ErrorFocus.tsx +3 -3
  253. package/src/form/components/LocalChangesMenu.tsx +13 -13
  254. package/src/form/components/StorageItemPreview.tsx +5 -3
  255. package/src/form/components/StorageUploadProgress.tsx +18 -3
  256. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +18 -5
  257. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +22 -10
  258. package/src/form/field_bindings/BlockFieldBinding.tsx +26 -9
  259. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -17
  260. package/src/form/field_bindings/KeyValueFieldBinding.tsx +46 -25
  261. package/src/form/field_bindings/MapFieldBinding.tsx +88 -70
  262. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +93 -52
  263. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +15 -1
  264. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +25 -11
  265. package/src/form/field_bindings/ReferenceFieldBinding.tsx +25 -11
  266. package/src/form/field_bindings/RepeatFieldBinding.tsx +21 -6
  267. package/src/form/field_bindings/SelectFieldBinding.tsx +7 -5
  268. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +110 -92
  269. package/src/form/field_bindings/SwitchFieldBinding.tsx +31 -14
  270. package/src/form/field_bindings/TextFieldBinding.tsx +77 -38
  271. package/src/form/field_bindings/UserSelectFieldBinding.tsx +7 -5
  272. package/src/form/validation.ts +245 -160
  273. package/src/hooks/index.tsx +1 -0
  274. package/src/hooks/useBreadcrumbsController.tsx +18 -0
  275. package/src/hooks/useBuildNavigationController.tsx +91 -41
  276. package/src/hooks/useCollapsedGroups.ts +18 -9
  277. package/src/hooks/useTranslation.ts +31 -0
  278. package/src/hooks/useValidateAuthenticator.tsx +1 -1
  279. package/src/i18n/FireCMSi18nProvider.tsx +160 -0
  280. package/src/index.ts +5 -0
  281. package/src/internal/useBuildDataSource.ts +68 -34
  282. package/src/internal/useBuildSideDialogsController.tsx +11 -8
  283. package/src/internal/useBuildSideEntityController.tsx +24 -24
  284. package/src/internal/useRestoreScroll.tsx +26 -14
  285. package/src/locales/de.ts +718 -0
  286. package/src/locales/en.ts +730 -0
  287. package/src/locales/es.ts +730 -0
  288. package/src/locales/fr.ts +718 -0
  289. package/src/locales/hi.ts +718 -0
  290. package/src/locales/it.ts +718 -0
  291. package/src/locales/pt.ts +727 -0
  292. package/src/preview/PropertyPreview.tsx +43 -33
  293. package/src/preview/PropertyPreviewProps.tsx +6 -0
  294. package/src/preview/components/DatePreview.tsx +72 -4
  295. package/src/preview/components/EmptyValue.tsx +1 -1
  296. package/src/preview/components/ImagePreview.tsx +37 -21
  297. package/src/preview/components/ReferencePreview.tsx +2 -1
  298. package/src/preview/components/StorageThumbnail.tsx +16 -12
  299. package/src/preview/components/UrlComponentPreview.tsx +32 -27
  300. package/src/preview/components/UserPreview.tsx +3 -1
  301. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +9 -7
  302. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +11 -9
  303. package/src/preview/property_previews/ArrayPropertyPreview.tsx +26 -24
  304. package/src/preview/property_previews/MapPropertyPreview.tsx +49 -27
  305. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +61 -56
  306. package/src/routes/CustomCMSRoute.tsx +1 -0
  307. package/src/routes/FireCMSRoute.tsx +87 -65
  308. package/src/types/analytics.ts +10 -0
  309. package/src/types/collections.ts +97 -3
  310. package/src/types/customization_controller.tsx +2 -1
  311. package/src/types/datasource.ts +54 -56
  312. package/src/types/firecms.tsx +2 -1
  313. package/src/types/index.ts +1 -0
  314. package/src/types/navigation.ts +2 -2
  315. package/src/types/plugins.tsx +77 -1
  316. package/src/types/properties.ts +359 -37
  317. package/src/types/storage.ts +2 -1
  318. package/src/types/translations.ts +752 -0
  319. package/src/util/__tests__/conditions.test.ts +506 -0
  320. package/src/util/__tests__/objects.test.ts +196 -0
  321. package/src/util/callbacks.ts +6 -3
  322. package/src/util/collections.ts +51 -6
  323. package/src/util/conditions.ts +339 -0
  324. package/src/util/entities.ts +29 -30
  325. package/src/util/entity_cache.ts +2 -1
  326. package/src/util/index.ts +3 -1
  327. package/src/util/join_collections.ts +10 -8
  328. package/src/util/lazy_eager.tsx +33 -0
  329. package/src/util/objects.ts +46 -13
  330. package/src/util/{references.ts → previews.ts} +16 -2
  331. package/src/util/property_utils.tsx +37 -11
  332. package/src/util/resolutions.ts +62 -58
  333. package/src/util/useStorageUploadController.tsx +23 -29
  334. /package/dist/util/{references.d.ts → previews.d.ts} +0 -0
@@ -34,5 +34,15 @@ export type CMSAnalyticsEvent =
34
34
 
35
35
  | "collection_inline_editing"
36
36
 
37
+ | "view_mode_changed"
38
+
39
+ | "kanban_card_moved"
40
+ | "kanban_column_reorder"
41
+ | "kanban_property_changed"
42
+ | "kanban_new_entity_in_column"
43
+ | "kanban_backfill_order"
44
+
45
+ | "card_view_entity_click"
46
+
37
47
  | "unmapped_event"
38
48
  ;
@@ -163,6 +163,31 @@ export interface EntityCollection<M extends Record<string, any> = any, USER exte
163
163
  */
164
164
  subcollections?: EntityCollection<any, any>[];
165
165
 
166
+ /**
167
+ * You can group subcollections and custom views into dropdown menus
168
+ * in the entity view tabs. Views listed in a group will be removed
169
+ * from the top-level tabs and shown under a single dropdown instead.
170
+ *
171
+ * @example
172
+ * ```tsx
173
+ * const productsCollection = buildCollection({
174
+ * id: "products",
175
+ * path: "products",
176
+ * name: "Products",
177
+ * properties: { ... },
178
+ * subcollections: [localesCollection, reviewsCollection],
179
+ * entityViews: [sampleView],
180
+ * viewGroups: [
181
+ * {
182
+ * name: "Related data",
183
+ * views: ["locales", "reviews", "sample_view"]
184
+ * }
185
+ * ]
186
+ * });
187
+ * ```
188
+ */
189
+ viewGroups?: ViewGroup[];
190
+
166
191
  /**
167
192
  * This interface defines all the callbacks that can be used when an entity
168
193
  * is being created, updated or deleted.
@@ -364,8 +389,76 @@ export interface EntityCollection<M extends Record<string, any> = any, USER exte
364
389
  * Defaults to `manual_apply`.
365
390
  */
366
391
  localChangesBackup?: "manual_apply" | "auto_apply" | false;
392
+
393
+ /**
394
+ * Default view mode for displaying this collection.
395
+ * - "table": Display entities in a spreadsheet-like table (default)
396
+ * - "cards": Display entities as a grid of cards with thumbnails
397
+ * - "kanban": Display entities in a Kanban board grouped by a property
398
+ * Defaults to "table".
399
+ */
400
+ defaultViewMode?: ViewMode;
401
+
402
+ /**
403
+ * Which view modes are available for this collection.
404
+ * Possible values: "table", "cards", "kanban".
405
+ * Defaults to all three: ["table", "cards", "kanban"].
406
+ * Note: "kanban" will only be available if the collection has at least
407
+ * one string property with enumValues defined, regardless of this setting.
408
+ */
409
+ enabledViews?: ViewMode[];
410
+
411
+ /**
412
+ * Configuration for Kanban board view mode.
413
+ * When set, the Kanban view mode becomes available.
414
+ */
415
+ kanban?: KanbanConfig<M>;
416
+
417
+ /**
418
+ * Property key to use for ordering items.
419
+ * Must reference a number property. When items are reordered,
420
+ * this property will be updated to reflect the new order using
421
+ * fractional indexing. Used by Kanban view for ordering within columns
422
+ * and can be used for general ordering purposes.
423
+ */
424
+ orderProperty?: Extract<keyof M, string>;
367
425
  }
368
426
 
427
+ /**
428
+ * Configuration for Kanban board view mode.
429
+ * @group Collections
430
+ */
431
+ export interface KanbanConfig<M extends Record<string, any> = any> {
432
+ /**
433
+ * Property key to use for Kanban board columns.
434
+ * Must reference a string property with enumValues defined.
435
+ * Entities will be grouped into columns based on this property's value.
436
+ * The column order is determined by the order of enumValues in the property.
437
+ */
438
+ columnProperty: Extract<keyof M, string>;
439
+ }
440
+
441
+ /**
442
+ * You can group subcollections and custom views into dropdown menus in the entity view tabs.
443
+ * @group Collections
444
+ */
445
+ export interface ViewGroup {
446
+ /**
447
+ * Name of the group
448
+ */
449
+ name: string;
450
+ /**
451
+ * Array of subcollection paths/ids or custom view keys
452
+ */
453
+ views: string[];
454
+ }
455
+
456
+ /**
457
+ * View mode for displaying a collection.
458
+ * @group Collections
459
+ */
460
+ export type ViewMode = "table" | "cards" | "kanban";
461
+
369
462
  /**
370
463
  * Parameter passed to the `Actions` prop in the collection configuration.
371
464
  * The component will receive this prop when it is rendered in the collection
@@ -413,9 +506,10 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, USE
413
506
  context: FireCMSContext<USER>;
414
507
 
415
508
  /**
416
- * Count of the entities in this collection
509
+ * Count of the entities in this collection.
510
+ * undefined means the count is still loading.
417
511
  */
418
- collectionEntitiesCount: number;
512
+ collectionEntitiesCount?: number;
419
513
 
420
514
  }
421
515
 
@@ -647,7 +741,7 @@ export type EntityTableController<M extends Record<string, any> = any> = {
647
741
  paginationEnabled?: boolean;
648
742
  pageSize?: number;
649
743
  checkFilterCombination?: (filterValues: FilterValues<any>,
650
- sortBy?: [string, "asc" | "desc"]) => boolean;
744
+ sortBy?: [string, "asc" | "desc"]) => boolean;
651
745
  popupCell?: SelectedCellProps<M>;
652
746
  setPopupCell?: (popupCell?: SelectedCellProps<M>) => void;
653
747
 
@@ -42,7 +42,8 @@ export type CustomizationController = {
42
42
  dateTimeFormat?: string;
43
43
 
44
44
  /**
45
- * Locale of the CMS, currently only affecting dates
45
+ * Locale of the CMS.
46
+ * Affects date formatting.
46
47
  */
47
48
  locale?: Locale;
48
49
 
@@ -19,9 +19,9 @@ export interface FetchEntityProps<M extends Record<string, any> = any> {
19
19
  export type ListenEntityProps<M extends Record<string, any> = any> =
20
20
  FetchEntityProps<M>
21
21
  & {
22
- onUpdate: (entity: Entity<M>) => void,
23
- onError?: (error: Error) => void,
24
- }
22
+ onUpdate: (entity: Entity<M>) => void,
23
+ onError?: (error: Error) => void,
24
+ }
25
25
 
26
26
  /**
27
27
  * @group Datasource
@@ -88,15 +88,15 @@ export interface DataSource {
88
88
  * @see useCollectionFetch if you need this functionality implemented as a hook
89
89
  */
90
90
  fetchCollection<M extends Record<string, any> = any>({
91
- path,
92
- collection,
93
- filter,
94
- limit,
95
- startAfter,
96
- orderBy,
97
- order,
98
- searchString
99
- }: FetchCollectionProps<M>
91
+ path,
92
+ collection,
93
+ filter,
94
+ limit,
95
+ startAfter,
96
+ orderBy,
97
+ order,
98
+ searchString
99
+ }: FetchCollectionProps<M>
100
100
  ): Promise<Entity<M>[]>;
101
101
 
102
102
  /**
@@ -137,11 +137,11 @@ export interface DataSource {
137
137
  * @param collection
138
138
  */
139
139
  fetchEntity<M extends Record<string, any> = any>({
140
- path,
141
- entityId,
142
- databaseId,
143
- collection
144
- }: FetchEntityProps<M>
140
+ path,
141
+ entityId,
142
+ databaseId,
143
+ collection
144
+ }: FetchEntityProps<M>
145
145
  ): Promise<Entity<M> | undefined>;
146
146
 
147
147
  /**
@@ -154,12 +154,12 @@ export interface DataSource {
154
154
  * @return Function to cancel subscription
155
155
  */
156
156
  listenEntity?<M extends Record<string, any> = any>({
157
- path,
158
- entityId,
159
- collection,
160
- onUpdate,
161
- onError
162
- }: ListenEntityProps<M>): () => void;
157
+ path,
158
+ entityId,
159
+ collection,
160
+ onUpdate,
161
+ onError
162
+ }: ListenEntityProps<M>): () => void;
163
163
 
164
164
  /**
165
165
  * Save entity to the specified path
@@ -274,14 +274,14 @@ export interface DataSourceDelegate {
274
274
  * @see useCollectionFetch if you need this functionality implemented as a hook
275
275
  */
276
276
  fetchCollection<M extends Record<string, any> = any>({
277
- path,
278
- filter,
279
- limit,
280
- startAfter,
281
- orderBy,
282
- order,
283
- searchString
284
- }: FetchCollectionDelegateProps<M>): Promise<Entity<M>[]>;
277
+ path,
278
+ filter,
279
+ limit,
280
+ startAfter,
281
+ orderBy,
282
+ order,
283
+ searchString
284
+ }: FetchCollectionDelegateProps<M>): Promise<Entity<M>[]>;
285
285
 
286
286
  /**
287
287
  * Listen to a collection in a given path. If you don't implement this method
@@ -299,16 +299,16 @@ export interface DataSourceDelegate {
299
299
  * @see useCollectionFetch if you need this functionality implemented as a hook
300
300
  */
301
301
  listenCollection?<M extends Record<string, any> = any>({
302
- path,
303
- filter,
304
- limit,
305
- startAfter,
306
- searchString,
307
- orderBy,
308
- order,
309
- onUpdate,
310
- onError
311
- }: ListenCollectionDelegateProps<M>): () => void;
302
+ path,
303
+ filter,
304
+ limit,
305
+ startAfter,
306
+ searchString,
307
+ orderBy,
308
+ order,
309
+ onUpdate,
310
+ onError
311
+ }: ListenCollectionDelegateProps<M>): () => void;
312
312
 
313
313
  /**
314
314
  * Retrieve an entity given a path and a collection
@@ -316,9 +316,9 @@ export interface DataSourceDelegate {
316
316
  * @param entityId
317
317
  */
318
318
  fetchEntity<M extends Record<string, any> = any>({
319
- path,
320
- entityId,
321
- }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
319
+ path,
320
+ entityId,
321
+ }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
322
322
 
323
323
  /**
324
324
  * Get realtime updates on one entity.
@@ -330,11 +330,11 @@ export interface DataSourceDelegate {
330
330
  * @return Function to cancel subscription
331
331
  */
332
332
  listenEntity?<M extends Record<string, any> = any>({
333
- path,
334
- entityId,
335
- onUpdate,
336
- onError
337
- }: ListenEntityProps<M>): () => void;
333
+ path,
334
+ entityId,
335
+ onUpdate,
336
+ onError
337
+ }: ListenEntityProps<M>): () => void;
338
338
 
339
339
  /**
340
340
  * Save entity to the specified path
@@ -344,11 +344,11 @@ export interface DataSourceDelegate {
344
344
  * @param status
345
345
  */
346
346
  saveEntity<M extends Record<string, any> = any>({
347
- path,
348
- entityId,
349
- values,
350
- status
351
- }: SaveEntityDelegateProps<M>): Promise<Entity<M>>;
347
+ path,
348
+ entityId,
349
+ values,
350
+ status
351
+ }: SaveEntityDelegateProps<M>): Promise<Entity<M>>;
352
352
 
353
353
  /**
354
354
  * Delete an entity
@@ -395,8 +395,6 @@ export interface DataSourceDelegate {
395
395
 
396
396
  cmsToDelegateModel: (data: any) => any;
397
397
 
398
- setDateToMidnight: (input?: any) => any;
399
-
400
398
  initTextSearch?: (props: {
401
399
  context: FireCMSContext,
402
400
  path: string,
@@ -111,7 +111,8 @@ export type FireCMSProps<USER extends User> = {
111
111
  dateTimeFormat?: string;
112
112
 
113
113
  /**
114
- * Locale of the CMS, currently only affecting dates
114
+ * Locale of the CMS.
115
+ * Affects date formatting.
115
116
  */
116
117
  locale?: Locale;
117
118
 
@@ -28,3 +28,4 @@ export * from "./export_import";
28
28
  export * from "./modify_collections";
29
29
  export * from "./analytics_controller";
30
30
  export * from "./customization_controller";
31
+ export * from "./translations";
@@ -252,7 +252,7 @@ export interface NavigationEntry {
252
252
  collection?: EntityCollection;
253
253
  view?: CMSView;
254
254
  description?: string;
255
- group: string;
255
+ group: string | null;
256
256
  }
257
257
 
258
258
  export type NavigationResult = {
@@ -261,7 +261,7 @@ export type NavigationResult = {
261
261
 
262
262
  navigationEntries: NavigationEntry[],
263
263
 
264
- groups: string[],
264
+ groups: (string | null)[],
265
265
 
266
266
  onNavigationEntriesUpdate: (entries: NavigationGroupMapping[]) => void;
267
267
  };
@@ -7,7 +7,7 @@ import { FieldProps, FormContext } from "./fields";
7
7
  import { CMSType, Property } from "./properties";
8
8
  import { EntityStatus } from "./entities";
9
9
  import { ResolvedProperty } from "./resolved_entities";
10
- import { NavigationGroupMapping } from "./navigation";
10
+ import { NavigationGroupMapping, CMSView } from "./navigation";
11
11
  import { InternalUserManagement } from "./internal_user_management";
12
12
 
13
13
  /**
@@ -28,6 +28,14 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
28
28
  */
29
29
  loading?: boolean;
30
30
 
31
+ /**
32
+ * Override any FireCMS UI string, or provide translations for additional
33
+ * locales, specific for this plugin.
34
+ * Keys can be existing `FireCMSTranslations` keys, or new keys if using
35
+ * module augmentation.
36
+ */
37
+ i18n?: Record<string, Record<string, string>>;
38
+
31
39
  /**
32
40
  * You can use this prop to add higher order components to the CMS.
33
41
  * The components will be added to the root of the CMS, so any component
@@ -46,6 +54,12 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
46
54
 
47
55
  userManagement?: InternalUserManagement
48
56
 
57
+ /**
58
+ * Views to be automatically added to the navigation.
59
+ * These views will be merged with the views provided to useBuildNavigationController.
60
+ */
61
+ views?: CMSView[];
62
+
49
63
  homePage?: {
50
64
 
51
65
  /**
@@ -106,6 +120,19 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
106
120
 
107
121
  collectionView?: {
108
122
 
123
+ /**
124
+ * Custom component to render when a collection loading error occurs.
125
+ * If provided, this replaces the default error view in all collection view modes
126
+ * (table, card, kanban).
127
+ * Return `null` from the component to fall back to the default error view.
128
+ */
129
+ CollectionError?: React.ComponentType<{
130
+ path: string;
131
+ collection: EC;
132
+ parentCollectionIds?: string[];
133
+ error: Error;
134
+ }>;
135
+
109
136
  /**
110
137
  * Use this component to add custom actions to the entity collections
111
138
  * toolbar.
@@ -161,6 +188,50 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
161
188
  collection: EC;
162
189
  tableController: EntityTableController;
163
190
  }>;
191
+
192
+ /**
193
+ * Callback called when columns are reordered via drag and drop.
194
+ * Used by plugins to persist the new column order.
195
+ */
196
+ onColumnsReorder?: (props: {
197
+ fullPath: string;
198
+ parentCollectionIds: string[];
199
+ collection: EC;
200
+ newPropertiesOrder: string[];
201
+ }) => void;
202
+
203
+ /**
204
+ * Callback called when Kanban board columns are reordered via drag and drop.
205
+ * Used by plugins to persist the new Kanban column order.
206
+ */
207
+ onKanbanColumnsReorder?: (props: {
208
+ fullPath: string;
209
+ parentCollectionIds: string[];
210
+ collection: EC;
211
+ kanbanColumnProperty: string;
212
+ newColumnsOrder: string[];
213
+ }) => void;
214
+
215
+ /**
216
+ * Component to render when Kanban view is missing configuration.
217
+ * Used to provide a CTA to open the collection editor to configure Kanban.
218
+ */
219
+ KanbanSetupComponent?: React.ComponentType<{
220
+ collection: EC;
221
+ fullPath: string;
222
+ parentCollectionIds: string[];
223
+ }>;
224
+
225
+ /**
226
+ * Component to render an "Add Column" button at the end of the Kanban board.
227
+ * Used to allow adding new enum values to the column property.
228
+ */
229
+ AddKanbanColumnComponent?: React.ComponentType<{
230
+ collection: EC;
231
+ fullPath: string;
232
+ parentCollectionIds: string[];
233
+ columnProperty: string;
234
+ }>;
164
235
  }
165
236
 
166
237
  form?: {
@@ -179,6 +250,11 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
179
250
  */
180
251
  ActionsTop?: React.ComponentType<PluginFormActionProps<any, EC>>;
181
252
 
253
+ /**
254
+ * Add custom content above the entity title in the form view
255
+ */
256
+ BeforeTitle?: React.ComponentType<PluginFormActionProps<any, EC>>;
257
+
182
258
  fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
183
259
 
184
260
  fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;