@firecms/core 3.0.0-beta.7 → 3.0.0-beta.9
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/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +17 -0
- package/dist/app/Scaffold.d.ts +30 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +2 -1
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +0 -1
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +1 -1
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +1 -1
- package/dist/components/EntityPreview.d.ts +1 -1
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +14 -6
- package/dist/components/common/useColumnsIds.d.ts +2 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +3 -8
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +2 -1
- package/dist/core/EntityEditView.d.ts +18 -4
- package/dist/core/FireCMS.d.ts +1 -1
- package/dist/core/NavigationRoutes.d.ts +2 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormikArrayContainer.d.ts +2 -1
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +1 -0
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +3 -5
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/useProjectLog.d.ts +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +14434 -11300
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +19987 -587
- package/dist/index.umd.js.map +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +1 -1
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/types/auth.d.ts +2 -2
- package/dist/types/collections.d.ts +26 -3
- package/dist/types/datasource.d.ts +53 -30
- package/dist/types/entities.d.ts +1 -0
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/fields.d.ts +47 -41
- package/dist/types/navigation.d.ts +1 -0
- package/dist/types/plugins.d.ts +11 -3
- package/dist/types/properties.d.ts +25 -20
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +75 -0
- package/dist/util/entities.d.ts +1 -1
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icons.d.ts +3 -2
- package/dist/util/index.d.ts +1 -0
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +1 -1
- package/dist/util/resolutions.d.ts +15 -1
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +18 -29
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +25 -0
- package/src/{core → app}/Scaffold.tsx +71 -122
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +15 -10
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +11 -18
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +2 -2
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +4 -2
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +21 -14
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +12 -4
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +17 -19
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +5 -6
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +33 -29
- package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
- package/src/components/EntityPreview.tsx +30 -31
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/HomePage/DefaultHomePage.tsx +24 -18
- package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +7 -6
- package/src/components/SearchIconsView.tsx +5 -2
- package/src/components/SelectableTable/SelectableTable.tsx +2 -4
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +1 -1
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +54 -7
- package/src/components/VirtualTable/VirtualTable.tsx +36 -10
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableProps.tsx +17 -8
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +3 -3
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
- package/src/components/common/useColumnsIds.tsx +13 -0
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +12 -12
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +2 -1
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +28 -30
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +31 -27
- package/src/core/EntityEditView.tsx +712 -145
- package/src/core/EntitySidePanel.tsx +0 -1
- package/src/core/FireCMS.tsx +2 -2
- package/src/core/NavigationRoutes.tsx +4 -4
- package/src/core/SideDialogs.tsx +1 -0
- package/src/core/field_configs.tsx +5 -5
- package/src/core/index.tsx +2 -2
- package/src/form/PropertyFieldBinding.tsx +53 -19
- package/src/form/components/CustomIdField.tsx +4 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormikArrayContainer.tsx +4 -1
- package/src/form/components/LabelWithIcon.tsx +27 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +20 -10
- package/src/form/components/StorageUploadProgress.tsx +0 -1
- package/src/form/components/index.tsx +1 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +26 -15
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +28 -25
- package/src/form/field_bindings/BlockFieldBinding.tsx +13 -11
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +48 -42
- package/src/form/field_bindings/MapFieldBinding.tsx +17 -17
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +9 -14
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +27 -18
- package/src/form/field_bindings/RepeatFieldBinding.tsx +32 -19
- package/src/form/field_bindings/SelectFieldBinding.tsx +17 -10
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +33 -43
- package/src/form/field_bindings/SwitchFieldBinding.tsx +9 -5
- package/src/form/field_bindings/TextFieldBinding.tsx +26 -23
- package/src/form/index.tsx +4 -9
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +1 -17
- package/src/hooks/data/delete.ts +2 -1
- package/src/hooks/data/save.ts +5 -2
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/useBuildNavigationController.tsx +10 -3
- package/src/hooks/useProjectLog.tsx +18 -7
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +69 -74
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +17 -4
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +7 -4
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +1 -1
- package/src/preview/components/ImagePreview.tsx +24 -34
- package/src/preview/components/ReferencePreview.tsx +2 -12
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -1
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +1 -1
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +2 -2
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +1 -1
- package/src/preview/property_previews/MapPropertyPreview.tsx +1 -1
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
- package/src/preview/util.ts +2 -2
- package/src/types/auth.tsx +2 -2
- package/src/types/collections.ts +29 -4
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +62 -43
- package/src/types/entities.ts +2 -0
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/fields.tsx +51 -45
- package/src/types/navigation.ts +1 -0
- package/src/types/plugins.tsx +12 -3
- package/src/types/properties.ts +25 -19
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/storage.ts +82 -0
- package/src/util/entities.ts +5 -4
- package/src/util/icon_list.ts +14 -9
- package/src/util/icons.tsx +8 -2
- package/src/util/index.ts +1 -0
- package/src/util/objects.ts +17 -7
- package/src/util/permissions.ts +1 -0
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +1 -1
- package/src/util/references.ts +3 -0
- package/src/util/resolutions.ts +43 -11
- package/src/util/storage.ts +79 -21
- package/src/util/useStorageUploadController.tsx +33 -7
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/core/Drawer.d.ts +0 -16
- package/dist/core/Scaffold.d.ts +0 -51
- package/dist/form/EntityForm.d.ts +0 -77
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -27
- package/src/core/Drawer.tsx +0 -139
- package/src/form/EntityForm.tsx +0 -736
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
|
@@ -8,7 +8,7 @@ import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
|
|
|
8
8
|
/**
|
|
9
9
|
* @group Entity properties
|
|
10
10
|
*/
|
|
11
|
-
export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends Vector ? "vector" : T extends EntityReference ? "reference" : T extends Array<
|
|
11
|
+
export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends Vector ? "vector" : T extends EntityReference ? "reference" : T extends Array<any> ? "array" : T extends Record<string, any> ? "map" : never;
|
|
12
12
|
/**
|
|
13
13
|
* @group Entity properties
|
|
14
14
|
*/
|
|
@@ -20,7 +20,7 @@ export type AnyProperty = StringProperty | NumberProperty | BooleanProperty | Da
|
|
|
20
20
|
/**
|
|
21
21
|
* @group Entity properties
|
|
22
22
|
*/
|
|
23
|
-
export type Property<T extends CMSType =
|
|
23
|
+
export type Property<T extends CMSType = any> = T extends string ? StringProperty : T extends number ? NumberProperty : T extends boolean ? BooleanProperty : T extends Date ? DateProperty : T extends GeoPoint ? GeopointProperty : T extends EntityReference ? ReferenceProperty : T extends Array<CMSType> ? ArrayProperty<T> : T extends Record<string, any> ? MapProperty<T> : AnyProperty;
|
|
24
24
|
/**
|
|
25
25
|
* Interface including all common properties of a CMS property
|
|
26
26
|
* @group Entity properties
|
|
@@ -97,7 +97,7 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
|
|
|
97
97
|
/**
|
|
98
98
|
* This value will be set by default for new entities.
|
|
99
99
|
*/
|
|
100
|
-
defaultValue?: T;
|
|
100
|
+
defaultValue?: T | null;
|
|
101
101
|
/**
|
|
102
102
|
* Should this property be editable. If set to true, the user will be able to modify the property and
|
|
103
103
|
* save the new config. The saved config will then become the source of truth.
|
|
@@ -207,7 +207,7 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> = {
|
|
|
207
207
|
* current value of the property, as well as the path and entity ID.
|
|
208
208
|
* @group Entity properties
|
|
209
209
|
*/
|
|
210
|
-
export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, path, entityId }: PropertyBuilderProps<M>) => Property<T> | null;
|
|
210
|
+
export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, index, path, entityId }: PropertyBuilderProps<M>) => Property<T> | null;
|
|
211
211
|
/**
|
|
212
212
|
* @group Entity properties
|
|
213
213
|
*/
|
|
@@ -306,7 +306,7 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
306
306
|
/**
|
|
307
307
|
* @group Entity properties
|
|
308
308
|
*/
|
|
309
|
-
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType =
|
|
309
|
+
export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
|
|
310
310
|
dataType: "array";
|
|
311
311
|
/**
|
|
312
312
|
* The property of this array.
|
|
@@ -583,13 +583,13 @@ export type StorageConfig = {
|
|
|
583
583
|
* You can use this prop to customize the uploaded filename.
|
|
584
584
|
* You can use a function as a callback or a string where you
|
|
585
585
|
* specify some placeholders that get replaced with the corresponding values.
|
|
586
|
-
* - {file} - Full file name
|
|
587
|
-
* - {file.name} - Name of the file without extension
|
|
588
|
-
* - {file.ext} - Extension of the file
|
|
589
|
-
* - {rand} - Random value used to avoid name collisions
|
|
590
|
-
* - {entityId} - ID of the entity
|
|
591
|
-
* - {propertyKey} - ID of this property
|
|
592
|
-
* - {path} - Path of this entity
|
|
586
|
+
* - `{file}` - Full file name
|
|
587
|
+
* - `{file.name}` - Name of the file without extension
|
|
588
|
+
* - `{file.ext}` - Extension of the file
|
|
589
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
590
|
+
* - `{entityId}` - ID of the entity
|
|
591
|
+
* - `{propertyKey}` - ID of this property
|
|
592
|
+
* - `{path}` - Path of this entity
|
|
593
593
|
*
|
|
594
594
|
* @param context
|
|
595
595
|
*/
|
|
@@ -599,13 +599,13 @@ export type StorageConfig = {
|
|
|
599
599
|
*
|
|
600
600
|
* You can use a function as a callback or a string where you
|
|
601
601
|
* specify some placeholders that get replaced with the corresponding values.
|
|
602
|
-
* - {file} - Full file name
|
|
603
|
-
* - {file.name} - Name of the file without extension
|
|
604
|
-
* - {file.ext} - Extension of the file
|
|
605
|
-
* - {rand} - Random value used to avoid name collisions
|
|
606
|
-
* - {entityId} - ID of the entity
|
|
607
|
-
* - {propertyKey} - ID of this property
|
|
608
|
-
* - {path} - Path of this entity
|
|
602
|
+
* - `{file}` - Full file name
|
|
603
|
+
* - `{file.name}` - Name of the file without extension
|
|
604
|
+
* - `{file.ext}` - Extension of the file
|
|
605
|
+
* - `{rand}` - Random value used to avoid name collisions
|
|
606
|
+
* - `{entityId}` - ID of the entity
|
|
607
|
+
* - `{propertyKey}` - ID of this property
|
|
608
|
+
* - `{path}` - Path of this entity
|
|
609
609
|
*/
|
|
610
610
|
storagePath: string | ((context: UploadedFileContext) => string);
|
|
611
611
|
/**
|
|
@@ -628,6 +628,11 @@ export type StorageConfig = {
|
|
|
628
628
|
* after it has been resolved.
|
|
629
629
|
*/
|
|
630
630
|
postProcess?: (pathOrUrl: string) => Promise<string>;
|
|
631
|
+
/**
|
|
632
|
+
* You can use this prop in order to provide a custom preview URL.
|
|
633
|
+
* Useful when the file's path is different from the original field value
|
|
634
|
+
*/
|
|
635
|
+
previewUrl?: (fileName: string) => string;
|
|
631
636
|
};
|
|
632
637
|
/**
|
|
633
638
|
* @group Entity properties
|
|
@@ -652,7 +657,7 @@ export interface UploadedFileContext {
|
|
|
652
657
|
/**
|
|
653
658
|
* Entity path. E.g. `products/PID/locales`
|
|
654
659
|
*/
|
|
655
|
-
path
|
|
660
|
+
path?: string;
|
|
656
661
|
/**
|
|
657
662
|
* Values of the current entity
|
|
658
663
|
*/
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
/**
|
|
2
3
|
* Controller to open the side dialog
|
|
3
4
|
* @group Hooks and utilities
|
|
@@ -11,6 +12,11 @@ export interface SideDialogsController {
|
|
|
11
12
|
* List of side panels currently open
|
|
12
13
|
*/
|
|
13
14
|
sidePanels: SideDialogPanelProps[];
|
|
15
|
+
/**
|
|
16
|
+
* Override the current side panels
|
|
17
|
+
* @param panels
|
|
18
|
+
*/
|
|
19
|
+
setSidePanels: (panels: SideDialogPanelProps[]) => void;
|
|
14
20
|
/**
|
|
15
21
|
* Open one or multiple side panels
|
|
16
22
|
* @param props
|
|
@@ -54,4 +60,8 @@ export interface SideDialogPanelProps {
|
|
|
54
60
|
* Callback when the panel is closed
|
|
55
61
|
*/
|
|
56
62
|
onClose?: () => void;
|
|
63
|
+
/**
|
|
64
|
+
* Use this prop to store additional data in the panel
|
|
65
|
+
*/
|
|
66
|
+
additional?: any;
|
|
57
67
|
}
|
package/dist/types/storage.d.ts
CHANGED
|
@@ -87,4 +87,79 @@ export interface StorageSource {
|
|
|
87
87
|
* @param bucket
|
|
88
88
|
*/
|
|
89
89
|
getFile: (path: string, bucket?: string) => Promise<File | null>;
|
|
90
|
+
/**
|
|
91
|
+
* Delete a file.
|
|
92
|
+
* @param path
|
|
93
|
+
* @param bucket
|
|
94
|
+
*/
|
|
95
|
+
deleteFile: (path: string, bucket?: string) => Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* List the contents of a path.
|
|
98
|
+
* @param path
|
|
99
|
+
* @param options
|
|
100
|
+
*/
|
|
101
|
+
list: (path: string, options?: {
|
|
102
|
+
bucket?: string;
|
|
103
|
+
maxResults?: number;
|
|
104
|
+
pageToken?: string;
|
|
105
|
+
}) => Promise<StorageListResult>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Result returned by list().
|
|
109
|
+
* @public
|
|
110
|
+
*/
|
|
111
|
+
export declare interface StorageListResult {
|
|
112
|
+
/**
|
|
113
|
+
* References to prefixes (sub-folders). You can call list() on them to
|
|
114
|
+
* get its contents.
|
|
115
|
+
*
|
|
116
|
+
* Folders are implicit based on '/' in the object paths.
|
|
117
|
+
* For example, if a bucket has two objects '/a/b/1' and '/a/b/2', list('/a')
|
|
118
|
+
* will return '/a/b' as a prefix.
|
|
119
|
+
*/
|
|
120
|
+
prefixes: StorageReference[];
|
|
121
|
+
/**
|
|
122
|
+
* Objects in this directory.
|
|
123
|
+
* You can call getMetadata() and getDownloadUrl() on them.
|
|
124
|
+
*/
|
|
125
|
+
items: StorageReference[];
|
|
126
|
+
/**
|
|
127
|
+
* If set, there might be more results for this list. Use this token to resume the list.
|
|
128
|
+
*/
|
|
129
|
+
nextPageToken?: string;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Represents a reference to a Google Cloud Storage object. Developers can
|
|
133
|
+
* upload, download, and delete objects, as well as get/set object metadata.
|
|
134
|
+
* @public
|
|
135
|
+
*/
|
|
136
|
+
export declare interface StorageReference {
|
|
137
|
+
/**
|
|
138
|
+
* Returns a gs:// URL for this object in the form
|
|
139
|
+
* `gs://<bucket>/<path>/<to>/<object>`
|
|
140
|
+
* @returns The gs:// URL.
|
|
141
|
+
*/
|
|
142
|
+
toString(): string;
|
|
143
|
+
/**
|
|
144
|
+
* A reference to the root of this object's bucket.
|
|
145
|
+
*/
|
|
146
|
+
root: StorageReference;
|
|
147
|
+
/**
|
|
148
|
+
* The name of the bucket containing this reference's object.
|
|
149
|
+
*/
|
|
150
|
+
bucket: string;
|
|
151
|
+
/**
|
|
152
|
+
* The full path of this object.
|
|
153
|
+
*/
|
|
154
|
+
fullPath: string;
|
|
155
|
+
/**
|
|
156
|
+
* The short name of this object, which is the last component of the full path.
|
|
157
|
+
* For example, if fullPath is 'full/path/image.png', name is 'image.png'.
|
|
158
|
+
*/
|
|
159
|
+
name: string;
|
|
160
|
+
/**
|
|
161
|
+
* A reference pointing to the parent location of this reference, or null if
|
|
162
|
+
* this reference is the root.
|
|
163
|
+
*/
|
|
164
|
+
parent: StorageReference | null;
|
|
90
165
|
}
|
package/dist/util/entities.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CMSType, DataType, Entity, EntityReference, EntityStatus, EntityValues, PropertiesOrBuilders, Property, PropertyBuilder, PropertyOrBuilder, ResolvedProperties, ResolvedProperty } from "../types";
|
|
2
|
-
export declare function isReadOnly(property: Property | ResolvedProperty): boolean;
|
|
2
|
+
export declare function isReadOnly(property: Property<any> | ResolvedProperty<any>): boolean;
|
|
3
3
|
export declare function isHidden(property: Property | ResolvedProperty): boolean;
|
|
4
4
|
export declare function isPropertyBuilder<T extends CMSType, M extends Record<string, any>>(propertyOrBuilder?: PropertyOrBuilder<T, M> | Property<T> | ResolvedProperty<T>): propertyOrBuilder is PropertyBuilder<T, M>;
|
|
5
5
|
export declare function getDefaultValuesFor<M extends Record<string, any>>(properties: PropertiesOrBuilders<M> | ResolvedProperties<M>): Partial<EntityValues<M>>;
|
package/dist/util/icon_list.d.ts
CHANGED
package/dist/util/icons.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export type IconViewProps = {
|
|
|
8
8
|
icon?: string;
|
|
9
9
|
};
|
|
10
10
|
export declare const IconForView: React.NamedExoticComponent<{
|
|
11
|
-
collectionOrView?: IconViewProps
|
|
12
|
-
className?: string
|
|
11
|
+
collectionOrView?: IconViewProps;
|
|
12
|
+
className?: string;
|
|
13
|
+
size?: "smallest" | "small" | "medium" | "large" | number;
|
|
13
14
|
}>;
|
package/dist/util/index.d.ts
CHANGED
package/dist/util/plurals.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Returns the plural of an English word.
|
|
3
3
|
*
|
|
4
|
-
* @export
|
|
5
4
|
* @param {string} word
|
|
6
5
|
* @param {number} [amount]
|
|
7
6
|
* @returns {string}
|
|
@@ -10,7 +9,6 @@ export declare function plural(word: string, amount?: number): string;
|
|
|
10
9
|
/**
|
|
11
10
|
* Returns the singular of an English word.
|
|
12
11
|
*
|
|
13
|
-
* @export
|
|
14
12
|
* @param {string} word
|
|
15
13
|
* @param {number} [amount]
|
|
16
14
|
* @returns {string}
|
|
@@ -3,7 +3,7 @@ import { EntityCollection, PropertiesOrBuilders, PropertyConfig, PropertyOrBuild
|
|
|
3
3
|
export declare function isReferenceProperty(propertyOrBuilder: PropertyOrBuilder, fields: Record<string, PropertyConfig>): boolean | null;
|
|
4
4
|
export declare function getIdIcon(size: "small" | "medium" | "large"): React.ReactNode;
|
|
5
5
|
export declare function getIconForWidget(widget: PropertyConfig | undefined, size: "small" | "medium" | "large"): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
export declare function getIconForProperty(property: PropertyOrBuilder | ResolvedProperty
|
|
6
|
+
export declare function getIconForProperty(property: PropertyOrBuilder<any> | ResolvedProperty<any>, size?: "small" | "medium" | "large", fields?: Record<string, PropertyConfig>): React.ReactNode;
|
|
7
7
|
export declare function getColorForProperty(property: PropertyOrBuilder, fields: Record<string, PropertyConfig>): string;
|
|
8
8
|
/**
|
|
9
9
|
* Get a property in a property tree from a path like
|
|
@@ -26,6 +26,19 @@ export declare function resolveProperty<T extends CMSType = CMSType, M extends R
|
|
|
26
26
|
fields?: Record<string, PropertyConfig<any>>;
|
|
27
27
|
ignoreMissingFields?: boolean;
|
|
28
28
|
}): ResolvedProperty<T> | null;
|
|
29
|
+
export declare function getArrayResolvedProperties<M>({ propertyKey, propertyValue, property, ...props }: {
|
|
30
|
+
propertyValue: any;
|
|
31
|
+
propertyKey?: string;
|
|
32
|
+
property: ArrayProperty<any> | ResolvedArrayProperty<any>;
|
|
33
|
+
ignoreMissingFields: boolean;
|
|
34
|
+
values?: Partial<M>;
|
|
35
|
+
previousValues?: Partial<M>;
|
|
36
|
+
path?: string;
|
|
37
|
+
entityId?: string;
|
|
38
|
+
index?: number;
|
|
39
|
+
fromBuilder?: boolean;
|
|
40
|
+
fields?: Record<string, PropertyConfig>;
|
|
41
|
+
}): ResolvedProperty[];
|
|
29
42
|
export declare function resolveArrayProperty<T extends any[], M>({ propertyKey, property, ignoreMissingFields, ...props }: {
|
|
30
43
|
propertyKey?: string;
|
|
31
44
|
property: ArrayProperty<T> | ResolvedArrayProperty<T>;
|
|
@@ -43,7 +56,8 @@ export declare function resolveArrayProperty<T extends any[], M>({ propertyKey,
|
|
|
43
56
|
* @param properties
|
|
44
57
|
* @param value
|
|
45
58
|
*/
|
|
46
|
-
export declare function resolveProperties<M extends Record<string, any>>({ properties, ignoreMissingFields, ...props }: {
|
|
59
|
+
export declare function resolveProperties<M extends Record<string, any>>({ propertyKey, properties, ignoreMissingFields, ...props }: {
|
|
60
|
+
propertyKey?: string;
|
|
47
61
|
properties: PropertiesOrBuilders<M>;
|
|
48
62
|
values?: Partial<M>;
|
|
49
63
|
previousValues?: Partial<M>;
|
package/dist/util/storage.d.ts
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
1
|
import { EntityValues, ResolvedArrayProperty, ResolvedStringProperty, StorageConfig, UploadedFileContext } from "../types";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
interface ResolveFilenameStringParams<M extends object> {
|
|
3
|
+
input: string | ((context: UploadedFileContext) => (Promise<string> | string));
|
|
4
|
+
storage: StorageConfig;
|
|
5
|
+
values: EntityValues<M>;
|
|
6
|
+
entityId: string;
|
|
7
|
+
path?: string;
|
|
8
|
+
property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
9
|
+
file: File;
|
|
10
|
+
propertyKey: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function resolveStorageFilenameString<M extends object>({ input, storage, values, entityId, path, property, file, propertyKey }: ResolveFilenameStringParams<M>): Promise<string>;
|
|
13
|
+
interface ResolveStoragePathStringParams<M extends object> {
|
|
14
|
+
input: string | ((context: UploadedFileContext) => string);
|
|
15
|
+
storage: StorageConfig;
|
|
16
|
+
values: EntityValues<M>;
|
|
17
|
+
entityId: string;
|
|
18
|
+
path?: string;
|
|
19
|
+
property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
20
|
+
file: File;
|
|
21
|
+
propertyKey: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function resolveStoragePathString<M extends object>({ input, storage, values, entityId, path, property, file, propertyKey }: ResolveStoragePathStringParams<M>): string;
|
|
24
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityValues, ResolvedArrayProperty, ResolvedStringProperty, StorageConfig, StorageSource } from "../types";
|
|
1
|
+
import { ArrayProperty, EntityValues, ResolvedArrayProperty, ResolvedStringProperty, StorageConfig, StorageSource, StringProperty } from "../types";
|
|
2
2
|
import { PreviewSize } from "../preview";
|
|
3
3
|
/**
|
|
4
4
|
* Internal representation of an item in the storage
|
|
@@ -18,9 +18,9 @@ export declare function useStorageUploadController<M extends object>({ entityId,
|
|
|
18
18
|
entityId: string;
|
|
19
19
|
entityValues: EntityValues<M>;
|
|
20
20
|
value: string | string[] | null;
|
|
21
|
-
path
|
|
21
|
+
path?: string;
|
|
22
22
|
propertyKey: string;
|
|
23
|
-
property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
23
|
+
property: StringProperty | ArrayProperty<string[]> | ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
24
24
|
storageSource: StorageSource;
|
|
25
25
|
disabled: boolean;
|
|
26
26
|
onChange: (value: string | string[] | null) => void;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@firecms/core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "3.0.0-beta.
|
|
4
|
+
"version": "3.0.0-beta.9",
|
|
5
5
|
"description": "Awesome Firebase/Firestore-based headless open-source CMS",
|
|
6
6
|
"funding": {
|
|
7
7
|
"url": "https://github.com/sponsors/firecmsco"
|
|
@@ -46,72 +46,61 @@
|
|
|
46
46
|
"./package.json": "./package.json"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@firecms/
|
|
50
|
-
"@firecms/
|
|
51
|
-
"@
|
|
49
|
+
"@firecms/editor": "^3.0.0-beta.9",
|
|
50
|
+
"@firecms/formex": "^3.0.0-beta.9",
|
|
51
|
+
"@firecms/ui": "^3.0.0-beta.9",
|
|
52
52
|
"@hello-pangea/dnd": "^16.6.0",
|
|
53
|
-
"@radix-ui/react-portal": "^1.
|
|
53
|
+
"@radix-ui/react-portal": "^1.1.1",
|
|
54
54
|
"clsx": "^2.1.1",
|
|
55
55
|
"date-fns": "^3.6.0",
|
|
56
|
+
"fuse.js": "^7.0.0",
|
|
56
57
|
"history": "^5.3.0",
|
|
57
|
-
"js-search": "^2.0.1",
|
|
58
58
|
"markdown-it": "^14.1.0",
|
|
59
59
|
"notistack": "^3.0.1",
|
|
60
60
|
"object-hash": "^3.0.0",
|
|
61
61
|
"react-dropzone": "^14.2.3",
|
|
62
62
|
"react-fast-compare": "^3.2.2",
|
|
63
63
|
"react-image-file-resizer": "^0.4.8",
|
|
64
|
-
"react-markdown-editor-lite": "^1.3.4",
|
|
65
64
|
"react-transition-group": "^4.4.5",
|
|
66
65
|
"react-use-measure": "^2.1.1",
|
|
67
66
|
"react-window": "^1.8.10",
|
|
68
|
-
"typeface-rubik": "^1.1.13",
|
|
69
67
|
"yup": "^0.32.11"
|
|
70
68
|
},
|
|
71
69
|
"peerDependencies": {
|
|
72
70
|
"firebase": "^10.5.2",
|
|
73
71
|
"react": "^18.3.1",
|
|
74
72
|
"react-dom": "^18.3.1",
|
|
75
|
-
"react-router": "^6.
|
|
76
|
-
"react-router-dom": "^6.
|
|
73
|
+
"react-router": "^6.25.1",
|
|
74
|
+
"react-router-dom": "^6.25.1"
|
|
77
75
|
},
|
|
78
76
|
"devDependencies": {
|
|
79
77
|
"@jest/globals": "^29.7.0",
|
|
80
78
|
"@testing-library/react": "^15.0.7",
|
|
81
79
|
"@testing-library/user-event": "^14.5.2",
|
|
82
80
|
"@types/jest": "^29.5.12",
|
|
83
|
-
"@types/node": "^20.12
|
|
81
|
+
"@types/node": "^20.14.12",
|
|
84
82
|
"@types/object-hash": "^3.0.6",
|
|
85
83
|
"@types/react": "^18.3.3",
|
|
86
84
|
"@types/react-dom": "^18.3.0",
|
|
87
85
|
"@types/react-measure": "^2.0.12",
|
|
88
|
-
"@
|
|
89
|
-
"@typescript-eslint/parser": "^7.11.0",
|
|
90
|
-
"@vitejs/plugin-react": "^4.3.0",
|
|
86
|
+
"@vitejs/plugin-react": "^4.3.1",
|
|
91
87
|
"cross-env": "^7.0.3",
|
|
92
|
-
"
|
|
93
|
-
"eslint-config-standard": "^17.1.0",
|
|
94
|
-
"eslint-plugin-import": "^2.29.1",
|
|
95
|
-
"eslint-plugin-n": "^16.6.2",
|
|
96
|
-
"eslint-plugin-promise": "^6.2.0",
|
|
97
|
-
"eslint-plugin-react": "^7.34.2",
|
|
98
|
-
"eslint-plugin-react-hooks": "^4.6.2",
|
|
99
|
-
"firebase": "^10.12.2",
|
|
88
|
+
"firebase": "^10.12.4",
|
|
100
89
|
"jest": "^29.7.0",
|
|
101
90
|
"npm-run-all": "^4.1.5",
|
|
102
|
-
"react-router": "^6.
|
|
103
|
-
"react-router-dom": "^6.
|
|
104
|
-
"ts-jest": "^29.
|
|
91
|
+
"react-router": "^6.25.1",
|
|
92
|
+
"react-router-dom": "^6.25.1",
|
|
93
|
+
"ts-jest": "^29.2.3",
|
|
105
94
|
"ts-node": "^10.9.2",
|
|
106
|
-
"tsd": "^0.31.
|
|
107
|
-
"typescript": "^5.4
|
|
108
|
-
"vite": "^5.
|
|
95
|
+
"tsd": "^0.31.1",
|
|
96
|
+
"typescript": "^5.5.4",
|
|
97
|
+
"vite": "^5.3.4"
|
|
109
98
|
},
|
|
110
99
|
"files": [
|
|
111
100
|
"dist",
|
|
112
101
|
"src"
|
|
113
102
|
],
|
|
114
|
-
"gitHead": "
|
|
103
|
+
"gitHead": "a2fffa74049d185e674aae9f70b462f011edd1c2",
|
|
115
104
|
"publishConfig": {
|
|
116
105
|
"access": "public"
|
|
117
106
|
},
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DefaultAppBar, DefaultAppBarProps } from "../core/DefaultAppBar";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This component renders the main app bar of FireCMS.
|
|
5
|
+
*/
|
|
6
|
+
export function AppBar({
|
|
7
|
+
children,
|
|
8
|
+
...props
|
|
9
|
+
}: {
|
|
10
|
+
children?: React.ReactNode,
|
|
11
|
+
className?: string,
|
|
12
|
+
style?: React.CSSProperties
|
|
13
|
+
} & DefaultAppBarProps) {
|
|
14
|
+
const usedChildren = children ?? <DefaultAppBar {...props}/>;
|
|
15
|
+
return <>{usedChildren}</>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
AppBar.componentType = "AppBar";
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DefaultDrawer } from "../core";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* This component is in charge of rendering the drawer.
|
|
5
|
+
* If you add this component under your {@link Scaffold}, it will be rendered
|
|
6
|
+
* as a drawer, and the open and close functionality will be handled automatically.
|
|
7
|
+
* If you want to customise the drawer, you can create your own component and pass it as a child.
|
|
8
|
+
* For custom drawers, you can use the {@link useApp} to open and close the drawer.
|
|
9
|
+
*
|
|
10
|
+
|
|
11
|
+
*/
|
|
12
|
+
export function Drawer({
|
|
13
|
+
children,
|
|
14
|
+
className,
|
|
15
|
+
style
|
|
16
|
+
}: {
|
|
17
|
+
children?: React.ReactNode,
|
|
18
|
+
className?: string,
|
|
19
|
+
style?: React.CSSProperties
|
|
20
|
+
}) {
|
|
21
|
+
const usedChildren = children ?? <DefaultDrawer className={className} style={style}/>;
|
|
22
|
+
return <>{usedChildren}</>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
Drawer.componentType = "Drawer";
|