@firecms/core 3.0.0-alpha.71 → 3.0.0-alpha.73
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.
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +5 -5
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +1 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/types.d.ts +15 -1
- package/dist/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.d.ts +32 -0
- package/dist/components/SearchIconsView.d.ts +5 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/hooks/useVerifyLicense.d.ts +0 -0
- package/dist/index.es.js +8808 -6804
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +5 -5
- package/dist/index.umd.js.map +1 -1
- package/dist/util/icon_list.d.ts +1 -0
- package/dist/util/icon_synonyms.d.ts +1950 -0
- package/dist/util/index.d.ts +2 -0
- package/package.json +3 -5
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +5 -6
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +1 -1
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +2 -2
- package/src/components/EntityCollectionTable/types.tsx +15 -1
- package/src/components/EntityCollectionTable/{useEntityCollectionTableController.tsx → useDataSourceEntityCollectionTableController.tsx} +16 -4
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +2 -2
- package/src/components/ReferenceSelectionInner.tsx +2 -2
- package/src/components/SearchIconsView.tsx +75 -0
- package/src/components/VirtualTable/VirtualTableRow.tsx +0 -1
- package/src/components/index.tsx +1 -0
- package/src/core/EntitySidePanel.tsx +0 -1
- package/src/form/EntityForm.tsx +6 -5
- package/src/form/PropertyFieldBinding.tsx +1 -1
- package/src/form/validation.ts +5 -1
- package/src/hooks/useVerifyLicense.tsx +1 -0
- package/src/internal/EntityView.tsx +6 -6
- package/src/internal/useBuildDataSource.ts +0 -2
- package/src/internal/useBuildSideEntityController.tsx +26 -15
- package/src/preview/property_previews/MapPropertyPreview.tsx +3 -1
- package/src/preview/property_previews/StringPropertyPreview.tsx +1 -2
- package/src/util/enums.ts +1 -2
- package/src/util/icon_list.ts +17 -0
- package/src/util/icon_synonyms.ts +1950 -0
- package/src/util/index.ts +2 -0
- package/dist/components/EntityCollectionTable/useEntityCollectionTableController.d.ts +0 -21
- package/dist/util/chip_utils.d.ts +0 -3
- package/src/components/ArrayContainer.d.ts +0 -42
- package/src/components/CircularProgressCenter.d.ts +0 -11
- package/src/components/DeleteConfirmationDialog.d.ts +0 -9
- package/src/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -30
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +0 -106
- package/src/components/EntityCollectionTable/fields/TableReferenceField.d.ts +0 -15
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +0 -33
- package/src/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +0 -9
- package/src/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +0 -11
- package/src/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +0 -14
- package/src/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +0 -13
- package/src/components/EntityCollectionTable/index.d.ts +0 -4
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +0 -18
- package/src/components/EntityCollectionTable/internal/DeleteEntityDialog.d.ts +0 -12
- package/src/components/EntityCollectionTable/internal/EntityCollectionRowActions.d.ts +0 -35
- package/src/components/EntityCollectionTable/internal/EntityTableCell.d.ts +0 -26
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +0 -9
- package/src/components/EntityCollectionTable/internal/PropertyTableCell.d.ts +0 -18
- package/src/components/EntityCollectionTable/internal/common.d.ts +0 -4
- package/src/components/EntityCollectionTable/internal/default_entity_actions.d.ts +0 -6
- package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +0 -23
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +0 -13
- package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +0 -6
- package/src/components/EntityCollectionTable/types.d.ts +0 -39
- package/src/components/EntityCollectionTable/useDebouncedData.d.ts +0 -9
- package/src/components/EntityCollectionTable/useEntityCollectionTableController.d.ts +0 -21
- package/src/components/EntityCollectionView/EntityCollectionView.d.ts +0 -37
- package/src/components/EntityCollectionView/EntityCollectionViewActions.d.ts +0 -14
- package/src/components/EntityCollectionView/useColumnsIds.d.ts +0 -4
- package/src/components/EntityPreview.d.ts +0 -11
- package/src/components/ErrorBoundary.d.ts +0 -11
- package/src/components/ErrorTooltip.d.ts +0 -2
- package/src/components/ErrorView.d.ts +0 -19
- package/src/components/FieldConfigBadge.d.ts +0 -4
- package/src/components/FireCMSAppBar.d.ts +0 -26
- package/src/components/FireCMSLogo.d.ts +0 -7
- package/src/components/HomePage/DefaultHomePage.d.ts +0 -21
- package/src/components/HomePage/FavouritesView.d.ts +0 -3
- package/src/components/HomePage/NavigationCollectionCard.d.ts +0 -17
- package/src/components/HomePage/NavigationGroup.d.ts +0 -4
- package/src/components/HomePage/index.d.ts +0 -3
- package/src/components/LabelWithIcon.d.ts +0 -14
- package/src/components/NotFoundPage.d.ts +0 -1
- package/src/components/ReferenceSelectionInner.d.ts +0 -58
- package/src/components/ReferenceWidget.d.ts +0 -28
- package/src/components/VirtualTable/VirtualTable.d.ts +0 -11
- package/src/components/VirtualTable/VirtualTableCell.d.ts +0 -14
- package/src/components/VirtualTable/VirtualTableHeader.d.ts +0 -27
- package/src/components/VirtualTable/VirtualTableHeaderRow.d.ts +0 -2
- package/src/components/VirtualTable/VirtualTableProps.d.ts +0 -215
- package/src/components/VirtualTable/VirtualTableRow.d.ts +0 -3
- package/src/components/VirtualTable/common.d.ts +0 -2
- package/src/components/VirtualTable/fields/VirtualTableDateField.d.ts +0 -11
- package/src/components/VirtualTable/fields/VirtualTableInput.d.ts +0 -8
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +0 -8
- package/src/components/VirtualTable/fields/VirtualTableSelect.d.ts +0 -15
- package/src/components/VirtualTable/fields/VirtualTableSwitch.d.ts +0 -7
- package/src/components/VirtualTable/index.d.ts +0 -2
- package/src/components/VirtualTable/types.d.ts +0 -34
- package/src/components/index.d.ts +0 -20
- package/src/contexts/AuthControllerContext.d.ts +0 -3
- package/src/contexts/DataSourceContext.d.ts +0 -3
- package/src/contexts/DialogsProvider.d.ts +0 -4
- package/src/contexts/ModeController.d.ts +0 -4
- package/src/contexts/NavigationContext.d.ts +0 -3
- package/src/contexts/SideDialogsControllerContext.d.ts +0 -3
- package/src/contexts/SideEntityControllerContext.d.ts +0 -3
- package/src/contexts/SnackbarProvider.d.ts +0 -2
- package/src/contexts/StorageSourceContext.d.ts +0 -3
- package/src/contexts/UserConfigurationPersistenceContext.d.ts +0 -3
- package/src/contexts/index.d.ts +0 -3
- package/src/core/Drawer.d.ts +0 -23
- package/src/core/EntitySidePanel.d.ts +0 -10
- package/src/core/FireCMS.d.ts +0 -14
- package/src/core/NavigationRoutes.d.ts +0 -21
- package/src/core/Scaffold.d.ts +0 -52
- package/src/core/SideDialogs.d.ts +0 -23
- package/src/core/field_configs.d.ts +0 -7
- package/src/core/index.d.ts +0 -10
- package/src/core/useBuildLocalConfigurationPersistence.d.ts +0 -2
- package/src/core/useBuildModeController.d.ts +0 -6
- package/src/form/EntityForm.d.ts +0 -75
- package/src/form/PropertyFieldBinding.d.ts +0 -30
- package/src/form/components/CustomIdField.d.ts +0 -9
- package/src/form/components/ErrorFocus.d.ts +0 -4
- package/src/form/components/FieldHelperText.d.ts +0 -12
- package/src/form/components/FormikArrayContainer.d.ts +0 -18
- package/src/form/components/StorageItemPreview.d.ts +0 -13
- package/src/form/components/StorageUploadProgress.d.ts +0 -10
- package/src/form/components/SwitchControl.d.ts +0 -8
- package/src/form/components/index.d.ts +0 -3
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +0 -9
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +0 -11
- package/src/form/field_bindings/BlockFieldBinding.d.ts +0 -10
- package/src/form/field_bindings/DateTimeFieldBinding.d.ts +0 -11
- package/src/form/field_bindings/KeyValueFieldBinding.d.ts +0 -7
- package/src/form/field_bindings/MapFieldBinding.d.ts +0 -9
- package/src/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/src/form/field_bindings/MultiSelectBinding.d.ts +0 -9
- package/src/form/field_bindings/ReadOnlyFieldBinding.d.ts +0 -10
- package/src/form/field_bindings/ReferenceFieldBinding.d.ts +0 -9
- package/src/form/field_bindings/RepeatFieldBinding.d.ts +0 -10
- package/src/form/field_bindings/SelectFieldBinding.d.ts +0 -12
- package/src/form/field_bindings/StorageUploadFieldBinding.d.ts +0 -28
- package/src/form/field_bindings/SwitchFieldBinding.d.ts +0 -12
- package/src/form/field_bindings/TextFieldBinding.d.ts +0 -12
- package/src/form/index.d.ts +0 -20
- package/src/form/useClearRestoreValue.d.ts +0 -13
- package/src/form/validation.d.ts +0 -25
- package/src/hooks/data/delete.d.ts +0 -37
- package/src/hooks/data/save.d.ts +0 -42
- package/src/hooks/data/useCollectionFetch.d.ts +0 -50
- package/src/hooks/data/useDataOrder.d.ts +0 -12
- package/src/hooks/data/useDataSource.d.ts +0 -6
- package/src/hooks/data/useEntityFetch.d.ts +0 -28
- package/src/hooks/index.d.ts +0 -19
- package/src/hooks/useAuthController.d.ts +0 -11
- package/src/hooks/useBrowserTitleAndIcon.d.ts +0 -6
- package/src/hooks/useClipboard.d.ts +0 -57
- package/src/hooks/useDialogsController.d.ts +0 -11
- package/src/hooks/useFireCMSContext.d.ts +0 -12
- package/src/hooks/useLargeLayout.d.ts +0 -1
- package/src/hooks/useModeController.d.ts +0 -20
- package/src/hooks/useNavigationController.d.ts +0 -9
- package/src/hooks/useReferenceDialog.d.ts +0 -18
- package/src/hooks/useResolvedNavigationFrom.d.ts +0 -72
- package/src/hooks/useSideDialogsController.d.ts +0 -18
- package/src/hooks/useSideEntityController.d.ts +0 -12
- package/src/hooks/useSnackbarController.d.ts +0 -41
- package/src/hooks/useStorageSource.d.ts +0 -6
- package/src/hooks/useUserConfigurationPersistence.d.ts +0 -8
- package/src/index.d.ts +0 -8
- package/src/internal/EntityView.d.ts +0 -22
- package/src/internal/common.d.ts +0 -3
- package/src/internal/useBuildDataSource.d.ts +0 -22
- package/src/internal/useBuildNavigationController.d.ts +0 -14
- package/src/internal/useBuildSideDialogsController.d.ts +0 -2
- package/src/internal/useBuildSideEntityController.d.ts +0 -4
- package/src/internal/useLocaleConfig.d.ts +0 -1
- package/src/internal/useRestoreScroll.d.ts +0 -6
- package/src/internal/useUnsavedChangesDialog.d.ts +0 -14
- package/src/preview/PropertyPreview.d.ts +0 -7
- package/src/preview/PropertyPreviewProps.d.ts +0 -43
- package/src/preview/components/ArrayEnumPreview.d.ts +0 -11
- package/src/preview/components/AsyncPreviewComponent.d.ts +0 -11
- package/src/preview/components/BooleanPreview.d.ts +0 -7
- package/src/preview/components/DatePreview.d.ts +0 -7
- package/src/preview/components/EmptyValue.d.ts +0 -4
- package/src/preview/components/EnumValuesChip.d.ts +0 -13
- package/src/preview/components/ImagePreview.d.ts +0 -12
- package/src/preview/components/ReferencePreview.d.ts +0 -22
- package/src/preview/components/StorageThumbnail.d.ts +0 -13
- package/src/preview/components/UrlComponentPreview.d.ts +0 -12
- package/src/preview/index.d.ts +0 -23
- package/src/preview/property_previews/ArrayOfMapsPreview.d.ts +0 -5
- package/src/preview/property_previews/ArrayOfReferencesPreview.d.ts +0 -5
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +0 -5
- package/src/preview/property_previews/ArrayOfStringsPreview.d.ts +0 -5
- package/src/preview/property_previews/ArrayOneOfPreview.d.ts +0 -5
- package/src/preview/property_previews/ArrayPropertyEnumPreview.d.ts +0 -5
- package/src/preview/property_previews/ArrayPropertyPreview.d.ts +0 -5
- package/src/preview/property_previews/MapPropertyPreview.d.ts +0 -8
- package/src/preview/property_previews/NumberPropertyPreview.d.ts +0 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.d.ts +0 -14
- package/src/preview/property_previews/StringPropertyPreview.d.ts +0 -6
- package/src/preview/util.d.ts +0 -7
- package/src/types/analytics.d.ts +0 -1
- package/src/types/appcheck.d.ts +0 -26
- package/src/types/auth.d.ts +0 -40
- package/src/types/collections.d.ts +0 -451
- package/src/types/datasource.d.ts +0 -262
- package/src/types/dialogs_controller.d.ts +0 -32
- package/src/types/entities.d.ts +0 -57
- package/src/types/entity_actions.d.ts +0 -35
- package/src/types/entity_callbacks.d.ts +0 -171
- package/src/types/entity_link_builder.d.ts +0 -7
- package/src/types/export_import.d.ts +0 -21
- package/src/types/fields.d.ts +0 -181
- package/src/types/firecms.d.ts +0 -151
- package/src/types/firecms_context.d.ts +0 -110
- package/src/types/index.d.ts +0 -26
- package/src/types/local_config_persistence.d.ts +0 -21
- package/src/types/locales.d.ts +0 -4
- package/src/types/modify_collections.d.ts +0 -5
- package/src/types/navigation.d.ts +0 -178
- package/src/types/permissions.d.ts +0 -63
- package/src/types/plugins.d.ts +0 -179
- package/src/types/properties.d.ts +0 -681
- package/src/types/property_config.d.ts +0 -42
- package/src/types/resolved_entities.d.ts +0 -98
- package/src/types/side_dialogs_controller.d.ts +0 -57
- package/src/types/side_entity_controller.d.ts +0 -83
- package/src/types/storage.d.ts +0 -82
- package/src/types/user.d.ts +0 -36
- package/src/util/arrays.d.ts +0 -1
- package/src/util/builders.d.ts +0 -64
- package/src/util/chip_utils.d.ts +0 -3
- package/src/util/chip_utils.ts +0 -13
- package/src/util/collections.d.ts +0 -3
- package/src/util/common.d.ts +0 -2
- package/src/util/dates.d.ts +0 -1
- package/src/util/entities.d.ts +0 -28
- package/src/util/enums.d.ts +0 -7
- package/src/util/flatten_object.d.ts +0 -3
- package/src/util/hash.d.ts +0 -1
- package/src/util/icons.d.ts +0 -4
- package/src/util/index.d.ts +0 -20
- package/src/util/join_collections.d.ts +0 -9
- package/src/util/make_properties_editable.d.ts +0 -3
- package/src/util/navigation_from_path.d.ts +0 -24
- package/src/util/navigation_utils.d.ts +0 -20
- package/src/util/objects.d.ts +0 -10
- package/src/util/parent_references_from_path.d.ts +0 -6
- package/src/util/paths.d.ts +0 -14
- package/src/util/permissions.d.ts +0 -5
- package/src/util/plurals.d.ts +0 -18
- package/src/util/property_utils.d.ts +0 -23
- package/src/util/references.d.ts +0 -2
- package/src/util/regexp.d.ts +0 -7
- package/src/util/resolutions.d.ts +0 -64
- package/src/util/storage.d.ts +0 -3
- package/src/util/strings.d.ts +0 -6
- package/src/util/useDebounce.d.ts +0 -1
- package/src/util/useStorageUploadController.d.ts +0 -36
package/dist/util/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export * from "./useDebounce";
|
|
|
11
11
|
export * from "./property_utils";
|
|
12
12
|
export * from "./resolutions";
|
|
13
13
|
export * from "./permissions";
|
|
14
|
+
export * from "./icon_list";
|
|
15
|
+
export * from "./icon_synonyms";
|
|
14
16
|
export * from "./icons";
|
|
15
17
|
export * from "./plurals";
|
|
16
18
|
export * from "./references";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firecms/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.0.0-alpha.
|
|
4
|
+
"version": "3.0.0-alpha.73",
|
|
5
5
|
"description": "Awesome Firebase/Firestore-based headless open-source CMS",
|
|
6
6
|
"funding": {
|
|
7
7
|
"url": "https://github.com/sponsors/firecmsco"
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"generateIcons": "ts-node --esm src/icons/generateIcons.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@firecms/ui": "^3.0.0-alpha.
|
|
41
|
+
"@firecms/ui": "^3.0.0-alpha.73",
|
|
42
42
|
"@fontsource/ibm-plex-mono": "^5.0.8",
|
|
43
43
|
"@fontsource/roboto": "^5.0.8",
|
|
44
44
|
"@hello-pangea/dnd": "^16.5.0",
|
|
@@ -58,7 +58,6 @@
|
|
|
58
58
|
"yup": "^0.32.11"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
|
-
"algoliasearch": "^4.13.0",
|
|
62
61
|
"firebase": "^10.5.2",
|
|
63
62
|
"react": "^18.2.0",
|
|
64
63
|
"react-dom": "^18.2.0",
|
|
@@ -85,7 +84,6 @@
|
|
|
85
84
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
86
85
|
"@typescript-eslint/parser": "^5.62.0",
|
|
87
86
|
"@vitejs/plugin-react": "^4.2.1",
|
|
88
|
-
"algoliasearch": "^4.22.0",
|
|
89
87
|
"cross-env": "^7.0.3",
|
|
90
88
|
"eslint": "^8.55.0",
|
|
91
89
|
"eslint-config-standard": "^17.1.0",
|
|
@@ -109,7 +107,7 @@
|
|
|
109
107
|
"dist",
|
|
110
108
|
"src"
|
|
111
109
|
],
|
|
112
|
-
"gitHead": "
|
|
110
|
+
"gitHead": "df625cc7bd6af087b7012d1c9ae77d3a6c17a320",
|
|
113
111
|
"publishConfig": {
|
|
114
112
|
"access": "public"
|
|
115
113
|
}
|
|
@@ -39,8 +39,7 @@ export const useEntityCollectionTableController = () => useContext<EntityCollect
|
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* This component is in charge of rendering a collection table with a high
|
|
42
|
-
* degree of customization.
|
|
43
|
-
* the {@link DataSource} and holding the state of filtering and sorting.
|
|
42
|
+
* degree of customization.
|
|
44
43
|
*
|
|
45
44
|
* This component is used internally by {@link EntityCollectionView} and
|
|
46
45
|
* {@link useReferenceDialog}
|
|
@@ -51,10 +50,11 @@ export const useEntityCollectionTableController = () => useContext<EntityCollect
|
|
|
51
50
|
*
|
|
52
51
|
* If you want to bind a {@link EntityCollection} to a table with the default
|
|
53
52
|
* options you see in collections in the top level navigation, you can
|
|
54
|
-
* check {@link EntityCollectionView}
|
|
53
|
+
* check {@link EntityCollectionView}.
|
|
55
54
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
55
|
+
* The data displayed in the table is managed by a {@link TableController}.
|
|
56
|
+
* You can build the default, bound to a path in the datasource, by using the hook
|
|
57
|
+
* {@link useDataSourceEntityCollectionTableController}
|
|
58
58
|
*
|
|
59
59
|
* @see EntityCollectionTableProps
|
|
60
60
|
* @see EntityCollectionView
|
|
@@ -385,7 +385,6 @@ export const EntityCollectionTable = React.memo<EntityCollectionTableProps<any>>
|
|
|
385
385
|
onValueChange,
|
|
386
386
|
size,
|
|
387
387
|
selectedCell,
|
|
388
|
-
selectedEntityIds
|
|
389
388
|
}}
|
|
390
389
|
>
|
|
391
390
|
|
|
@@ -92,7 +92,7 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
|
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
94
|
* Controller holding the logic for the table
|
|
95
|
-
* {@link
|
|
95
|
+
* {@link useDataSourceEntityCollectionTableController}
|
|
96
96
|
* {@link TableController}
|
|
97
97
|
*/
|
|
98
98
|
tableController: TableController<M>;
|
|
@@ -71,9 +71,9 @@ export function CollectionTableToolbar(props: CollectionTableToolbarProps) {
|
|
|
71
71
|
|
|
72
72
|
return (
|
|
73
73
|
<div
|
|
74
|
-
className={cn(defaultBorderMixin, "no-scrollbar min-h-[56px] overflow-x-auto px-4 bg-gray-50 dark:bg-gray-900 border-b flex flex-row justify-between items-center w-full")}>
|
|
74
|
+
className={cn(defaultBorderMixin, "no-scrollbar min-h-[56px] overflow-x-auto px-2 md:px-4 bg-gray-50 dark:bg-gray-900 border-b flex flex-row justify-between items-center w-full")}>
|
|
75
75
|
|
|
76
|
-
<div className="flex items-center gap-2">
|
|
76
|
+
<div className="flex items-center gap-2 md:mr-4 mr-2">
|
|
77
77
|
|
|
78
78
|
{props.title && <div className={"hidden lg:block"}>
|
|
79
79
|
{props.title}
|
|
@@ -2,11 +2,25 @@ import { CollectionSize, Entity, FireCMSContext, ResolvedProperty, SelectedCellP
|
|
|
2
2
|
|
|
3
3
|
export type EntityCollectionTableController<M extends Record<string, any>> = {
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* This cell is displayed as selected
|
|
7
|
+
*/
|
|
5
8
|
selectedCell?: SelectedCellProps<any>;
|
|
9
|
+
/**
|
|
10
|
+
* Select a table cell
|
|
11
|
+
* @param cell
|
|
12
|
+
*/
|
|
6
13
|
select: (cell?: SelectedCellProps<M>) => void;
|
|
14
|
+
/**
|
|
15
|
+
* The cell that is displayed as a popup view.
|
|
16
|
+
* @param cell
|
|
17
|
+
*/
|
|
7
18
|
setPopupCell?: (cell?: SelectedCellProps<M>) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Callback used when the value of a cell has changed.
|
|
21
|
+
* @param params
|
|
22
|
+
*/
|
|
8
23
|
onValueChange?: (params: OnCellValueChangeParams<any, M>) => void;
|
|
9
|
-
selectedEntityIds?: string[];
|
|
10
24
|
/**
|
|
11
25
|
* Size of the elements in the collection
|
|
12
26
|
*/
|
|
@@ -15,34 +15,46 @@ import { useDebouncedData } from "./useDebouncedData";
|
|
|
15
15
|
|
|
16
16
|
const DEFAULT_PAGE_SIZE = 50;
|
|
17
17
|
|
|
18
|
-
export type
|
|
18
|
+
export type DataSourceEntityCollectionTableControllerProps<M extends Record<string, any> = any> = {
|
|
19
|
+
/**
|
|
20
|
+
* Full path where the data of this table is located
|
|
21
|
+
*/
|
|
19
22
|
fullPath: string;
|
|
23
|
+
/**
|
|
24
|
+
* The collection that is represented by this config.
|
|
25
|
+
*/
|
|
20
26
|
collection: EntityCollection<M>;
|
|
21
27
|
/**
|
|
22
28
|
* List of entities that will be displayed on top, no matter the ordering.
|
|
23
29
|
* This is used for reference fields selection
|
|
24
30
|
*/
|
|
25
31
|
entitiesDisplayedFirst?: Entity<M>[];
|
|
32
|
+
|
|
26
33
|
lastDeleteTimestamp?: number;
|
|
27
34
|
forceFilter?: FilterValues<string>;
|
|
28
35
|
}
|
|
29
36
|
|
|
30
37
|
/**
|
|
31
|
-
* Use this hook to build a controller for the {@link EntityCollectionTable}
|
|
38
|
+
* Use this hook to build a controller for the {@link EntityCollectionTable}.
|
|
39
|
+
* This controller is bound to data in a path in your specified datasource.
|
|
40
|
+
*
|
|
41
|
+
* Note that you can build your own hook returning a {@link TableController}
|
|
42
|
+
* if you would like to display different data.
|
|
43
|
+
*
|
|
32
44
|
* @param fullPath
|
|
33
45
|
* @param collection
|
|
34
46
|
* @param entitiesDisplayedFirst
|
|
35
47
|
* @param lastDeleteTimestamp
|
|
36
48
|
* @param forceFilterFromProps
|
|
37
49
|
*/
|
|
38
|
-
export function
|
|
50
|
+
export function useDataSourceEntityCollectionTableController<M extends Record<string, any> = any, UserType extends User = User>(
|
|
39
51
|
{
|
|
40
52
|
fullPath,
|
|
41
53
|
collection,
|
|
42
54
|
entitiesDisplayedFirst,
|
|
43
55
|
lastDeleteTimestamp,
|
|
44
56
|
forceFilter: forceFilterFromProps,
|
|
45
|
-
}:
|
|
57
|
+
}: DataSourceEntityCollectionTableControllerProps<M>)
|
|
46
58
|
: TableController<M> {
|
|
47
59
|
|
|
48
60
|
const {
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
} from "../../hooks";
|
|
48
48
|
import { useUserConfigurationPersistence } from "../../hooks/useUserConfigurationPersistence";
|
|
49
49
|
import { EntityCollectionViewActions } from "./EntityCollectionViewActions";
|
|
50
|
-
import {
|
|
50
|
+
import { useDataSourceEntityCollectionTableController } from "../EntityCollectionTable/useDataSourceEntityCollectionTableController";
|
|
51
51
|
import {
|
|
52
52
|
AddIcon,
|
|
53
53
|
Button,
|
|
@@ -176,7 +176,7 @@ export const EntityCollectionView = React.memo(
|
|
|
176
176
|
setDeleteEntityClicked(undefined);
|
|
177
177
|
}, [selectedEntities]);
|
|
178
178
|
|
|
179
|
-
const tableController =
|
|
179
|
+
const tableController = useDataSourceEntityCollectionTableController<M>({
|
|
180
180
|
fullPath,
|
|
181
181
|
collection,
|
|
182
182
|
entitiesDisplayedFirst: [],
|
|
@@ -15,7 +15,7 @@ import { ErrorView } from "./ErrorView";
|
|
|
15
15
|
import { AddIcon, Button, DialogActions, Typography } from "@firecms/ui";
|
|
16
16
|
import { canCreateEntity, fullPathToCollectionSegments, resolveCollection } from "../util";
|
|
17
17
|
import { useSelectionController } from "./EntityCollectionView/EntityCollectionView";
|
|
18
|
-
import {
|
|
18
|
+
import { useDataSourceEntityCollectionTableController } from "./EntityCollectionTable/useDataSourceEntityCollectionTableController";
|
|
19
19
|
import { useColumnIds } from "./EntityCollectionView/useColumnsIds";
|
|
20
20
|
import { useSideDialogContext } from "../core";
|
|
21
21
|
|
|
@@ -258,7 +258,7 @@ export function ReferenceSelectionInner<M extends Record<string, any>>(
|
|
|
258
258
|
const displayedColumnIds = useColumnIds(resolvedCollection, false);
|
|
259
259
|
|
|
260
260
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
261
|
-
const tableController =
|
|
261
|
+
const tableController = useDataSourceEntityCollectionTableController<M>({
|
|
262
262
|
fullPath,
|
|
263
263
|
collection,
|
|
264
264
|
entitiesDisplayedFirst,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
|
|
3
|
+
import { coolIconKeys, debounce, Icon, IconButton, iconKeys, SearchBar, Tooltip } from "@firecms/ui";
|
|
4
|
+
import { icon_synonyms, iconsSearch } from "../util";
|
|
5
|
+
|
|
6
|
+
const UPDATE_SEARCH_INDEX_WAIT_MS = 220;
|
|
7
|
+
|
|
8
|
+
if (process.env.NODE_ENV !== "production") {
|
|
9
|
+
Object.keys(icon_synonyms).forEach((icon: string) => {
|
|
10
|
+
if (!iconKeys.includes(icon)) {
|
|
11
|
+
console.warn(`The icon ${icon} no longer exists. Remove it from \`icon_synonyms\``);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface SearchIconsProps {
|
|
17
|
+
selectedIcon?: string;
|
|
18
|
+
onIconSelected?: (icon: string) => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function SearchIconsView({
|
|
22
|
+
selectedIcon = "",
|
|
23
|
+
onIconSelected
|
|
24
|
+
}: SearchIconsProps) {
|
|
25
|
+
const [keys, setKeys] = React.useState<string[] | null>(null);
|
|
26
|
+
const [query, setQuery] = React.useState<string>("");
|
|
27
|
+
|
|
28
|
+
const updateSearchResults = React.useMemo(() =>
|
|
29
|
+
debounce((value: string) => {
|
|
30
|
+
if (!value || value === "") {
|
|
31
|
+
setKeys(null);
|
|
32
|
+
} else {
|
|
33
|
+
const searchResult = iconsSearch.search(value);
|
|
34
|
+
setKeys(searchResult.map((e: any) => e.key));
|
|
35
|
+
}
|
|
36
|
+
}, UPDATE_SEARCH_INDEX_WAIT_MS), []
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
updateSearchResults(query);
|
|
41
|
+
return () => {
|
|
42
|
+
updateSearchResults.clear();
|
|
43
|
+
};
|
|
44
|
+
}, [query, updateSearchResults]);
|
|
45
|
+
|
|
46
|
+
const icons = keys === null ? coolIconKeys : keys;
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<>
|
|
50
|
+
<SearchBar
|
|
51
|
+
autoFocus
|
|
52
|
+
innerClassName={"w-full sticky top-0 z-10"}
|
|
53
|
+
onTextSearch={(value?: string) => setQuery(value ?? "")}
|
|
54
|
+
placeholder="Search for more icons…"
|
|
55
|
+
/>
|
|
56
|
+
|
|
57
|
+
<div className={"flex max-w-full flex-wrap mt-4"}>
|
|
58
|
+
{icons.map((icon: string) => {
|
|
59
|
+
return (
|
|
60
|
+
<Tooltip title={icon} key={icon}>
|
|
61
|
+
<IconButton
|
|
62
|
+
shape={"square"}
|
|
63
|
+
toggled={selectedIcon === icon}
|
|
64
|
+
onClick={onIconSelected ? () => onIconSelected(icon) : undefined}
|
|
65
|
+
className="box-content m-1"
|
|
66
|
+
>
|
|
67
|
+
<Icon iconKey={icon} size={24}/>
|
|
68
|
+
</IconButton>
|
|
69
|
+
</Tooltip>
|
|
70
|
+
);
|
|
71
|
+
})}
|
|
72
|
+
</div>
|
|
73
|
+
</>
|
|
74
|
+
);
|
|
75
|
+
}
|
package/src/components/index.tsx
CHANGED
package/src/form/EntityForm.tsx
CHANGED
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
import { useAuthController, useDataSource, useFireCMSContext, useSideEntityController } from "../hooks";
|
|
29
29
|
import { ErrorFocus } from "./components/ErrorFocus";
|
|
30
30
|
import { CustomIdField } from "./components/CustomIdField";
|
|
31
|
-
import { Button, cn, DialogActions, IconButton, Typography } from "@firecms/ui";
|
|
31
|
+
import { Alert, Button, cn, DialogActions, IconButton, Typography } from "@firecms/ui";
|
|
32
32
|
import { ErrorBoundary } from "../components";
|
|
33
33
|
import {
|
|
34
34
|
copyEntityAction,
|
|
@@ -400,9 +400,7 @@ function EntityFormInternal<M extends Record<string, any>>({
|
|
|
400
400
|
)).filter(Boolean));
|
|
401
401
|
}
|
|
402
402
|
|
|
403
|
-
return <div
|
|
404
|
-
className="h-full overflow-auto"
|
|
405
|
-
>
|
|
403
|
+
return <div className="h-full overflow-auto">
|
|
406
404
|
|
|
407
405
|
{pluginActions.length > 0 && <div
|
|
408
406
|
className={cn("w-full flex justify-end items-center sticky top-0 right-0 left-0 z-10 bg-opacity-60 bg-slate-200 dark:bg-opacity-60 dark:bg-slate-800 backdrop-blur-md")}>
|
|
@@ -413,12 +411,15 @@ function EntityFormInternal<M extends Record<string, any>>({
|
|
|
413
411
|
className="pl-4 pr-4 pt-12 pb-16 md:pl-8"
|
|
414
412
|
>
|
|
415
413
|
<div
|
|
416
|
-
className={`w-full py-2 flex items-
|
|
414
|
+
className={`w-full py-2 flex flex-col items-start mt-${4 + (pluginActions ? 8 : 0)} lg:mt-${8 + (pluginActions ? 8 : 0)} mb-8`}>
|
|
417
415
|
|
|
418
416
|
<Typography
|
|
419
417
|
className={"mt-4 flex-grow " + inputCollection.hideIdFromForm ? "mb-2" : "mb-0"}
|
|
420
418
|
variant={"h4"}>{inputCollection.singularName ?? inputCollection.name}
|
|
421
419
|
</Typography>
|
|
420
|
+
<Alert color={"base"} className={"w-full"} size={"small"}>
|
|
421
|
+
<code className={"text-sm select-all"}>{path}/{entityId}</code>
|
|
422
|
+
</Alert>
|
|
422
423
|
</div>
|
|
423
424
|
|
|
424
425
|
{!hideId &&
|
|
@@ -202,7 +202,7 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
202
202
|
(!Array.isArray(error) || !!error.filter((e: any) => !!e).length);
|
|
203
203
|
|
|
204
204
|
const WrappedComponent: ComponentType<FieldProps<T, any, M>> | null = useWrappedComponent(context.path, context.collection, propertyKey, property, Component, plugins);
|
|
205
|
-
const UsedComponent: ComponentType<FieldProps<T>> = Component;
|
|
205
|
+
const UsedComponent: ComponentType<FieldProps<T>> = WrappedComponent ?? Component;
|
|
206
206
|
|
|
207
207
|
const isSubmitting = fieldProps.form.isSubmitting;
|
|
208
208
|
|
package/src/form/validation.ts
CHANGED
|
@@ -109,7 +109,11 @@ export function getYupMapObjectSchema<M extends Record<string, any>>({
|
|
|
109
109
|
});
|
|
110
110
|
});
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
const shape = yup.object().shape(objectSchema);
|
|
113
|
+
if (validation?.required) {
|
|
114
|
+
return shape.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true);
|
|
115
|
+
}
|
|
116
|
+
return shape.nullable(true);
|
|
113
117
|
// const object: ObjectSchema<any> = yup.object().shape(objectSchema);
|
|
114
118
|
// return validation?.required
|
|
115
119
|
// ? object.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// export
|
|
@@ -68,7 +68,6 @@ export function EntityView<M extends Record<string, any>, UserType extends User>
|
|
|
68
68
|
onClose
|
|
69
69
|
}: EntityViewProps<M>) {
|
|
70
70
|
|
|
71
|
-
|
|
72
71
|
if (collection.customId && collection.formAutoSave) {
|
|
73
72
|
console.warn(`The collection ${collection.path} has customId and formAutoSave enabled. This is not supported and formAutoSave will be ignored`);
|
|
74
73
|
}
|
|
@@ -502,11 +501,12 @@ export function EntityView<M extends Record<string, any>, UserType extends User>
|
|
|
502
501
|
|
|
503
502
|
<div
|
|
504
503
|
className="pb-1 self-center">
|
|
505
|
-
<IconButton
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
504
|
+
<IconButton
|
|
505
|
+
onClick={() => {
|
|
506
|
+
onClose?.();
|
|
507
|
+
return sideDialogContext.close(false);
|
|
508
|
+
}}
|
|
509
|
+
size="large">
|
|
510
510
|
<CloseIcon/>
|
|
511
511
|
</IconButton>
|
|
512
512
|
</div>
|
|
@@ -61,6 +61,7 @@ export const useBuildSideEntityController = (navigation: NavigationController,
|
|
|
61
61
|
if (props.copy && !props.entityId) {
|
|
62
62
|
throw Error("If you want to copy an entity you need to provide an entityId");
|
|
63
63
|
}
|
|
64
|
+
|
|
64
65
|
const defaultSelectedView = resolveDefaultSelectedView(
|
|
65
66
|
props.collection ? props.collection.defaultSelectedView : undefined,
|
|
66
67
|
{
|
|
@@ -69,7 +70,10 @@ export const useBuildSideEntityController = (navigation: NavigationController,
|
|
|
69
70
|
}
|
|
70
71
|
);
|
|
71
72
|
|
|
72
|
-
sideDialogsController.open(propsToSidePanel({
|
|
73
|
+
sideDialogsController.open(propsToSidePanel({
|
|
74
|
+
selectedSubPath: defaultSelectedView,
|
|
75
|
+
...props,
|
|
76
|
+
}, navigation, smallLayout));
|
|
73
77
|
|
|
74
78
|
}, [sideDialogsController, navigation, smallLayout]);
|
|
75
79
|
|
|
@@ -144,17 +148,24 @@ export function buildSidePanelsFromUrl(path: string, collections: EntityCollecti
|
|
|
144
148
|
|
|
145
149
|
const propsToSidePanel = (props: EntitySidePanelProps<any>, navigation: NavigationController, smallLayout: boolean): SideDialogPanelProps => {
|
|
146
150
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
}
|
|
151
|
+
const collectionPath = removeInitialAndTrailingSlashes(props.path);
|
|
152
|
+
const newPath = props.entityId
|
|
153
|
+
? navigation.buildUrlCollectionPath(`${collectionPath}/${props.entityId}/${props.selectedSubPath || ""}`)
|
|
154
|
+
: navigation.buildUrlCollectionPath(`${collectionPath}#${NEW_URL_HASH}`);
|
|
155
|
+
const resolvedPath = navigation.resolveAliasesFrom(props.path);
|
|
156
|
+
|
|
157
|
+
const resolvedPanelProps: EntitySidePanelProps<any> = {
|
|
158
|
+
...props,
|
|
159
|
+
path: resolvedPath
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
return ({
|
|
163
|
+
key: `${props.path}/${props.entityId}`,
|
|
164
|
+
component: <EntitySidePanel {...resolvedPanelProps}/>,
|
|
165
|
+
urlPath: newPath,
|
|
166
|
+
parentUrlPath: navigation.buildUrlCollectionPath(collectionPath),
|
|
167
|
+
width: getEntityViewWidth(props, smallLayout),
|
|
168
|
+
onClose: props.onClose
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
;
|
|
@@ -5,6 +5,7 @@ import { PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
|
5
5
|
import { PropertyPreview } from "../PropertyPreview";
|
|
6
6
|
import { cn, defaultBorderMixin, Typography } from "@firecms/ui";
|
|
7
7
|
import { ErrorBoundary } from "../../components";
|
|
8
|
+
import { EmptyValue } from "../components/EmptyValue";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @group Preview components
|
|
@@ -43,7 +44,7 @@ export function MapPropertyPreview<T extends Record<string, any> = Record<string
|
|
|
43
44
|
<PropertyPreview propertyKey={key}
|
|
44
45
|
value={(value)[key]}
|
|
45
46
|
property={mapProperty.properties![key]}
|
|
46
|
-
|
|
47
|
+
// entity={entity}
|
|
47
48
|
size={size}/>
|
|
48
49
|
</ErrorBoundary>
|
|
49
50
|
</div>
|
|
@@ -105,6 +106,7 @@ export function MapPropertyPreview<T extends Record<string, any> = Record<string
|
|
|
105
106
|
|
|
106
107
|
export function KeyValuePreview({ value }: { value: any }) {
|
|
107
108
|
if (typeof value !== "object") return null;
|
|
109
|
+
if (!value) return <EmptyValue/>;
|
|
108
110
|
return <div
|
|
109
111
|
className="flex flex-col gap-1 w-full">
|
|
110
112
|
{
|
|
@@ -2,12 +2,11 @@ import React from "react";
|
|
|
2
2
|
|
|
3
3
|
import { resolvePropertyEnum } from "../../util";
|
|
4
4
|
import { EnumValuesChip } from "../components/EnumValuesChip";
|
|
5
|
-
import { getColorSchemeForSeed } from "../../util/chip_utils";
|
|
6
5
|
import { PreviewType } from "../../types";
|
|
7
6
|
import { UrlComponentPreview } from "../components/UrlComponentPreview";
|
|
8
7
|
import { PropertyPreviewProps } from "../PropertyPreviewProps";
|
|
9
8
|
import { ErrorBoundary } from "../../components";
|
|
10
|
-
import { Chip } from "@firecms/ui";
|
|
9
|
+
import { Chip, getColorSchemeForSeed } from "@firecms/ui";
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* @group Preview components
|
package/src/util/enums.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { EnumValueConfig, EnumValues } from "../types";
|
|
2
|
-
import { CHIP_COLORS, ChipColorScheme } from "@firecms/ui";
|
|
3
|
-
import { getColorSchemeForSeed } from "./chip_utils";
|
|
2
|
+
import { CHIP_COLORS, ChipColorScheme, getColorSchemeForSeed } from "@firecms/ui";
|
|
4
3
|
|
|
5
4
|
export function enumToObjectEntries(enumValues: EnumValues): EnumValueConfig[] {
|
|
6
5
|
if (Array.isArray(enumValues)) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { icon_synonyms } from "./icon_synonyms";
|
|
2
|
+
import { iconKeys } from "@firecms/ui";
|
|
3
|
+
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import * as JsSearch from "js-search";
|
|
6
|
+
|
|
7
|
+
export const iconsSearch = new JsSearch.Search("key");
|
|
8
|
+
iconsSearch.addIndex("synonyms");
|
|
9
|
+
|
|
10
|
+
iconsSearch.addDocuments(iconKeys
|
|
11
|
+
.map((importName) => {
|
|
12
|
+
return {
|
|
13
|
+
key: importName,
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
synonyms: icon_synonyms[importName] ?? [],
|
|
16
|
+
}
|
|
17
|
+
}));
|