@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
@@ -19,17 +19,17 @@ type DateTimeFieldProps = FieldProps<Date>;
19
19
  * @group Form fields
20
20
  */
21
21
  export function DateTimeFieldBinding({
22
- propertyKey,
23
- value,
24
- setValue,
25
- autoFocus,
26
- error,
27
- showError,
28
- disabled,
29
- touched,
30
- property,
31
- includeDescription
32
- }: DateTimeFieldProps) {
22
+ propertyKey,
23
+ value,
24
+ setValue,
25
+ autoFocus,
26
+ error,
27
+ showError,
28
+ disabled,
29
+ touched,
30
+ property,
31
+ includeDescription
32
+ }: DateTimeFieldProps) {
33
33
 
34
34
  const { locale } = useCustomizationController();
35
35
  const internalValue = value || null;
@@ -48,23 +48,24 @@ export function DateTimeFieldBinding({
48
48
  onChange={(dateValue) => setValue(dateValue)}
49
49
  size={"large"}
50
50
  mode={property.mode}
51
- clearable={property.clearable}
51
+ clearable={property.nullable || property.clearable}
52
52
  locale={locale}
53
+ timezone={property.timezone}
53
54
  error={showError}
54
55
  disabled={disabled}
55
56
  label={<LabelWithIcon
56
57
  icon={getIconForProperty(property, "small")}
57
58
  required={property.validation?.required}
58
59
  className={showError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark"}
59
- title={property.name}/>}
60
+ title={property.name} />}
60
61
  />
61
62
  </PropertyIdCopyTooltip>
62
63
 
63
64
  <FieldHelperText includeDescription={includeDescription}
64
- showError={showError}
65
- error={error}
66
- disabled={disabled}
67
- property={property}/>
65
+ showError={showError}
66
+ error={error}
67
+ disabled={disabled}
68
+ property={property} />
68
69
 
69
70
  </>
70
71
  );
@@ -13,6 +13,7 @@ import {
13
13
  defaultBorderMixin,
14
14
  ExpandablePanel,
15
15
  IconButton,
16
+ CloseIcon,
16
17
  Menu,
17
18
  MenuItem,
18
19
  RemoveIcon,
@@ -22,6 +23,7 @@ import {
22
23
  import { getDefaultValueForDataType, getIconForProperty } from "../../util";
23
24
  import { useCustomizationController } from "../../hooks";
24
25
  import { getIn } from "@firecms/formex";
26
+ import { useTranslation } from "../../hooks/useTranslation";
25
27
 
26
28
  type MapEditViewRowState = [number, {
27
29
  key: string,
@@ -54,6 +56,7 @@ export function KeyValueFieldBinding({
54
56
  throw Error(`Your property ${propertyKey} needs to have the 'keyValue' prop in order to use this field binding`);
55
57
  }
56
58
 
59
+ const { t } = useTranslation();
57
60
  const initialValues = getIn(context.formex.initialValues, propertyKey);
58
61
 
59
62
  const mapFormView = <MapEditView value={value}
@@ -62,12 +65,28 @@ export function KeyValueFieldBinding({
62
65
  initialValue={initialValues}
63
66
  fieldName={property.name ?? propertyKey}/>;
64
67
 
65
- const title = <LabelWithIconAndTooltip
66
- propertyKey={propertyKey}
67
- icon={getIconForProperty(property, "small")}
68
- required={property.validation?.required}
69
- title={property.name}
70
- className={"text-text-secondary dark:text-text-secondary-dark"}/>;
68
+ const title = (
69
+ <div className="flex items-center w-full">
70
+ <LabelWithIconAndTooltip
71
+ propertyKey={propertyKey}
72
+ icon={getIconForProperty(property, "small")}
73
+ required={property.validation?.required}
74
+ title={property.name}
75
+ className={"text-text-secondary dark:text-text-secondary-dark flex-grow"}/>
76
+ {(property.nullable || property.clearable) && !disabled && (
77
+ <IconButton
78
+ size="small"
79
+ onClick={(e) => {
80
+ e.stopPropagation();
81
+ e.preventDefault();
82
+ setValue(null);
83
+ }}
84
+ >
85
+ <CloseIcon size={"small"}/>
86
+ </IconButton>
87
+ )}
88
+ </div>
89
+ );
71
90
 
72
91
  return (
73
92
  <>
@@ -103,6 +122,7 @@ function MapEditView<T extends Record<string, any>>({
103
122
  fieldName,
104
123
  disabled
105
124
  }: MapEditViewParams<T>) {
125
+ const { t } = useTranslation();
106
126
  const [internalState, setInternalState] = React.useState<MapEditViewRowState[]>(
107
127
  Object.keys(initialValue ?? {}).map((key) => [getRandomId(), {
108
128
  key,
@@ -215,7 +235,6 @@ function MapEditView<T extends Record<string, any>>({
215
235
 
216
236
  <Button variant={"text"}
217
237
  size={"small"}
218
- color="primary"
219
238
  className="w-full"
220
239
  disabled={disabled}
221
240
  startIcon={<AddIcon/>}
@@ -231,7 +250,7 @@ function MapEditView<T extends Record<string, any>>({
231
250
  }]]);
232
251
  }
233
252
  }>
234
- {fieldName ? `Add to ${fieldName}` : "Add"}
253
+ {fieldName ? t("add_to_field", { fieldName }) : t("add_entry")}
235
254
  </Button>
236
255
 
237
256
  </div>;
@@ -262,12 +281,13 @@ function MapKeyValueRow<T extends Record<string, any>>({
262
281
  }) {
263
282
 
264
283
  const { locale } = useCustomizationController();
284
+ const { t } = useTranslation();
265
285
 
266
286
  function buildInput(entryValue: any, fieldKey: string, dataType: DataType) {
267
287
  if (dataType === "string" || dataType === "number") {
268
288
  return <TextField
269
289
  key={dataType}
270
- placeholder={"value"}
290
+ placeholder={t("value")}
271
291
  value={entryValue}
272
292
  type={dataType === "number" ? "number" : "text"}
273
293
  size={"medium"}
@@ -326,7 +346,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
326
346
  <ArrayContainer value={entryValue}
327
347
  newDefaultEntry={""}
328
348
  droppableId={rowId.toString()}
329
- addLabel={fieldKey ? `Add to ${fieldKey}` : "Add"}
349
+ addLabel={fieldKey ? t("add_to_field", { fieldName: fieldKey }) : t("add_entry")}
330
350
  size={"small"}
331
351
  disabled={disabled || !fieldKey}
332
352
  canAddElements={true}
@@ -371,7 +391,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
371
391
  } else {
372
392
  return <Typography
373
393
  variant={"caption"}>
374
- {`Data type ${dataType} not supported yet`}
394
+ {t("data_type_not_supported", { dataType })}
375
395
  </Typography>;
376
396
  }
377
397
  }
@@ -387,7 +407,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
387
407
  <div className="w-[300px] max-w-[30%]">
388
408
  <TextField
389
409
  value={fieldKey}
390
- placeholder={"key"}
410
+ placeholder={t("key")}
391
411
  disabled={disabled || (entryValue !== undefined && entryValue !== null && entryValue !== "")}
392
412
  size={"medium"}
393
413
  onChange={(event) => {
@@ -405,17 +425,17 @@ function MapKeyValueRow<T extends Record<string, any>>({
405
425
  </IconButton>}
406
426
  >
407
427
  <MenuItem dense
408
- onClick={() => doUpdateDataType("string")}>string</MenuItem>
428
+ onClick={() => doUpdateDataType("string")}>{t("string")}</MenuItem>
409
429
  <MenuItem dense
410
- onClick={() => doUpdateDataType("number")}>number</MenuItem>
430
+ onClick={() => doUpdateDataType("number")}>{t("number")}</MenuItem>
411
431
  <MenuItem dense
412
- onClick={() => doUpdateDataType("boolean")}>boolean</MenuItem>
432
+ onClick={() => doUpdateDataType("boolean")}>{t("boolean")}</MenuItem>
413
433
  <MenuItem dense
414
- onClick={() => doUpdateDataType("date")}>date</MenuItem>
434
+ onClick={() => doUpdateDataType("date")}>{t("date")}</MenuItem>
415
435
  <MenuItem dense
416
- onClick={() => doUpdateDataType("map")}>map</MenuItem>
436
+ onClick={() => doUpdateDataType("map")}>{t("map")}</MenuItem>
417
437
  <MenuItem dense
418
- onClick={() => doUpdateDataType("array")}>array</MenuItem>
438
+ onClick={() => doUpdateDataType("array")}>{t("array")}</MenuItem>
419
439
  </Menu>
420
440
 
421
441
  <IconButton aria-label="delete"
@@ -447,6 +467,7 @@ function ArrayKeyValueRow<T>({
447
467
  }) {
448
468
 
449
469
  const { locale } = useCustomizationController();
470
+ const { t } = useTranslation();
450
471
  const [selectedDataType, setSelectedDataType] = useState<DataType>(getDataType(value) ?? "string");
451
472
 
452
473
  function doUpdateDataType(dataType: DataType) {
@@ -488,7 +509,7 @@ function ArrayKeyValueRow<T>({
488
509
  }}/>;
489
510
  } else if (dataType === "array") {
490
511
  return <Typography variant={"caption"}>
491
- Arrays of arrays are not supported.
512
+ {t("arrays_of_arrays_not_supported")}
492
513
  </Typography>;
493
514
  } else if (dataType === "map") {
494
515
  return <div className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
@@ -500,7 +521,7 @@ function ArrayKeyValueRow<T>({
500
521
  } else {
501
522
  return <Typography
502
523
  variant={"caption"}>
503
- {`Data type ${dataType} not supported yet`}
524
+ {t("data_type_not_supported", { dataType })}
504
525
  </Typography>;
505
526
  }
506
527
  }
@@ -520,15 +541,15 @@ function ArrayKeyValueRow<T>({
520
541
  <ArrowDropDownIcon/>
521
542
  </IconButton>}>
522
543
  <MenuItem dense
523
- onClick={() => doUpdateDataType("string")}>string</MenuItem>
544
+ onClick={() => doUpdateDataType("string")}>{t("string")}</MenuItem>
524
545
  <MenuItem dense
525
- onClick={() => doUpdateDataType("number")}>number</MenuItem>
546
+ onClick={() => doUpdateDataType("number")}>{t("number")}</MenuItem>
526
547
  <MenuItem dense
527
- onClick={() => doUpdateDataType("boolean")}>boolean</MenuItem>
548
+ onClick={() => doUpdateDataType("boolean")}>{t("boolean")}</MenuItem>
528
549
  <MenuItem dense
529
- onClick={() => doUpdateDataType("map")}>map</MenuItem>
550
+ onClick={() => doUpdateDataType("map")}>{t("map")}</MenuItem>
530
551
  <MenuItem dense
531
- onClick={() => doUpdateDataType("date")}>date</MenuItem>
552
+ onClick={() => doUpdateDataType("date")}>{t("date")}</MenuItem>
532
553
  </Menu>
533
554
 
534
555
  </Typography>
@@ -4,8 +4,10 @@ import { FieldProps, MapProperty, Properties, PropertyFieldBindingProps, Resolve
4
4
  import { ErrorBoundary } from "../../components";
5
5
  import { getIconForProperty, isHidden, isReadOnly, pick } from "../../util";
6
6
  import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
7
+ import { FormEntry } from "../components/FormEntry";
7
8
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
8
- import { cls, ExpandablePanel, InputLabel, Select, SelectItem } from "@firecms/ui";
9
+ import { cls, ExpandablePanel, InputLabel, Select, SelectItem, IconButton, CloseIcon } from "@firecms/ui";
10
+ import { useTranslation } from "../../hooks";
9
11
 
10
12
  /**
11
13
  * Field that renders the children property fields
@@ -15,19 +17,20 @@ import { cls, ExpandablePanel, InputLabel, Select, SelectItem } from "@firecms/u
15
17
  * @group Form fields
16
18
  */
17
19
  export function MapFieldBinding({
18
- propertyKey,
19
- value,
20
- showError,
21
- error,
22
- disabled,
23
- property,
24
- partOfArray,
25
- minimalistView: minimalistViewProp,
26
- includeDescription,
27
- autoFocus,
28
- context,
29
- onPropertyChange
30
- }: FieldProps<Record<string, any>>) {
20
+ propertyKey,
21
+ value,
22
+ showError,
23
+ error,
24
+ disabled,
25
+ property,
26
+ partOfArray,
27
+ minimalistView: minimalistViewProp,
28
+ includeDescription,
29
+ autoFocus,
30
+ context,
31
+ onPropertyChange,
32
+ setValue
33
+ }: FieldProps<Record<string, any>>) {
31
34
 
32
35
  const pickOnlySomeKeys = property.pickOnlySomeKeys || false;
33
36
  const expanded = property.expanded === undefined ? true : property.expanded;
@@ -52,81 +55,96 @@ export function MapFieldBinding({
52
55
  }
53
56
 
54
57
  const mapFormView = <>
55
- <div
56
- className={cls("py-1 flex flex-col space-y-2", minimalistView && property.widthPercentage !== undefined ? "mt-8" : undefined)}>
57
- {Object.entries(mapProperties)
58
- .filter(([_, property]) => !isHidden(property))
59
- .map(([entryKey, childProperty], index) => {
60
- const thisDisabled = isReadOnly(childProperty) || Boolean(childProperty.disabled);
61
- const fieldBindingProps: PropertyFieldBindingProps<any> = {
62
- propertyKey: `${propertyKey}.${entryKey}`,
63
- disabled: disabled || thisDisabled,
64
- property: childProperty,
65
- includeDescription,
66
- context,
67
- partOfArray: false,
68
- minimalistView: false,
69
- autoFocus: autoFocus && index === 0,
70
- onPropertyChange: function (updatedProperty) {
71
- onPropertyChange?.({
72
- properties: {
73
- [entryKey]: updatedProperty
74
- }
75
- } as Partial<MapProperty>);
58
+ <div
59
+ className={cls("py-1 flex flex-wrap gap-x-4 w-full space-y-2", minimalistView && property.widthPercentage !== undefined ? "mt-8" : undefined)}>
60
+ {Object.entries(mapProperties)
61
+ .filter(([_, property]) => !isHidden(property))
62
+ .map(([entryKey, childProperty], index) => {
63
+ const thisDisabled = isReadOnly(childProperty) || Boolean(childProperty.disabled);
64
+ const fieldBindingProps: PropertyFieldBindingProps<any> = {
65
+ propertyKey: `${propertyKey}.${entryKey}`,
66
+ disabled: disabled || thisDisabled,
67
+ property: childProperty,
68
+ includeDescription,
69
+ context,
70
+ partOfArray: false,
71
+ minimalistView: false,
72
+ autoFocus: autoFocus && index === 0,
73
+ onPropertyChange: function (updatedProperty) {
74
+ onPropertyChange?.({
75
+ properties: {
76
+ [entryKey]: updatedProperty
76
77
  }
77
- };
78
-
79
- return (
80
- <div key={`map-${propertyKey}-${index}`} className={"relative"}>
81
- <ErrorBoundary>
82
- <PropertyFieldBinding
83
- {...fieldBindingProps}/>
84
- </ErrorBoundary>
85
- </div>
86
- ) ;
78
+ } as Partial<MapProperty>);
87
79
  }
88
- )
80
+ };
81
+
82
+ const widthPercentage = childProperty.widthPercentage ?? 100;
83
+ return (
84
+ <FormEntry propertyKey={`${propertyKey}.${entryKey}`}
85
+ widthPercentage={widthPercentage}
86
+ key={`map-${propertyKey}-${index}`}>
87
+ <PropertyFieldBinding
88
+ {...fieldBindingProps} />
89
+ </FormEntry>
90
+ );
89
91
  }
90
- </div>
92
+ )
93
+ }
94
+ </div>
91
95
 
92
- {/*{pickOnlySomeKeys && buildPickKeysSelect(disabled, property.properties, setValue, value)}*/}
96
+ {/*{pickOnlySomeKeys && buildPickKeysSelect(disabled, property.properties, setValue, value, t)}*/}
93
97
 
94
- </>
95
- ;
98
+ </>
99
+ ;
96
100
 
97
101
  return (
98
102
  <ErrorBoundary>
99
103
 
100
104
  {!minimalistView && <ExpandablePanel initiallyExpanded={expanded}
101
- onExpandedChange={(expanded) => {
102
- onPropertyChange?.({
103
- expanded
104
- });
105
- }}
106
- className={property.widthPercentage !== undefined ? "mt-8" : undefined}
107
- innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2 bg-white dark:bg-surface-900"}
108
- title={<LabelWithIconAndTooltip
109
- propertyKey={propertyKey}
110
- icon={getIconForProperty(property, "small")}
111
- required={property.validation?.required}
112
- title={property.name}
113
- className={"text-text-secondary dark:text-text-secondary-dark"}/>}>
105
+ onExpandedChange={(expanded) => {
106
+ onPropertyChange?.({
107
+ expanded
108
+ });
109
+ }}
110
+ className={property.widthPercentage !== undefined ? "mt-8" : undefined}
111
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2 bg-white dark:bg-surface-900"}
112
+ title={<div className="flex items-center w-full">
113
+ <LabelWithIconAndTooltip
114
+ propertyKey={propertyKey}
115
+ icon={getIconForProperty(property, "small")}
116
+ required={property.validation?.required}
117
+ title={property.name}
118
+ className={"text-text-secondary dark:text-text-secondary-dark flex-grow"} />
119
+ {(property.nullable || property.clearable) && !disabled && (
120
+ <IconButton
121
+ size="small"
122
+ onClick={(e) => {
123
+ e.stopPropagation();
124
+ e.preventDefault();
125
+ setValue(null);
126
+ }}
127
+ >
128
+ <CloseIcon size={"small"}/>
129
+ </IconButton>
130
+ )}
131
+ </div>}>
114
132
  {mapFormView}
115
133
  </ExpandablePanel>}
116
134
 
117
135
  {minimalistView && mapFormView}
118
136
 
119
137
  <FieldHelperText includeDescription={includeDescription}
120
- showError={showError ?? false}
121
- error={error && !partOfArray ? (typeof error === "string" ? error : "A property of this map has an error") : undefined}
122
- disabled={disabled}
123
- property={property}/>
138
+ showError={showError ?? false}
139
+ error={error && !partOfArray ? (typeof error === "string" ? error : "A property of this map has an error") : undefined}
140
+ disabled={disabled}
141
+ property={property} />
124
142
 
125
143
  </ErrorBoundary>
126
144
  );
127
145
  }
128
146
 
129
- const buildPickKeysSelect = (disabled: boolean, properties: Properties, setValue: (value: any) => void, value: any) => {
147
+ const buildPickKeysSelect = (disabled: boolean, properties: Properties, setValue: (value: any) => void, value: any, t: any) => {
130
148
 
131
149
  const keys = Object.keys(properties)
132
150
  .filter((key) => !value || !(key in value));
@@ -141,7 +159,7 @@ const buildPickKeysSelect = (disabled: boolean, properties: Properties, setValue
141
159
  if (!keys.length) return <></>;
142
160
 
143
161
  return <div className={"m-4"}>
144
- <InputLabel>Add property</InputLabel>
162
+ <InputLabel>{t("add_property")}</InputLabel>
145
163
  <Select
146
164
  value={""}
147
165
  size={"large"}
@@ -150,7 +168,7 @@ const buildPickKeysSelect = (disabled: boolean, properties: Properties, setValue
150
168
  onValueChange={handleAddProperty}
151
169
  renderValue={(key) => (properties as Properties)[key].name || key}>
152
170
  {keys.map((key) => <SelectItem key={key}
153
- value={key}>{(properties as Properties)[key].name || key}</SelectItem>)}
171
+ value={key}>{(properties as Properties)[key].name || key}</SelectItem>)}
154
172
  </Select>
155
173
  </div>;
156
174
  };