@firecms/core 3.0.0-canary.1 → 3.0.0-canary.100

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 +2 -2
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +17 -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/CircularProgressCenter.d.ts +1 -1
  8. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  9. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
  10. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  11. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +5 -3
  12. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
  13. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  14. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +2 -0
  15. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  16. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  17. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +1 -1
  18. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
  19. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  20. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  21. package/dist/components/EntityPreview.d.ts +26 -7
  22. package/dist/components/EntityView.d.ts +11 -0
  23. package/dist/components/ErrorView.d.ts +1 -1
  24. package/dist/components/FieldCaption.d.ts +5 -0
  25. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  26. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  27. package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
  28. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  29. package/dist/components/HomePage/index.d.ts +3 -1
  30. package/dist/components/ReferenceWidget.d.ts +6 -4
  31. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  32. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  33. package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
  34. package/dist/components/VirtualTable/types.d.ts +3 -3
  35. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  36. package/dist/components/common/index.d.ts +1 -0
  37. package/dist/components/common/table_height.d.ts +5 -0
  38. package/dist/components/common/types.d.ts +4 -6
  39. package/dist/components/common/useColumnsIds.d.ts +2 -1
  40. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +3 -0
  41. package/dist/components/index.d.ts +6 -4
  42. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  43. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  44. package/dist/core/DefaultDrawer.d.ts +19 -0
  45. package/dist/core/DrawerNavigationItem.d.ts +9 -0
  46. package/dist/core/EntityEditView.d.ts +36 -0
  47. package/dist/core/FireCMS.d.ts +1 -1
  48. package/dist/core/NavigationRoutes.d.ts +3 -3
  49. package/dist/core/index.d.ts +3 -6
  50. package/dist/form/PropertiesForm.d.ts +8 -0
  51. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  52. package/dist/form/components/ErrorFocus.d.ts +1 -1
  53. package/dist/form/components/FieldHelperText.d.ts +3 -3
  54. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  55. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  56. package/dist/form/components/index.d.ts +1 -0
  57. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  60. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  61. package/dist/form/index.d.ts +1 -2
  62. package/dist/form/validation.d.ts +1 -1
  63. package/dist/hooks/data/delete.d.ts +2 -2
  64. package/dist/hooks/data/save.d.ts +2 -3
  65. package/dist/hooks/data/useDataSource.d.ts +2 -2
  66. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  67. package/dist/hooks/index.d.ts +4 -1
  68. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  69. package/dist/hooks/useBuildNavigationController.d.ts +6 -4
  70. package/dist/hooks/useProjectLog.d.ts +6 -2
  71. package/dist/hooks/useStorageSource.d.ts +2 -2
  72. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.es.js +16400 -12423
  75. package/dist/index.es.js.map +1 -1
  76. package/dist/index.umd.js +19713 -7
  77. package/dist/index.umd.js.map +1 -1
  78. package/dist/internal/useBuildDataSource.d.ts +1 -12
  79. package/dist/preview/PropertyPreview.d.ts +1 -1
  80. package/dist/preview/PropertyPreviewProps.d.ts +6 -4
  81. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  82. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  83. package/dist/preview/components/ReferencePreview.d.ts +3 -8
  84. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  85. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  86. package/dist/types/analytics.d.ts +1 -1
  87. package/dist/types/auth.d.ts +38 -2
  88. package/dist/types/collections.d.ts +45 -8
  89. package/dist/types/datasource.d.ts +34 -20
  90. package/dist/types/entities.d.ts +6 -1
  91. package/dist/types/entity_actions.d.ts +14 -0
  92. package/dist/types/entity_callbacks.d.ts +2 -2
  93. package/dist/types/entity_overrides.d.ts +6 -0
  94. package/dist/types/fields.d.ts +36 -30
  95. package/dist/types/index.d.ts +2 -1
  96. package/dist/types/navigation.d.ts +15 -14
  97. package/dist/types/permissions.d.ts +5 -1
  98. package/dist/types/plugins.d.ts +31 -23
  99. package/dist/types/properties.d.ts +34 -21
  100. package/dist/types/property_config.d.ts +2 -2
  101. package/dist/types/roles.d.ts +31 -0
  102. package/dist/types/storage.d.ts +11 -3
  103. package/dist/types/user.d.ts +5 -0
  104. package/dist/util/collections.d.ts +9 -1
  105. package/dist/util/entities.d.ts +1 -1
  106. package/dist/util/icon_list.d.ts +5 -1
  107. package/dist/util/icon_synonyms.d.ts +1 -97
  108. package/dist/util/icons.d.ts +9 -3
  109. package/dist/util/index.d.ts +1 -0
  110. package/dist/util/navigation_utils.d.ts +2 -2
  111. package/dist/util/objects.d.ts +1 -1
  112. package/dist/util/permissions.d.ts +4 -4
  113. package/dist/util/plurals.d.ts +0 -2
  114. package/dist/util/references.d.ts +4 -2
  115. package/dist/util/resolutions.d.ts +15 -14
  116. package/dist/util/storage.d.ts +23 -2
  117. package/dist/util/useStorageUploadController.d.ts +1 -1
  118. package/dist/util/useTraceUpdate.d.ts +1 -0
  119. package/package.json +128 -119
  120. package/src/app/AppBar.tsx +18 -0
  121. package/src/app/Drawer.tsx +25 -0
  122. package/src/app/Scaffold.tsx +251 -0
  123. package/src/app/index.ts +4 -0
  124. package/src/app/useApp.tsx +32 -0
  125. package/src/components/ArrayContainer.tsx +1 -1
  126. package/src/components/CircularProgressCenter.tsx +1 -1
  127. package/src/components/ClearFilterSortButton.tsx +41 -0
  128. package/src/components/DeleteEntityDialog.tsx +4 -4
  129. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +11 -21
  130. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +276 -279
  131. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +9 -5
  132. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +49 -45
  133. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  134. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +20 -18
  135. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
  136. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
  137. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +16 -12
  138. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +4 -5
  139. package/src/components/EntityCollectionView/EntityCollectionView.tsx +95 -92
  140. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  141. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  142. package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
  143. package/src/components/EntityPreview.tsx +210 -70
  144. package/src/components/EntityView.tsx +84 -0
  145. package/src/components/ErrorView.tsx +1 -1
  146. package/src/components/FieldCaption.tsx +14 -0
  147. package/src/components/HomePage/DefaultHomePage.tsx +37 -24
  148. package/src/components/HomePage/NavigationCard.tsx +69 -0
  149. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  150. package/src/components/HomePage/SmallNavigationCard.tsx +45 -0
  151. package/src/components/HomePage/index.tsx +3 -1
  152. package/src/components/PropertyIdCopyTooltipContent.tsx +2 -3
  153. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +4 -4
  154. package/src/components/ReferenceWidget.tsx +26 -16
  155. package/src/components/SearchIconsView.tsx +9 -6
  156. package/src/components/SelectableTable/SelectableTable.tsx +7 -7
  157. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  158. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
  159. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +38 -24
  160. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +35 -15
  161. package/src/components/VirtualTable/VirtualTable.tsx +70 -37
  162. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -1
  163. package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
  164. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  165. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  166. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  167. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +1 -1
  168. package/src/components/VirtualTable/types.tsx +2 -3
  169. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +11 -7
  170. package/src/components/common/index.ts +1 -0
  171. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  172. package/src/components/common/types.tsx +4 -6
  173. package/src/components/common/useColumnsIds.tsx +23 -2
  174. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +12 -1
  175. package/src/components/common/useTableSearchHelper.ts +52 -12
  176. package/src/components/index.tsx +6 -4
  177. package/src/contexts/AuthControllerContext.tsx +1 -1
  178. package/src/contexts/DialogsProvider.tsx +2 -2
  179. package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +60 -37
  180. package/src/core/DefaultDrawer.tsx +177 -0
  181. package/src/core/DrawerNavigationItem.tsx +62 -0
  182. package/src/core/EntityEditView.tsx +1130 -0
  183. package/src/core/EntitySidePanel.tsx +3 -4
  184. package/src/core/FireCMS.tsx +55 -44
  185. package/src/core/NavigationRoutes.tsx +15 -8
  186. package/src/core/SideDialogs.tsx +1 -0
  187. package/src/core/field_configs.tsx +2 -3
  188. package/src/core/index.tsx +3 -6
  189. package/src/form/PropertiesForm.tsx +81 -0
  190. package/src/form/PropertyFieldBinding.tsx +38 -9
  191. package/src/form/components/FieldHelperText.tsx +3 -3
  192. package/src/form/components/StorageItemPreview.tsx +21 -10
  193. package/src/form/components/StorageUploadProgress.tsx +9 -8
  194. package/src/form/components/index.tsx +1 -0
  195. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +10 -8
  196. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +18 -18
  197. package/src/form/field_bindings/BlockFieldBinding.tsx +4 -5
  198. package/src/form/field_bindings/DateTimeFieldBinding.tsx +3 -3
  199. package/src/form/field_bindings/KeyValueFieldBinding.tsx +62 -57
  200. package/src/form/field_bindings/MapFieldBinding.tsx +28 -20
  201. package/src/form/field_bindings/MarkdownFieldBinding.tsx +3 -4
  202. package/src/form/field_bindings/MultiSelectBinding.tsx +2 -3
  203. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +4 -11
  204. package/src/form/field_bindings/ReferenceFieldBinding.tsx +21 -17
  205. package/src/form/field_bindings/RepeatFieldBinding.tsx +14 -11
  206. package/src/form/field_bindings/SelectFieldBinding.tsx +5 -6
  207. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +28 -40
  208. package/src/form/field_bindings/SwitchFieldBinding.tsx +3 -4
  209. package/src/form/field_bindings/TextFieldBinding.tsx +10 -9
  210. package/src/form/index.tsx +5 -4
  211. package/src/form/validation.ts +4 -21
  212. package/src/hooks/data/delete.ts +3 -3
  213. package/src/hooks/data/save.ts +4 -2
  214. package/src/hooks/data/useCollectionFetch.tsx +1 -1
  215. package/src/hooks/data/useDataSource.tsx +7 -2
  216. package/src/hooks/data/useEntityFetch.tsx +4 -4
  217. package/src/hooks/index.tsx +6 -1
  218. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  219. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  220. package/src/hooks/useBuildNavigationController.tsx +208 -92
  221. package/src/hooks/useProjectLog.tsx +30 -9
  222. package/src/hooks/useReferenceDialog.tsx +2 -2
  223. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  224. package/src/hooks/useStorageSource.tsx +7 -2
  225. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  226. package/src/index.ts +1 -0
  227. package/src/internal/useBuildDataSource.ts +56 -44
  228. package/src/internal/useBuildSideEntityController.tsx +88 -21
  229. package/src/preview/PropertyPreview.tsx +11 -18
  230. package/src/preview/PropertyPreviewProps.tsx +4 -8
  231. package/src/preview/components/BooleanPreview.tsx +19 -4
  232. package/src/preview/components/EnumValuesChip.tsx +2 -2
  233. package/src/preview/components/ImagePreview.tsx +21 -33
  234. package/src/preview/components/ReferencePreview.tsx +74 -166
  235. package/src/preview/components/StorageThumbnail.tsx +5 -1
  236. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  237. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -1
  238. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +2 -1
  239. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -1
  240. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  241. package/src/preview/property_previews/ArrayOneOfPreview.tsx +2 -3
  242. package/src/preview/property_previews/ArrayPropertyPreview.tsx +2 -3
  243. package/src/preview/property_previews/MapPropertyPreview.tsx +5 -5
  244. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  245. package/src/types/analytics.ts +1 -0
  246. package/src/types/auth.tsx +51 -2
  247. package/src/types/collections.ts +52 -8
  248. package/src/types/customization_controller.tsx +0 -1
  249. package/src/types/datasource.ts +41 -24
  250. package/src/types/entities.ts +13 -1
  251. package/src/types/entity_actions.tsx +17 -0
  252. package/src/types/entity_callbacks.ts +2 -2
  253. package/src/types/entity_overrides.tsx +7 -0
  254. package/src/types/fields.tsx +39 -33
  255. package/src/types/firecms.tsx +0 -1
  256. package/src/types/index.ts +2 -1
  257. package/src/types/navigation.ts +17 -17
  258. package/src/types/permissions.ts +6 -1
  259. package/src/types/plugins.tsx +38 -31
  260. package/src/types/properties.ts +40 -22
  261. package/src/types/property_config.tsx +2 -2
  262. package/src/types/roles.ts +41 -0
  263. package/src/types/side_entity_controller.tsx +1 -0
  264. package/src/types/storage.ts +12 -3
  265. package/src/types/user.ts +7 -0
  266. package/src/util/collections.ts +22 -0
  267. package/src/util/entities.ts +5 -4
  268. package/src/util/enums.ts +1 -1
  269. package/src/util/icon_list.ts +15 -10
  270. package/src/util/icon_synonyms.ts +3 -99
  271. package/src/util/icons.tsx +11 -3
  272. package/src/util/index.ts +1 -0
  273. package/src/util/navigation_utils.ts +6 -6
  274. package/src/util/objects.ts +25 -28
  275. package/src/util/permissions.ts +12 -8
  276. package/src/util/plurals.ts +0 -2
  277. package/src/util/references.ts +36 -5
  278. package/src/util/resolutions.ts +44 -39
  279. package/src/util/storage.ts +75 -21
  280. package/src/util/strings.ts +2 -2
  281. package/src/util/useStorageUploadController.tsx +21 -3
  282. package/src/util/useTraceUpdate.tsx +2 -1
  283. package/dist/components/VirtualTable/common.d.ts +0 -2
  284. package/dist/core/Drawer.d.ts +0 -23
  285. package/dist/core/Scaffold.d.ts +0 -55
  286. package/dist/form/EntityForm.d.ts +0 -77
  287. package/dist/internal/EntityView.d.ts +0 -22
  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/HomePage/NavigationCollectionCard.tsx +0 -146
  292. package/src/core/Drawer.tsx +0 -164
  293. package/src/core/Scaffold.tsx +0 -281
  294. package/src/form/EntityForm.tsx +0 -720
  295. package/src/internal/EntityView.tsx +0 -578
  296. package/src/internal/useBuildCustomizationController.tsx +0 -5
  297. package/src/internal/useLocaleConfig.tsx +0 -18
  298. package/src/types/appcheck.ts +0 -29
  299. /package/dist/{components → form/components}/LabelWithIcon.d.ts +0 -0
  300. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  301. /package/src/{components → form/components}/LabelWithIcon.tsx +0 -0
@@ -1,11 +1,10 @@
1
1
  import React from "react";
2
2
  import { FieldProps } from "../../types";
3
- import { FieldHelperText } from "../components";
3
+ import { FieldHelperText, LabelWithIcon } from "../components";
4
4
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
5
- import { useClearRestoreValue } from "../../hooks";
6
- import { ExpandablePanel } from "@firecms/ui";
5
+ import { ExpandablePanel, Typography } from "@firecms/ui";
7
6
  import { getIconForProperty } from "../../util";
8
- import { LabelWithIcon } from "../../components";
7
+ import { useClearRestoreValue } from "../useClearRestoreValue";
9
8
 
10
9
  /**
11
10
  * Array field used for custom
@@ -40,10 +39,13 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
40
39
  setValue
41
40
  });
42
41
 
43
- const title = <LabelWithIcon icon={getIconForProperty(property, "small")}
44
- required={property.validation?.required}
45
- className={"text-text-secondary dark:text-text-secondary-dark"}
46
- title={property.name}/>;
42
+ const title = (<>
43
+ <LabelWithIcon icon={getIconForProperty(property, "small")}
44
+ required={property.validation?.required}
45
+ title={property.name}
46
+ className={"flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
47
+ {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
48
+ </>);
47
49
 
48
50
  const body = property.resolvedProperties.map((childProperty, index) => {
49
51
  const fieldProps = {
@@ -1,12 +1,13 @@
1
1
  import React, { useCallback, useMemo } from "react";
2
2
  import { Entity, EntityCollection, EntityReference, FieldProps, ResolvedProperty } from "../../types";
3
3
  import { ReferencePreview } from "../../preview";
4
- import { FieldHelperText, FormikArrayContainer } from "../components";
5
- import { ErrorView, LabelWithIcon } from "../../components";
4
+ import { FieldHelperText, FormikArrayContainer, LabelWithIcon } from "../components";
5
+ import { ErrorView } from "../../components";
6
6
  import { getIconForProperty, getReferenceFrom } from "../../util";
7
7
 
8
- import { useClearRestoreValue, useNavigationController, useReferenceDialog } from "../../hooks";
9
- import { Button, ExpandablePanel } from "@firecms/ui";
8
+ import { useNavigationController, useReferenceDialog } from "../../hooks";
9
+ import { Button, cls, ExpandablePanel, fieldBackgroundMixin, Typography } from "@firecms/ui";
10
+ import { useClearRestoreValue } from "../useClearRestoreValue";
10
11
 
11
12
  type ArrayOfReferencesFieldProps = FieldProps<EntityReference[]>;
12
13
 
@@ -37,7 +38,6 @@ export function ArrayOfReferencesFieldBinding({
37
38
  }
38
39
 
39
40
  const expanded = property.expanded === undefined ? true : property.expanded;
40
- const [onHover, setOnHover] = React.useState(false);
41
41
  const selectedEntityIds = value && Array.isArray(value) ? value.map((ref) => ref.id) : [];
42
42
 
43
43
  useClearRestoreValue({
@@ -80,34 +80,33 @@ export function ArrayOfReferencesFieldBinding({
80
80
  if (!entryValue)
81
81
  return <div>Internal ERROR</div>;
82
82
  return (
83
- <div
84
- onMouseEnter={() => setOnHover(true)}
85
- onMouseMove={() => setOnHover(true)}
86
- onMouseLeave={() => setOnHover(false)}>
87
83
  <ReferencePreview
84
+ key={internalId}
88
85
  disabled={!ofProperty.path}
89
86
  previewProperties={ofProperty.previewProperties}
90
87
  size={"medium"}
91
88
  onClick={onEntryClick}
89
+ hover={!disabled}
92
90
  reference={entryValue}
93
- onHover={onHover}
91
+ includeId={ofProperty.includeId}
92
+ includeEntityLink={ofProperty.includeEntityLink}
94
93
  />
95
- </div>
96
94
  );
97
- }, [ofProperty.path, ofProperty.previewProperties, onHover, value]);
95
+ }, [ofProperty.path, ofProperty.previewProperties, value]);
98
96
 
99
- const title = (
97
+ const title = (<>
100
98
  <LabelWithIcon icon={getIconForProperty(property, "small")}
101
99
  required={property.validation?.required}
102
100
  title={property.name}
103
- className={"text-text-secondary dark:text-text-secondary-dark"}/>
104
- );
101
+ className={"flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
102
+ {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
103
+ </>);
105
104
 
106
105
  const body = <>
107
106
  {!collection && <ErrorView
108
107
  error={"The specified collection does not exist. Check console"}/>}
109
108
 
110
- {collection && <>
109
+ {collection && <div className={"group"}>
111
110
 
112
111
  <FormikArrayContainer value={value}
113
112
  addLabel={property.name ? "Add reference to " + property.name : "Add reference"}
@@ -125,7 +124,7 @@ export function ArrayOfReferencesFieldBinding({
125
124
  onClick={onEntryClick}>
126
125
  Edit {property.name}
127
126
  </Button>
128
- </>}
127
+ </div>}
129
128
  </>;
130
129
 
131
130
  return (
@@ -133,7 +132,8 @@ export function ArrayOfReferencesFieldBinding({
133
132
 
134
133
  {!tableMode &&
135
134
  <ExpandablePanel
136
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
135
+ titleClassName={fieldBackgroundMixin}
136
+ className={cls("px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2", fieldBackgroundMixin)}
137
137
  initiallyExpanded={expanded}
138
138
  title={title}>
139
139
  {body}
@@ -2,15 +2,14 @@ import React, { useCallback, useEffect, useState } from "react";
2
2
 
3
3
  import { Field, useFormex } from "@firecms/formex";
4
4
 
5
- import { FieldHelperText, FormikArrayContainer } from "../components";
6
- import { LabelWithIcon } from "../../components";
7
- import { useClearRestoreValue } from "../../hooks";
5
+ import { FieldHelperText, FormikArrayContainer, LabelWithIcon } from "../components";
8
6
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
9
7
  import { EnumValuesChip } from "../../preview";
10
8
  import { FieldProps, FormContext, PropertyFieldBindingProps, PropertyOrBuilder } from "../../types";
11
9
  import { getDefaultValueFor, getIconForProperty, } from "../../util";
12
10
  import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "../../util/common";
13
- import { cn, ExpandablePanel, paperMixin, Select, SelectItem, Typography } from "@firecms/ui";
11
+ import { cls, ExpandablePanel, paperMixin, Select, SelectItem, Typography } from "@firecms/ui";
12
+ import { useClearRestoreValue } from "../useClearRestoreValue";
14
13
 
15
14
  /**
16
15
  * If the `oneOf` property is specified, this fields render each array entry as
@@ -194,7 +193,7 @@ function BlockEntry({
194
193
  };
195
194
 
196
195
  return (
197
- <div className={cn(paperMixin, "bg-transparent p-4 my-4 py-8")}>
196
+ <div className={cls(paperMixin, "bg-transparent p-4 my-4 py-8")}>
198
197
 
199
198
  <Field
200
199
  name={typeFieldName}
@@ -2,11 +2,11 @@ import React from "react";
2
2
 
3
3
  import { FieldProps } from "../../types";
4
4
 
5
- import { FieldHelperText } from "../components";
6
- import { LabelWithIcon } from "../../components";
7
- import { useClearRestoreValue, useCustomizationController } from "../../hooks";
5
+ import { FieldHelperText, LabelWithIcon } from "../components";
6
+ import { useCustomizationController } from "../../hooks";
8
7
  import { getIconForProperty } from "../../util";
9
8
  import { DateTimeField } from "@firecms/ui";
9
+ import { useClearRestoreValue } from "../useClearRestoreValue";
10
10
 
11
11
  type DateTimeFieldProps = FieldProps<Date>;
12
12
 
@@ -1,14 +1,14 @@
1
1
  import React, { useEffect, useState } from "react";
2
- import { DataType, EntityReference, FieldProps, GeoPoint } from "../../types";
2
+ import { DataType, FieldProps, GeoPoint } from "../../types";
3
3
 
4
- import { ArrayContainer, LabelWithIcon } from "../../components";
5
- import { FieldHelperText } from "../components";
4
+ import { ArrayContainer } from "../../components";
5
+ import { FieldHelperText, LabelWithIcon } from "../components";
6
6
  import {
7
7
  AddIcon,
8
8
  ArrowDropDownIcon,
9
9
  BooleanSwitchWithLabel,
10
10
  Button,
11
- cn,
11
+ cls,
12
12
  DateTimeField,
13
13
  defaultBorderMixin,
14
14
  ExpandablePanel,
@@ -21,6 +21,7 @@ import {
21
21
  } from "@firecms/ui";
22
22
  import { getDefaultValueForDataType, getIconForProperty } from "../../util";
23
23
  import { useCustomizationController } from "../../hooks";
24
+ import { getIn } from "@firecms/formex";
24
25
 
25
26
  type MapEditViewRowState = [number, {
26
27
  key: string,
@@ -32,29 +33,33 @@ type MapEditViewRowState = [number, {
32
33
  *
33
34
  * @group Form fields
34
35
  */
35
- export function KeyValueFieldBinding<T extends Record<string, any>>({
36
- propertyKey,
37
- value,
38
- showError,
39
- error,
40
- disabled,
41
- property,
42
- setValue,
43
- tableMode,
44
- includeDescription,
45
- underlyingValueHasChanged,
46
- autoFocus,
47
- context
48
- }: FieldProps<T>) {
36
+ export function KeyValueFieldBinding({
37
+ propertyKey,
38
+ value,
39
+ showError,
40
+ error,
41
+ disabled,
42
+ property,
43
+ setValue,
44
+ tableMode,
45
+ includeDescription,
46
+ underlyingValueHasChanged,
47
+ autoFocus,
48
+ context
49
+ }: FieldProps<Record<string, any>>) {
49
50
 
50
51
  const expanded = (property.expanded === undefined ? true : property.expanded) || autoFocus;
51
52
 
52
53
  if (!property.keyValue) {
53
54
  throw Error(`Your property ${propertyKey} needs to have the 'keyValue' prop in order to use this field binding`);
54
55
  }
56
+
57
+ const initialValues = getIn(context.formex.initialValues, propertyKey);
58
+
55
59
  const mapFormView = <MapEditView value={value}
56
60
  setValue={setValue}
57
61
  disabled={disabled}
62
+ initialValue={initialValues}
58
63
  fieldName={property.name ?? propertyKey}/>;
59
64
 
60
65
  const title = <LabelWithIcon
@@ -84,6 +89,7 @@ export function KeyValueFieldBinding<T extends Record<string, any>>({
84
89
 
85
90
  interface MapEditViewParams<T extends Record<string, any>> {
86
91
  value?: T;
92
+ initialValue?: T;
87
93
  setValue: (value: (T | null)) => void;
88
94
  fieldName?: string,
89
95
  disabled?: boolean
@@ -91,14 +97,15 @@ interface MapEditViewParams<T extends Record<string, any>> {
91
97
 
92
98
  function MapEditView<T extends Record<string, any>>({
93
99
  value,
100
+ initialValue,
94
101
  setValue,
95
102
  fieldName,
96
103
  disabled
97
104
  }: MapEditViewParams<T>) {
98
105
  const [internalState, setInternalState] = React.useState<MapEditViewRowState[]>(
99
- Object.keys(value ?? {}).map((key) => [getRandomId(), {
106
+ Object.keys(initialValue ?? {}).map((key) => [getRandomId(), {
100
107
  key,
101
- dataType: getDataType(value?.[key]) ?? "string"
108
+ dataType: getDataType(initialValue?.[key]) ?? "string"
102
109
  }])
103
110
  );
104
111
 
@@ -121,8 +128,6 @@ function MapEditView<T extends Record<string, any>>({
121
128
  setInternalState(newRowIds);
122
129
  }, [value]);
123
130
 
124
- const originalValue = React.useRef<T>(value ?? {} as T);
125
-
126
131
  const updateDataType = (rowId: number, dataType: DataType) => {
127
132
  if (!rowId) {
128
133
  console.warn("No key selected for data type update");
@@ -168,7 +173,7 @@ function MapEditView<T extends Record<string, any>>({
168
173
  }
169
174
 
170
175
  const newValue = { ...(value ?? {}) } as T;
171
- if (typeof originalValue.current === "object" && fieldKey in originalValue.current) {
176
+ if (typeof initialValue === "object" && fieldKey in initialValue) {
172
177
  // @ts-ignore
173
178
  newValue[fieldKey] = undefined; // set to undefined to remove from the object, the datasource will remove it from the backend
174
179
  } else {
@@ -186,7 +191,7 @@ function MapEditView<T extends Record<string, any>>({
186
191
  value={value ?? {} as T}
187
192
  onDeleteClick={() => {
188
193
  const newValue = { ...(value ?? {}) as T };
189
- if (originalValue.current && fieldKey in originalValue.current) {
194
+ if (initialValue && fieldKey in initialValue) {
190
195
  // @ts-ignore
191
196
  newValue[fieldKey] = undefined;
192
197
  } else {
@@ -305,7 +310,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
305
310
  }}/>;
306
311
  } else if (dataType === "boolean") {
307
312
  return <BooleanSwitchWithLabel value={entryValue}
308
- size={"small"}
313
+ size={"medium"}
309
314
  position={"start"}
310
315
  disabled={disabled || !fieldKey}
311
316
  onValueChange={(newValue) => {
@@ -316,7 +321,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
316
321
  }}/>;
317
322
  } else if (dataType === "array") {
318
323
  return <div
319
- className={cn(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
324
+ className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
320
325
  <ArrayContainer value={entryValue}
321
326
  newDefaultEntry={""}
322
327
  droppableId={rowId.toString()}
@@ -349,7 +354,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
349
354
  </div>;
350
355
  } else if (dataType === "map") {
351
356
  return <div
352
- className={cn(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
357
+ className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
353
358
  <MapEditView value={entryValue}
354
359
  fieldName={fieldKey}
355
360
  setValue={(updatedValue) => {
@@ -375,7 +380,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
375
380
  <Typography key={rowId.toString()}
376
381
  component={"div"}
377
382
  className="font-mono flex flex-row gap-1">
378
- <div className="w-[200px] max-w-[25%]">
383
+ <div className="w-[300px] max-w-[30%]">
379
384
  <TextField
380
385
  value={fieldKey}
381
386
  placeholder={"key"}
@@ -389,32 +394,32 @@ function MapKeyValueRow<T extends Record<string, any>>({
389
394
  <div className="flex-grow">
390
395
  {(dataType !== "map" && dataType !== "array") && buildInput(entryValue, fieldKey, dataType)}
391
396
  </div>
392
- <Menu
393
- trigger={<IconButton size={"small"}
394
- className="h-7 w-7">
395
- <ArrowDropDownIcon/>
396
- </IconButton>}
397
- >
398
- <MenuItem dense
399
- onClick={() => doUpdateDataType("string")}>string</MenuItem>
400
- <MenuItem dense
401
- onClick={() => doUpdateDataType("number")}>number</MenuItem>
402
- <MenuItem dense
403
- onClick={() => doUpdateDataType("boolean")}>boolean</MenuItem>
404
- <MenuItem dense
405
- onClick={() => doUpdateDataType("date")}>date</MenuItem>
406
- <MenuItem dense
407
- onClick={() => doUpdateDataType("map")}>map</MenuItem>
408
- <MenuItem dense
409
- onClick={() => doUpdateDataType("array")}>array</MenuItem>
410
- </Menu>
411
-
412
- <IconButton aria-label="delete"
413
- size={"small"}
414
- onClick={onDeleteClick}
415
- className="h-7 w-7">
416
- <RemoveIcon size={"small"}/>
417
- </IconButton>
397
+ <div className={"flex flex-col"}>
398
+ <Menu
399
+ trigger={<IconButton size={"smallest"}>
400
+ <ArrowDropDownIcon size={"small"}/>
401
+ </IconButton>}
402
+ >
403
+ <MenuItem dense
404
+ onClick={() => doUpdateDataType("string")}>string</MenuItem>
405
+ <MenuItem dense
406
+ onClick={() => doUpdateDataType("number")}>number</MenuItem>
407
+ <MenuItem dense
408
+ onClick={() => doUpdateDataType("boolean")}>boolean</MenuItem>
409
+ <MenuItem dense
410
+ onClick={() => doUpdateDataType("date")}>date</MenuItem>
411
+ <MenuItem dense
412
+ onClick={() => doUpdateDataType("map")}>map</MenuItem>
413
+ <MenuItem dense
414
+ onClick={() => doUpdateDataType("array")}>array</MenuItem>
415
+ </Menu>
416
+
417
+ <IconButton aria-label="delete"
418
+ size={"smallest"}
419
+ onClick={onDeleteClick}>
420
+ <RemoveIcon size={"smallest"}/>
421
+ </IconButton>
422
+ </div>
418
423
  </Typography>
419
424
 
420
425
  {(dataType === "map" || dataType === "array") && buildInput(entryValue, fieldKey, dataType)}
@@ -472,7 +477,7 @@ function ArrayKeyValueRow<T>({
472
477
  }}/>;
473
478
  } else if (dataType === "boolean") {
474
479
  return <BooleanSwitchWithLabel value={entryValue}
475
- size={"small"}
480
+ size={"medium"}
476
481
  position={"start"}
477
482
  onValueChange={(v) => {
478
483
  setValue(v as T);
@@ -482,7 +487,7 @@ function ArrayKeyValueRow<T>({
482
487
  Arrays of arrays are not supported.
483
488
  </Typography>;
484
489
  } else if (dataType === "map") {
485
- return <div className={cn(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
490
+ return <div className={cls(defaultBorderMixin, "ml-2 pl-2 border-l border-solid")}>
486
491
  <MapEditView value={entryValue}
487
492
  setValue={(updatedValue) => {
488
493
  setValue(updatedValue);
@@ -546,7 +551,7 @@ function getDataType(value: any): DataType | undefined {
546
551
  return "array";
547
552
  } else if (value instanceof Date) {
548
553
  return "date";
549
- } else if (value instanceof EntityReference) {
554
+ } else if (value?.isEntityReference && value?.isEntityReference()) {
550
555
  return "reference";
551
556
  } else if (value instanceof GeoPoint) {
552
557
  return "geopoint";
@@ -1,9 +1,17 @@
1
1
  import React from "react";
2
- import { FieldProps, Properties, ResolvedProperties } from "../../types";
3
-
4
- import { ErrorBoundary, LabelWithIcon } from "../../components";
2
+ import {
3
+ CMSType,
4
+ FieldProps,
5
+ FormContext,
6
+ MapProperty,
7
+ Properties,
8
+ ResolvedProperties,
9
+ ResolvedProperty
10
+ } from "../../types";
11
+
12
+ import { ErrorBoundary } from "../../components";
5
13
  import { getIconForProperty, isHidden, pick } from "../../util";
6
- import { FieldHelperText } from "../components";
14
+ import { FieldHelperText, LabelWithIcon } from "../components";
7
15
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
8
16
  import { ExpandablePanel, InputLabel, Select, SelectItem } from "@firecms/ui";
9
17
 
@@ -14,21 +22,20 @@ import { ExpandablePanel, InputLabel, Select, SelectItem } from "@firecms/ui";
14
22
  * and tables to the specified properties.
15
23
  * @group Form fields
16
24
  */
17
- export function MapFieldBinding<T extends Record<string, any>>({
18
- propertyKey,
19
- value,
20
- showError,
21
- error,
22
- disabled,
23
- property,
24
- setValue,
25
- partOfBlock,
26
- tableMode,
27
- includeDescription,
28
- underlyingValueHasChanged,
29
- autoFocus,
30
- context
31
- }: FieldProps<T>) {
25
+ export function MapFieldBinding({
26
+ propertyKey,
27
+ value,
28
+ showError,
29
+ error,
30
+ disabled,
31
+ property,
32
+ partOfBlock,
33
+ tableMode,
34
+ includeDescription,
35
+ underlyingValueHasChanged,
36
+ autoFocus,
37
+ context
38
+ }: FieldProps<Record<string, any>>) {
32
39
 
33
40
  const pickOnlySomeKeys = property.pickOnlySomeKeys || false;
34
41
  const expanded = (property.expanded === undefined ? true : property.expanded) || autoFocus;
@@ -68,6 +75,7 @@ export function MapFieldBinding<T extends Record<string, any>>({
68
75
  partOfBlock: false,
69
76
  autoFocus: autoFocus && index === 0
70
77
  };
78
+
71
79
  return (
72
80
  <div key={`map-${propertyKey}-${index}`}>
73
81
  <ErrorBoundary>
@@ -101,7 +109,7 @@ export function MapFieldBinding<T extends Record<string, any>>({
101
109
  {(tableMode || partOfBlock) && mapFormView}
102
110
 
103
111
  <FieldHelperText includeDescription={includeDescription}
104
- showError={showError}
112
+ showError={showError ?? false}
105
113
  error={error ? (typeof error === "string" ? error : "A property of this map has an error") : undefined}
106
114
  disabled={disabled}
107
115
  property={property}/>
@@ -4,12 +4,11 @@ import React, { useDeferredValue, useEffect, useRef } from "react";
4
4
  import MarkdownIt from "markdown-it";
5
5
  import MdEditor, { Plugins } from "react-markdown-editor-lite";
6
6
 
7
- import { FieldHelperText } from "../components";
8
- import { LabelWithIcon } from "../../components";
7
+ import { FieldHelperText, LabelWithIcon } from "../components";
9
8
  import { FieldProps } from "../../types";
10
9
  import { getIconForProperty } from "../../util";
11
10
  import {
12
- cn,
11
+ cls,
13
12
  fieldBackgroundDisabledMixin,
14
13
  fieldBackgroundHoverMixin,
15
14
  fieldBackgroundMixin,
@@ -82,7 +81,7 @@ export function MarkdownFieldBinding({
82
81
  </Typography>}
83
82
 
84
83
  <MdEditor value={internalValue ?? ""}
85
- className={cn(fieldBackgroundMixin,
84
+ className={cls(fieldBackgroundMixin,
86
85
  disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,
87
86
  "text-base")}
88
87
  readOnly={disabled}
@@ -1,12 +1,11 @@
1
1
  import React, { useCallback } from "react";
2
2
 
3
3
  import { EnumType, FieldProps, ResolvedProperty } from "../../types";
4
- import { FieldHelperText } from "../components";
5
- import { LabelWithIcon } from "../../components";
6
- import { useClearRestoreValue } from "../../hooks";
4
+ import { FieldHelperText, LabelWithIcon } from "../components";
7
5
  import { EnumValuesChip } from "../../preview";
8
6
  import { enumToObjectEntries, getIconForProperty, getLabelOrConfigFrom } from "../../util";
9
7
  import { CloseIcon, MultiSelect, MultiSelectItem } from "@firecms/ui";
8
+ import { useClearRestoreValue } from "../useClearRestoreValue";
10
9
 
11
10
  /**
12
11
  * This fields renders a dropdown with multiple selection.
@@ -3,10 +3,10 @@ import React from "react";
3
3
  import { Entity, FieldProps } from "../../types";
4
4
 
5
5
  import { PropertyPreview } from "../../preview";
6
- import { FieldHelperText } from "../components";
7
- import { ErrorBoundary, LabelWithIcon } from "../../components";
6
+ import { FieldHelperText, LabelWithIcon } from "../components";
7
+ import { ErrorBoundary } from "../../components";
8
8
  import { getIconForProperty } from "../../util";
9
- import { cn, paperMixin } from "@firecms/ui";
9
+ import { cls, paperMixin } from "@firecms/ui";
10
10
 
11
11
  /**
12
12
  *
@@ -30,12 +30,6 @@ export function ReadOnlyFieldBinding({
30
30
  if (!context.entityId)
31
31
  throw new Error("ReadOnlyFieldBinding: Entity id is null");
32
32
 
33
- const entity: Entity<any> = {
34
- id: context.entityId!,
35
- values: context.values,
36
- path: context.path
37
- };
38
-
39
33
  return (
40
34
 
41
35
  <>
@@ -47,13 +41,12 @@ export function ReadOnlyFieldBinding({
47
41
  }
48
42
 
49
43
  <div
50
- className={cn(paperMixin, "min-h-14 p-4 md:p-6 overflow-x-scroll no-scrollbar")}>
44
+ className={cls(paperMixin, "min-h-14 p-4 md:p-6 overflow-x-scroll no-scrollbar")}>
51
45
 
52
46
  <ErrorBoundary>
53
47
  <PropertyPreview propertyKey={propertyKey}
54
48
  value={value}
55
49
  property={property}
56
- // entity={entity}
57
50
  size={"medium"}/>
58
51
  </ErrorBoundary>
59
52
 
@@ -1,13 +1,14 @@
1
1
  import React, { useCallback, useMemo } from "react";
2
2
 
3
3
  import { Entity, EntityCollection, EntityReference, FieldProps } from "../../types";
4
- import { useClearRestoreValue, useNavigationController, useReferenceDialog } from "../../hooks";
4
+ import { useNavigationController, useReferenceDialog } from "../../hooks";
5
5
  import { ReadOnlyFieldBinding } from "./ReadOnlyFieldBinding";
6
- import { FieldHelperText } from "../components";
7
- import { ErrorView, LabelWithIcon } from "../../components";
6
+ import { FieldHelperText, LabelWithIcon } from "../components";
7
+ import { ErrorView } from "../../components";
8
8
  import { ReferencePreview } from "../../preview";
9
9
  import { getIconForProperty, getReferenceFrom } from "../../util";
10
10
  import { Button } from "@firecms/ui";
11
+ import { useClearRestoreValue } from "../useClearRestoreValue";
11
12
 
12
13
  /**
13
14
  * Field that opens a reference selection dialog.
@@ -26,19 +27,19 @@ export function ReferenceFieldBinding<M extends Record<string, any>>(props: Fiel
26
27
 
27
28
  }
28
29
 
29
- function ReferenceFieldBindingInternal<M extends Record<string, any>>({
30
- value,
31
- setValue,
32
- error,
33
- showError,
34
- isSubmitting,
35
- disabled,
36
- touched,
37
- autoFocus,
38
- property,
39
- includeDescription,
40
- context
41
- }: FieldProps<EntityReference>) {
30
+ function ReferenceFieldBindingInternal({
31
+ value,
32
+ setValue,
33
+ error,
34
+ showError,
35
+ isSubmitting,
36
+ disabled,
37
+ touched,
38
+ autoFocus,
39
+ property,
40
+ includeDescription,
41
+ context
42
+ }: FieldProps<EntityReference>) {
42
43
  if (!property.path) {
43
44
  throw new Error("Property path is required for ReferenceFieldBinding");
44
45
  }
@@ -49,7 +50,7 @@ function ReferenceFieldBindingInternal<M extends Record<string, any>>({
49
50
  setValue
50
51
  });
51
52
 
52
- const validValue = value && value instanceof EntityReference;
53
+ const validValue = value && value.isEntityReference && value.isEntityReference();
53
54
 
54
55
  const navigationController = useNavigationController();
55
56
  const collection: EntityCollection | undefined = useMemo(() => {
@@ -94,9 +95,12 @@ function ReferenceFieldBindingInternal<M extends Record<string, any>>({
94
95
  {value && <ReferencePreview
95
96
  disabled={!property.path}
96
97
  previewProperties={property.previewProperties}
98
+ hover={!disabled}
97
99
  size={"medium"}
98
100
  onClick={disabled || isSubmitting ? undefined : onEntryClick}
99
101
  reference={value}
102
+ includeEntityLink={property.includeEntityLink}
103
+ includeId={property.includeId}
100
104
  />}
101
105
 
102
106
  {!value && <div className="justify-center text-left">