@firecms/core 3.0.0 → 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 (340) 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/VirtualTable.performance.test.d.ts +1 -0
  32. package/dist/components/VirtualTable/VirtualTableCell.d.ts +6 -0
  33. package/dist/components/VirtualTable/VirtualTableHeader.d.ts +4 -1
  34. package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +1 -1
  35. package/dist/components/VirtualTable/VirtualTableProps.d.ts +17 -1
  36. package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +1 -0
  37. package/dist/components/VirtualTable/types.d.ts +3 -0
  38. package/dist/components/index.d.ts +4 -0
  39. package/dist/contexts/index.d.ts +10 -0
  40. package/dist/core/DrawerNavigationGroup.d.ts +45 -0
  41. package/dist/core/index.d.ts +1 -0
  42. package/dist/editor/components/SlashCommandMenu.d.ts +6 -0
  43. package/dist/editor/components/editor-bubble-item.d.ts +8 -0
  44. package/dist/editor/components/editor-bubble.d.ts +8 -0
  45. package/dist/editor/components/image-bubble.d.ts +5 -0
  46. package/dist/editor/components/index.d.ts +16 -0
  47. package/dist/editor/components/table-bubble.d.ts +5 -0
  48. package/dist/editor/editor.d.ts +30 -0
  49. package/dist/editor/extensions/HighlightDecorationExtension.d.ts +24 -0
  50. package/dist/editor/extensions/Image/index.d.ts +6 -0
  51. package/dist/editor/extensions/Image.d.ts +6 -0
  52. package/dist/editor/extensions/TextLoadingDecorationExtension.d.ts +16 -0
  53. package/dist/editor/extensions/clipboard.d.ts +7 -0
  54. package/dist/editor/extensions/custom-keymap.d.ts +1 -0
  55. package/dist/editor/extensions/drag-and-drop.d.ts +9 -0
  56. package/dist/editor/hooks/useProseMirror.d.ts +13 -0
  57. package/dist/editor/hooks/useProseMirrorContext.d.ts +9 -0
  58. package/dist/editor/index.d.ts +2 -0
  59. package/dist/editor/markdown.d.ts +5 -0
  60. package/dist/editor/nodeViews/ImageComponent.d.ts +3 -0
  61. package/dist/editor/nodeViews/ReactNodeView.d.ts +29 -0
  62. package/dist/editor/nodeViews/TaskItemComponent.d.ts +3 -0
  63. package/dist/editor/nodeViews/index.d.ts +6 -0
  64. package/dist/editor/plugins/index.d.ts +2 -0
  65. package/dist/editor/plugins/inputrules.d.ts +6 -0
  66. package/dist/editor/plugins/placeholderPlugin.d.ts +3 -0
  67. package/dist/editor/plugins/slashCommandPlugin.d.ts +12 -0
  68. package/dist/editor/schema.d.ts +2 -0
  69. package/dist/editor/selectors/ai-selector.d.ts +0 -0
  70. package/dist/editor/selectors/color-selector.d.ts +10 -0
  71. package/dist/editor/selectors/link-selector.d.ts +8 -0
  72. package/dist/editor/selectors/node-selector.d.ts +15 -0
  73. package/dist/editor/selectors/text-buttons.d.ts +1 -0
  74. package/dist/editor/types.d.ts +5 -0
  75. package/dist/editor/useProseMirror.d.ts +16 -0
  76. package/dist/editor/utils/prosemirror-utils.d.ts +6 -0
  77. package/dist/editor/utils/remove_classes.d.ts +1 -0
  78. package/dist/editor/utils/useDebouncedCallback.d.ts +1 -0
  79. package/dist/form/components/ErrorFocus.d.ts +1 -1
  80. package/dist/form/components/LocalChangesMenu.d.ts +2 -2
  81. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  82. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  83. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +1 -1
  84. package/dist/form/validation.d.ts +3 -2
  85. package/dist/hooks/index.d.ts +1 -0
  86. package/dist/hooks/useBreadcrumbsController.d.ts +16 -0
  87. package/dist/hooks/useBuildNavigationController.d.ts +0 -1
  88. package/dist/hooks/useCollapsedGroups.d.ts +6 -3
  89. package/dist/hooks/useTranslation.d.ts +17 -0
  90. package/dist/i18n/FireCMSi18nProvider.d.ts +33 -0
  91. package/dist/index.d.ts +5 -0
  92. package/dist/index.es.js +31028 -16080
  93. package/dist/index.es.js.map +1 -1
  94. package/dist/index.umd.js +29955 -15028
  95. package/dist/index.umd.js.map +1 -1
  96. package/dist/internal/useRestoreScroll.d.ts +1 -1
  97. package/dist/locales/de.d.ts +2 -0
  98. package/dist/locales/en.d.ts +10 -0
  99. package/dist/locales/es.d.ts +10 -0
  100. package/dist/locales/fr.d.ts +2 -0
  101. package/dist/locales/hi.d.ts +2 -0
  102. package/dist/locales/it.d.ts +2 -0
  103. package/dist/locales/pt.d.ts +7 -0
  104. package/dist/preview/PropertyPreviewProps.d.ts +5 -0
  105. package/dist/preview/components/DatePreview.d.ts +13 -3
  106. package/dist/preview/components/ImagePreview.d.ts +5 -1
  107. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  108. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  109. package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +1 -1
  110. package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +1 -1
  111. package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +1 -1
  112. package/dist/types/analytics.d.ts +1 -1
  113. package/dist/types/collections.d.ts +88 -2
  114. package/dist/types/customization_controller.d.ts +2 -1
  115. package/dist/types/datasource.d.ts +0 -1
  116. package/dist/types/entities.d.ts +1 -0
  117. package/dist/types/firecms.d.ts +2 -1
  118. package/dist/types/index.d.ts +1 -0
  119. package/dist/types/navigation.d.ts +2 -2
  120. package/dist/types/plugins.d.ts +69 -1
  121. package/dist/types/properties.d.ts +277 -12
  122. package/dist/types/storage.d.ts +9 -0
  123. package/dist/types/translations.d.ts +669 -0
  124. package/dist/util/__tests__/conditions.test.d.ts +1 -0
  125. package/dist/util/__tests__/objects.test.d.ts +1 -0
  126. package/dist/util/conditions.d.ts +26 -0
  127. package/dist/util/entities.d.ts +2 -3
  128. package/dist/util/index.d.ts +3 -1
  129. package/dist/util/lazy_eager.d.ts +7 -0
  130. package/dist/util/objects.d.ts +1 -0
  131. package/dist/util/property_utils.d.ts +2 -1
  132. package/dist/util/resolutions.d.ts +3 -3
  133. package/dist/util/useStorageUploadController.d.ts +11 -2
  134. package/package.json +52 -12
  135. package/src/app/Scaffold.tsx +20 -19
  136. package/src/components/AIIcon.tsx +41 -0
  137. package/src/components/ArrayContainer.tsx +7 -8
  138. package/src/components/ClearFilterSortButton.tsx +25 -19
  139. package/src/components/ConfirmationDialog.tsx +4 -4
  140. package/src/components/DeleteEntityDialog.tsx +12 -11
  141. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +82 -43
  142. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +130 -79
  143. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +121 -104
  144. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +132 -103
  145. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +6 -3
  146. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +24 -44
  147. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +90 -49
  148. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +1 -1
  149. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +3 -2
  150. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +11 -11
  151. package/src/components/EntityCollectionView/Board.tsx +324 -0
  152. package/src/components/EntityCollectionView/BoardColumn.tsx +158 -0
  153. package/src/components/EntityCollectionView/BoardColumnTitle.tsx +45 -0
  154. package/src/components/EntityCollectionView/BoardSortableList.tsx +174 -0
  155. package/src/components/EntityCollectionView/CollectionDataErrorBanner.tsx +43 -0
  156. package/src/components/EntityCollectionView/EntityBoardCard.tsx +212 -0
  157. package/src/components/EntityCollectionView/EntityCard.tsx +235 -0
  158. package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +706 -0
  159. package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +236 -0
  160. package/src/components/EntityCollectionView/EntityCollectionView.tsx +531 -209
  161. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +35 -22
  162. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +86 -15
  163. package/src/components/EntityCollectionView/FiltersDialog.tsx +252 -0
  164. package/src/components/EntityCollectionView/ViewModeToggle.tsx +202 -0
  165. package/src/components/EntityCollectionView/board_types.ts +113 -0
  166. package/src/components/EntityCollectionView/useBoardDataController.tsx +490 -0
  167. package/src/components/EntityJsonPreview.tsx +2 -1
  168. package/src/components/EntityPreview.tsx +1 -1
  169. package/src/components/EntityView.tsx +3 -2
  170. package/src/components/ErrorBoundary.tsx +27 -15
  171. package/src/components/ErrorTooltip.tsx +2 -1
  172. package/src/components/HomePage/DefaultHomePage.tsx +65 -22
  173. package/src/components/HomePage/HomePageDnD.tsx +59 -42
  174. package/src/components/HomePage/NavigationCard.tsx +20 -18
  175. package/src/components/HomePage/NavigationGroup.tsx +20 -17
  176. package/src/components/HomePage/RenameGroupDialog.tsx +15 -15
  177. package/src/components/HomePage/SmallNavigationCard.tsx +10 -9
  178. package/src/components/LanguageToggle.tsx +66 -0
  179. package/src/components/NotFoundPage.tsx +5 -3
  180. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +12 -17
  181. package/src/components/ReferenceWidget.tsx +5 -6
  182. package/src/components/SearchIconsView.tsx +3 -1
  183. package/src/components/SelectableTable/SelectableTable.tsx +75 -67
  184. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +7 -6
  185. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +50 -40
  186. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +53 -40
  187. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +60 -58
  188. package/src/components/UnsavedChangesDialog.tsx +6 -6
  189. package/src/components/UserDisplay.tsx +4 -4
  190. package/src/components/VirtualTable/VirtualTable.performance.test.tsx +387 -0
  191. package/src/components/VirtualTable/VirtualTable.tsx +277 -121
  192. package/src/components/VirtualTable/VirtualTableCell.tsx +18 -2
  193. package/src/components/VirtualTable/VirtualTableHeader.tsx +76 -64
  194. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +163 -42
  195. package/src/components/VirtualTable/VirtualTableProps.tsx +21 -2
  196. package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
  197. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +3 -0
  198. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +19 -6
  199. package/src/components/VirtualTable/types.tsx +3 -0
  200. package/src/components/common/default_entity_actions.tsx +4 -0
  201. package/src/components/common/useColumnsIds.tsx +95 -3
  202. package/src/components/common/useDataSourceTableController.tsx +12 -4
  203. package/src/components/index.tsx +5 -0
  204. package/src/contexts/BreacrumbsContext.tsx +15 -8
  205. package/src/contexts/index.ts +10 -0
  206. package/src/core/DefaultAppBar.tsx +49 -32
  207. package/src/core/DefaultDrawer.tsx +49 -57
  208. package/src/core/DrawerNavigationGroup.tsx +120 -0
  209. package/src/core/DrawerNavigationItem.tsx +4 -3
  210. package/src/core/EntityEditView.tsx +94 -50
  211. package/src/core/EntityEditViewFormActions.tsx +24 -17
  212. package/src/core/EntitySidePanel.tsx +34 -30
  213. package/src/core/FireCMS.tsx +33 -6
  214. package/src/core/SideDialogs.tsx +4 -2
  215. package/src/core/field_configs.tsx +18 -11
  216. package/src/core/index.tsx +1 -0
  217. package/src/editor/components/SlashCommandMenu.tsx +516 -0
  218. package/src/editor/components/editor-bubble-item.tsx +32 -0
  219. package/src/editor/components/editor-bubble.tsx +118 -0
  220. package/src/editor/components/image-bubble.tsx +156 -0
  221. package/src/editor/components/index.ts +14 -0
  222. package/src/editor/components/table-bubble.tsx +165 -0
  223. package/src/editor/editor.tsx +455 -0
  224. package/src/editor/extensions/HighlightDecorationExtension.ts +114 -0
  225. package/src/editor/extensions/Image/index.ts +133 -0
  226. package/src/editor/extensions/Image.ts +159 -0
  227. package/src/editor/extensions/TextLoadingDecorationExtension.tsx +107 -0
  228. package/src/editor/extensions/clipboard.ts +72 -0
  229. package/src/editor/extensions/custom-keymap.ts +24 -0
  230. package/src/editor/extensions/drag-and-drop.tsx +480 -0
  231. package/src/editor/hooks/useProseMirror.ts +124 -0
  232. package/src/editor/hooks/useProseMirrorContext.ts +15 -0
  233. package/src/editor/index.ts +2 -0
  234. package/src/editor/markdown.ts +172 -0
  235. package/src/editor/nodeViews/ImageComponent.tsx +20 -0
  236. package/src/editor/nodeViews/ReactNodeView.tsx +89 -0
  237. package/src/editor/nodeViews/TaskItemComponent.tsx +29 -0
  238. package/src/editor/nodeViews/index.ts +35 -0
  239. package/src/editor/plugins/index.ts +58 -0
  240. package/src/editor/plugins/inputrules.ts +82 -0
  241. package/src/editor/plugins/placeholderPlugin.ts +55 -0
  242. package/src/editor/plugins/slashCommandPlugin.ts +61 -0
  243. package/src/editor/schema.ts +240 -0
  244. package/src/editor/selectors/ai-selector.tsx +111 -0
  245. package/src/editor/selectors/color-selector.tsx +200 -0
  246. package/src/editor/selectors/link-selector.tsx +118 -0
  247. package/src/editor/selectors/node-selector.tsx +157 -0
  248. package/src/editor/selectors/text-buttons.tsx +86 -0
  249. package/src/editor/types.ts +6 -0
  250. package/src/editor/useProseMirror.ts +126 -0
  251. package/src/editor/utils/prosemirror-utils.ts +108 -0
  252. package/src/editor/utils/remove_classes.ts +17 -0
  253. package/src/editor/utils/useDebouncedCallback.ts +25 -0
  254. package/src/form/EntityForm.tsx +150 -75
  255. package/src/form/EntityFormActions.tsx +19 -12
  256. package/src/form/PropertyFieldBinding.tsx +68 -51
  257. package/src/form/components/ErrorFocus.tsx +3 -3
  258. package/src/form/components/LocalChangesMenu.tsx +19 -19
  259. package/src/form/components/StorageItemPreview.tsx +5 -3
  260. package/src/form/components/StorageUploadProgress.tsx +22 -6
  261. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +18 -5
  262. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +22 -10
  263. package/src/form/field_bindings/BlockFieldBinding.tsx +26 -9
  264. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -17
  265. package/src/form/field_bindings/KeyValueFieldBinding.tsx +46 -25
  266. package/src/form/field_bindings/MapFieldBinding.tsx +88 -70
  267. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +93 -52
  268. package/src/form/field_bindings/MultiSelectFieldBinding.tsx +15 -1
  269. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +25 -11
  270. package/src/form/field_bindings/ReferenceFieldBinding.tsx +25 -11
  271. package/src/form/field_bindings/RepeatFieldBinding.tsx +21 -6
  272. package/src/form/field_bindings/SelectFieldBinding.tsx +7 -5
  273. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +110 -92
  274. package/src/form/field_bindings/SwitchFieldBinding.tsx +31 -14
  275. package/src/form/field_bindings/TextFieldBinding.tsx +77 -38
  276. package/src/form/field_bindings/UserSelectFieldBinding.tsx +7 -5
  277. package/src/form/validation.ts +245 -160
  278. package/src/hooks/index.tsx +1 -0
  279. package/src/hooks/useBreadcrumbsController.tsx +18 -0
  280. package/src/hooks/useBuildNavigationController.tsx +91 -41
  281. package/src/hooks/useCollapsedGroups.ts +18 -9
  282. package/src/hooks/useTranslation.ts +31 -0
  283. package/src/hooks/useValidateAuthenticator.tsx +1 -1
  284. package/src/i18n/FireCMSi18nProvider.tsx +160 -0
  285. package/src/index.ts +5 -0
  286. package/src/internal/useBuildDataSource.ts +68 -34
  287. package/src/internal/useBuildSideDialogsController.tsx +11 -8
  288. package/src/internal/useBuildSideEntityController.tsx +24 -24
  289. package/src/internal/useRestoreScroll.tsx +26 -14
  290. package/src/locales/de.ts +718 -0
  291. package/src/locales/en.ts +730 -0
  292. package/src/locales/es.ts +730 -0
  293. package/src/locales/fr.ts +718 -0
  294. package/src/locales/hi.ts +718 -0
  295. package/src/locales/it.ts +718 -0
  296. package/src/locales/pt.ts +727 -0
  297. package/src/preview/PropertyPreview.tsx +43 -33
  298. package/src/preview/PropertyPreviewProps.tsx +6 -0
  299. package/src/preview/components/DatePreview.tsx +72 -4
  300. package/src/preview/components/EmptyValue.tsx +1 -1
  301. package/src/preview/components/ImagePreview.tsx +37 -21
  302. package/src/preview/components/ReferencePreview.tsx +8 -2
  303. package/src/preview/components/StorageThumbnail.tsx +16 -12
  304. package/src/preview/components/UrlComponentPreview.tsx +32 -27
  305. package/src/preview/components/UserPreview.tsx +3 -1
  306. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +9 -7
  307. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +11 -9
  308. package/src/preview/property_previews/ArrayPropertyPreview.tsx +26 -24
  309. package/src/preview/property_previews/MapPropertyPreview.tsx +49 -27
  310. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +61 -56
  311. package/src/routes/CustomCMSRoute.tsx +1 -0
  312. package/src/routes/FireCMSRoute.tsx +87 -65
  313. package/src/types/analytics.ts +10 -0
  314. package/src/types/collections.ts +97 -3
  315. package/src/types/customization_controller.tsx +2 -1
  316. package/src/types/datasource.ts +54 -56
  317. package/src/types/entities.ts +10 -0
  318. package/src/types/firecms.tsx +2 -1
  319. package/src/types/index.ts +1 -0
  320. package/src/types/navigation.ts +2 -2
  321. package/src/types/plugins.tsx +77 -1
  322. package/src/types/properties.ts +369 -37
  323. package/src/types/storage.ts +11 -1
  324. package/src/types/translations.ts +752 -0
  325. package/src/util/__tests__/conditions.test.ts +506 -0
  326. package/src/util/__tests__/objects.test.ts +196 -0
  327. package/src/util/callbacks.ts +6 -3
  328. package/src/util/collections.ts +51 -6
  329. package/src/util/conditions.ts +339 -0
  330. package/src/util/entities.ts +29 -30
  331. package/src/util/entity_cache.ts +2 -1
  332. package/src/util/index.ts +3 -1
  333. package/src/util/join_collections.ts +10 -8
  334. package/src/util/lazy_eager.tsx +33 -0
  335. package/src/util/objects.ts +46 -13
  336. package/src/util/{references.ts → previews.ts} +16 -2
  337. package/src/util/property_utils.tsx +37 -11
  338. package/src/util/resolutions.ts +62 -58
  339. package/src/util/useStorageUploadController.tsx +34 -30
  340. /package/dist/util/{references.d.ts → previews.d.ts} +0 -0
@@ -12,12 +12,12 @@ import { ErrorBoundary } from "../../components";
12
12
  * @group Preview components
13
13
  */
14
14
  export function ArrayOfStorageComponentsPreview({
15
- propertyKey,
16
- // entity,
17
- value,
18
- property: inputProperty,
19
- size
20
- }: PropertyPreviewProps<any[]>) {
15
+ propertyKey,
16
+ // entity,
17
+ value,
18
+ property: inputProperty,
19
+ size
20
+ }: PropertyPreviewProps<any[]>) {
21
21
 
22
22
  const authController = useAuthController();
23
23
  const customizationController = useCustomizationController();
@@ -28,6 +28,8 @@ export function ArrayOfStorageComponentsPreview({
28
28
  authController
29
29
  });
30
30
 
31
+ if (!property) return null;
32
+
31
33
  if (Array.isArray(property.of)) {
32
34
  throw Error("Using array properties instead of single one in `of` in ArrayProperty");
33
35
  }
@@ -47,7 +49,7 @@ export function ArrayOfStorageComponentsPreview({
47
49
  value={v}
48
50
  // entity={entity}
49
51
  property={property.of as ResolvedProperty<string>}
50
- size={childSize}/>
52
+ size={childSize} />
51
53
  </ErrorBoundary>
52
54
  )}
53
55
  </div>
@@ -10,12 +10,12 @@ import { ErrorBoundary } from "../../components";
10
10
  * @group Preview components
11
11
  */
12
12
  export function ArrayOfStringsPreview({
13
- propertyKey,
14
- value,
15
- property: inputProperty,
16
- // entity,
17
- size
18
- }: PropertyPreviewProps<string[]>) {
13
+ propertyKey,
14
+ value,
15
+ property: inputProperty,
16
+ // entity,
17
+ size
18
+ }: PropertyPreviewProps<string[]>) {
19
19
  const authController = useAuthController();
20
20
  const customizationController = useCustomizationController();
21
21
  const property = resolveArrayProperty({
@@ -25,6 +25,8 @@ export function ArrayOfStringsPreview({
25
25
  authController
26
26
  });
27
27
 
28
+ if (!property) return null;
29
+
28
30
  if (Array.isArray(property.of)) {
29
31
  throw Error("Using array properties instead of single one in `of` in ArrayProperty");
30
32
  }
@@ -43,10 +45,10 @@ export function ArrayOfStringsPreview({
43
45
  <div key={`preview_array_strings_${propertyKey}_${index}`}>
44
46
  <ErrorBoundary>
45
47
  <StringPropertyPreview propertyKey={propertyKey}
46
- property={stringProperty}
47
- value={v}
48
+ property={stringProperty}
49
+ value={v}
48
50
  // entity={entity}
49
- size={size}/>
51
+ size={size} />
50
52
  </ErrorBoundary>
51
53
  </div>
52
54
  )}
@@ -12,12 +12,12 @@ import { ErrorBoundary } from "../../components";
12
12
  * @group Preview components
13
13
  */
14
14
  export function ArrayPropertyPreview({
15
- propertyKey,
16
- value,
17
- property: inputProperty,
18
- // entity,
19
- size
20
- }: PropertyPreviewProps<any[]>) {
15
+ propertyKey,
16
+ value,
17
+ property: inputProperty,
18
+ // entity,
19
+ size
20
+ }: PropertyPreviewProps<any[]>) {
21
21
 
22
22
  const authController = useAuthController();
23
23
  const customizationController = useCustomizationController();
@@ -28,6 +28,8 @@ export function ArrayPropertyPreview({
28
28
  authController
29
29
  });
30
30
 
31
+ if (!property) return null;
32
+
31
33
  if (!property.of) {
32
34
  throw Error(`You need to specify an 'of' prop (or specify a custom field) in your array property ${propertyKey}`);
33
35
  }
@@ -45,24 +47,24 @@ export function ArrayPropertyPreview({
45
47
  <div className="w-full flex flex-col gap-2">
46
48
  {values &&
47
49
  values.map((value, index) => {
48
- const of: ResolvedProperty = property.resolvedProperties[index] ??
49
- (property.resolvedProperties[index] ?? (Array.isArray(property.of) ? property.of[index] : property.of));
50
- return of
51
- ? <React.Fragment
52
- key={"preview_array_" + index}>
53
- <div className={cls(defaultBorderMixin, "m-1 border-b last:border-b-0")}>
54
- <ErrorBoundary>
55
- <PropertyPreview
56
- propertyKey={propertyKey}
57
- // entity={entity}
58
- value={value}
59
- property={of}
60
- size={childSize}/>
61
- </ErrorBoundary>
62
- </div>
63
- </React.Fragment>
64
- : null;
65
- }
50
+ const of: ResolvedProperty = property.resolvedProperties[index] ??
51
+ (property.resolvedProperties[index] ?? (Array.isArray(property.of) ? property.of[index] : property.of));
52
+ return of
53
+ ? <React.Fragment
54
+ key={"preview_array_" + index}>
55
+ <div className={cls(defaultBorderMixin, "m-1 border-b last:border-b-0")}>
56
+ <ErrorBoundary>
57
+ <PropertyPreview
58
+ propertyKey={propertyKey}
59
+ // entity={entity}
60
+ value={value}
61
+ property={of}
62
+ size={childSize} />
63
+ </ErrorBoundary>
64
+ </div>
65
+ </React.Fragment>
66
+ : null;
67
+ }
66
68
  )}
67
69
  </div>
68
70
  );
@@ -6,6 +6,7 @@ import { PropertyPreview } from "../PropertyPreview";
6
6
  import { cls, defaultBorderMixin, Typography } from "@firecms/ui";
7
7
  import { ErrorBoundary } from "../../components";
8
8
  import { EmptyValue } from "../components/EmptyValue";
9
+ import { DatePreview } from "../components/DatePreview";
9
10
 
10
11
  /**
11
12
  * @group Preview components
@@ -111,37 +112,58 @@ export function KeyValuePreview({ value }: { value: any }) {
111
112
  return <div
112
113
  className="flex flex-col gap-1 w-full">
113
114
  {
114
- Object.entries(value).map(([key, childValue]: [string, any]) => (
115
- <div
116
- key={`map_preview_table_${key}}`}
117
- className={cls(defaultBorderMixin, "last:border-b-0 border-b")}>
115
+ Object.entries(value).map(([key, childValue]: [string, any]) => {
116
+ const isTimestampObj = childValue && typeof childValue === "object" && (
117
+ childValue instanceof Date ||
118
+ ("_seconds" in childValue && "_nanoseconds" in childValue && typeof childValue._seconds === "number" && typeof childValue._nanoseconds === "number") ||
119
+ ("seconds" in childValue && "nanoseconds" in childValue && typeof childValue.seconds === "number" && typeof childValue.nanoseconds === "number")
120
+ );
121
+
122
+ const isScalar = childValue && (typeof childValue !== "object" || isTimestampObj);
123
+
124
+ return (
118
125
  <div
119
- className={"flex flex-row pt-0.5 pb-0.5 gap-2"}>
120
- <div
121
- key={`table-cell-title-${key}-${key}`}
122
- className="min-w-[140px] w-[25%] py-1">
123
- <Typography variant={"caption"}
124
- className={"font-semibold break-words"}
125
- color={"secondary"}>
126
- {key}
127
- </Typography>
128
- </div>
126
+ key={`map_preview_table_${key}}`}
127
+ className={cls(defaultBorderMixin, "last:border-b-0 border-b")}>
129
128
  <div
130
- className="flex-grow max-w-[75%]">
131
- {childValue && typeof childValue !== "object" && <Typography>
132
- <ErrorBoundary>
133
- {childValue.toString()}
134
- </ErrorBoundary>
135
- </Typography>}
129
+ className={"flex flex-row pt-0.5 pb-0.5 gap-2"}>
130
+ <div
131
+ key={`table-cell-title-${key}-${key}`}
132
+ className="min-w-[140px] w-[25%] py-1">
133
+ <Typography variant={"caption"}
134
+ className={"font-semibold break-words"}
135
+ color={"secondary"}>
136
+ {key}
137
+ </Typography>
138
+ </div>
139
+ <div
140
+ className="flex-grow max-w-[75%]">
141
+ {isScalar && (isTimestampObj ? (
142
+ <ErrorBoundary>
143
+ <DatePreview date={
144
+ childValue instanceof Date ? childValue :
145
+ typeof childValue.toDate === "function" ? childValue.toDate() :
146
+ "_seconds" in childValue ? new Date(childValue._seconds * 1000 + childValue._nanoseconds / 1000000) :
147
+ new Date(childValue.seconds * 1000 + childValue.nanoseconds / 1000000)
148
+ } />
149
+ </ErrorBoundary>
150
+ ) : (
151
+ <Typography>
152
+ <ErrorBoundary>
153
+ {childValue.toString()}
154
+ </ErrorBoundary>
155
+ </Typography>
156
+ ))}
157
+ </div>
136
158
  </div>
159
+ {typeof childValue === "object" && !isTimestampObj &&
160
+ <div className={cls(defaultBorderMixin, "border-l pl-4")}>
161
+ <KeyValuePreview value={childValue}/>
162
+ </div>
163
+ }
137
164
  </div>
138
- {typeof childValue === "object" &&
139
- <div className={cls(defaultBorderMixin, "border-l pl-4")}>
140
- <KeyValuePreview value={childValue}/>
141
- </div>
142
- }
143
- </div>
144
- ))
165
+ );
166
+ })
145
167
  }
146
168
  </div>;
147
169
  }
@@ -19,9 +19,9 @@ export interface SkeletonPropertyComponentProps {
19
19
  * @group Preview components
20
20
  */
21
21
  export function SkeletonPropertyComponent({
22
- property,
23
- size
24
- }: SkeletonPropertyComponentProps
22
+ property,
23
+ size
24
+ }: SkeletonPropertyComponentProps
25
25
  ) {
26
26
 
27
27
  if (!property) {
@@ -101,7 +101,7 @@ function renderMap<T extends Record<string, any>>(property: ResolvedMapProperty<
101
101
  {property.properties && property.properties[key] &&
102
102
  <SkeletonPropertyComponent
103
103
  property={property.properties[key]}
104
- size={"medium"}/>}
104
+ size={"medium"} />}
105
105
  </div>
106
106
  ))}
107
107
  </div>
@@ -110,29 +110,29 @@ function renderMap<T extends Record<string, any>>(property: ResolvedMapProperty<
110
110
  return (
111
111
  <table className="table-auto">
112
112
  <tbody>
113
- {mapPropertyKeys &&
114
- mapPropertyKeys.map((key, index) => {
115
- return (
116
- <tr
117
- key={`map_preview_table__${index}`}
118
- className="border-b last:border-b-0">
119
- <th key={`table-cell-title--${key}`}
120
- className="align-top"
121
- style={{ width: "30%" }}>
122
- <p className="text-xs text-secondary">
123
- {property.properties![key].name}
124
- </p>
125
- </th>
126
- <th key={`table-cell-${key}`}
127
- style={{ width: "70%" }}>
128
- {property.properties && property.properties[key] &&
129
- <SkeletonPropertyComponent
130
- property={property.properties[key]}
131
- size={"medium"}/>}
132
- </th>
133
- </tr>
134
- );
135
- })}
113
+ {mapPropertyKeys &&
114
+ mapPropertyKeys.map((key, index) => {
115
+ return (
116
+ <tr
117
+ key={`map_preview_table__${index}`}
118
+ className="border-b last:border-b-0">
119
+ <th key={`table-cell-title--${key}`}
120
+ className="align-top"
121
+ style={{ width: "30%" }}>
122
+ <p className="text-xs text-secondary">
123
+ {property.properties![key].name}
124
+ </p>
125
+ </th>
126
+ <th key={`table-cell-${key}`}
127
+ style={{ width: "70%" }}>
128
+ {property.properties && property.properties[key] &&
129
+ <SkeletonPropertyComponent
130
+ property={property.properties[key]}
131
+ size={"medium"} />}
132
+ </th>
133
+ </tr>
134
+ );
135
+ })}
136
136
  </tbody>
137
137
  </table>
138
138
  );
@@ -149,24 +149,24 @@ function renderArrayOfMaps<M extends Record<string, any>>(properties: ResolvedPr
149
149
  return (
150
150
  <table className="table-auto">
151
151
  <tbody>
152
- {
153
- [0, 1, 2].map((value, index) => {
154
- return (
155
- <tr key={`table_${value}_${index}`}>
156
- {tableProperties && tableProperties.map(
157
- (key) => (
158
- <th
159
- key={`table-cell-${key}`}
160
- >
161
- <SkeletonPropertyComponent
162
- property={(properties)[key]}
163
- size={"medium"}/>
164
- </th>
165
- )
166
- )}
167
- </tr>
168
- );
169
- })}
152
+ {
153
+ [0, 1, 2].map((value, index) => {
154
+ return (
155
+ <tr key={`table_${value}_${index}`}>
156
+ {tableProperties && tableProperties.map(
157
+ (key) => (
158
+ <th
159
+ key={`table-cell-${key}`}
160
+ >
161
+ <SkeletonPropertyComponent
162
+ property={(properties)[key]}
163
+ size={"medium"} />
164
+ </th>
165
+ )
166
+ )}
167
+ </tr>
168
+ );
169
+ })}
170
170
  </tbody>
171
171
  </table>
172
172
  );
@@ -203,14 +203,14 @@ function renderGenericArrayCell(
203
203
  return (
204
204
 
205
205
  <div key={"array_index_" + index}
206
- className={"flex flex-col gap-2"}>
206
+ className={"flex flex-col gap-2"}>
207
207
 
208
208
  {
209
209
  [0, 1].map((value, index) =>
210
210
  <>
211
211
  <SkeletonPropertyComponent key={`i_${index}`}
212
- property={property}
213
- size={"medium"}/>
212
+ property={property}
213
+ size={"medium"} />
214
214
  </>
215
215
  )}
216
216
  </div>
@@ -220,16 +220,21 @@ function renderGenericArrayCell(
220
220
  function renderUrlAudioComponent() {
221
221
  return (
222
222
  <Skeleton width={300}
223
- height={100}/>
223
+ height={100} />
224
224
  );
225
225
  }
226
226
 
227
- export function renderSkeletonImageThumbnail(size: PreviewSize) {
227
+ export function renderSkeletonImageThumbnail(size: PreviewSize, fill?: boolean) {
228
+ if (fill) {
229
+ return (
230
+ <Skeleton className="w-full h-full" />
231
+ );
232
+ }
228
233
  // eslint-disable-next-line react-hooks/rules-of-hooks
229
234
  const imageSize = size === "small" ? 40 : size === "medium" ? 100 : 200;
230
235
  return (
231
236
  <Skeleton width={imageSize}
232
- height={imageSize}/>
237
+ height={imageSize} />
233
238
  );
234
239
  }
235
240
 
@@ -237,12 +242,12 @@ function renderUrlVideo(size: PreviewSize) {
237
242
 
238
243
  return (
239
244
  <Skeleton width={size !== "large" ? 300 : 500}
240
- height={size !== "large" ? 200 : 250}/>
245
+ height={size !== "large" ? 200 : 250} />
241
246
  );
242
247
  }
243
248
 
244
249
  function renderReference() {
245
- return <Skeleton width={200} height={100}/>;
250
+ return <Skeleton width={200} height={100} />;
246
251
  }
247
252
 
248
253
  function renderUrlComponent(property: ResolvedStringProperty, size: PreviewSize = "large") {
@@ -270,14 +275,14 @@ function renderUrlFile(size: PreviewSize) {
270
275
  }
271
276
 
272
277
  export function renderSkeletonText(index?: number, width = 120) {
273
- return <Skeleton width={width} key={`skeleton_${index}`}/>;
278
+ return <Skeleton width={width} key={`skeleton_${index}`} />;
274
279
  }
275
280
 
276
281
  export function renderSkeletonCaptionText(index?: number) {
277
282
  return <Skeleton
278
- height={20}/>;
283
+ height={20} />;
279
284
  }
280
285
 
281
286
  export function renderSkeletonIcon() {
282
- return <Skeleton width={24} height={24}/>;
287
+ return <Skeleton width={24} height={24} />;
283
288
  }
@@ -13,6 +13,7 @@ export function CustomCMSRoute({ cmsView }: {
13
13
  breadcrumbs: [{
14
14
  title: cmsView.name,
15
15
  url: cmsView.path
16
+ // count: undefined (not applicable for custom views)
16
17
  }]
17
18
  });
18
19
  }, [cmsView.path]);