@firecms/core 3.0.0-canary.14 → 3.0.0-canary.140
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/README.md +3 -3
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -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 +5 -4
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +5 -3
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +2 -2
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +12 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +7 -6
- 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/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +15 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
- package/dist/components/common/index.d.ts +1 -0
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +2 -1
- package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +3 -0
- package/dist/components/index.d.ts +4 -2
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +18 -4
- package/dist/core/FireCMS.d.ts +1 -1
- package/dist/core/NavigationRoutes.d.ts +3 -3
- package/dist/core/index.d.ts +3 -4
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.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/data/save.d.ts +1 -2
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useBuildNavigationController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +15817 -12453
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +20045 -587
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/types/auth.d.ts +3 -3
- package/dist/types/collections.d.ts +39 -5
- package/dist/types/datasource.d.ts +55 -35
- package/dist/types/entities.d.ts +6 -1
- package/dist/types/entity_actions.d.ts +14 -0
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/fields.d.ts +47 -41
- package/dist/types/firecms.d.ts +4 -0
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +6 -5
- package/dist/types/plugins.d.ts +14 -4
- package/dist/types/properties.d.ts +34 -21
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/storage.d.ts +86 -3
- package/dist/util/entities.d.ts +2 -2
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -97
- package/dist/util/icons.d.ts +3 -2
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_utils.d.ts +2 -2
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +1 -1
- package/dist/util/resolutions.d.ts +30 -16
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +128 -119
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +243 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +19 -15
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
- package/src/components/DeleteEntityDialog.tsx +1 -1
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +12 -19
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +21 -20
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +10 -6
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +41 -35
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +14 -6
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +8 -11
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +138 -85
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +19 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +43 -39
- package/src/components/EntityView.tsx +6 -6
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/HomePage/DefaultHomePage.tsx +25 -19
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +1 -1
- package/src/components/HomePage/NavigationGroup.tsx +1 -1
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +48 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +8 -7
- package/src/components/ReferenceWidget.tsx +22 -12
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +7 -7
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +28 -6
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +88 -21
- package/src/components/VirtualTable/VirtualTable.tsx +77 -46
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +18 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
- 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/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +8 -4
- package/src/components/common/index.ts +1 -0
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +23 -2
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +23 -12
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +4 -2
- package/src/contexts/DialogsProvider.tsx +2 -2
- package/src/core/DefaultAppBar.tsx +176 -0
- package/src/core/DefaultDrawer.tsx +183 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +716 -153
- package/src/core/EntitySidePanel.tsx +1 -2
- package/src/core/FireCMS.tsx +53 -52
- package/src/core/NavigationRoutes.tsx +7 -8
- package/src/core/SideDialogs.tsx +1 -0
- package/src/core/field_configs.tsx +7 -8
- package/src/core/index.tsx +3 -4
- package/src/form/PropertyFieldBinding.tsx +56 -22
- 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 +21 -11
- package/src/form/components/StorageUploadProgress.tsx +3 -4
- package/src/form/components/index.tsx +1 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +29 -25
- package/src/form/field_bindings/BlockFieldBinding.tsx +30 -27
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +50 -44
- package/src/form/field_bindings/MapFieldBinding.tsx +20 -19
- 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 +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +41 -30
- package/src/form/field_bindings/RepeatFieldBinding.tsx +32 -19
- package/src/form/field_bindings/SelectFieldBinding.tsx +20 -13
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +36 -46
- 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 +9 -4
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +11 -5
- package/src/hooks/useBuildNavigationController.tsx +91 -31
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
- package/src/hooks/useValidateAuthenticator.tsx +21 -41
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -82
- package/src/internal/useBuildSideDialogsController.tsx +1 -0
- package/src/internal/useBuildSideEntityController.tsx +102 -22
- package/src/internal/useUnsavedChangesDialog.tsx +3 -1
- package/src/preview/PropertyPreview.tsx +11 -18
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +25 -35
- package/src/preview/components/ReferencePreview.tsx +23 -34
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +44 -11
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
- package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +2 -2
- package/src/types/auth.tsx +3 -3
- package/src/types/collections.ts +48 -7
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +65 -43
- package/src/types/entities.ts +11 -1
- package/src/types/entity_actions.tsx +16 -3
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/fields.tsx +51 -45
- package/src/types/firecms.tsx +5 -0
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +7 -7
- package/src/types/plugins.tsx +16 -6
- package/src/types/properties.ts +39 -22
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +13 -0
- package/src/types/storage.ts +94 -3
- package/src/util/entities.ts +6 -5
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +15 -10
- package/src/util/icon_synonyms.ts +3 -99
- package/src/util/icons.tsx +8 -2
- package/src/util/index.ts +1 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_utils.ts +6 -6
- package/src/util/objects.ts +25 -28
- package/src/util/permissions.ts +1 -0
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +2 -2
- package/src/util/references.ts +3 -0
- package/src/util/resolutions.ts +79 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +33 -7
- package/src/util/useTraceUpdate.tsx +1 -0
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/core/SideEntityView.d.ts +0 -7
- package/dist/form/EntityForm.d.ts +0 -77
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/EntityForm.tsx +0 -728
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
|
@@ -33,7 +33,7 @@ export function EntitySidePanel(props: EntitySidePanelProps) {
|
|
|
33
33
|
if (!props) return undefined;
|
|
34
34
|
let usedCollection = props.collection;
|
|
35
35
|
|
|
36
|
-
const registryCollection = navigationController.getCollection(props.path
|
|
36
|
+
const registryCollection = navigationController.getCollection(props.path);
|
|
37
37
|
if (registryCollection) {
|
|
38
38
|
usedCollection = registryCollection;
|
|
39
39
|
}
|
|
@@ -79,7 +79,6 @@ export function EntitySidePanel(props: EntitySidePanelProps) {
|
|
|
79
79
|
<ErrorBoundary>
|
|
80
80
|
<EntityEditView
|
|
81
81
|
{...props}
|
|
82
|
-
formWidth={props.width}
|
|
83
82
|
collection={collection}
|
|
84
83
|
parentCollectionIds={parentCollectionIds}
|
|
85
84
|
onValuesAreModified={onValuesAreModified}
|
package/src/core/FireCMS.tsx
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React, { useMemo } from "react";
|
|
2
|
-
|
|
3
|
-
import { EntityCollection, FireCMSContext, FireCMSPlugin, FireCMSProps, User } from "../types";
|
|
4
|
-
import { AuthControllerContext
|
|
2
|
+
import { CenteredView, Typography } from "@firecms/ui";
|
|
3
|
+
import { CustomizationController, EntityCollection, FireCMSContext, FireCMSPlugin, FireCMSProps, User } from "../types";
|
|
4
|
+
import { AuthControllerContext } from "../contexts";
|
|
5
5
|
import { useBuildSideEntityController } from "../internal/useBuildSideEntityController";
|
|
6
|
-
import { useCustomizationController, useFireCMSContext
|
|
6
|
+
import { useCustomizationController, useFireCMSContext } from "../hooks";
|
|
7
7
|
import { useBuildSideDialogsController } from "../internal/useBuildSideDialogsController";
|
|
8
8
|
import { ErrorView } from "../components";
|
|
9
9
|
import { StorageSourceContext } from "../contexts/StorageSourceContext";
|
|
@@ -12,11 +12,8 @@ import { DataSourceContext } from "../contexts/DataSourceContext";
|
|
|
12
12
|
import { SideEntityControllerContext } from "../contexts/SideEntityControllerContext";
|
|
13
13
|
import { NavigationContext } from "../contexts/NavigationContext";
|
|
14
14
|
import { SideDialogsControllerContext } from "../contexts/SideDialogsControllerContext";
|
|
15
|
-
import { useLocaleConfig } from "../internal/useLocaleConfig";
|
|
16
|
-
import { CenteredView, Typography } from "@firecms/ui";
|
|
17
15
|
import { DialogsProvider } from "../contexts/DialogsProvider";
|
|
18
16
|
import { useBuildDataSource } from "../internal/useBuildDataSource";
|
|
19
|
-
import { useBuildCustomizationController } from "../internal/useBuildCustomizationController";
|
|
20
17
|
import { CustomizationControllerContext } from "../contexts/CustomizationControllerContext";
|
|
21
18
|
import { AnalyticsContext } from "../contexts/AnalyticsContext";
|
|
22
19
|
import { useProjectLog } from "../hooks/useProjectLog";
|
|
@@ -30,12 +27,11 @@ import { useProjectLog } from "../hooks/useProjectLog";
|
|
|
30
27
|
*
|
|
31
28
|
* You only need to use this component if you are building a custom app.
|
|
32
29
|
*
|
|
33
|
-
|
|
30
|
+
|
|
34
31
|
* @group Core
|
|
35
32
|
*/
|
|
36
33
|
export function FireCMS<UserType extends User, EC extends EntityCollection>(props: FireCMSProps<UserType, EC>) {
|
|
37
34
|
|
|
38
|
-
const modeController = useModeController();
|
|
39
35
|
const {
|
|
40
36
|
children,
|
|
41
37
|
entityLinkBuilder,
|
|
@@ -51,10 +47,9 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
51
47
|
entityViews,
|
|
52
48
|
components,
|
|
53
49
|
navigationController,
|
|
50
|
+
apiKey
|
|
54
51
|
} = props;
|
|
55
52
|
|
|
56
|
-
useLocaleConfig(locale);
|
|
57
|
-
|
|
58
53
|
/**
|
|
59
54
|
* Controller in charge of fetching and persisting data
|
|
60
55
|
*/
|
|
@@ -71,7 +66,7 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
71
66
|
|
|
72
67
|
const loading = authController.initialLoading || navigationController.loading || pluginsLoading;
|
|
73
68
|
|
|
74
|
-
const customizationController =
|
|
69
|
+
const customizationController: CustomizationController = {
|
|
75
70
|
dateTimeFormat,
|
|
76
71
|
locale,
|
|
77
72
|
entityLinkBuilder,
|
|
@@ -79,13 +74,21 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
79
74
|
entityViews: entityViews ?? [],
|
|
80
75
|
propertyConfigs: propertyConfigs ?? {},
|
|
81
76
|
components
|
|
82
|
-
}
|
|
77
|
+
};
|
|
83
78
|
|
|
84
79
|
const analyticsController = useMemo(() => ({
|
|
85
80
|
onAnalyticsEvent
|
|
86
81
|
}), []);
|
|
87
82
|
|
|
88
|
-
const accessResponse = useProjectLog(
|
|
83
|
+
const accessResponse = useProjectLog({
|
|
84
|
+
apiKey,
|
|
85
|
+
authController,
|
|
86
|
+
dataSourceDelegate,
|
|
87
|
+
plugins
|
|
88
|
+
});
|
|
89
|
+
if (accessResponse?.message) {
|
|
90
|
+
console.warn(accessResponse.message);
|
|
91
|
+
}
|
|
89
92
|
|
|
90
93
|
if (navigationController.navigationLoadingError) {
|
|
91
94
|
return (
|
|
@@ -109,54 +112,52 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
|
|
|
109
112
|
|
|
110
113
|
if (accessResponse?.blocked) {
|
|
111
114
|
return (
|
|
112
|
-
<CenteredView maxWidth={"md"} fullScreen={true}>
|
|
113
|
-
<Typography variant={"h4"}>
|
|
114
|
-
|
|
115
|
+
<CenteredView maxWidth={"md"} fullScreen={true} className={"flex flex-col gap-2"}>
|
|
116
|
+
<Typography variant={"h4"} gutterBottom>
|
|
117
|
+
License needed
|
|
115
118
|
</Typography>
|
|
116
119
|
<Typography>
|
|
117
|
-
|
|
120
|
+
You need a valid license to use FireCMS PRO. Please reach out at <a
|
|
118
121
|
href={"mailto:hello@firecms.co"}>hello@firecms.co</a> for more information.
|
|
119
122
|
</Typography>
|
|
120
123
|
{accessResponse?.message &&
|
|
121
|
-
<Typography>
|
|
124
|
+
<Typography>{accessResponse?.message}</Typography>}
|
|
122
125
|
</CenteredView>
|
|
123
126
|
);
|
|
124
127
|
}
|
|
125
128
|
|
|
126
129
|
return (
|
|
127
|
-
<
|
|
128
|
-
<
|
|
129
|
-
<
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
</AnalyticsContext.Provider>
|
|
159
|
-
</ModeControllerContext.Provider>
|
|
130
|
+
<AnalyticsContext.Provider value={analyticsController}>
|
|
131
|
+
<CustomizationControllerContext.Provider value={customizationController}>
|
|
132
|
+
<UserConfigurationPersistenceContext.Provider
|
|
133
|
+
value={userConfigPersistence}>
|
|
134
|
+
<StorageSourceContext.Provider
|
|
135
|
+
value={storageSource}>
|
|
136
|
+
<DataSourceContext.Provider
|
|
137
|
+
value={dataSource}>
|
|
138
|
+
<AuthControllerContext.Provider
|
|
139
|
+
value={authController}>
|
|
140
|
+
<SideDialogsControllerContext.Provider
|
|
141
|
+
value={sideDialogsController}>
|
|
142
|
+
<SideEntityControllerContext.Provider
|
|
143
|
+
value={sideEntityController}>
|
|
144
|
+
<NavigationContext.Provider
|
|
145
|
+
value={navigationController}>
|
|
146
|
+
<DialogsProvider>
|
|
147
|
+
<FireCMSInternal
|
|
148
|
+
loading={loading}>
|
|
149
|
+
{children}
|
|
150
|
+
</FireCMSInternal>
|
|
151
|
+
</DialogsProvider>
|
|
152
|
+
</NavigationContext.Provider>
|
|
153
|
+
</SideEntityControllerContext.Provider>
|
|
154
|
+
</SideDialogsControllerContext.Provider>
|
|
155
|
+
</AuthControllerContext.Provider>
|
|
156
|
+
</DataSourceContext.Provider>
|
|
157
|
+
</StorageSourceContext.Provider>
|
|
158
|
+
</UserConfigurationPersistenceContext.Provider>
|
|
159
|
+
</CustomizationControllerContext.Provider>
|
|
160
|
+
</AnalyticsContext.Provider>
|
|
160
161
|
);
|
|
161
162
|
|
|
162
163
|
}
|
|
@@ -13,9 +13,9 @@ export type NavigationRoutesProps = {
|
|
|
13
13
|
/**
|
|
14
14
|
* In case you need to override the home page
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
homePage?: React.ReactNode;
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
children?: React.ReactNode | React.ReactNode[]
|
|
19
19
|
|
|
20
20
|
};
|
|
21
21
|
|
|
@@ -25,14 +25,13 @@ export type NavigationRoutesProps = {
|
|
|
25
25
|
* or the home route) related to a {@link NavigationController}.
|
|
26
26
|
* This component needs a parent {@link FireCMS}
|
|
27
27
|
*
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
* @group Components
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
31
|
export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
33
32
|
function NavigationRoutes({
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
homePage = <DefaultHomePage/>,
|
|
34
|
+
children
|
|
36
35
|
}: NavigationRoutesProps) {
|
|
37
36
|
|
|
38
37
|
const location = useLocation();
|
|
@@ -93,7 +92,7 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
|
93
92
|
|
|
94
93
|
const homeRoute = (
|
|
95
94
|
<Route path={"/"}
|
|
96
|
-
element={
|
|
95
|
+
element={homePage}/>
|
|
97
96
|
);
|
|
98
97
|
|
|
99
98
|
const notFoundRoute = <Route path={"*"}
|
|
@@ -112,7 +111,7 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
|
|
|
112
111
|
|
|
113
112
|
{notFoundRoute}
|
|
114
113
|
|
|
115
|
-
{
|
|
114
|
+
{children}
|
|
116
115
|
|
|
117
116
|
</Routes>
|
|
118
117
|
);
|
package/src/core/SideDialogs.tsx
CHANGED
|
@@ -8,8 +8,8 @@ import {
|
|
|
8
8
|
DateTimeFieldBinding,
|
|
9
9
|
KeyValueFieldBinding,
|
|
10
10
|
MapFieldBinding,
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
MarkdownEditorFieldBinding,
|
|
12
|
+
MultiSelectFieldBinding,
|
|
13
13
|
ReferenceFieldBinding,
|
|
14
14
|
RepeatFieldBinding,
|
|
15
15
|
SelectFieldBinding,
|
|
@@ -77,7 +77,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
77
77
|
property: {
|
|
78
78
|
dataType: "string",
|
|
79
79
|
markdown: true,
|
|
80
|
-
Field:
|
|
80
|
+
Field: MarkdownEditorFieldBinding
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
83
|
url: {
|
|
@@ -139,7 +139,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
139
139
|
dataType: "string",
|
|
140
140
|
enumValues: [],
|
|
141
141
|
},
|
|
142
|
-
Field:
|
|
142
|
+
Field: MultiSelectFieldBinding
|
|
143
143
|
}
|
|
144
144
|
},
|
|
145
145
|
number_input: {
|
|
@@ -177,7 +177,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
177
177
|
dataType: "number",
|
|
178
178
|
enumValues: [],
|
|
179
179
|
},
|
|
180
|
-
Field:
|
|
180
|
+
Field: MultiSelectFieldBinding
|
|
181
181
|
}
|
|
182
182
|
},
|
|
183
183
|
file_upload: {
|
|
@@ -331,7 +331,7 @@ export function getFieldConfig(property: Property | ResolvedProperty, propertyCo
|
|
|
331
331
|
}
|
|
332
332
|
const defaultFieldConfig = DEFAULT_FIELD_CONFIGS[defaultFieldId];
|
|
333
333
|
const customField = fieldId ? propertyConfigs[fieldId] : undefined;
|
|
334
|
-
return mergeDeep(defaultFieldConfig ?? {}, customField ?? {});
|
|
334
|
+
return mergeDeep(defaultFieldConfig ?? {}, customField ?? {} as PropertyConfig);
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
export function getDefaultFieldId(property: Property | ResolvedProperty) {
|
|
@@ -359,8 +359,7 @@ export function getDefaultFieldId(property: Property | ResolvedProperty) {
|
|
|
359
359
|
} else if (property.dataType === "map") {
|
|
360
360
|
if (property.keyValue)
|
|
361
361
|
return "key_value";
|
|
362
|
-
|
|
363
|
-
return "group";
|
|
362
|
+
return "group";
|
|
364
363
|
} else if (property.dataType === "array") {
|
|
365
364
|
const of = (property as ArrayProperty).of;
|
|
366
365
|
const oneOf = (property as ArrayProperty).oneOf;
|
package/src/core/index.tsx
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export * from "./FireCMS";
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
export { Scaffold } from "./Scaffold";
|
|
3
|
+
export * from "../app/Scaffold";
|
|
5
4
|
|
|
6
|
-
export
|
|
7
|
-
export
|
|
5
|
+
export * from "./DefaultDrawer";
|
|
6
|
+
export * from "./DrawerNavigationItem";
|
|
8
7
|
|
|
9
8
|
export * from "./field_configs";
|
|
10
9
|
|
|
@@ -51,6 +51,13 @@ export const PropertyFieldBinding = React.memo(PropertyFieldBindingInternal, (a:
|
|
|
51
51
|
if (a.propertyKey !== b.propertyKey) {
|
|
52
52
|
return false;
|
|
53
53
|
}
|
|
54
|
+
if (a.index !== b.index) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (a.size !== b.size) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
54
61
|
const aIsBuilder = isPropertyBuilder(a.property) || a.property.fromBuilder;
|
|
55
62
|
const bIsBuilder = isPropertyBuilder(b.property) || b.property.fromBuilder;
|
|
56
63
|
|
|
@@ -74,17 +81,19 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
74
81
|
context,
|
|
75
82
|
includeDescription,
|
|
76
83
|
underlyingValueHasChanged,
|
|
77
|
-
disabled,
|
|
78
|
-
tableMode,
|
|
84
|
+
disabled: disabledProp,
|
|
79
85
|
partOfArray,
|
|
80
|
-
|
|
86
|
+
minimalistView,
|
|
81
87
|
autoFocus,
|
|
88
|
+
index,
|
|
89
|
+
size
|
|
82
90
|
}: PropertyFieldBindingProps<T, M>): ReactElement<PropertyFieldBindingProps<T, M>> {
|
|
83
91
|
|
|
84
92
|
const customizationController = useCustomizationController();
|
|
85
93
|
|
|
86
94
|
return (
|
|
87
95
|
<Field
|
|
96
|
+
key={propertyKey}
|
|
88
97
|
name={propertyKey}
|
|
89
98
|
>
|
|
90
99
|
{(fieldProps) => {
|
|
@@ -92,14 +101,16 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
92
101
|
let Component: ComponentType<FieldProps<T>> | undefined;
|
|
93
102
|
const resolvedProperty: ResolvedProperty<T> | null = resolveProperty({
|
|
94
103
|
propertyKey,
|
|
95
|
-
propertyValue: fieldProps.field.value,
|
|
96
104
|
propertyOrBuilder: property,
|
|
97
105
|
values: fieldProps.form.values,
|
|
98
106
|
path: context.path,
|
|
99
107
|
entityId: context.entityId,
|
|
100
|
-
|
|
108
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
109
|
+
index
|
|
101
110
|
});
|
|
102
111
|
|
|
112
|
+
const disabled = disabledProp || isReadOnly(resolvedProperty) || Boolean(resolvedProperty?.disabled);
|
|
113
|
+
|
|
103
114
|
if (resolvedProperty === null || isHidden(resolvedProperty)) {
|
|
104
115
|
return <></>;
|
|
105
116
|
} else if (isReadOnly(resolvedProperty)) {
|
|
@@ -111,16 +122,22 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
111
122
|
} else {
|
|
112
123
|
const propertyConfig = getFieldConfig(resolvedProperty, customizationController.propertyConfigs);
|
|
113
124
|
if (!propertyConfig) {
|
|
114
|
-
console.log("INTERNAL: Could not find field config for property", {
|
|
125
|
+
console.log("INTERNAL: Could not find field config for property", {
|
|
126
|
+
propertyKey,
|
|
127
|
+
resolvedProperty,
|
|
128
|
+
fields: customizationController.propertyConfigs,
|
|
129
|
+
propertyConfig
|
|
130
|
+
});
|
|
115
131
|
throw new Error(`INTERNAL: Could not find field config for property ${propertyKey}`);
|
|
116
132
|
}
|
|
117
133
|
const configProperty = resolveProperty({
|
|
134
|
+
propertyKey,
|
|
118
135
|
propertyOrBuilder: propertyConfig.property,
|
|
119
|
-
propertyValue: fieldProps.field.value,
|
|
120
136
|
values: fieldProps.form.values,
|
|
121
137
|
path: context.path,
|
|
122
138
|
entityId: context.entityId,
|
|
123
|
-
|
|
139
|
+
propertyConfigs: customizationController.propertyConfigs,
|
|
140
|
+
index
|
|
124
141
|
});
|
|
125
142
|
Component = configProperty.Field as ComponentType<FieldProps<T>>;
|
|
126
143
|
}
|
|
@@ -139,10 +156,10 @@ function PropertyFieldBindingInternal<T extends CMSType = CMSType, M extends Rec
|
|
|
139
156
|
underlyingValueHasChanged,
|
|
140
157
|
context,
|
|
141
158
|
disabled,
|
|
142
|
-
tableMode,
|
|
143
159
|
partOfArray,
|
|
144
|
-
|
|
145
|
-
autoFocus
|
|
160
|
+
minimalistView,
|
|
161
|
+
autoFocus,
|
|
162
|
+
size
|
|
146
163
|
};
|
|
147
164
|
|
|
148
165
|
return <FieldInternal
|
|
@@ -169,12 +186,12 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
169
186
|
property,
|
|
170
187
|
includeDescription,
|
|
171
188
|
underlyingValueHasChanged,
|
|
172
|
-
tableMode,
|
|
173
189
|
partOfArray,
|
|
174
|
-
|
|
190
|
+
minimalistView,
|
|
175
191
|
autoFocus,
|
|
176
192
|
context,
|
|
177
|
-
disabled
|
|
193
|
+
disabled,
|
|
194
|
+
size
|
|
178
195
|
},
|
|
179
196
|
fieldProps
|
|
180
197
|
}:
|
|
@@ -196,7 +213,14 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
196
213
|
(fieldProps.form.submitCount > 0 || property.validation?.unique) &&
|
|
197
214
|
(!Array.isArray(error) || !!error.filter((e: any) => !!e).length);
|
|
198
215
|
|
|
199
|
-
const WrappedComponent: ComponentType<FieldProps<T, any, M>> | null = useWrappedComponent(
|
|
216
|
+
const WrappedComponent: ComponentType<FieldProps<T, any, M>> | null = useWrappedComponent({
|
|
217
|
+
path: context.path,
|
|
218
|
+
collection: context.collection,
|
|
219
|
+
propertyKey: propertyKey,
|
|
220
|
+
property: property,
|
|
221
|
+
Component: Component,
|
|
222
|
+
plugins: plugins
|
|
223
|
+
});
|
|
200
224
|
const UsedComponent: ComponentType<FieldProps<T>> = WrappedComponent ?? Component;
|
|
201
225
|
|
|
202
226
|
const isSubmitting = fieldProps.form.isSubmitting;
|
|
@@ -214,7 +238,6 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
214
238
|
const cmsFieldProps: FieldProps<T, CustomProps, M> = {
|
|
215
239
|
propertyKey,
|
|
216
240
|
value: value as T,
|
|
217
|
-
// initialValue,
|
|
218
241
|
setValue,
|
|
219
242
|
setFieldValue,
|
|
220
243
|
error,
|
|
@@ -225,12 +248,12 @@ function FieldInternal<T extends CMSType, CustomProps, M extends Record<string,
|
|
|
225
248
|
property: property as ResolvedProperty<T>,
|
|
226
249
|
disabled: disabled ?? false,
|
|
227
250
|
underlyingValueHasChanged: underlyingValueHasChanged ?? false,
|
|
228
|
-
tableMode: tableMode ?? false,
|
|
229
251
|
partOfArray: partOfArray ?? false,
|
|
230
|
-
|
|
252
|
+
minimalistView: minimalistView ?? false,
|
|
231
253
|
autoFocus: autoFocus ?? false,
|
|
232
254
|
customProps: customFieldProps,
|
|
233
|
-
context
|
|
255
|
+
context,
|
|
256
|
+
size
|
|
234
257
|
};
|
|
235
258
|
|
|
236
259
|
return (
|
|
@@ -266,13 +289,24 @@ const shouldPropertyReRender = (property: PropertyOrBuilder | ResolvedProperty,
|
|
|
266
289
|
}
|
|
267
290
|
}
|
|
268
291
|
|
|
269
|
-
|
|
270
|
-
path
|
|
271
|
-
collection
|
|
292
|
+
interface UseWrappedComponentParams<T extends CMSType = CMSType, M extends Record<string, any> = any> {
|
|
293
|
+
path?: string,
|
|
294
|
+
collection?: EntityCollection<M>,
|
|
272
295
|
propertyKey: string,
|
|
273
296
|
property: ResolvedProperty<T>,
|
|
274
297
|
Component: ComponentType<FieldProps<T, any, M>>,
|
|
275
298
|
plugins?: FireCMSPlugin[]
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
function useWrappedComponent<T extends CMSType = CMSType, M extends Record<string, any> = any>(
|
|
302
|
+
{
|
|
303
|
+
path,
|
|
304
|
+
collection,
|
|
305
|
+
propertyKey,
|
|
306
|
+
property,
|
|
307
|
+
Component,
|
|
308
|
+
plugins
|
|
309
|
+
}: UseWrappedComponentParams<T, M>
|
|
276
310
|
): ComponentType<FieldProps<T, any, M>> | null {
|
|
277
311
|
|
|
278
312
|
const wrapperRef = useRef<ComponentType<FieldProps<T, any, M>> | null>((() => {
|
|
@@ -68,7 +68,8 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
68
68
|
? (
|
|
69
69
|
<>
|
|
70
70
|
|
|
71
|
-
<Tooltip title={"Copy"}
|
|
71
|
+
<Tooltip title={"Copy"}
|
|
72
|
+
asChild={true}>
|
|
72
73
|
<IconButton onClick={(e) => copy(entity.id)}
|
|
73
74
|
aria-label="copy-id">
|
|
74
75
|
<ContentCopyIcon size={"small"}/>
|
|
@@ -76,7 +77,8 @@ export function CustomIdField<M extends Record<string, any>>({
|
|
|
76
77
|
</Tooltip>
|
|
77
78
|
|
|
78
79
|
{customizationController?.entityLinkBuilder &&
|
|
79
|
-
<Tooltip title={"Open in the console"}
|
|
80
|
+
<Tooltip title={"Open in the console"}
|
|
81
|
+
asChild={true}>
|
|
80
82
|
<IconButton component={"a"}
|
|
81
83
|
href={customizationController.entityLinkBuilder({ entity })}
|
|
82
84
|
rel="noopener noreferrer"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ResolvedProperty } from "../../types";
|
|
1
|
+
import { Property, ResolvedProperty } from "../../types";
|
|
2
2
|
import { IconButton, InfoIcon, Tooltip, Typography } from "@firecms/ui";
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -13,8 +13,8 @@ export function FieldHelperText({
|
|
|
13
13
|
disabled
|
|
14
14
|
}: {
|
|
15
15
|
error?: string,
|
|
16
|
-
showError
|
|
17
|
-
property: ResolvedProperty,
|
|
16
|
+
showError?: boolean,
|
|
17
|
+
property: ResolvedProperty | Property,
|
|
18
18
|
includeDescription?: boolean,
|
|
19
19
|
disabled?: boolean,
|
|
20
20
|
}
|
|
@@ -44,7 +44,7 @@ export function FieldHelperText({
|
|
|
44
44
|
{property.longDescription &&
|
|
45
45
|
<Tooltip title={property.longDescription}
|
|
46
46
|
side="bottom"
|
|
47
|
-
|
|
47
|
+
asChild={true}>
|
|
48
48
|
<IconButton
|
|
49
49
|
size={"small"}
|
|
50
50
|
className="self-start">
|
|
@@ -12,6 +12,7 @@ interface ArrayContainerProps<T> {
|
|
|
12
12
|
includeAddButton?: boolean;
|
|
13
13
|
newDefaultEntry?: T | null;
|
|
14
14
|
setFieldValue: (field: string, value: any, shouldValidate?: boolean | undefined) => void;
|
|
15
|
+
className?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -27,7 +28,8 @@ export function FormikArrayContainer<T>({
|
|
|
27
28
|
onInternalIdAdded,
|
|
28
29
|
includeAddButton,
|
|
29
30
|
newDefaultEntry = null,
|
|
30
|
-
setFieldValue
|
|
31
|
+
setFieldValue,
|
|
32
|
+
className
|
|
31
33
|
}: ArrayContainerProps<T>) {
|
|
32
34
|
|
|
33
35
|
return <ArrayContainer droppableId={name}
|
|
@@ -39,6 +41,7 @@ export function FormikArrayContainer<T>({
|
|
|
39
41
|
onInternalIdAdded={onInternalIdAdded}
|
|
40
42
|
includeAddButton={includeAddButton}
|
|
41
43
|
newDefaultEntry={newDefaultEntry}
|
|
44
|
+
className={className}
|
|
42
45
|
onValueChange={(value) => setFieldValue(name, value)}
|
|
43
46
|
/>;
|
|
44
47
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
2
|
|
|
3
3
|
interface LabelWithIconProps {
|
|
4
4
|
icon: React.ReactNode;
|
|
@@ -12,22 +12,30 @@ interface LabelWithIconProps {
|
|
|
12
12
|
* Render the label of with an icon and the title of a property
|
|
13
13
|
* @group Form custom fields
|
|
14
14
|
*/
|
|
15
|
-
export
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
export const LabelWithIcon = forwardRef<HTMLDivElement, LabelWithIconProps>(
|
|
16
|
+
({
|
|
17
|
+
icon,
|
|
18
|
+
title,
|
|
19
|
+
small,
|
|
20
|
+
className,
|
|
21
|
+
required
|
|
22
|
+
}, ref) => {
|
|
23
|
+
return (
|
|
24
|
+
<div
|
|
25
|
+
ref={ref}
|
|
26
|
+
className={`inline-flex items-center my-0.5 ${small ? "gap-1" : "gap-2"} ${className ?? ""}`}
|
|
27
|
+
>
|
|
28
|
+
{icon}
|
|
29
|
+
<span
|
|
30
|
+
className={`text-start font-medium text-${small ? "base" : "sm"} origin-top-left transform ${
|
|
31
|
+
small ? "translate-x-2 scale-75" : ""
|
|
32
|
+
}`}
|
|
33
|
+
>
|
|
34
|
+
{(title ?? "") + (required ? " *" : "")}
|
|
31
35
|
</span>
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
LabelWithIcon.displayName = "LabelWithIcon";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { LabelWithIcon } from "./LabelWithIcon";
|
|
3
|
+
import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
|
|
4
|
+
|
|
5
|
+
interface LabelWithIconAndTooltip {
|
|
6
|
+
icon: React.ReactNode;
|
|
7
|
+
title?: string;
|
|
8
|
+
small?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
propertyKey: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Render the label of with an icon and the title of a property
|
|
16
|
+
* @group Form custom fields
|
|
17
|
+
*/
|
|
18
|
+
export function LabelWithIconAndTooltip({
|
|
19
|
+
propertyKey,
|
|
20
|
+
className,
|
|
21
|
+
...props
|
|
22
|
+
}: LabelWithIconAndTooltip) {
|
|
23
|
+
return (
|
|
24
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey} className={className}>
|
|
25
|
+
<LabelWithIcon {...props}/>
|
|
26
|
+
</PropertyIdCopyTooltip>
|
|
27
|
+
);
|
|
28
|
+
}
|