@firecms/core 3.0.0-canary.15 → 3.0.0-canary.151

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 (326) 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 +19 -6
  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 +7 -5
  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 +4 -1
  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 +2 -2
  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/delete.d.ts +4 -4
  71. package/dist/hooks/data/save.d.ts +4 -5
  72. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  73. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  74. package/dist/hooks/index.d.ts +1 -0
  75. package/dist/hooks/useAuthController.d.ts +1 -1
  76. package/dist/hooks/useBuildNavigationController.d.ts +3 -4
  77. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  78. package/dist/hooks/useProjectLog.d.ts +8 -2
  79. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  80. package/dist/hooks/useValidateAuthenticator.d.ts +5 -9
  81. package/dist/index.d.ts +1 -0
  82. package/dist/index.es.js +16536 -13058
  83. package/dist/index.es.js.map +1 -1
  84. package/dist/index.umd.js +20159 -587
  85. package/dist/index.umd.js.map +1 -1
  86. package/dist/internal/useBuildDataSource.d.ts +1 -16
  87. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  88. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  89. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  90. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  91. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  92. package/dist/types/auth.d.ts +7 -11
  93. package/dist/types/collections.d.ts +53 -18
  94. package/dist/types/datasource.d.ts +51 -35
  95. package/dist/types/entities.d.ts +6 -1
  96. package/dist/types/entity_actions.d.ts +18 -4
  97. package/dist/types/entity_callbacks.d.ts +16 -16
  98. package/dist/types/entity_overrides.d.ts +2 -2
  99. package/dist/types/export_import.d.ts +4 -4
  100. package/dist/types/fields.d.ts +63 -41
  101. package/dist/types/firecms.d.ts +6 -2
  102. package/dist/types/firecms_context.d.ts +1 -1
  103. package/dist/types/index.d.ts +0 -1
  104. package/dist/types/navigation.d.ts +6 -5
  105. package/dist/types/permissions.d.ts +4 -4
  106. package/dist/types/plugins.d.ts +22 -12
  107. package/dist/types/properties.d.ts +34 -21
  108. package/dist/types/property_config.d.ts +0 -2
  109. package/dist/types/side_dialogs_controller.d.ts +10 -0
  110. package/dist/types/storage.d.ts +86 -3
  111. package/dist/types/user.d.ts +1 -0
  112. package/dist/util/builders.d.ts +2 -2
  113. package/dist/util/entities.d.ts +2 -2
  114. package/dist/util/icon_list.d.ts +5 -1
  115. package/dist/util/icon_synonyms.d.ts +1 -97
  116. package/dist/util/icons.d.ts +6 -3
  117. package/dist/util/index.d.ts +1 -0
  118. package/dist/util/navigation_utils.d.ts +2 -2
  119. package/dist/util/objects.d.ts +2 -1
  120. package/dist/util/permissions.d.ts +4 -4
  121. package/dist/util/plurals.d.ts +0 -2
  122. package/dist/util/property_utils.d.ts +3 -3
  123. package/dist/util/resolutions.d.ts +30 -16
  124. package/dist/util/storage.d.ts +23 -2
  125. package/dist/util/useStorageUploadController.d.ts +3 -3
  126. package/package.json +128 -119
  127. package/src/app/AppBar.tsx +18 -0
  128. package/src/app/Drawer.tsx +24 -0
  129. package/src/app/Scaffold.tsx +243 -0
  130. package/src/app/index.ts +4 -0
  131. package/src/app/useApp.tsx +32 -0
  132. package/src/components/ArrayContainer.tsx +92 -25
  133. package/src/components/CircularProgressCenter.tsx +2 -2
  134. package/src/components/ClearFilterSortButton.tsx +41 -0
  135. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  136. package/src/components/DeleteEntityDialog.tsx +1 -1
  137. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +13 -20
  138. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +25 -24
  139. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +12 -8
  140. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  141. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  142. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -17
  143. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +16 -8
  144. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
  145. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  146. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  147. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +82 -75
  148. package/src/components/EntityCollectionView/EntityCollectionView.tsx +139 -87
  149. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  150. package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
  151. package/src/components/EntityCollectionView/utils.ts +19 -0
  152. package/src/components/EntityPreview.tsx +47 -41
  153. package/src/components/EntityView.tsx +10 -10
  154. package/src/components/ErrorView.tsx +3 -3
  155. package/src/components/HomePage/DefaultHomePage.tsx +25 -19
  156. package/src/components/HomePage/FavouritesView.tsx +1 -1
  157. package/src/components/HomePage/NavigationCard.tsx +4 -4
  158. package/src/components/HomePage/NavigationCardBinding.tsx +2 -2
  159. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  160. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  161. package/src/components/PropertyConfigBadge.tsx +9 -3
  162. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  163. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
  164. package/src/components/ReferenceWidget.tsx +22 -12
  165. package/src/components/SearchIconsView.tsx +10 -7
  166. package/src/components/SelectableTable/SelectableTable.tsx +9 -9
  167. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  168. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
  169. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
  170. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +88 -21
  171. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  172. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  173. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  174. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  175. package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
  176. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  177. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  178. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
  179. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  180. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  181. package/src/components/VirtualTable/types.tsx +2 -3
  182. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
  183. package/src/components/common/index.ts +1 -0
  184. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  185. package/src/components/common/types.tsx +4 -6
  186. package/src/components/common/useColumnsIds.tsx +23 -2
  187. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +25 -14
  188. package/src/components/common/useTableSearchHelper.ts +53 -12
  189. package/src/components/index.tsx +4 -2
  190. package/src/contexts/DialogsProvider.tsx +2 -2
  191. package/src/core/DefaultAppBar.tsx +178 -0
  192. package/src/core/DefaultDrawer.tsx +183 -0
  193. package/src/core/DrawerNavigationItem.tsx +66 -0
  194. package/src/core/EntityEditView.tsx +717 -154
  195. package/src/core/EntitySidePanel.tsx +1 -2
  196. package/src/core/FireCMS.tsx +54 -53
  197. package/src/core/NavigationRoutes.tsx +7 -8
  198. package/src/core/SideDialogs.tsx +2 -1
  199. package/src/core/field_configs.tsx +8 -9
  200. package/src/core/index.tsx +3 -4
  201. package/src/form/PropertyFieldBinding.tsx +74 -35
  202. package/src/form/components/CustomIdField.tsx +4 -2
  203. package/src/form/components/FieldHelperText.tsx +4 -4
  204. package/src/form/components/LabelWithIcon.tsx +27 -19
  205. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  206. package/src/form/components/StorageItemPreview.tsx +22 -12
  207. package/src/form/components/StorageUploadProgress.tsx +3 -4
  208. package/src/form/components/index.tsx +1 -1
  209. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
  210. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
  211. package/src/form/field_bindings/BlockFieldBinding.tsx +51 -32
  212. package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
  213. package/src/form/field_bindings/KeyValueFieldBinding.tsx +54 -45
  214. package/src/form/field_bindings/MapFieldBinding.tsx +65 -48
  215. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  216. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  217. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  218. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  219. package/src/form/field_bindings/RepeatFieldBinding.tsx +52 -34
  220. package/src/form/field_bindings/SelectFieldBinding.tsx +20 -13
  221. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +36 -46
  222. package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
  223. package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
  224. package/src/form/index.tsx +4 -9
  225. package/src/form/useClearRestoreValue.tsx +2 -2
  226. package/src/form/validation.ts +1 -17
  227. package/src/hooks/data/delete.ts +6 -5
  228. package/src/hooks/data/save.ts +12 -8
  229. package/src/hooks/data/useCollectionFetch.tsx +2 -2
  230. package/src/hooks/data/useDataSource.tsx +11 -3
  231. package/src/hooks/data/useEntityFetch.tsx +5 -5
  232. package/src/hooks/index.tsx +1 -0
  233. package/src/hooks/useAuthController.tsx +1 -1
  234. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  235. package/src/hooks/useBuildModeController.tsx +11 -5
  236. package/src/hooks/useBuildNavigationController.tsx +92 -34
  237. package/src/hooks/useFireCMSContext.tsx +5 -5
  238. package/src/hooks/useProjectLog.tsx +32 -10
  239. package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
  240. package/src/hooks/useValidateAuthenticator.tsx +21 -41
  241. package/src/index.ts +1 -0
  242. package/src/internal/useBuildDataSource.ts +72 -82
  243. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  244. package/src/internal/useBuildSideEntityController.tsx +102 -22
  245. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  246. package/src/preview/PropertyPreview.tsx +11 -18
  247. package/src/preview/PropertyPreviewProps.tsx +7 -1
  248. package/src/preview/components/BooleanPreview.tsx +2 -2
  249. package/src/preview/components/EmptyValue.tsx +1 -1
  250. package/src/preview/components/EnumValuesChip.tsx +2 -2
  251. package/src/preview/components/ImagePreview.tsx +25 -35
  252. package/src/preview/components/ReferencePreview.tsx +23 -34
  253. package/src/preview/components/StorageThumbnail.tsx +5 -1
  254. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  255. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  256. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  257. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  258. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  259. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  260. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  261. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  262. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  263. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  264. package/src/preview/util.ts +2 -2
  265. package/src/types/auth.tsx +7 -13
  266. package/src/types/collections.ts +62 -20
  267. package/src/types/customization_controller.tsx +0 -1
  268. package/src/types/datasource.ts +60 -43
  269. package/src/types/entities.ts +11 -1
  270. package/src/types/entity_actions.tsx +20 -7
  271. package/src/types/entity_callbacks.ts +18 -18
  272. package/src/types/entity_overrides.tsx +2 -2
  273. package/src/types/export_import.ts +4 -4
  274. package/src/types/fields.tsx +69 -45
  275. package/src/types/firecms.tsx +7 -2
  276. package/src/types/firecms_context.tsx +1 -1
  277. package/src/types/index.ts +0 -1
  278. package/src/types/navigation.ts +7 -7
  279. package/src/types/permissions.ts +5 -5
  280. package/src/types/plugins.tsx +24 -14
  281. package/src/types/properties.ts +39 -22
  282. package/src/types/property_config.tsx +0 -2
  283. package/src/types/side_dialogs_controller.tsx +13 -0
  284. package/src/types/storage.ts +94 -3
  285. package/src/types/user.ts +2 -0
  286. package/src/util/builders.ts +6 -6
  287. package/src/util/entities.ts +6 -5
  288. package/src/util/enums.ts +1 -1
  289. package/src/util/icon_list.ts +15 -10
  290. package/src/util/icon_synonyms.ts +3 -99
  291. package/src/util/icons.tsx +17 -7
  292. package/src/util/index.ts +1 -0
  293. package/src/util/make_properties_editable.ts +13 -5
  294. package/src/util/navigation_utils.ts +6 -6
  295. package/src/util/objects.ts +45 -28
  296. package/src/util/permissions.ts +9 -8
  297. package/src/util/plurals.ts +0 -2
  298. package/src/util/property_utils.tsx +11 -4
  299. package/src/util/references.ts +3 -0
  300. package/src/util/resolutions.ts +79 -46
  301. package/src/util/storage.ts +79 -21
  302. package/src/util/strings.ts +2 -2
  303. package/src/util/useStorageUploadController.tsx +33 -7
  304. package/src/util/useTraceUpdate.tsx +1 -0
  305. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  306. package/dist/components/VirtualTable/common.d.ts +0 -2
  307. package/dist/core/Drawer.d.ts +0 -23
  308. package/dist/core/Scaffold.d.ts +0 -55
  309. package/dist/core/SideEntityView.d.ts +0 -7
  310. package/dist/form/EntityForm.d.ts +0 -77
  311. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  312. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  313. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  314. package/dist/internal/useLocaleConfig.d.ts +0 -1
  315. package/dist/types/appcheck.d.ts +0 -26
  316. package/src/components/FireCMSAppBar.tsx +0 -165
  317. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  318. package/src/core/Drawer.tsx +0 -191
  319. package/src/core/Scaffold.tsx +0 -281
  320. package/src/core/SideEntityView.tsx +0 -38
  321. package/src/form/EntityForm.tsx +0 -728
  322. package/src/form/components/FormikArrayContainer.tsx +0 -44
  323. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  324. package/src/internal/useBuildCustomizationController.tsx +0 -5
  325. package/src/internal/useLocaleConfig.tsx +0 -18
  326. package/src/types/appcheck.ts +0 -29
@@ -5,6 +5,7 @@ import { getIconForProperty } from "../../util";
5
5
  import { FieldHelperText, LabelWithIcon } from "../components";
6
6
  import { BooleanSwitchWithLabel } from "@firecms/ui";
7
7
  import { useClearRestoreValue } from "../useClearRestoreValue";
8
+ import { PropertyIdCopyTooltip } from "../../components";
8
9
 
9
10
  type SwitchFieldProps = FieldProps<boolean>;
10
11
 
@@ -23,7 +24,7 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
23
24
  showError,
24
25
  autoFocus,
25
26
  disabled,
26
- touched,
27
+ size = "medium",
27
28
  property,
28
29
  includeDescription
29
30
  }: SwitchFieldProps, ref) {
@@ -37,17 +38,20 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
37
38
  return (
38
39
  <>
39
40
 
41
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
40
42
  <BooleanSwitchWithLabel
41
43
  value={value}
42
44
  onValueChange={(v) => setValue(v)}
43
45
  error={showError}
44
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
45
- required={property.validation?.required}
46
- title={property.name}/>}
46
+ label={<LabelWithIcon
47
+ icon={getIconForProperty(property, "small")}
48
+ required={property.validation?.required}
49
+ title={property.name}/>}
47
50
  disabled={disabled}
48
51
  autoFocus={autoFocus}
49
- size={"medium"}
52
+ size={size}
50
53
  />
54
+ </PropertyIdCopyTooltip>
51
55
 
52
56
  <FieldHelperText includeDescription={includeDescription}
53
57
  showError={showError}
@@ -6,6 +6,7 @@ import { FieldHelperText, LabelWithIcon } from "../components";
6
6
  import { getIconForProperty } from "../../util";
7
7
  import { PropertyPreview } from "../../preview";
8
8
  import { useClearRestoreValue } from "../useClearRestoreValue";
9
+ import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
9
10
 
10
11
  interface TextFieldBindingProps<T extends string | number> extends FieldProps<T> {
11
12
  allowInfinity?: boolean
@@ -18,7 +19,6 @@ interface TextFieldBindingProps<T extends string | number> extends FieldProps<T>
18
19
  * @group Form fields
19
20
  */
20
21
  export function TextFieldBinding<T extends string | number>({
21
- context,
22
22
  propertyKey,
23
23
  value,
24
24
  setValue,
@@ -28,6 +28,7 @@ export function TextFieldBinding<T extends string | number>({
28
28
  autoFocus,
29
29
  property,
30
30
  includeDescription,
31
+ size = "medium"
31
32
  }: TextFieldBindingProps<T>) {
32
33
 
33
34
  let multiline: boolean | undefined;
@@ -67,27 +68,29 @@ export function TextFieldBinding<T extends string | number>({
67
68
  const isMultiline = Boolean(multiline);
68
69
 
69
70
  const inputType = property.dataType === "number" ? "number" : undefined;
70
- return (
71
- <>
72
- <TextField
73
- value={value}
74
- onChange={onChange}
75
- autoFocus={autoFocus}
76
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
77
- required={property.validation?.required}
78
- title={property.name}/>}
79
- type={inputType}
80
- multiline={isMultiline}
81
- disabled={disabled}
82
- endAdornment={
83
- property.clearable && <IconButton
84
- onClick={handleClearClick}>
85
- <ClearIcon/>
86
- </IconButton>
87
- }
88
- error={showError ? error : undefined}
89
- inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
90
-
71
+ return (<>
72
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
73
+ <TextField
74
+ size={size}
75
+ value={value}
76
+ onChange={onChange}
77
+ autoFocus={autoFocus}
78
+ label={<LabelWithIcon
79
+ icon={getIconForProperty(property, "small")}
80
+ required={property.validation?.required}
81
+ title={property.name}/>}
82
+ type={inputType}
83
+ multiline={isMultiline}
84
+ disabled={disabled}
85
+ endAdornment={
86
+ property.clearable && <IconButton
87
+ onClick={handleClearClick}>
88
+ <ClearIcon/>
89
+ </IconButton>
90
+ }
91
+ error={showError ? error : undefined}
92
+ inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
93
+ </PropertyIdCopyTooltip>
91
94
  <FieldHelperText includeDescription={includeDescription}
92
95
  showError={showError}
93
96
  error={error}
@@ -100,7 +103,7 @@ export function TextFieldBinding<T extends string | number>({
100
103
  <PropertyPreview
101
104
  value={value}
102
105
  property={property}
103
- size={"medium"}/>
106
+ size={size}/>
104
107
  </Collapse>}
105
108
 
106
109
  </>
@@ -1,5 +1,5 @@
1
1
  import { SelectFieldBinding } from "./field_bindings/SelectFieldBinding";
2
- import { MultiSelectBinding } from "./field_bindings/MultiSelectBinding";
2
+ import { MultiSelectFieldBinding } from "./field_bindings/MultiSelectFieldBinding";
3
3
  import { ArrayOfReferencesFieldBinding } from "./field_bindings/ArrayOfReferencesFieldBinding";
4
4
  import { StorageUploadFieldBinding } from "./field_bindings/StorageUploadFieldBinding";
5
5
  import { TextFieldBinding } from "./field_bindings/TextFieldBinding";
@@ -11,13 +11,13 @@ import { KeyValueFieldBinding } from "./field_bindings/KeyValueFieldBinding";
11
11
  import { RepeatFieldBinding } from "./field_bindings/RepeatFieldBinding";
12
12
  import { BlockFieldBinding } from "./field_bindings/BlockFieldBinding";
13
13
  import { ReadOnlyFieldBinding } from "./field_bindings/ReadOnlyFieldBinding";
14
- import { MarkdownFieldBinding } from "./field_bindings/MarkdownFieldBinding";
14
+ import { MarkdownEditorFieldBinding } from "./field_bindings/MarkdownEditorFieldBinding";
15
15
  import { ArrayCustomShapedFieldBinding } from "./field_bindings/ArrayCustomShapedFieldBinding";
16
16
 
17
17
  export {
18
18
  ArrayCustomShapedFieldBinding,
19
19
  RepeatFieldBinding,
20
- MultiSelectBinding,
20
+ MultiSelectFieldBinding,
21
21
  ArrayOfReferencesFieldBinding,
22
22
  BlockFieldBinding,
23
23
  DateTimeFieldBinding,
@@ -28,16 +28,11 @@ export {
28
28
  SelectFieldBinding,
29
29
  StorageUploadFieldBinding,
30
30
  SwitchFieldBinding,
31
- MarkdownFieldBinding,
31
+ MarkdownEditorFieldBinding,
32
32
  TextFieldBinding
33
33
  };
34
34
 
35
35
  export * from "./components";
36
36
 
37
- export type { EntityFormProps } from "./EntityForm";
38
- export {
39
- EntityForm
40
- } from "./EntityForm";
41
-
42
37
  export { PropertyFieldBinding } from "./PropertyFieldBinding";
43
38
  export * from "./useClearRestoreValue";
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef } from "react";
2
- import { CMSType, ResolvedProperty } from "../types";
2
+ import { CMSType, Property, ResolvedProperty } from "../types";
3
3
 
4
4
  /**
5
5
  * Hook we use to restore a value after it has been cleared
@@ -14,7 +14,7 @@ export function useClearRestoreValue<T extends CMSType>({
14
14
  setValue
15
15
  }:
16
16
  {
17
- property: ResolvedProperty<T>,
17
+ property: Property<T> | ResolvedProperty<T>,
18
18
  value: T,
19
19
  setValue: (value: T | null, shouldValidate?: boolean) => void
20
20
  }) {
@@ -112,23 +112,7 @@ export function getYupMapObjectSchema({
112
112
  if (validation?.required) {
113
113
  return shape.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true);
114
114
  }
115
- return shape.nullable(true);
116
- // const object: ObjectSchema<any> = yup.object().shape(objectSchema);
117
- // return validation?.required
118
- // ? object.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true)
119
- // : yup.object().optional().default(undefined).notRequired().nullable(true).test(
120
- // "empty-check",
121
- // "Optional map can be empty",
122
- // (o: any, testContext: any) => {
123
- // try {
124
- // if (!o || Object.keys(o).length === 0) return true;
125
- // return object.validateSync(o);
126
- // } catch (e) {
127
- // testContext.createError(e);
128
- // console.error(e);
129
- // return false;
130
- // }
131
- // });
115
+ return yup.object().shape(shape.fields).default(undefined).notRequired().nullable(true);
132
116
  }
133
117
 
134
118
  function getYupStringSchema({
@@ -12,10 +12,10 @@ import {
12
12
  /**
13
13
  * @group Hooks and utilities
14
14
  */
15
- export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, UserType extends User = User> =
15
+ export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, USER extends User = User> =
16
16
  DeleteEntityProps<M>
17
17
  & {
18
- callbacks?: EntityCallbacks<M, UserType>;
18
+ callbacks?: EntityCallbacks<M, USER>;
19
19
  onDeleteSuccess?: (entity: Entity<M>) => void;
20
20
  onDeleteFailure?: (entity: Entity<M>, e: Error) => void;
21
21
  onPreDeleteHookError?: (entity: Entity<M>, e: Error) => void;
@@ -43,7 +43,7 @@ export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, UserTy
43
43
  * @param context
44
44
  * @group Hooks and utilities
45
45
  */
46
- export async function deleteEntityWithCallbacks<M extends Record<string, any>, UserType extends User>({
46
+ export async function deleteEntityWithCallbacks<M extends Record<string, any>, USER extends User>({
47
47
  dataSource,
48
48
  entity,
49
49
  collection,
@@ -56,7 +56,7 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
56
56
  }: DeleteEntityWithCallbacksProps<M> & {
57
57
  collection: ResolvedEntityCollection<M>,
58
58
  dataSource: DataSource,
59
- context: FireCMSContext<UserType>
59
+ context: FireCMSContext<USER>
60
60
  }
61
61
  ): Promise<boolean> {
62
62
 
@@ -81,7 +81,8 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
81
81
  }
82
82
  }
83
83
  return dataSource.deleteEntity({
84
- entity
84
+ entity,
85
+ collection
85
86
  }).then(() => {
86
87
  onDeleteSuccess && onDeleteSuccess(entity);
87
88
  try {
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  DataSource,
3
3
  Entity,
4
- EntityCallbacks,
5
4
  EntityCollection,
6
5
  EntityValues,
7
6
  FireCMSContext,
@@ -17,7 +16,6 @@ import { resolveCollection } from "../../util";
17
16
  export type SaveEntityWithCallbacksProps<M extends Record<string, any>> =
18
17
  SaveEntityProps<M> &
19
18
  {
20
- callbacks?: EntityCallbacks<M>;
21
19
  onSaveSuccess?: (updatedEntity: Entity<M>) => void,
22
20
  onSaveFailure?: (e: Error) => void,
23
21
  onPreSaveHookError?: (e: Error) => void,
@@ -50,7 +48,7 @@ export type SaveEntityWithCallbacksProps<M extends Record<string, any>> =
50
48
  * @see useDataSource
51
49
  * @group Hooks and utilities
52
50
  */
53
- export async function saveEntityWithCallbacks<M extends Record<string, any>, UserType extends User>({
51
+ export async function saveEntityWithCallbacks<M extends Record<string, any>, USER extends User>({
54
52
  collection,
55
53
  path,
56
54
  entityId,
@@ -64,9 +62,9 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
64
62
  onPreSaveHookError,
65
63
  onSaveSuccessHookError
66
64
  }: SaveEntityWithCallbacksProps<M> & {
67
- collection: EntityCollection<M, UserType>,
65
+ collection: EntityCollection<M, USER>,
68
66
  dataSource: DataSource,
69
- context: FireCMSContext<UserType>,
67
+ context: FireCMSContext<USER>,
70
68
  }
71
69
  ): Promise<void> {
72
70
 
@@ -87,7 +85,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
87
85
  path,
88
86
  values: previousValues as EntityValues<M>,
89
87
  entityId,
90
- fields: customizationController.propertyConfigs
88
+ propertyConfigs: customizationController.propertyConfigs
91
89
  });
92
90
  updatedValues = await callbacks.onPreSave({
93
91
  collection: resolvedCollection,
@@ -109,6 +107,11 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
109
107
  updatedValues = values;
110
108
  }
111
109
 
110
+ console.debug("Saving entity", {
111
+ entityId,
112
+ updatedValues,
113
+ collection
114
+ });
112
115
  return dataSource.saveEntity({
113
116
  collection,
114
117
  path: resolvedPath,
@@ -124,7 +127,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
124
127
  path,
125
128
  values: updatedValues as EntityValues<M>,
126
129
  entityId,
127
- fields: customizationController.propertyConfigs
130
+ propertyConfigs: customizationController.propertyConfigs
128
131
  });
129
132
  callbacks.onSaveSuccess({
130
133
  collection: resolvedCollection,
@@ -145,6 +148,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
145
148
  onSaveSuccess(entity);
146
149
  })
147
150
  .catch((e) => {
151
+ console.error("!!!", e);
148
152
  if (callbacks?.onSaveFailure) {
149
153
 
150
154
  const resolvedCollection = resolveCollection<M>({
@@ -152,7 +156,7 @@ export async function saveEntityWithCallbacks<M extends Record<string, any>, Use
152
156
  path,
153
157
  values: updatedValues as EntityValues<M>,
154
158
  entityId,
155
- fields: customizationController.propertyConfigs
159
+ propertyConfigs: customizationController.propertyConfigs
156
160
  });
157
161
  callbacks.onSaveFailure({
158
162
  collection: resolvedCollection,
@@ -60,7 +60,7 @@ export interface CollectionFetchResult<M extends Record<string, any>> {
60
60
  * @param searchString
61
61
  * @group Hooks and utilities
62
62
  */
63
- export function useCollectionFetch<M extends Record<string, any>, UserType extends User>(
63
+ export function useCollectionFetch<M extends Record<string, any>, USER extends User>(
64
64
  {
65
65
  path: inputPath,
66
66
  collection,
@@ -78,7 +78,7 @@ export function useCollectionFetch<M extends Record<string, any>, UserType exten
78
78
  const sortByProperty = sortBy ? sortBy[0] : undefined;
79
79
  const currentSort = sortBy ? sortBy[1] : undefined;
80
80
 
81
- const context: FireCMSContext<UserType> = useFireCMSContext();
81
+ const context: FireCMSContext<USER> = useFireCMSContext();
82
82
 
83
83
  const [data, setData] = useState<Entity<M>[]>([]);
84
84
 
@@ -1,4 +1,4 @@
1
- import { useContext, useMemo } from "react";
1
+ import { useContext } from "react";
2
2
  import { DataSource, EntityCollection } from "../../types";
3
3
  import { DataSourceContext } from "../../contexts/DataSourceContext";
4
4
 
@@ -7,8 +7,16 @@ import { DataSourceContext } from "../../contexts/DataSourceContext";
7
7
  * @group Hooks and utilities
8
8
  */
9
9
  export const useDataSource = (collection?: EntityCollection<any, any>): DataSource => {
10
+ // const customizationController = useCustomizationController();
11
+ // const navigationController = useNavigationController();
10
12
  const defaultDataSource = useContext(DataSourceContext);
11
- if (collection?.overrides?.dataSource)
12
- return collection?.overrides.dataSource;
13
+ // if (collection?.overrides?.dataSourceDelegate) {
14
+ // console.trace("Using custom data source for collection " + collection.id);
15
+ // return useBuildDataSource({
16
+ // delegate: collection.overrides.dataSourceDelegate,
17
+ // propertyConfigs: customizationController?.propertyConfigs,
18
+ // navigationController: navigationController
19
+ // });
20
+ // }
13
21
  return defaultDataSource;
14
22
  };
@@ -7,10 +7,10 @@ import { useFireCMSContext } from "../useFireCMSContext";
7
7
  /**
8
8
  * @group Hooks and utilities
9
9
  */
10
- export interface EntityFetchProps<M extends Record<string, any>, UserType extends User = User> {
10
+ export interface EntityFetchProps<M extends Record<string, any>, USER extends User = User> {
11
11
  path: string;
12
12
  entityId?: string;
13
- collection: EntityCollection<M, UserType>;
13
+ collection: EntityCollection<M, USER>;
14
14
  useCache?: boolean;
15
15
  }
16
16
 
@@ -35,20 +35,20 @@ const CACHE: Record<string, Entity<any> | undefined> = {};
35
35
  * @group Hooks and utilities
36
36
  */
37
37
 
38
- export function useEntityFetch<M extends Record<string, any>, UserType extends User>(
38
+ export function useEntityFetch<M extends Record<string, any>, USER extends User>(
39
39
  {
40
40
  path: inputPath,
41
41
  entityId,
42
42
  collection,
43
43
  useCache = false
44
- }: EntityFetchProps<M, UserType>): EntityFetchResult<M> {
44
+ }: EntityFetchProps<M, USER>): EntityFetchResult<M> {
45
45
 
46
46
  const dataSource = useDataSource(collection);
47
47
  const navigationController = useNavigationController();
48
48
 
49
49
  const path = navigationController.resolveAliasesFrom(inputPath);
50
50
 
51
- const context: FireCMSContext<UserType> = useFireCMSContext();
51
+ const context: FireCMSContext<USER> = useFireCMSContext();
52
52
 
53
53
  const [entity, setEntity] = useState<Entity<M> | undefined>();
54
54
  const [dataLoading, setDataLoading] = useState<boolean>(true);
@@ -10,6 +10,7 @@ export * from "./useResolvedNavigationFrom";
10
10
 
11
11
  export * from "./useStorageSource";
12
12
  export * from "./useAuthController";
13
+ export * from "./useDialogsController";
13
14
  export * from "./useSideDialogsController";
14
15
  export * from "./useSideEntityController";
15
16
  export * from "./useFireCMSContext";
@@ -11,4 +11,4 @@ import { AuthControllerContext } from "../contexts/AuthControllerContext";
11
11
  * @see AuthController
12
12
  * @group Hooks and utilities
13
13
  */
14
- export const useAuthController = <UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>>(): AuthControllerType => useContext(AuthControllerContext) as AuthControllerType;
14
+ export const useAuthController = <USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>>(): AuthControllerType => useContext(AuthControllerContext) as AuthControllerType;
@@ -1,10 +1,10 @@
1
- import { useCallback, useEffect, useState } from "react";
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
2
  import { PartialEntityCollection, UserConfigurationPersistence } from "../types";
3
3
  import { mergeDeep, stripCollectionPath } from "../util";
4
4
 
5
5
  export function useBuildLocalConfigurationPersistence(): UserConfigurationPersistence {
6
6
 
7
- const [configCache, setConfigCache] = useState<Record<string, PartialEntityCollection>>({});
7
+ const configCache = useRef<Record<string, PartialEntityCollection>>({});
8
8
 
9
9
  const getCollectionFromStorage = useCallback((storageKey: string) => {
10
10
  const item = localStorage.getItem(storageKey);
@@ -13,20 +13,18 @@ export function useBuildLocalConfigurationPersistence(): UserConfigurationPersis
13
13
 
14
14
  const getCollectionConfig = useCallback(<M extends Record<string, any>>(path: string): PartialEntityCollection<M> => {
15
15
  const storageKey = `collection_config::${stripCollectionPath(path)}`;
16
- if (configCache[storageKey]) {
17
- return configCache[storageKey] as PartialEntityCollection<M>;
16
+ if (configCache.current[storageKey]) {
17
+ return configCache.current[storageKey] as PartialEntityCollection<M>;
18
18
  }
19
19
  return getCollectionFromStorage(storageKey);
20
- }, [configCache, getCollectionFromStorage]);
20
+ }, [getCollectionFromStorage]);
21
21
 
22
22
  const onCollectionModified = useCallback(<M extends Record<string, any>>(path: string, data: PartialEntityCollection<M>) => {
23
23
  const storageKey = `collection_config::${stripCollectionPath(path)}`;
24
24
  localStorage.setItem(storageKey, JSON.stringify(data));
25
- setConfigCache((currentCache) => {
26
- const cachedConfig = currentCache[storageKey];
27
- const newConfig = mergeDeep(cachedConfig ?? getCollectionFromStorage(path), data);
28
- return (mergeDeep(currentCache, newConfig));
29
- });
25
+ const cachedConfig = configCache.current[storageKey];
26
+ const newConfig = mergeDeep(cachedConfig ?? getCollectionFromStorage(path), data);
27
+ configCache.current[storageKey] = mergeDeep(configCache.current[storageKey], newConfig);
30
28
  }, [getCollectionFromStorage]);
31
29
 
32
30
  const [recentlyVisitedPaths, _setRecentlyVisitedPaths] = useState<string[]>([]);
@@ -8,8 +8,13 @@ import { ModeController } from "./index";
8
8
  */
9
9
  export function useBuildModeController(): ModeController {
10
10
 
11
- const prefersDarkModeQuery = typeof window !== "undefined" &&
12
- window.matchMedia("(prefers-color-scheme: dark)");
11
+ const prefersDarkModeQuery = useCallback((): boolean => {
12
+ if (typeof window === "undefined")
13
+ return false;
14
+ const mediaQueryList = window.matchMedia("(prefers-color-scheme: dark)");
15
+ return mediaQueryList.matches;
16
+ }, []);
17
+
13
18
  const prefersDarkModeStorage: boolean | null = localStorage.getItem("prefers-dark-mode") != null ? localStorage.getItem("prefers-dark-mode") === "true" : null;
14
19
  const prefersDarkMode = prefersDarkModeStorage ?? prefersDarkModeQuery;
15
20
  const [mode, setMode] = useState<"light" | "dark">(prefersDarkMode ? "dark" : "light");
@@ -23,7 +28,7 @@ export function useBuildModeController(): ModeController {
23
28
  const setDarkMode = useCallback(() => {
24
29
  setMode("dark");
25
30
  setDocumentMode("dark");
26
- }, [prefersDarkModeQuery]);
31
+ }, []);
27
32
 
28
33
  const setLightMode = useCallback(() => {
29
34
  setMode("light");
@@ -37,14 +42,15 @@ export function useBuildModeController(): ModeController {
37
42
 
38
43
  const toggleMode = useCallback(() => {
39
44
 
45
+ const prefersDarkModeQueryResult = prefersDarkModeQuery();
40
46
  if (mode === "light") {
41
- if (!prefersDarkModeQuery)
47
+ if (!prefersDarkModeQueryResult)
42
48
  localStorage.setItem("prefers-dark-mode", "true");
43
49
  else
44
50
  localStorage.removeItem("prefers-dark-mode");
45
51
  setDarkMode();
46
52
  } else {
47
- if (prefersDarkModeQuery)
53
+ if (prefersDarkModeQueryResult)
48
54
  localStorage.setItem("prefers-dark-mode", "false");
49
55
  else
50
56
  localStorage.removeItem("prefers-dark-mode");