@firecms/core 3.0.0-canary.13 → 3.0.0-canary.130

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 (293) 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/ArrayContainer.d.ts +2 -1
  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 +2 -2
  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/PropertyIdCopyTooltip.d.ts +8 -0
  28. package/dist/components/ReferenceWidget.d.ts +3 -1
  29. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  30. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  31. package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
  32. package/dist/components/VirtualTable/types.d.ts +3 -3
  33. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  34. package/dist/components/common/index.d.ts +1 -0
  35. package/dist/components/common/table_height.d.ts +5 -0
  36. package/dist/components/common/types.d.ts +4 -6
  37. package/dist/components/common/useColumnsIds.d.ts +2 -1
  38. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +3 -0
  39. package/dist/components/index.d.ts +4 -2
  40. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  41. package/dist/core/DefaultDrawer.d.ts +19 -0
  42. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  43. package/dist/core/EntityEditView.d.ts +18 -4
  44. package/dist/core/FireCMS.d.ts +1 -1
  45. package/dist/core/NavigationRoutes.d.ts +3 -3
  46. package/dist/core/index.d.ts +3 -4
  47. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  48. package/dist/form/components/ErrorFocus.d.ts +1 -1
  49. package/dist/form/components/FieldHelperText.d.ts +3 -3
  50. package/dist/form/components/FormikArrayContainer.d.ts +2 -1
  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 -0
  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/RepeatFieldBinding.d.ts +1 -1
  64. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  66. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  67. package/dist/form/index.d.ts +3 -5
  68. package/dist/form/useClearRestoreValue.d.ts +2 -2
  69. package/dist/hooks/data/save.d.ts +1 -2
  70. package/dist/hooks/index.d.ts +1 -0
  71. package/dist/hooks/useBuildNavigationController.d.ts +1 -2
  72. package/dist/hooks/useProjectLog.d.ts +8 -2
  73. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.es.js +15835 -12470
  76. package/dist/index.es.js.map +1 -1
  77. package/dist/index.umd.js +20046 -587
  78. package/dist/index.umd.js.map +1 -1
  79. package/dist/internal/useBuildDataSource.d.ts +1 -16
  80. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  81. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  82. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  83. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  84. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  85. package/dist/types/auth.d.ts +3 -3
  86. package/dist/types/collections.d.ts +39 -5
  87. package/dist/types/datasource.d.ts +55 -35
  88. package/dist/types/entities.d.ts +6 -1
  89. package/dist/types/entity_actions.d.ts +14 -0
  90. package/dist/types/entity_overrides.d.ts +2 -2
  91. package/dist/types/fields.d.ts +47 -41
  92. package/dist/types/firecms.d.ts +4 -0
  93. package/dist/types/index.d.ts +0 -1
  94. package/dist/types/navigation.d.ts +6 -5
  95. package/dist/types/plugins.d.ts +14 -4
  96. package/dist/types/properties.d.ts +34 -21
  97. package/dist/types/side_dialogs_controller.d.ts +10 -0
  98. package/dist/types/storage.d.ts +86 -3
  99. package/dist/util/entities.d.ts +2 -2
  100. package/dist/util/icon_list.d.ts +5 -1
  101. package/dist/util/icon_synonyms.d.ts +1 -97
  102. package/dist/util/icons.d.ts +3 -2
  103. package/dist/util/index.d.ts +1 -0
  104. package/dist/util/navigation_utils.d.ts +2 -2
  105. package/dist/util/objects.d.ts +1 -1
  106. package/dist/util/plurals.d.ts +0 -2
  107. package/dist/util/property_utils.d.ts +1 -1
  108. package/dist/util/resolutions.d.ts +27 -13
  109. package/dist/util/storage.d.ts +23 -2
  110. package/dist/util/useStorageUploadController.d.ts +3 -3
  111. package/package.json +128 -119
  112. package/src/app/AppBar.tsx +18 -0
  113. package/src/app/Drawer.tsx +25 -0
  114. package/src/app/Scaffold.tsx +244 -0
  115. package/src/app/index.ts +4 -0
  116. package/src/app/useApp.tsx +32 -0
  117. package/src/components/ArrayContainer.tsx +16 -11
  118. package/src/components/CircularProgressCenter.tsx +1 -1
  119. package/src/components/ClearFilterSortButton.tsx +41 -0
  120. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  121. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +12 -19
  122. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +21 -20
  123. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +10 -6
  124. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +41 -35
  125. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  126. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -16
  127. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +14 -6
  128. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
  129. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
  130. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  131. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +7 -10
  132. package/src/components/EntityCollectionView/EntityCollectionView.tsx +136 -83
  133. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  134. package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
  135. package/src/components/EntityCollectionView/utils.ts +19 -0
  136. package/src/components/EntityPreview.tsx +42 -38
  137. package/src/components/EntityView.tsx +5 -5
  138. package/src/components/ErrorView.tsx +1 -1
  139. package/src/components/HomePage/DefaultHomePage.tsx +25 -19
  140. package/src/components/HomePage/NavigationCard.tsx +3 -3
  141. package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
  142. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  143. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  144. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -6
  145. package/src/components/ReferenceWidget.tsx +22 -12
  146. package/src/components/SearchIconsView.tsx +10 -7
  147. package/src/components/SelectableTable/SelectableTable.tsx +7 -7
  148. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  149. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
  150. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
  151. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +88 -21
  152. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  153. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  154. package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
  155. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  156. package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
  157. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  158. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  159. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
  160. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  161. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  162. package/src/components/VirtualTable/types.tsx +2 -3
  163. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +6 -2
  164. package/src/components/common/index.ts +1 -0
  165. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  166. package/src/components/common/types.tsx +4 -6
  167. package/src/components/common/useColumnsIds.tsx +23 -2
  168. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +23 -12
  169. package/src/components/common/useTableSearchHelper.ts +53 -12
  170. package/src/components/index.tsx +4 -2
  171. package/src/contexts/DialogsProvider.tsx +2 -2
  172. package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +52 -37
  173. package/src/core/DefaultDrawer.tsx +183 -0
  174. package/src/core/DrawerNavigationItem.tsx +66 -0
  175. package/src/core/EntityEditView.tsx +715 -149
  176. package/src/core/EntitySidePanel.tsx +1 -2
  177. package/src/core/FireCMS.tsx +55 -49
  178. package/src/core/NavigationRoutes.tsx +7 -8
  179. package/src/core/SideDialogs.tsx +1 -0
  180. package/src/core/field_configs.tsx +7 -8
  181. package/src/core/index.tsx +3 -4
  182. package/src/form/PropertyFieldBinding.tsx +53 -21
  183. package/src/form/components/CustomIdField.tsx +4 -2
  184. package/src/form/components/FieldHelperText.tsx +4 -4
  185. package/src/form/components/FormikArrayContainer.tsx +4 -1
  186. package/src/form/components/LabelWithIcon.tsx +27 -19
  187. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  188. package/src/form/components/StorageItemPreview.tsx +21 -11
  189. package/src/form/components/StorageUploadProgress.tsx +3 -4
  190. package/src/form/components/index.tsx +1 -0
  191. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +26 -15
  192. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +29 -24
  193. package/src/form/field_bindings/BlockFieldBinding.tsx +14 -12
  194. package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
  195. package/src/form/field_bindings/KeyValueFieldBinding.tsx +52 -46
  196. package/src/form/field_bindings/MapFieldBinding.tsx +17 -17
  197. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  198. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  199. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  200. package/src/form/field_bindings/ReferenceFieldBinding.tsx +41 -30
  201. package/src/form/field_bindings/RepeatFieldBinding.tsx +32 -19
  202. package/src/form/field_bindings/SelectFieldBinding.tsx +20 -13
  203. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +36 -46
  204. package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
  205. package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
  206. package/src/form/index.tsx +4 -9
  207. package/src/form/useClearRestoreValue.tsx +2 -2
  208. package/src/form/validation.ts +1 -17
  209. package/src/hooks/data/delete.ts +2 -1
  210. package/src/hooks/data/save.ts +6 -1
  211. package/src/hooks/data/useDataSource.tsx +11 -3
  212. package/src/hooks/index.tsx +1 -0
  213. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  214. package/src/hooks/useBuildModeController.tsx +11 -5
  215. package/src/hooks/useBuildNavigationController.tsx +91 -31
  216. package/src/hooks/useProjectLog.tsx +32 -10
  217. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  218. package/src/hooks/useValidateAuthenticator.tsx +21 -41
  219. package/src/index.ts +1 -0
  220. package/src/internal/useBuildDataSource.ts +71 -81
  221. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  222. package/src/internal/useBuildSideEntityController.tsx +102 -22
  223. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  224. package/src/preview/PropertyPreview.tsx +10 -17
  225. package/src/preview/PropertyPreviewProps.tsx +7 -1
  226. package/src/preview/components/BooleanPreview.tsx +2 -2
  227. package/src/preview/components/EnumValuesChip.tsx +2 -2
  228. package/src/preview/components/ImagePreview.tsx +24 -34
  229. package/src/preview/components/ReferencePreview.tsx +23 -34
  230. package/src/preview/components/StorageThumbnail.tsx +5 -1
  231. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  232. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
  233. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
  234. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
  235. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  236. package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
  237. package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
  238. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  239. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  240. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  241. package/src/preview/util.ts +2 -2
  242. package/src/types/auth.tsx +3 -3
  243. package/src/types/collections.ts +48 -7
  244. package/src/types/customization_controller.tsx +0 -1
  245. package/src/types/datasource.ts +65 -43
  246. package/src/types/entities.ts +11 -1
  247. package/src/types/entity_actions.tsx +16 -3
  248. package/src/types/entity_overrides.tsx +2 -2
  249. package/src/types/fields.tsx +51 -45
  250. package/src/types/firecms.tsx +5 -0
  251. package/src/types/index.ts +0 -1
  252. package/src/types/navigation.ts +7 -7
  253. package/src/types/plugins.tsx +16 -6
  254. package/src/types/properties.ts +39 -22
  255. package/src/types/side_dialogs_controller.tsx +13 -0
  256. package/src/types/storage.ts +94 -3
  257. package/src/util/entities.ts +6 -5
  258. package/src/util/enums.ts +1 -1
  259. package/src/util/icon_list.ts +15 -10
  260. package/src/util/icon_synonyms.ts +3 -99
  261. package/src/util/icons.tsx +8 -2
  262. package/src/util/index.ts +1 -0
  263. package/src/util/make_properties_editable.ts +13 -5
  264. package/src/util/navigation_utils.ts +6 -6
  265. package/src/util/objects.ts +25 -28
  266. package/src/util/permissions.ts +1 -0
  267. package/src/util/plurals.ts +0 -2
  268. package/src/util/property_utils.tsx +1 -1
  269. package/src/util/references.ts +3 -0
  270. package/src/util/resolutions.ts +74 -41
  271. package/src/util/storage.ts +79 -21
  272. package/src/util/strings.ts +2 -2
  273. package/src/util/useStorageUploadController.tsx +33 -7
  274. package/src/util/useTraceUpdate.tsx +1 -0
  275. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  276. package/dist/components/VirtualTable/common.d.ts +0 -2
  277. package/dist/core/Drawer.d.ts +0 -23
  278. package/dist/core/Scaffold.d.ts +0 -55
  279. package/dist/core/SideEntityView.d.ts +0 -7
  280. package/dist/form/EntityForm.d.ts +0 -77
  281. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  282. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  283. package/dist/internal/useLocaleConfig.d.ts +0 -1
  284. package/dist/types/appcheck.d.ts +0 -26
  285. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  286. package/src/core/Drawer.tsx +0 -191
  287. package/src/core/Scaffold.tsx +0 -281
  288. package/src/core/SideEntityView.tsx +0 -38
  289. package/src/form/EntityForm.tsx +0 -728
  290. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  291. package/src/internal/useBuildCustomizationController.tsx +0 -5
  292. package/src/internal/useLocaleConfig.tsx +0 -18
  293. package/src/types/appcheck.ts +0 -29
@@ -87,7 +87,7 @@ function renderMap<T extends Record<string, any>>(property: ResolvedMapProperty<
87
87
  mapPropertyKeys = (property.previewProperties || Object.keys(property.properties)) as string[];
88
88
  if (size === "small")
89
89
  mapPropertyKeys = mapPropertyKeys.slice(0, 3);
90
- else if (size === "tiny")
90
+ else if (size === "smallest")
91
91
  mapPropertyKeys = mapPropertyKeys.slice(0, 1);
92
92
  }
93
93
 
@@ -226,7 +226,7 @@ function renderUrlAudioComponent() {
226
226
 
227
227
  export function renderSkeletonImageThumbnail(size: PreviewSize) {
228
228
  // eslint-disable-next-line react-hooks/rules-of-hooks
229
- const imageSize = size === "tiny" ? 40 : size === "small" ? 100 : 200;
229
+ const imageSize = size === "smallest" ? 40 : size === "small" ? 100 : 200;
230
230
  return (
231
231
  <Skeleton width={imageSize}
232
232
  height={imageSize}/>
@@ -6,7 +6,7 @@ import { PreviewType } from "../../types";
6
6
  import { UrlComponentPreview } from "../components/UrlComponentPreview";
7
7
  import { PropertyPreviewProps } from "../PropertyPreviewProps";
8
8
  import { ErrorBoundary } from "../../components";
9
- import { Chip, cn, getColorSchemeForSeed } from "@firecms/ui";
9
+ import { Chip, cls, getColorSchemeForSeed } from "@firecms/ui";
10
10
 
11
11
  /**
12
12
  * @group Preview components
@@ -45,14 +45,14 @@ export function StringPropertyPreview({
45
45
  if (!value) return <></>;
46
46
  const lines = value.split("\n");
47
47
  return value && value.includes("\n")
48
- ? <div className={cn("overflow-x-scroll", size === "tiny" ? "text-sm" : "")}>
48
+ ? <div className={cls("overflow-x-scroll", size === "smallest" ? "text-sm" : "")}>
49
49
  {lines.map((str, index) =>
50
50
  <React.Fragment key={`string_preview_${index}`}>
51
51
  <span>{str}</span>
52
52
  {index !== lines.length - 1 && <br/>}
53
53
  </React.Fragment>)}
54
54
  </div>
55
- : (size === "tiny"
55
+ : (size === "smallest"
56
56
  ? <span className={"text-sm"}>{value}</span>
57
57
  : <>{value}</>
58
58
  );
@@ -6,7 +6,7 @@ export const SMALL_THUMBNAIL = 100;
6
6
  export const REGULAR_THUMBNAIL = 200;
7
7
 
8
8
  export function getThumbnailMeasure(size: PreviewSize): number {
9
- if (size === "tiny")
9
+ if (size === "smallest")
10
10
  return TINY_THUMBNAIL;
11
11
  else if (size === "small")
12
12
  return SMALL_THUMBNAIL;
@@ -19,7 +19,7 @@ export function getPreviewSizeFrom(size: CollectionSize): PreviewSize {
19
19
  switch (size) {
20
20
  case "xs":
21
21
  case "s":
22
- return "tiny";
22
+ return "smallest";
23
23
  case "m":
24
24
  return "small";
25
25
  case "l":
@@ -9,7 +9,7 @@ import { StorageSource } from "./storage";
9
9
  * to do it as the result of a hook.
10
10
  * @group Hooks and utilities
11
11
  */
12
- export type AuthController<UserType extends User = any, ExtraData extends any = any> = {
12
+ export type AuthController<UserType extends User = any, ExtraData = any> = {
13
13
 
14
14
  /**
15
15
  * The user currently logged in
@@ -38,7 +38,7 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
38
38
  /**
39
39
  * Sign out
40
40
  */
41
- signOut: () => void;
41
+ signOut: () => Promise<void>;
42
42
 
43
43
  /**
44
44
  * Error initializing the authentication
@@ -73,7 +73,7 @@ export type AuthController<UserType extends User = any, ExtraData extends any =
73
73
  * Implement this function to allow access to specific users.
74
74
  * @group Hooks and utilities
75
75
  */
76
- export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = ({ user }: {
76
+ export type Authenticator<UserType extends User = User, Controller extends AuthController<UserType> = AuthController<UserType>> = (props: {
77
77
 
78
78
  /**
79
79
  * Logged-in user or null
@@ -51,6 +51,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
51
51
  */
52
52
  path: string;
53
53
 
54
+ /**
55
+ * Optional database id of this collection. If not specified, the default
56
+ * database id will be used.
57
+ */
58
+ databaseId?: string;
59
+
54
60
  /**
55
61
  * If this collection is a top level navigation entry, you can set this
56
62
  * property to `true` to indicate that this collection is a collection group.
@@ -61,7 +67,8 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
61
67
  * Icon key to use in this collection.
62
68
  * You can use any of the icons in the Material specs:
63
69
  * https://fonts.google.com/icons
64
- * e.g. 'account_tree' or 'person'
70
+ * e.g. 'account_tree' or 'person'.
71
+ * Find all the icons in https://firecms.co/docs/icons
65
72
  */
66
73
  icon?: string;
67
74
 
@@ -82,7 +89,7 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
82
89
  * as the title in entity related views and references.
83
90
  * If not specified, the first property simple text property will be used.
84
91
  */
85
- titleProperty?: keyof M,
92
+ titleProperty?: keyof M;
86
93
 
87
94
  /**
88
95
  * Can this collection be edited by the end user.
@@ -107,8 +114,12 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
107
114
  * `subcollection:`. e.g. `subcollection:orders`.
108
115
  * - If you are using a collection group, you will also have an
109
116
  * additional `collectionGroupParent` column.
117
+ * You can use this prop to hide some properties from the table view.
118
+ * Note that if you set this prop, other ways to hide fields, like
119
+ * `hidden` in the property definition,will be ignored.
120
+ * `propertiesOrder` has precedence over `hidden`.
110
121
  */
111
- propertiesOrder?: Extract<keyof M, string>[];
122
+ propertiesOrder?: (Extract<keyof M, string> | `subcollection:${string}`)[];
112
123
 
113
124
  /**
114
125
  * If enabled, content is loaded in batches. If `false` all entities in the
@@ -290,7 +301,21 @@ export interface EntityCollection<M extends Record<string, any> = any, UserType
290
301
  * are writing custom code
291
302
  */
292
303
  ownerId?: string;
304
+
305
+ /**
306
+ * Overrides for the entity view, like the data source or the storage source.
307
+ */
293
308
  overrides?: EntityOverrides;
309
+
310
+ /**
311
+ * Width of the side dialog (in pixels) when opening an entity in this collection.
312
+ */
313
+ sideDialogWidth?: number | string;
314
+
315
+ /**
316
+ * Default preview properties displayed when this collection is referenced to.
317
+ */
318
+ previewProperties?: string[];
294
319
  }
295
320
 
296
321
  /**
@@ -349,14 +374,13 @@ export interface CollectionActionsProps<M extends Record<string, any> = any, Use
349
374
  /**
350
375
  * Use this controller to retrieve the selected entities or modify them in
351
376
  * an {@link EntityCollection}
352
- * If you want to pass a `SelectionController` to
353
377
  * @group Models
354
378
  */
355
379
  export type SelectionController<M extends Record<string, any> = any> = {
356
380
  selectedEntities: Entity<M>[];
357
381
  setSelectedEntities: Dispatch<SetStateAction<Entity<M>[]>>;
358
382
  isEntitySelected: (entity: Entity<M>) => boolean;
359
- toggleEntitySelection: (entity: Entity<M>) => void;
383
+ toggleEntitySelection: (entity: Entity<M>, newSelectedState?: boolean) => void;
360
384
  }
361
385
 
362
386
  /**
@@ -451,7 +475,10 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
451
475
  * view.
452
476
  * @param entity
453
477
  */
454
- value?: (props: { entity: Entity<M>, context: FireCMSContext<any> }) => string | number | Promise<string | number> | undefined;
478
+ value?: (props: {
479
+ entity: Entity<M>,
480
+ context: FireCMSContext<any>
481
+ }) => string | number | Promise<string | number> | undefined;
455
482
  }
456
483
 
457
484
  /**
@@ -461,8 +488,22 @@ export interface AdditionalFieldDelegate<M extends Record<string, any> = any,
461
488
  */
462
489
  export type EntityCustomView<M extends Record<string, any> = any> =
463
490
  {
491
+ /**
492
+ * Key of this custom view.
493
+ */
464
494
  key: string,
495
+ /**
496
+ * Name of this custom view.
497
+ */
465
498
  name: string,
499
+ /**
500
+ * If set to true, the actions of the entity will be included in the
501
+ * bottom of the panel (save buttons, delete buttons, etc.)
502
+ */
503
+ includeActions?: boolean;
504
+ /**
505
+ * Builder for rendering the custom view
506
+ */
466
507
  Builder?: React.ComponentType<EntityCustomViewParams<M>>;
467
508
  }
468
509
 
@@ -523,7 +564,7 @@ export type EntityTableController<M extends Record<string, any> = any> = {
523
564
  filterValues?: FilterValues<Extract<keyof M, string>>;
524
565
  setFilterValues?: (filterValues: FilterValues<Extract<keyof M, string>>) => void;
525
566
  sortBy?: [Extract<keyof M, string>, "asc" | "desc"];
526
- setSortBy?: (sortBy: [Extract<keyof M, string>, "asc" | "desc"]) => void;
567
+ setSortBy?: (sortBy?: [Extract<keyof M, string>, "asc" | "desc"]) => void;
527
568
  searchString?: string;
528
569
  setSearchString?: (searchString?: string) => void;
529
570
  clearFilter?: () => void;
@@ -24,7 +24,6 @@ export type CustomizationController = {
24
24
  *
25
25
  * You can also define an entity view from the UI.
26
26
  */
27
-
28
27
  entityViews?: EntityCustomView[];
29
28
 
30
29
  /**
@@ -1,6 +1,7 @@
1
- import { Entity, EntityReference, EntityStatus, EntityValues, GeoPoint } from "./entities";
1
+ import { Entity, EntityStatus, EntityValues } from "./entities";
2
2
  import { EntityCollection, FilterValues } from "./collections";
3
3
  import { ResolvedEntityCollection } from "./resolved_entities";
4
+ import { FireCMSContext } from "./firecms_context";
4
5
 
5
6
  /**
6
7
  * @group Datasource
@@ -17,6 +18,7 @@ export interface FetchEntityProps<M extends Record<string, any> = any> {
17
18
  export type ListenEntityProps<M extends Record<string, any> = any> =
18
19
  FetchEntityProps<M>
19
20
  & {
21
+ databaseId?: string;
20
22
  onUpdate: (entity: Entity<M>) => void,
21
23
  onError?: (error: Error) => void,
22
24
  }
@@ -62,12 +64,12 @@ export interface SaveEntityProps<M extends Record<string, any> = any> {
62
64
  */
63
65
  export interface DeleteEntityProps<M extends Record<string, any> = any> {
64
66
  entity: Entity<M>;
67
+ collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
65
68
  }
66
69
 
67
70
  /**
68
- * Implement this interface and pass it to a {@link FireCMS}
69
- * to connect it to your data source.
70
- * A Firestore implementation of this interface can be found in {@link useFirestoreDataSource}
71
+ * Component in charge of communicating with the data source.
72
+ * Usually you won't need to implement this interface, but a {@link DataSourceDelegate} instead.
71
73
  * @group Datasource
72
74
  */
73
75
  export interface DataSource {
@@ -181,7 +183,8 @@ export interface DataSource {
181
183
  */
182
184
  deleteEntity<M extends Record<string, any> = any>(
183
185
  {
184
- entity
186
+ entity,
187
+ collection
185
188
  }: DeleteEntityProps<M>
186
189
  ): Promise<void>;
187
190
 
@@ -190,7 +193,7 @@ export interface DataSource {
190
193
  * @param path Collection path
191
194
  * @param name of the property
192
195
  * @param value
193
- * @param property
196
+ * @param collection
194
197
  * @param entityId
195
198
  * @return `true` if there are no other fields besides the given entity
196
199
  */
@@ -198,13 +201,14 @@ export interface DataSource {
198
201
  path: string,
199
202
  name: string,
200
203
  value: any,
201
- entityId?: string
204
+ entityId?: string,
205
+ collection?: EntityCollection
202
206
  ): Promise<boolean>;
203
207
 
204
208
  /**
205
209
  * Generate an id for a new entity
206
210
  */
207
- generateEntityId(path: string): string;
211
+ generateEntityId(path: string, collection: EntityCollection): string;
208
212
 
209
213
  /**
210
214
  * Count the number of entities in a collection
@@ -216,6 +220,19 @@ export interface DataSource {
216
220
  * @param props
217
221
  */
218
222
  isFilterCombinationValid?(props: FilterCombinationValidProps): boolean;
223
+
224
+ /**
225
+ * Called when the user clicks on the search bar in a collection view.
226
+ * Useful for initializing a text search index.
227
+ * @param props
228
+ */
229
+ initTextSearch?: (props: {
230
+ context: FireCMSContext,
231
+ path: string,
232
+ collection: EntityCollection,
233
+ parentCollectionIds?: string[]
234
+ }) => Promise<boolean>;
235
+
219
236
  }
220
237
 
221
238
  export type FilterCombinationValidProps = {
@@ -225,21 +242,29 @@ export type FilterCombinationValidProps = {
225
242
  sortBy?: [string, "asc" | "desc"];
226
243
  };
227
244
 
228
- export type SaveEntityDelegateProps<M extends Record<string, any> = any> = Omit<SaveEntityProps<M>, "collection">;
245
+ export type SaveEntityDelegateProps<M extends Record<string, any> = any> = SaveEntityProps<M>;
229
246
 
230
- export type FetchCollectionDelegateProps<M extends Record<string, any> = any> =
231
- Omit<FetchCollectionProps<M>, "collection">
232
- & {
233
- isCollectionGroup?: boolean
234
- };
247
+ export type FetchCollectionDelegateProps<M extends Record<string, any> = any> = FetchCollectionProps<M>;
235
248
 
236
- export type ListenCollectionDelegateProps<M extends Record<string, any> = any> =
237
- ListenCollectionProps<M>
238
- & {
239
- isCollectionGroup?: boolean;
240
- };
249
+ export type ListenCollectionDelegateProps<M extends Record<string, any> = any> = ListenCollectionProps<M>;
241
250
 
242
251
  export interface DataSourceDelegate {
252
+
253
+ /**
254
+ * Key that identifies this data source delegate
255
+ */
256
+ key: string;
257
+
258
+ /**
259
+ * If the data source has been initialised
260
+ */
261
+ initialised?: boolean;
262
+
263
+ /**
264
+ * If the user is authenticated to use the data source
265
+ */
266
+ authenticated?: boolean;
267
+
243
268
  /**
244
269
  * Fetch data from a collection
245
270
  * @param path
@@ -297,7 +322,7 @@ export interface DataSourceDelegate {
297
322
  fetchEntity<M extends Record<string, any> = any>({
298
323
  path,
299
324
  entityId,
300
- }: Omit<FetchEntityProps<M>, "collection">): Promise<Entity<M> | undefined>;
325
+ }: FetchEntityProps<M>): Promise<Entity<M> | undefined>;
301
326
 
302
327
  /**
303
328
  * Get realtime updates on one entity.
@@ -313,13 +338,13 @@ export interface DataSourceDelegate {
313
338
  entityId,
314
339
  onUpdate,
315
340
  onError
316
- }: Omit<ListenEntityProps<M>, "collection">): () => void;
341
+ }: ListenEntityProps<M>): () => void;
317
342
 
318
343
  /**
319
344
  * Save entity to the specified path
320
345
  * @param path
321
- * @param id
322
- * @param collection
346
+ * @param entityId
347
+ * @param values
323
348
  * @param status
324
349
  */
325
350
  saveEntity<M extends Record<string, any> = any>({
@@ -342,14 +367,15 @@ export interface DataSourceDelegate {
342
367
  * @param name of the property
343
368
  * @param value
344
369
  * @param entityId
370
+ * @param collection
345
371
  * @return `true` if there are no other fields besides the given entity
346
372
  */
347
- checkUniqueField(path: string, name: string, value: any, entityId?: string): Promise<boolean>;
373
+ checkUniqueField(path: string, name: string, value: any, entityId?: string, collection?: EntityCollection): Promise<boolean>;
348
374
 
349
375
  /**
350
376
  * Generate an id for a new entity
351
377
  */
352
- generateEntityId(path: string): string;
378
+ generateEntityId(path: string, collection?: EntityCollection): string;
353
379
 
354
380
  /**
355
381
  * Count the number of entities in a collection
@@ -360,30 +386,26 @@ export interface DataSourceDelegate {
360
386
  * Check if the given filter combination is valid
361
387
  * @param props
362
388
  */
363
- isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection">): boolean;
364
-
365
- /**
366
- * Convert a FireCMS reference to a reference that can be used by the datasource
367
- * @param reference
368
- */
369
- buildReference: (reference: EntityReference) => any,
370
-
371
- /**
372
- * Convert a FireCMS GeoPoint to a GeoPoint that can be used by the datasource
373
- * @param geoPoint
374
- */
375
- buildGeoPoint: (geoPoint: GeoPoint) => any,
389
+ isFilterCombinationValid?(props: Omit<FilterCombinationValidProps, "collection"> & {
390
+ databaseId?: string
391
+ }): boolean;
376
392
 
377
393
  /**
378
394
  * Get the object to generate the current time in the datasource
379
395
  */
380
- currentTime(): any;
381
-
382
- buildDate: (date: Date) => any;
383
-
384
- buildDeleteFieldValue: () => any;
396
+ currentTime?: () => any;
385
397
 
386
398
  delegateToCMSModel: (data: any) => any;
387
399
 
400
+ cmsToDelegateModel: (data: any) => any;
401
+
388
402
  setDateToMidnight: (input?: any) => any;
403
+
404
+ initTextSearch?: (props: {
405
+ context: FireCMSContext,
406
+ path: string,
407
+ databaseId?: string,
408
+ collection: EntityCollection,
409
+ parentCollectionIds?: string[]
410
+ }) => Promise<boolean>;
389
411
  }
@@ -25,6 +25,8 @@ export interface Entity<M extends object> {
25
25
  * Current values
26
26
  */
27
27
  values: EntityValues<M>;
28
+
29
+ databaseId?: string;
28
30
  }
29
31
 
30
32
  /**
@@ -37,7 +39,7 @@ export type EntityValues<M extends object> = M;
37
39
  /**
38
40
  * Class used to create a reference to an entity in a different path
39
41
  */
40
- export class EntityReference<M extends Record<string, any> = any> {
42
+ export class EntityReference {
41
43
  /**
42
44
  * ID of the entity
43
45
  */
@@ -78,3 +80,11 @@ export class GeoPoint {
78
80
  this.longitude = longitude;
79
81
  }
80
82
  }
83
+
84
+ export class Vector {
85
+ readonly value: number[];
86
+
87
+ constructor(value: number[]) {
88
+ this.value = value;
89
+ }
90
+ }
@@ -4,11 +4,26 @@ import { Entity } from "./entities";
4
4
  import { EntityCollection, SelectionController } from "./collections";
5
5
  import { User } from "./user";
6
6
  import { SideEntityController } from "./side_entity_controller";
7
- import { EntityOverrides } from "./entity_overrides";
8
7
 
8
+ /**
9
+ * An entity action is a custom action that can be performed on an entity.
10
+ * They are displayed in the entity view and in the collection view.
11
+ */
9
12
  export type EntityAction<M extends object = any, UserType extends User = User> = {
13
+ /**
14
+ * Title of the action
15
+ */
10
16
  name: string;
17
+
18
+ /**
19
+ * Icon of the action
20
+ */
11
21
  icon?: React.ReactElement;
22
+
23
+ /**
24
+ * Callback when the action is clicked
25
+ * @param props
26
+ */
12
27
  onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
13
28
 
14
29
  /**
@@ -25,8 +40,6 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
25
40
 
26
41
  }
27
42
 
28
-
29
-
30
43
  export type EntityActionClickProps<M extends object, UserType extends User = User> = {
31
44
  entity: Entity<M>;
32
45
  context: FireCMSContext<UserType>;
@@ -1,7 +1,7 @@
1
- import { DataSource } from "./datasource";
1
+ import { DataSource, DataSourceDelegate } from "./datasource";
2
2
  import { StorageSource } from "./storage";
3
3
 
4
4
  export type EntityOverrides = {
5
- dataSource?: DataSource;
5
+ dataSourceDelegate?: DataSourceDelegate;
6
6
  storageSource?: StorageSource;
7
7
  };