@firecms/core 3.0.0-canary.14 → 3.0.0-canary.141

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 (301) hide show
  1. package/README.md +3 -3
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +30 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +16 -5
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +5 -3
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  18. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  19. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
  20. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
  21. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  22. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  23. package/dist/components/EntityPreview.d.ts +7 -6
  24. package/dist/components/ErrorView.d.ts +1 -1
  25. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  26. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  27. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  28. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  29. package/dist/components/ReferenceWidget.d.ts +3 -1
  30. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  31. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  32. package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
  33. package/dist/components/VirtualTable/types.d.ts +3 -3
  34. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  35. package/dist/components/common/index.d.ts +1 -0
  36. package/dist/components/common/table_height.d.ts +5 -0
  37. package/dist/components/common/types.d.ts +4 -6
  38. package/dist/components/common/useColumnsIds.d.ts +2 -1
  39. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +3 -0
  40. package/dist/components/index.d.ts +4 -2
  41. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  42. package/dist/core/DefaultDrawer.d.ts +19 -0
  43. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  44. package/dist/core/EntityEditView.d.ts +18 -4
  45. package/dist/core/FireCMS.d.ts +1 -1
  46. package/dist/core/NavigationRoutes.d.ts +3 -3
  47. package/dist/core/index.d.ts +3 -4
  48. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  49. package/dist/form/components/ErrorFocus.d.ts +1 -1
  50. package/dist/form/components/FieldHelperText.d.ts +3 -3
  51. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  52. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  53. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  54. package/dist/form/components/index.d.ts +1 -1
  55. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  56. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  57. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  60. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  61. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  62. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  63. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  64. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  67. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  68. package/dist/form/index.d.ts +3 -5
  69. package/dist/form/useClearRestoreValue.d.ts +2 -2
  70. package/dist/hooks/data/save.d.ts +1 -2
  71. package/dist/hooks/index.d.ts +1 -0
  72. package/dist/hooks/useBuildNavigationController.d.ts +1 -2
  73. package/dist/hooks/useProjectLog.d.ts +8 -2
  74. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  75. package/dist/index.d.ts +1 -0
  76. package/dist/index.es.js +16760 -13321
  77. package/dist/index.es.js.map +1 -1
  78. package/dist/index.umd.js +20120 -587
  79. package/dist/index.umd.js.map +1 -1
  80. package/dist/internal/useBuildDataSource.d.ts +1 -16
  81. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  82. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  83. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  84. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  85. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  86. package/dist/types/auth.d.ts +3 -3
  87. package/dist/types/collections.d.ts +41 -6
  88. package/dist/types/datasource.d.ts +55 -35
  89. package/dist/types/entities.d.ts +6 -1
  90. package/dist/types/entity_actions.d.ts +14 -0
  91. package/dist/types/entity_overrides.d.ts +2 -2
  92. package/dist/types/fields.d.ts +63 -41
  93. package/dist/types/firecms.d.ts +4 -0
  94. package/dist/types/index.d.ts +0 -1
  95. package/dist/types/navigation.d.ts +6 -5
  96. package/dist/types/plugins.d.ts +14 -4
  97. package/dist/types/properties.d.ts +34 -21
  98. package/dist/types/property_config.d.ts +0 -2
  99. package/dist/types/side_dialogs_controller.d.ts +10 -0
  100. package/dist/types/storage.d.ts +86 -3
  101. package/dist/util/entities.d.ts +2 -2
  102. package/dist/util/icon_list.d.ts +5 -1
  103. package/dist/util/icon_synonyms.d.ts +1 -97
  104. package/dist/util/icons.d.ts +3 -2
  105. package/dist/util/index.d.ts +1 -0
  106. package/dist/util/navigation_utils.d.ts +2 -2
  107. package/dist/util/objects.d.ts +2 -1
  108. package/dist/util/plurals.d.ts +0 -2
  109. package/dist/util/property_utils.d.ts +3 -3
  110. package/dist/util/resolutions.d.ts +30 -16
  111. package/dist/util/storage.d.ts +23 -2
  112. package/dist/util/useStorageUploadController.d.ts +3 -3
  113. package/package.json +128 -119
  114. package/src/app/AppBar.tsx +18 -0
  115. package/src/app/Drawer.tsx +24 -0
  116. package/src/app/Scaffold.tsx +243 -0
  117. package/src/app/index.ts +4 -0
  118. package/src/app/useApp.tsx +32 -0
  119. package/src/components/ArrayContainer.tsx +51 -24
  120. package/src/components/CircularProgressCenter.tsx +1 -1
  121. package/src/components/ClearFilterSortButton.tsx +41 -0
  122. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  123. package/src/components/DeleteEntityDialog.tsx +1 -1
  124. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +12 -19
  125. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +21 -20
  126. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +10 -6
  127. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  128. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  129. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -16
  130. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +14 -6
  131. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
  132. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
  133. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  134. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +72 -67
  135. package/src/components/EntityCollectionView/EntityCollectionView.tsx +138 -86
  136. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  137. package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
  138. package/src/components/EntityCollectionView/utils.ts +19 -0
  139. package/src/components/EntityPreview.tsx +43 -39
  140. package/src/components/EntityView.tsx +6 -6
  141. package/src/components/ErrorView.tsx +1 -1
  142. package/src/components/HomePage/DefaultHomePage.tsx +25 -19
  143. package/src/components/HomePage/NavigationCard.tsx +3 -3
  144. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  145. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  146. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  147. package/src/components/PropertyConfigBadge.tsx +9 -3
  148. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  149. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
  150. package/src/components/ReferenceWidget.tsx +22 -12
  151. package/src/components/SearchIconsView.tsx +10 -7
  152. package/src/components/SelectableTable/SelectableTable.tsx +7 -7
  153. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  154. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
  155. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
  156. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +88 -21
  157. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  158. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  159. package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
  160. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  161. package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
  162. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  163. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  164. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
  165. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  166. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  167. package/src/components/VirtualTable/types.tsx +2 -3
  168. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
  169. package/src/components/common/index.ts +1 -0
  170. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  171. package/src/components/common/types.tsx +4 -6
  172. package/src/components/common/useColumnsIds.tsx +23 -2
  173. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +23 -12
  174. package/src/components/common/useTableSearchHelper.ts +53 -12
  175. package/src/components/index.tsx +4 -2
  176. package/src/contexts/DialogsProvider.tsx +2 -2
  177. package/src/core/DefaultAppBar.tsx +176 -0
  178. package/src/core/DefaultDrawer.tsx +183 -0
  179. package/src/core/DrawerNavigationItem.tsx +66 -0
  180. package/src/core/EntityEditView.tsx +716 -153
  181. package/src/core/EntitySidePanel.tsx +1 -2
  182. package/src/core/FireCMS.tsx +53 -52
  183. package/src/core/NavigationRoutes.tsx +7 -8
  184. package/src/core/SideDialogs.tsx +1 -0
  185. package/src/core/field_configs.tsx +7 -8
  186. package/src/core/index.tsx +3 -4
  187. package/src/form/PropertyFieldBinding.tsx +74 -35
  188. package/src/form/components/CustomIdField.tsx +4 -2
  189. package/src/form/components/FieldHelperText.tsx +4 -4
  190. package/src/form/components/LabelWithIcon.tsx +27 -19
  191. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  192. package/src/form/components/StorageItemPreview.tsx +21 -11
  193. package/src/form/components/StorageUploadProgress.tsx +3 -4
  194. package/src/form/components/index.tsx +1 -1
  195. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
  196. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
  197. package/src/form/field_bindings/BlockFieldBinding.tsx +51 -32
  198. package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
  199. package/src/form/field_bindings/KeyValueFieldBinding.tsx +54 -45
  200. package/src/form/field_bindings/MapFieldBinding.tsx +65 -48
  201. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  202. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  203. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  204. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  205. package/src/form/field_bindings/RepeatFieldBinding.tsx +52 -34
  206. package/src/form/field_bindings/SelectFieldBinding.tsx +20 -13
  207. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +36 -46
  208. package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
  209. package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
  210. package/src/form/index.tsx +4 -9
  211. package/src/form/useClearRestoreValue.tsx +2 -2
  212. package/src/form/validation.ts +1 -17
  213. package/src/hooks/data/delete.ts +2 -1
  214. package/src/hooks/data/save.ts +9 -5
  215. package/src/hooks/data/useDataSource.tsx +11 -3
  216. package/src/hooks/index.tsx +1 -0
  217. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  218. package/src/hooks/useBuildModeController.tsx +11 -5
  219. package/src/hooks/useBuildNavigationController.tsx +91 -31
  220. package/src/hooks/useProjectLog.tsx +32 -10
  221. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  222. package/src/hooks/useValidateAuthenticator.tsx +21 -41
  223. package/src/index.ts +1 -0
  224. package/src/internal/useBuildDataSource.ts +72 -82
  225. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  226. package/src/internal/useBuildSideEntityController.tsx +102 -22
  227. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  228. package/src/preview/PropertyPreview.tsx +11 -18
  229. package/src/preview/PropertyPreviewProps.tsx +7 -1
  230. package/src/preview/components/BooleanPreview.tsx +2 -2
  231. package/src/preview/components/EnumValuesChip.tsx +2 -2
  232. package/src/preview/components/ImagePreview.tsx +25 -35
  233. package/src/preview/components/ReferencePreview.tsx +23 -34
  234. package/src/preview/components/StorageThumbnail.tsx +5 -1
  235. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  236. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  237. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  238. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  239. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  240. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  241. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  242. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  243. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  244. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  245. package/src/preview/util.ts +2 -2
  246. package/src/types/auth.tsx +3 -3
  247. package/src/types/collections.ts +50 -8
  248. package/src/types/customization_controller.tsx +0 -1
  249. package/src/types/datasource.ts +65 -43
  250. package/src/types/entities.ts +11 -1
  251. package/src/types/entity_actions.tsx +16 -3
  252. package/src/types/entity_overrides.tsx +2 -2
  253. package/src/types/fields.tsx +69 -45
  254. package/src/types/firecms.tsx +5 -0
  255. package/src/types/index.ts +0 -1
  256. package/src/types/navigation.ts +7 -7
  257. package/src/types/plugins.tsx +16 -6
  258. package/src/types/properties.ts +39 -22
  259. package/src/types/property_config.tsx +0 -2
  260. package/src/types/side_dialogs_controller.tsx +13 -0
  261. package/src/types/storage.ts +94 -3
  262. package/src/util/entities.ts +6 -5
  263. package/src/util/enums.ts +1 -1
  264. package/src/util/icon_list.ts +15 -10
  265. package/src/util/icon_synonyms.ts +3 -99
  266. package/src/util/icons.tsx +8 -2
  267. package/src/util/index.ts +1 -0
  268. package/src/util/make_properties_editable.ts +13 -5
  269. package/src/util/navigation_utils.ts +6 -6
  270. package/src/util/objects.ts +45 -28
  271. package/src/util/permissions.ts +1 -0
  272. package/src/util/plurals.ts +0 -2
  273. package/src/util/property_utils.tsx +11 -4
  274. package/src/util/references.ts +3 -0
  275. package/src/util/resolutions.ts +79 -46
  276. package/src/util/storage.ts +79 -21
  277. package/src/util/strings.ts +2 -2
  278. package/src/util/useStorageUploadController.tsx +33 -7
  279. package/src/util/useTraceUpdate.tsx +1 -0
  280. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  281. package/dist/components/VirtualTable/common.d.ts +0 -2
  282. package/dist/core/Drawer.d.ts +0 -23
  283. package/dist/core/Scaffold.d.ts +0 -55
  284. package/dist/core/SideEntityView.d.ts +0 -7
  285. package/dist/form/EntityForm.d.ts +0 -77
  286. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  287. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  288. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  289. package/dist/internal/useLocaleConfig.d.ts +0 -1
  290. package/dist/types/appcheck.d.ts +0 -26
  291. package/src/components/FireCMSAppBar.tsx +0 -165
  292. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  293. package/src/core/Drawer.tsx +0 -191
  294. package/src/core/Scaffold.tsx +0 -281
  295. package/src/core/SideEntityView.tsx +0 -38
  296. package/src/form/EntityForm.tsx +0 -728
  297. package/src/form/components/FormikArrayContainer.tsx +0 -44
  298. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  299. package/src/internal/useBuildCustomizationController.tsx +0 -5
  300. package/src/internal/useLocaleConfig.tsx +0 -18
  301. package/src/types/appcheck.ts +0 -29
@@ -2,10 +2,9 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"
2
2
 
3
3
  import useMeasure from "react-use-measure";
4
4
 
5
- import { VirtualTableSize } from "../../VirtualTable";
6
- import { getRowHeight } from "../../VirtualTable/common";
7
- import { cn, RemoveCircleIcon, Tooltip } from "@firecms/ui";
5
+ import { cls, RemoveCircleIcon, Tooltip } from "@firecms/ui";
8
6
  import { ErrorBoundary } from "../../../components";
7
+ import { getRowHeight, TableSize } from "../../common/table_height";
9
8
 
10
9
  interface EntityTableCellProps {
11
10
  children: React.ReactNode;
@@ -19,7 +18,7 @@ interface EntityTableCellProps {
19
18
  error?: Error;
20
19
  allowScroll?: boolean;
21
20
  align: "right" | "left" | "center";
22
- size: VirtualTableSize;
21
+ size: TableSize;
23
22
  disabledTooltip?: string;
24
23
  width: number;
25
24
  showExpandIcon?: boolean;
@@ -46,22 +45,21 @@ const TableCellInner = ({
46
45
  children
47
46
  }: TableCellInnerProps) => {
48
47
  return (
49
- <div
50
- className={cn("flex flex-col max-h-full w-full",
51
- {
52
- "items-start": faded || scrollable
53
- })}
54
- style={{
55
- justifyContent,
56
- height: fullHeight ? "100%" : undefined,
57
- overflow: scrollable ? "auto" : undefined,
58
- WebkitMaskImage: faded
59
- ? "linear-gradient(to bottom, black 60%, transparent 100%)"
60
- : undefined,
61
- maskImage: faded
62
- ? "linear-gradient(to bottom, black 60%, transparent 100%)"
63
- : undefined
64
- }}
48
+ <div className={cls("flex flex-col max-h-full w-full",
49
+ {
50
+ "items-start": faded || scrollable
51
+ })}
52
+ style={{
53
+ justifyContent,
54
+ height: fullHeight ? "100%" : undefined,
55
+ overflow: scrollable ? "auto" : undefined,
56
+ WebkitMaskImage: faded
57
+ ? "linear-gradient(to bottom, black 60%, transparent 100%)"
58
+ : undefined,
59
+ maskImage: faded
60
+ ? "linear-gradient(to bottom, black 60%, transparent 100%)"
61
+ : undefined
62
+ }}
65
63
  >
66
64
  {children}
67
65
  </div>
@@ -96,7 +94,7 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
96
94
  const [onHover, setOnHover] = useState(false);
97
95
  const [internalSaved, setInternalSaved] = useState(saved);
98
96
 
99
- const showError = !disabled && error;
97
+ const showError = !disabled && Boolean(error);
100
98
 
101
99
  useEffect(() => {
102
100
  if (saved) {
@@ -157,8 +155,9 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
157
155
  }, [ref, onSelect, selected, disabled]);
158
156
 
159
157
  const onFocus = useCallback((event: React.SyntheticEvent<HTMLDivElement>) => {
160
- onSelectCallback();
161
158
  event.stopPropagation();
159
+ event.preventDefault();
160
+ onSelectCallback();
162
161
  }, [onSelectCallback]);
163
162
 
164
163
  const isOverflowing = useMemo(() => {
@@ -176,21 +175,26 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
176
175
  const setOnHoverTrue = useCallback(() => setOnHover(true), []);
177
176
  const setOnHoverFalse = useCallback(() => setOnHover(false), []);
178
177
 
178
+ const borderClass = showError
179
+ ? "border-red-500"
180
+ : internalSaved
181
+ ? "border-green-500"
182
+ : isSelected
183
+ ? "border-primary"
184
+ : "border-transparent";
185
+
179
186
  return (
180
187
  <div
181
- ref={ref}
182
- className={cn(
188
+ className={cls(
183
189
  "transition-colors duration-100 ease-in-out",
184
190
  `flex relative h-full rounded-md p-${p} border border-4 border-opacity-75`,
185
191
  onHover && !disabled ? "bg-gray-50 dark:bg-gray-900" : "",
186
192
  saved ? "bg-gray-100 bg-opacity-75 dark:bg-gray-800 dark:bg-opacity-75" : "",
187
- !isSelected && !internalSaved && !showError ? "border-transparent" : "",
188
193
  hideOverflow ? "overflow-hidden" : "",
189
194
  isSelected ? "bg-gray-50 dark:bg-gray-900" : "",
190
- isSelected && !internalSaved ? "border-primary" : "",
191
- internalSaved ? "border-green-500 " : "",
192
- showError ? "border-red-500" : ""
195
+ borderClass
193
196
  )}
197
+ ref={ref}
194
198
  style={{
195
199
  justifyContent,
196
200
  alignItems: disabled || !isOverflowing ? "center" : undefined,
@@ -199,11 +203,9 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
199
203
  }}
200
204
  tabIndex={selected || disabled ? undefined : 0}
201
205
  onFocus={onFocus}
202
- // onClick={onClick}
203
206
  onMouseEnter={setOnHoverTrue}
204
207
  onMouseMove={setOnHoverTrue}
205
208
  onMouseLeave={setOnHoverFalse}
206
- // contain={scrollable ? "content" : "size"}
207
209
  >
208
210
 
209
211
  <ErrorBoundary>
@@ -11,7 +11,14 @@ export interface EntityTableCellActionsProps {
11
11
  children?: React.ReactNode;
12
12
  }
13
13
 
14
- export function EntityTableCellActions({ showError, disabled, showExpandIcon, selected, openPopup, children }: EntityTableCellActionsProps) {
14
+ export function EntityTableCellActions({
15
+ showError,
16
+ disabled,
17
+ showExpandIcon,
18
+ selected,
19
+ openPopup,
20
+ children
21
+ }: EntityTableCellActionsProps) {
15
22
 
16
23
  const ref = useRef<HTMLDivElement>(null);
17
24
  const doOpenPopup = useCallback(() => {
@@ -54,13 +61,18 @@ export function EntityTableCellActions({ showError, disabled, showExpandIcon, se
54
61
 
55
62
  {showError && <ErrorTooltip
56
63
  side={"left"}
57
- className={"flex items-center justify-center"}
58
- style={{ width: 32, height: 32 }}
59
64
  title={showError.message}>
60
- <ErrorOutlineIcon
61
- size={"small"}
62
- color={"error"}
63
- />
65
+ <div
66
+ className={"flex items-center justify-center"}
67
+ style={{
68
+ width: 32,
69
+ height: 32
70
+ }}>
71
+ <ErrorOutlineIcon
72
+ size={"small"}
73
+ color={"error"}
74
+ />
75
+ </div>
64
76
  </ErrorTooltip>
65
77
  }
66
78
 
@@ -1,5 +1,4 @@
1
1
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useState } from "react";
2
- import equal from "react-fast-compare"
3
2
 
4
3
  import * as Portal from "@radix-ui/react-portal";
5
4
 
@@ -19,20 +18,19 @@ import { useDraggable } from "./useDraggable";
19
18
  import { CustomFieldValidator, getYupEntitySchema } from "../../../../form/validation";
20
19
  import { useWindowSize } from "./useWindowSize";
21
20
  import { ElementResizeListener } from "./ElementResizeListener";
22
- import { ErrorView } from "../../../ErrorView";
23
21
  import { getPropertyInPath, isReadOnly, resolveCollection } from "../../../../util";
24
22
  import { Button, ClearIcon, DialogActions, IconButton, Typography } from "@firecms/ui";
25
23
  import { PropertyFieldBinding } from "../../../../form";
26
- import { useCustomizationController, useFireCMSContext } from "../../../../hooks";
24
+ import { useCustomizationController, useDataSource, useFireCMSContext } from "../../../../hooks";
27
25
  import { OnCellValueChangeParams } from "../../../common";
28
26
 
29
27
  interface PopupFormFieldProps<M extends Record<string, any>> {
30
- entity?: Entity<M>;
31
28
  customFieldValidator?: CustomFieldValidator;
32
29
  path: string;
30
+ entityId: string;
33
31
  tableKey: string;
34
32
  propertyKey?: Extract<keyof M, string>;
35
- collection?: EntityCollection<M>;
33
+ collection?: EntityCollection<any>;
36
34
  cellRect?: DOMRect;
37
35
  open: boolean;
38
36
  onClose: () => void;
@@ -41,18 +39,59 @@ interface PopupFormFieldProps<M extends Record<string, any>> {
41
39
  * Callback when the value of a cell has been edited
42
40
  * @param params
43
41
  */
44
- onCellValueChange?: (params: OnCellValueChangeParams<any, M>) => Promise<void> | void;
42
+ onCellValueChange?: (params: OnCellValueChangeParams<any, any>) => Promise<void> | void;
45
43
  }
46
44
 
47
45
  export function PopupFormField<M extends Record<string, any>>(props: PopupFormFieldProps<M>) {
48
46
  if (!props.open) return null;
49
- return <PopupFormFieldInternal {...props} />;
47
+ return <PopupFormFieldLoading {...props} />;
50
48
 
51
49
  }
52
50
 
51
+ export function PopupFormFieldLoading<M extends Record<string, any>>({
52
+ tableKey,
53
+ entityId,
54
+ customFieldValidator,
55
+ propertyKey,
56
+ collection: inputCollection,
57
+ path,
58
+ cellRect,
59
+ open,
60
+ onClose,
61
+ onCellValueChange,
62
+ container
63
+ }: PopupFormFieldProps<M>) {
64
+ const dataSource = useDataSource();
65
+ const [entity, setEntity] = useState<Entity<M> | undefined>(undefined);
66
+ useEffect(() => {
67
+ if (entityId && inputCollection) {
68
+ dataSource.fetchEntity({
69
+ path,
70
+ entityId,
71
+ collection: inputCollection
72
+ }).then(setEntity);
73
+ }
74
+ }, [entityId, inputCollection]);
75
+
76
+ if (!entity) return null;
77
+ return <PopupFormFieldInternal {...{
78
+ tableKey,
79
+ entityId,
80
+ customFieldValidator,
81
+ propertyKey,
82
+ collection: inputCollection,
83
+ path,
84
+ cellRect,
85
+ open,
86
+ onClose,
87
+ onCellValueChange,
88
+ container
89
+ }} entity={entity}/>;
90
+ }
91
+
53
92
  export function PopupFormFieldInternal<M extends Record<string, any>>({
54
93
  tableKey,
55
- entity: entityProp,
94
+ entityId,
56
95
  customFieldValidator,
57
96
  propertyKey,
58
97
  collection: inputCollection,
@@ -61,10 +100,12 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
61
100
  open,
62
101
  onClose,
63
102
  onCellValueChange,
64
- container
65
- }: PopupFormFieldProps<M>) {
103
+ container,
104
+ entity
105
+ }: PopupFormFieldProps<M> & {
106
+ entity?: Entity<M>
107
+ }) {
66
108
 
67
- // const dataSource = useDataSource();
68
109
  const fireCMSContext = useFireCMSContext();
69
110
  const customizationController = useCustomizationController();
70
111
 
@@ -74,34 +115,13 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
74
115
  y: number
75
116
  }>();
76
117
 
77
- const entityId = entityProp?.id;
78
- const [entity, setEntity] = useState<Entity<M> | undefined>(entityProp);
79
- // useEffect(() => {
80
- // if (entityId && inputCollection) {
81
- // return dataSource.listenEntity?.({
82
- // path,
83
- // entityId,
84
- // collection: inputCollection,
85
- // onUpdate: (e) => {
86
- // setEntity(e);
87
- // setInternalValue(e?.values);
88
- // }
89
- // });
90
- // } else {
91
- // return () => {
92
- // };
93
- // }
94
- // }, [dataSource, entityId, inputCollection, path, open]);
95
-
96
- const [internalValue, setInternalValue] = useState<EntityValues<M> | undefined>(entity?.values);
97
-
98
118
  const collection: ResolvedEntityCollection<M> | undefined = inputCollection
99
119
  ? resolveCollection<M>({
100
120
  collection: inputCollection,
101
121
  path,
102
- values: internalValue,
122
+ values: entity?.values,
103
123
  entityId,
104
- fields: customizationController.propertyConfigs
124
+ propertyConfigs: customizationController.propertyConfigs
105
125
  })
106
126
  : undefined;
107
127
 
@@ -205,22 +225,15 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
205
225
  return onCellValueChange({
206
226
  value: values[propertyKey as string],
207
227
  propertyKey: propertyKey as string,
208
- entity,
228
+ data: entity,
209
229
  setError: setSavingError,
210
230
  onValueUpdated: () => {
211
231
  },
212
- fullPath: path,
213
- context: fireCMSContext
214
232
  });
215
233
  }
216
234
  return Promise.resolve();
217
235
  };
218
236
 
219
- if (!entity)
220
- return <></>;
221
-
222
- // enableReinitialize={true}
223
- // eslint-disable-next-line react-hooks/rules-of-hooks
224
237
  const formex = useCreateFormex<M>({
225
238
  initialValues: (entity?.values ?? {}) as EntityValues<M>,
226
239
  validation: (values) => {
@@ -237,26 +250,22 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
237
250
  validateOnInitialRender: true,
238
251
  onSubmit: (values, actions) => {
239
252
  saveValue(values)
240
- .then(() => onClose())
253
+ .then(() => {
254
+ formex.resetForm({
255
+ values: values
256
+ })
257
+ onClose();
258
+ })
241
259
  .finally(() => actions.setSubmitting(false));
242
260
  }
243
261
  });
244
262
 
245
- const { values, isSubmitting, setFieldValue, handleSubmit } = formex;
246
-
247
- // eslint-disable-next-line react-hooks/rules-of-hooks
248
- useEffect(() => {
249
- if (!equal(values, internalValue)) {
250
- setInternalValue(values);
251
- }
252
- }, [values]);
253
-
254
- if (!entity)
255
- return <ErrorView
256
- error={"PopupFormField misconfiguration"}/>;
257
-
258
- if (!collection)
259
- return <></>;
263
+ const {
264
+ values,
265
+ isSubmitting,
266
+ setFieldValue,
267
+ handleSubmit
268
+ } = formex;
260
269
 
261
270
  const disabled = isSubmitting;
262
271
 
@@ -266,10 +275,11 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
266
275
  values,
267
276
  path,
268
277
  setFieldValue,
269
- save: saveValue
278
+ save: saveValue,
279
+ formex
270
280
  };
271
281
 
272
- const property: ResolvedProperty<any> | undefined = propertyKey && getPropertyInPath(collection.properties, propertyKey as string);
282
+ const property: ResolvedProperty<any> | undefined = propertyKey && getPropertyInPath(collection?.properties ?? {} as ResolvedProperties, propertyKey as string);
273
283
  const fieldProps: PropertyFieldBindingProps<any, M> | undefined = propertyKey && property
274
284
  ? {
275
285
  propertyKey: propertyKey as string,
@@ -278,9 +288,8 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
278
288
  includeDescription: false,
279
289
  underlyingValueHasChanged: false,
280
290
  context: formContext,
281
- tableMode: true,
282
291
  partOfArray: false,
283
- partOfBlock: false,
292
+ minimalistView: false,
284
293
  autoFocus: open
285
294
  }
286
295
  : undefined;
@@ -288,7 +297,7 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
288
297
  let internalForm = <>
289
298
  <div
290
299
  key={`popup_form_${tableKey}_${entityId}_${propertyKey}`}
291
- className="w-[560px] max-w-full max-h-[85vh]">
300
+ className="w-[700px] max-w-full max-h-[85vh]">
292
301
  <form
293
302
  onSubmit={handleSubmit}
294
303
  noValidate>
@@ -323,10 +332,6 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
323
332
 
324
333
  const plugins = customizationController.plugins;
325
334
  if (plugins) {
326
- // const formController: FormContext<M> = {
327
- // values,
328
- // setFieldValue
329
- // }
330
335
  plugins.forEach((plugin: FireCMSPlugin) => {
331
336
  if (plugin.form?.provider) {
332
337
  internalForm = (