@firecms/core 3.0.0 → 3.1.0-canary.02232f4
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 +1 -1
- package/dist/components/AIIcon.d.ts +16 -0
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +7 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +14 -0
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +6 -0
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +5 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +6 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +2 -2
- package/dist/components/EntityCollectionView/Board.d.ts +2 -0
- package/dist/components/EntityCollectionView/BoardColumn.d.ts +42 -0
- package/dist/components/EntityCollectionView/BoardColumnTitle.d.ts +9 -0
- package/dist/components/EntityCollectionView/BoardSortableList.d.ts +14 -0
- package/dist/components/EntityCollectionView/CollectionDataErrorBanner.d.ts +4 -0
- package/dist/components/EntityCollectionView/EntityBoardCard.d.ts +26 -0
- package/dist/components/EntityCollectionView/EntityCard.d.ts +19 -0
- package/dist/components/EntityCollectionView/EntityCollectionBoardView.d.ts +20 -0
- package/dist/components/EntityCollectionView/EntityCollectionCardView.d.ts +31 -0
- package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +2 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +7 -3
- package/dist/components/EntityCollectionView/FiltersDialog.d.ts +14 -0
- package/dist/components/EntityCollectionView/ViewModeToggle.d.ts +44 -0
- package/dist/components/EntityCollectionView/board_types.d.ts +105 -0
- package/dist/components/EntityCollectionView/useBoardDataController.d.ts +60 -0
- package/dist/components/ErrorBoundary.d.ts +4 -2
- package/dist/components/HomePage/DefaultHomePage.d.ts +0 -1
- package/dist/components/LanguageToggle.d.ts +1 -0
- package/dist/components/SelectableTable/SelectableTable.d.ts +5 -1
- package/dist/components/SelectableTable/filters/DateTimeFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +1 -0
- package/dist/components/VirtualTable/VirtualTable.performance.test.d.ts +1 -0
- package/dist/components/VirtualTable/VirtualTableCell.d.ts +6 -0
- package/dist/components/VirtualTable/VirtualTableHeader.d.ts +4 -1
- package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +1 -1
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +17 -1
- package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +1 -0
- package/dist/components/VirtualTable/types.d.ts +3 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/contexts/index.d.ts +10 -0
- package/dist/core/DrawerNavigationGroup.d.ts +45 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/editor/components/SlashCommandMenu.d.ts +6 -0
- package/dist/editor/components/editor-bubble-item.d.ts +8 -0
- package/dist/editor/components/editor-bubble.d.ts +8 -0
- package/dist/editor/components/image-bubble.d.ts +5 -0
- package/dist/editor/components/index.d.ts +16 -0
- package/dist/editor/components/table-bubble.d.ts +5 -0
- package/dist/editor/editor.d.ts +30 -0
- package/dist/editor/extensions/HighlightDecorationExtension.d.ts +24 -0
- package/dist/editor/extensions/Image/index.d.ts +6 -0
- package/dist/editor/extensions/Image.d.ts +6 -0
- package/dist/editor/extensions/TextLoadingDecorationExtension.d.ts +16 -0
- package/dist/editor/extensions/clipboard.d.ts +7 -0
- package/dist/editor/extensions/custom-keymap.d.ts +1 -0
- package/dist/editor/extensions/drag-and-drop.d.ts +9 -0
- package/dist/editor/hooks/useProseMirror.d.ts +13 -0
- package/dist/editor/hooks/useProseMirrorContext.d.ts +9 -0
- package/dist/editor/index.d.ts +2 -0
- package/dist/editor/markdown.d.ts +5 -0
- package/dist/editor/nodeViews/ImageComponent.d.ts +3 -0
- package/dist/editor/nodeViews/ReactNodeView.d.ts +29 -0
- package/dist/editor/nodeViews/TaskItemComponent.d.ts +3 -0
- package/dist/editor/nodeViews/index.d.ts +6 -0
- package/dist/editor/plugins/index.d.ts +2 -0
- package/dist/editor/plugins/inputrules.d.ts +6 -0
- package/dist/editor/plugins/placeholderPlugin.d.ts +3 -0
- package/dist/editor/plugins/slashCommandPlugin.d.ts +12 -0
- package/dist/editor/schema.d.ts +2 -0
- package/dist/editor/selectors/ai-selector.d.ts +0 -0
- package/dist/editor/selectors/color-selector.d.ts +10 -0
- package/dist/editor/selectors/link-selector.d.ts +8 -0
- package/dist/editor/selectors/node-selector.d.ts +15 -0
- package/dist/editor/selectors/text-buttons.d.ts +1 -0
- package/dist/editor/types.d.ts +5 -0
- package/dist/editor/useProseMirror.d.ts +16 -0
- package/dist/editor/utils/prosemirror-utils.d.ts +6 -0
- package/dist/editor/utils/remove_classes.d.ts +1 -0
- package/dist/editor/utils/useDebouncedCallback.d.ts +1 -0
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/LocalChangesMenu.d.ts +2 -2
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +1 -1
- package/dist/form/validation.d.ts +3 -2
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useBreadcrumbsController.d.ts +16 -0
- package/dist/hooks/useBuildNavigationController.d.ts +0 -1
- package/dist/hooks/useCollapsedGroups.d.ts +6 -3
- package/dist/hooks/useTranslation.d.ts +17 -0
- package/dist/i18n/FireCMSi18nProvider.d.ts +33 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.es.js +31028 -16080
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +29955 -15028
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useRestoreScroll.d.ts +1 -1
- package/dist/locales/de.d.ts +2 -0
- package/dist/locales/en.d.ts +10 -0
- package/dist/locales/es.d.ts +10 -0
- package/dist/locales/fr.d.ts +2 -0
- package/dist/locales/hi.d.ts +2 -0
- package/dist/locales/it.d.ts +2 -0
- package/dist/locales/pt.d.ts +7 -0
- package/dist/preview/PropertyPreviewProps.d.ts +5 -0
- package/dist/preview/components/DatePreview.d.ts +13 -3
- package/dist/preview/components/ImagePreview.d.ts +5 -1
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +1 -1
- package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +1 -1
- package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +1 -1
- package/dist/types/analytics.d.ts +1 -1
- package/dist/types/collections.d.ts +88 -2
- package/dist/types/customization_controller.d.ts +2 -1
- package/dist/types/datasource.d.ts +0 -1
- package/dist/types/entities.d.ts +1 -0
- package/dist/types/firecms.d.ts +2 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/navigation.d.ts +2 -2
- package/dist/types/plugins.d.ts +69 -1
- package/dist/types/properties.d.ts +277 -12
- package/dist/types/storage.d.ts +9 -0
- package/dist/types/translations.d.ts +669 -0
- package/dist/util/__tests__/conditions.test.d.ts +1 -0
- package/dist/util/__tests__/objects.test.d.ts +1 -0
- package/dist/util/conditions.d.ts +26 -0
- package/dist/util/entities.d.ts +2 -3
- package/dist/util/index.d.ts +3 -1
- package/dist/util/lazy_eager.d.ts +7 -0
- package/dist/util/objects.d.ts +1 -0
- package/dist/util/property_utils.d.ts +2 -1
- package/dist/util/resolutions.d.ts +3 -3
- package/dist/util/useStorageUploadController.d.ts +11 -2
- package/package.json +52 -12
- package/src/app/Scaffold.tsx +20 -19
- package/src/components/AIIcon.tsx +41 -0
- package/src/components/ArrayContainer.tsx +7 -8
- package/src/components/ClearFilterSortButton.tsx +25 -19
- package/src/components/ConfirmationDialog.tsx +4 -4
- package/src/components/DeleteEntityDialog.tsx +12 -11
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +82 -43
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +130 -79
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +121 -104
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +132 -103
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +6 -3
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +24 -44
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +90 -49
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +3 -2
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +11 -11
- package/src/components/EntityCollectionView/Board.tsx +324 -0
- package/src/components/EntityCollectionView/BoardColumn.tsx +158 -0
- package/src/components/EntityCollectionView/BoardColumnTitle.tsx +45 -0
- package/src/components/EntityCollectionView/BoardSortableList.tsx +174 -0
- package/src/components/EntityCollectionView/CollectionDataErrorBanner.tsx +43 -0
- package/src/components/EntityCollectionView/EntityBoardCard.tsx +212 -0
- package/src/components/EntityCollectionView/EntityCard.tsx +235 -0
- package/src/components/EntityCollectionView/EntityCollectionBoardView.tsx +706 -0
- package/src/components/EntityCollectionView/EntityCollectionCardView.tsx +236 -0
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +531 -209
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +35 -22
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +86 -15
- package/src/components/EntityCollectionView/FiltersDialog.tsx +252 -0
- package/src/components/EntityCollectionView/ViewModeToggle.tsx +202 -0
- package/src/components/EntityCollectionView/board_types.ts +113 -0
- package/src/components/EntityCollectionView/useBoardDataController.tsx +490 -0
- package/src/components/EntityJsonPreview.tsx +2 -1
- package/src/components/EntityPreview.tsx +1 -1
- package/src/components/EntityView.tsx +3 -2
- package/src/components/ErrorBoundary.tsx +27 -15
- package/src/components/ErrorTooltip.tsx +2 -1
- package/src/components/HomePage/DefaultHomePage.tsx +65 -22
- package/src/components/HomePage/HomePageDnD.tsx +59 -42
- package/src/components/HomePage/NavigationCard.tsx +20 -18
- package/src/components/HomePage/NavigationGroup.tsx +20 -17
- package/src/components/HomePage/RenameGroupDialog.tsx +15 -15
- package/src/components/HomePage/SmallNavigationCard.tsx +10 -9
- package/src/components/LanguageToggle.tsx +66 -0
- package/src/components/NotFoundPage.tsx +5 -3
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +12 -17
- package/src/components/ReferenceWidget.tsx +5 -6
- package/src/components/SearchIconsView.tsx +3 -1
- package/src/components/SelectableTable/SelectableTable.tsx +75 -67
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +7 -6
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +50 -40
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +53 -40
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +60 -58
- package/src/components/UnsavedChangesDialog.tsx +6 -6
- package/src/components/UserDisplay.tsx +4 -4
- package/src/components/VirtualTable/VirtualTable.performance.test.tsx +387 -0
- package/src/components/VirtualTable/VirtualTable.tsx +277 -121
- package/src/components/VirtualTable/VirtualTableCell.tsx +18 -2
- package/src/components/VirtualTable/VirtualTableHeader.tsx +76 -64
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +163 -42
- package/src/components/VirtualTable/VirtualTableProps.tsx +21 -2
- package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +3 -0
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +19 -6
- package/src/components/VirtualTable/types.tsx +3 -0
- package/src/components/common/default_entity_actions.tsx +4 -0
- package/src/components/common/useColumnsIds.tsx +95 -3
- package/src/components/common/useDataSourceTableController.tsx +12 -4
- package/src/components/index.tsx +5 -0
- package/src/contexts/BreacrumbsContext.tsx +15 -8
- package/src/contexts/index.ts +10 -0
- package/src/core/DefaultAppBar.tsx +49 -32
- package/src/core/DefaultDrawer.tsx +49 -57
- package/src/core/DrawerNavigationGroup.tsx +120 -0
- package/src/core/DrawerNavigationItem.tsx +4 -3
- package/src/core/EntityEditView.tsx +94 -50
- package/src/core/EntityEditViewFormActions.tsx +24 -17
- package/src/core/EntitySidePanel.tsx +34 -30
- package/src/core/FireCMS.tsx +33 -6
- package/src/core/SideDialogs.tsx +4 -2
- package/src/core/field_configs.tsx +18 -11
- package/src/core/index.tsx +1 -0
- package/src/editor/components/SlashCommandMenu.tsx +516 -0
- package/src/editor/components/editor-bubble-item.tsx +32 -0
- package/src/editor/components/editor-bubble.tsx +118 -0
- package/src/editor/components/image-bubble.tsx +156 -0
- package/src/editor/components/index.ts +14 -0
- package/src/editor/components/table-bubble.tsx +165 -0
- package/src/editor/editor.tsx +455 -0
- package/src/editor/extensions/HighlightDecorationExtension.ts +114 -0
- package/src/editor/extensions/Image/index.ts +133 -0
- package/src/editor/extensions/Image.ts +159 -0
- package/src/editor/extensions/TextLoadingDecorationExtension.tsx +107 -0
- package/src/editor/extensions/clipboard.ts +72 -0
- package/src/editor/extensions/custom-keymap.ts +24 -0
- package/src/editor/extensions/drag-and-drop.tsx +480 -0
- package/src/editor/hooks/useProseMirror.ts +124 -0
- package/src/editor/hooks/useProseMirrorContext.ts +15 -0
- package/src/editor/index.ts +2 -0
- package/src/editor/markdown.ts +172 -0
- package/src/editor/nodeViews/ImageComponent.tsx +20 -0
- package/src/editor/nodeViews/ReactNodeView.tsx +89 -0
- package/src/editor/nodeViews/TaskItemComponent.tsx +29 -0
- package/src/editor/nodeViews/index.ts +35 -0
- package/src/editor/plugins/index.ts +58 -0
- package/src/editor/plugins/inputrules.ts +82 -0
- package/src/editor/plugins/placeholderPlugin.ts +55 -0
- package/src/editor/plugins/slashCommandPlugin.ts +61 -0
- package/src/editor/schema.ts +240 -0
- package/src/editor/selectors/ai-selector.tsx +111 -0
- package/src/editor/selectors/color-selector.tsx +200 -0
- package/src/editor/selectors/link-selector.tsx +118 -0
- package/src/editor/selectors/node-selector.tsx +157 -0
- package/src/editor/selectors/text-buttons.tsx +86 -0
- package/src/editor/types.ts +6 -0
- package/src/editor/useProseMirror.ts +126 -0
- package/src/editor/utils/prosemirror-utils.ts +108 -0
- package/src/editor/utils/remove_classes.ts +17 -0
- package/src/editor/utils/useDebouncedCallback.ts +25 -0
- package/src/form/EntityForm.tsx +150 -75
- package/src/form/EntityFormActions.tsx +19 -12
- package/src/form/PropertyFieldBinding.tsx +68 -51
- package/src/form/components/ErrorFocus.tsx +3 -3
- package/src/form/components/LocalChangesMenu.tsx +19 -19
- package/src/form/components/StorageItemPreview.tsx +5 -3
- package/src/form/components/StorageUploadProgress.tsx +22 -6
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +18 -5
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +22 -10
- package/src/form/field_bindings/BlockFieldBinding.tsx +26 -9
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -17
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +46 -25
- package/src/form/field_bindings/MapFieldBinding.tsx +88 -70
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +93 -52
- package/src/form/field_bindings/MultiSelectFieldBinding.tsx +15 -1
- package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +25 -11
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +25 -11
- package/src/form/field_bindings/RepeatFieldBinding.tsx +21 -6
- package/src/form/field_bindings/SelectFieldBinding.tsx +7 -5
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +110 -92
- package/src/form/field_bindings/SwitchFieldBinding.tsx +31 -14
- package/src/form/field_bindings/TextFieldBinding.tsx +77 -38
- package/src/form/field_bindings/UserSelectFieldBinding.tsx +7 -5
- package/src/form/validation.ts +245 -160
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useBreadcrumbsController.tsx +18 -0
- package/src/hooks/useBuildNavigationController.tsx +91 -41
- package/src/hooks/useCollapsedGroups.ts +18 -9
- package/src/hooks/useTranslation.ts +31 -0
- package/src/hooks/useValidateAuthenticator.tsx +1 -1
- package/src/i18n/FireCMSi18nProvider.tsx +160 -0
- package/src/index.ts +5 -0
- package/src/internal/useBuildDataSource.ts +68 -34
- package/src/internal/useBuildSideDialogsController.tsx +11 -8
- package/src/internal/useBuildSideEntityController.tsx +24 -24
- package/src/internal/useRestoreScroll.tsx +26 -14
- package/src/locales/de.ts +718 -0
- package/src/locales/en.ts +730 -0
- package/src/locales/es.ts +730 -0
- package/src/locales/fr.ts +718 -0
- package/src/locales/hi.ts +718 -0
- package/src/locales/it.ts +718 -0
- package/src/locales/pt.ts +727 -0
- package/src/preview/PropertyPreview.tsx +43 -33
- package/src/preview/PropertyPreviewProps.tsx +6 -0
- package/src/preview/components/DatePreview.tsx +72 -4
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/ImagePreview.tsx +37 -21
- package/src/preview/components/ReferencePreview.tsx +8 -2
- package/src/preview/components/StorageThumbnail.tsx +16 -12
- package/src/preview/components/UrlComponentPreview.tsx +32 -27
- package/src/preview/components/UserPreview.tsx +3 -1
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +9 -7
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +11 -9
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +26 -24
- package/src/preview/property_previews/MapPropertyPreview.tsx +49 -27
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +61 -56
- package/src/routes/CustomCMSRoute.tsx +1 -0
- package/src/routes/FireCMSRoute.tsx +87 -65
- package/src/types/analytics.ts +10 -0
- package/src/types/collections.ts +97 -3
- package/src/types/customization_controller.tsx +2 -1
- package/src/types/datasource.ts +54 -56
- package/src/types/entities.ts +10 -0
- package/src/types/firecms.tsx +2 -1
- package/src/types/index.ts +1 -0
- package/src/types/navigation.ts +2 -2
- package/src/types/plugins.tsx +77 -1
- package/src/types/properties.ts +369 -37
- package/src/types/storage.ts +11 -1
- package/src/types/translations.ts +752 -0
- package/src/util/__tests__/conditions.test.ts +506 -0
- package/src/util/__tests__/objects.test.ts +196 -0
- package/src/util/callbacks.ts +6 -3
- package/src/util/collections.ts +51 -6
- package/src/util/conditions.ts +339 -0
- package/src/util/entities.ts +29 -30
- package/src/util/entity_cache.ts +2 -1
- package/src/util/index.ts +3 -1
- package/src/util/join_collections.ts +10 -8
- package/src/util/lazy_eager.tsx +33 -0
- package/src/util/objects.ts +46 -13
- package/src/util/{references.ts → previews.ts} +16 -2
- package/src/util/property_utils.tsx +37 -11
- package/src/util/resolutions.ts +62 -58
- package/src/util/useStorageUploadController.tsx +34 -30
- /package/dist/util/{references.d.ts → previews.d.ts} +0 -0
|
@@ -113,6 +113,27 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
|
|
|
113
113
|
* It defaults to 100, but you can set it to 50 to have two fields in the same row.
|
|
114
114
|
*/
|
|
115
115
|
widthPercentage?: number;
|
|
116
|
+
/**
|
|
117
|
+
* Declarative conditions for dynamic property behavior using JSON Logic.
|
|
118
|
+
*
|
|
119
|
+
* An alternative to PropertyBuilder functions that can be:
|
|
120
|
+
* - Stored in the database as JSON
|
|
121
|
+
* - Edited via the collection editor UI
|
|
122
|
+
* - Evaluated at runtime like property builders
|
|
123
|
+
*
|
|
124
|
+
* @see PropertyConditions for available condition options
|
|
125
|
+
* @see https://jsonlogic.com/ for JSON Logic syntax
|
|
126
|
+
*/
|
|
127
|
+
conditions?: PropertyConditions;
|
|
128
|
+
/**
|
|
129
|
+
* Set this property to true to provide the UX to explicitly set the value to `null`.
|
|
130
|
+
* Defaults to `false`.
|
|
131
|
+
*/
|
|
132
|
+
nullable?: boolean;
|
|
133
|
+
/**
|
|
134
|
+
* @deprecated Use `nullable` instead.
|
|
135
|
+
*/
|
|
136
|
+
clearable?: boolean;
|
|
116
137
|
}
|
|
117
138
|
/**
|
|
118
139
|
* @group Entity properties
|
|
@@ -136,6 +157,220 @@ export interface PropertyDisabledConfig {
|
|
|
136
157
|
*/
|
|
137
158
|
hidden?: boolean;
|
|
138
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* A JSON Logic rule that gets evaluated at runtime.
|
|
162
|
+
* @see https://jsonlogic.com/
|
|
163
|
+
*
|
|
164
|
+
* Common operators:
|
|
165
|
+
* - Comparison: ==, !=, ===, !==, >, <, >=, <=
|
|
166
|
+
* - Logic: and, or, !, !!
|
|
167
|
+
* - Data access: var, missing, missing_some
|
|
168
|
+
* - Array: in, map, filter, reduce, all, some, none, merge
|
|
169
|
+
* - String: substr, cat
|
|
170
|
+
* - Numeric: +, -, *, /, %, min, max
|
|
171
|
+
*
|
|
172
|
+
* Custom operators:
|
|
173
|
+
* - hasRole(roleId) - check if user has role by ID
|
|
174
|
+
* - hasAnyRole([roleIds]) - check if user has any of the roles
|
|
175
|
+
* - isToday(timestamp) - check if timestamp is today
|
|
176
|
+
* - isPast(timestamp) - check if timestamp is in the past
|
|
177
|
+
* - isFuture(timestamp) - check if timestamp is in the future
|
|
178
|
+
*
|
|
179
|
+
* @group Entity properties
|
|
180
|
+
*/
|
|
181
|
+
export type JsonLogicRule = Record<string, any>;
|
|
182
|
+
/**
|
|
183
|
+
* Conditions for individual enum values within a property.
|
|
184
|
+
* @group Entity properties
|
|
185
|
+
*/
|
|
186
|
+
export interface EnumValueConditions {
|
|
187
|
+
/**
|
|
188
|
+
* Disable this enum option when condition is true.
|
|
189
|
+
* The option appears grayed out and cannot be selected.
|
|
190
|
+
*/
|
|
191
|
+
disabled?: JsonLogicRule;
|
|
192
|
+
/**
|
|
193
|
+
* Message explaining why this option is disabled.
|
|
194
|
+
*/
|
|
195
|
+
disabledMessage?: string;
|
|
196
|
+
/**
|
|
197
|
+
* Completely hide this enum option when condition is true.
|
|
198
|
+
* The option is removed from the dropdown/list.
|
|
199
|
+
*/
|
|
200
|
+
hidden?: JsonLogicRule;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Declarative conditions for dynamic property behavior.
|
|
204
|
+
* All conditions are JSON Logic rules evaluated against ConditionContext.
|
|
205
|
+
*
|
|
206
|
+
* An alternative to PropertyBuilder functions that can be:
|
|
207
|
+
* - Stored in the database as JSON
|
|
208
|
+
* - Edited via the collection editor UI
|
|
209
|
+
* - Evaluated at runtime like property builders
|
|
210
|
+
*
|
|
211
|
+
* @see https://jsonlogic.com/ for JSON Logic syntax
|
|
212
|
+
* @group Entity properties
|
|
213
|
+
*/
|
|
214
|
+
export interface PropertyConditions {
|
|
215
|
+
/**
|
|
216
|
+
* Disable the field when this condition evaluates to true.
|
|
217
|
+
* The field becomes non-editable but still visible (unless also hidden).
|
|
218
|
+
*
|
|
219
|
+
* @example Disable when another field has a specific value
|
|
220
|
+
* ```json
|
|
221
|
+
* { "==": [{ "var": "values.status" }, "archived"] }
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
disabled?: JsonLogicRule;
|
|
225
|
+
/**
|
|
226
|
+
* Message to display when the field is disabled by a condition.
|
|
227
|
+
*/
|
|
228
|
+
disabledMessage?: string;
|
|
229
|
+
/**
|
|
230
|
+
* Clear the field's value when it becomes disabled.
|
|
231
|
+
* @default false
|
|
232
|
+
*/
|
|
233
|
+
clearOnDisabled?: boolean;
|
|
234
|
+
/**
|
|
235
|
+
* Hide the field completely when this condition evaluates to true.
|
|
236
|
+
* The field is removed from the form (not just visually hidden).
|
|
237
|
+
*/
|
|
238
|
+
hidden?: JsonLogicRule;
|
|
239
|
+
/**
|
|
240
|
+
* Make the field read-only when this condition evaluates to true.
|
|
241
|
+
* Renders as a preview instead of an input.
|
|
242
|
+
*/
|
|
243
|
+
readOnly?: JsonLogicRule;
|
|
244
|
+
/**
|
|
245
|
+
* Make the field required when this condition evaluates to true.
|
|
246
|
+
* Overrides the static `validation.required` setting.
|
|
247
|
+
*/
|
|
248
|
+
required?: JsonLogicRule;
|
|
249
|
+
/**
|
|
250
|
+
* Custom message when conditional required validation fails.
|
|
251
|
+
*/
|
|
252
|
+
requiredMessage?: string;
|
|
253
|
+
/**
|
|
254
|
+
* Dynamic minimum value for number/string length.
|
|
255
|
+
* Should evaluate to a number.
|
|
256
|
+
*/
|
|
257
|
+
min?: JsonLogicRule;
|
|
258
|
+
/**
|
|
259
|
+
* Dynamic maximum value for number/string length.
|
|
260
|
+
* Should evaluate to a number.
|
|
261
|
+
*/
|
|
262
|
+
max?: JsonLogicRule;
|
|
263
|
+
/**
|
|
264
|
+
* Dynamic default value for new entities.
|
|
265
|
+
* Should evaluate to a value of the appropriate type for the field.
|
|
266
|
+
* Only applied when entityId is empty (new entity).
|
|
267
|
+
*/
|
|
268
|
+
defaultValue?: JsonLogicRule;
|
|
269
|
+
/**
|
|
270
|
+
* Conditions for individual enum values.
|
|
271
|
+
* Keys are the enum value IDs, values are condition configs.
|
|
272
|
+
*
|
|
273
|
+
* @example Disable certain enum options based on user role
|
|
274
|
+
* ```json
|
|
275
|
+
* {
|
|
276
|
+
* "admin": {
|
|
277
|
+
* "disabled": { "!": { "hasRole": "admin" } },
|
|
278
|
+
* "disabledMessage": "Admin option requires admin role"
|
|
279
|
+
* }
|
|
280
|
+
* }
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
enumConditions?: Record<string | number, EnumValueConditions>;
|
|
284
|
+
/**
|
|
285
|
+
* Filter which enum values are available.
|
|
286
|
+
* Should evaluate to an array of allowed enum value IDs.
|
|
287
|
+
*/
|
|
288
|
+
allowedEnumValues?: JsonLogicRule;
|
|
289
|
+
/**
|
|
290
|
+
* Exclude specific enum values.
|
|
291
|
+
* Should evaluate to an array of enum value IDs to exclude.
|
|
292
|
+
*/
|
|
293
|
+
excludedEnumValues?: JsonLogicRule;
|
|
294
|
+
/**
|
|
295
|
+
* Dynamic path for reference properties.
|
|
296
|
+
* Should evaluate to a collection path string.
|
|
297
|
+
*/
|
|
298
|
+
referencePath?: JsonLogicRule;
|
|
299
|
+
/**
|
|
300
|
+
* Dynamic filter for reference selection.
|
|
301
|
+
* Should evaluate to a FilterValues object.
|
|
302
|
+
*/
|
|
303
|
+
referenceFilter?: JsonLogicRule;
|
|
304
|
+
/**
|
|
305
|
+
* Can elements be added to the array?
|
|
306
|
+
*/
|
|
307
|
+
canAddElements?: JsonLogicRule;
|
|
308
|
+
/**
|
|
309
|
+
* Can elements be reordered in the array?
|
|
310
|
+
*/
|
|
311
|
+
sortable?: JsonLogicRule;
|
|
312
|
+
/**
|
|
313
|
+
* Dynamic accepted file types.
|
|
314
|
+
* Should evaluate to an array of MIME types.
|
|
315
|
+
*/
|
|
316
|
+
acceptedFiles?: JsonLogicRule;
|
|
317
|
+
/**
|
|
318
|
+
* Dynamic maximum file size in bytes.
|
|
319
|
+
* Should evaluate to a number.
|
|
320
|
+
*/
|
|
321
|
+
maxFileSize?: JsonLogicRule;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Context available during JSON Logic condition evaluation.
|
|
325
|
+
* Mirrors PropertyBuilderProps but adapted for JSON serialization.
|
|
326
|
+
* @group Entity properties
|
|
327
|
+
*/
|
|
328
|
+
export interface ConditionContext {
|
|
329
|
+
/**
|
|
330
|
+
* Current form/entity values.
|
|
331
|
+
* Date values are converted to Unix timestamps (milliseconds).
|
|
332
|
+
*/
|
|
333
|
+
values: Record<string, any>;
|
|
334
|
+
/**
|
|
335
|
+
* Previous values before the current edit session.
|
|
336
|
+
*/
|
|
337
|
+
previousValues: Record<string, any>;
|
|
338
|
+
/**
|
|
339
|
+
* Current value of this property specifically.
|
|
340
|
+
*/
|
|
341
|
+
propertyValue: any;
|
|
342
|
+
/**
|
|
343
|
+
* Collection path (e.g., "products", "users/uid123/orders")
|
|
344
|
+
*/
|
|
345
|
+
path: string;
|
|
346
|
+
/**
|
|
347
|
+
* Entity ID. Undefined for new entities.
|
|
348
|
+
*/
|
|
349
|
+
entityId?: string;
|
|
350
|
+
/**
|
|
351
|
+
* Whether this is a new entity being created.
|
|
352
|
+
*/
|
|
353
|
+
isNew: boolean;
|
|
354
|
+
/**
|
|
355
|
+
* Index of this property (only for array items).
|
|
356
|
+
*/
|
|
357
|
+
index?: number;
|
|
358
|
+
/**
|
|
359
|
+
* Current authenticated user information.
|
|
360
|
+
*/
|
|
361
|
+
user: {
|
|
362
|
+
uid: string;
|
|
363
|
+
email: string | null;
|
|
364
|
+
displayName: string | null;
|
|
365
|
+
photoURL: string | null;
|
|
366
|
+
/** Role IDs the user has (extracted from Role[].id) */
|
|
367
|
+
roles: string[];
|
|
368
|
+
};
|
|
369
|
+
/**
|
|
370
|
+
* Current timestamp as Unix milliseconds.
|
|
371
|
+
*/
|
|
372
|
+
now: number;
|
|
373
|
+
}
|
|
139
374
|
/**
|
|
140
375
|
* @group Entity properties
|
|
141
376
|
*/
|
|
@@ -247,10 +482,6 @@ export interface NumberProperty extends BaseProperty<number> {
|
|
|
247
482
|
* Rules for validating this property
|
|
248
483
|
*/
|
|
249
484
|
validation?: NumberPropertyValidationSchema;
|
|
250
|
-
/**
|
|
251
|
-
* Add an icon to clear the value and set it to `null`. Defaults to `false`
|
|
252
|
-
*/
|
|
253
|
-
clearable?: boolean;
|
|
254
485
|
}
|
|
255
486
|
/**
|
|
256
487
|
* @group Entity properties
|
|
@@ -262,6 +493,25 @@ export interface BooleanProperty extends BaseProperty<boolean> {
|
|
|
262
493
|
*/
|
|
263
494
|
validation?: PropertyValidationSchema;
|
|
264
495
|
}
|
|
496
|
+
/**
|
|
497
|
+
* Configuration options for the markdown editor.
|
|
498
|
+
* @group Entity properties
|
|
499
|
+
*/
|
|
500
|
+
export interface MarkdownConfig {
|
|
501
|
+
/**
|
|
502
|
+
* Allow HTML input/output. When set to false, HTML tags in pasted content
|
|
503
|
+
* will be stripped and only markdown-compatible formatting will be preserved.
|
|
504
|
+
* Defaults to true for backwards compatibility.
|
|
505
|
+
*/
|
|
506
|
+
html?: boolean;
|
|
507
|
+
/**
|
|
508
|
+
* Convert pasted text to markdown format. When enabled, rich text pasted
|
|
509
|
+
* from external sources (like Google Docs or Word) will be converted to
|
|
510
|
+
* clean markdown instead of preserving HTML styles.
|
|
511
|
+
* Defaults to false.
|
|
512
|
+
*/
|
|
513
|
+
transformPastedText?: boolean;
|
|
514
|
+
}
|
|
265
515
|
/**
|
|
266
516
|
* @group Entity properties
|
|
267
517
|
*/
|
|
@@ -275,10 +525,13 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
275
525
|
multiline?: boolean;
|
|
276
526
|
/**
|
|
277
527
|
* Should this string property be displayed as a markdown field. If true,
|
|
278
|
-
* the field is rendered as a text
|
|
528
|
+
* the field is rendered as a text editor that supports markdown highlight
|
|
279
529
|
* syntax. It also includes a preview of the result.
|
|
530
|
+
*
|
|
531
|
+
* You can also pass a configuration object to customize the markdown editor
|
|
532
|
+
* behavior, particularly how HTML content is handled during paste operations.
|
|
280
533
|
*/
|
|
281
|
-
markdown?: boolean;
|
|
534
|
+
markdown?: boolean | MarkdownConfig;
|
|
282
535
|
/**
|
|
283
536
|
* You can use the enum values providing a map of possible
|
|
284
537
|
* exclusive values the property can take, mapped to the label that it is
|
|
@@ -321,10 +574,6 @@ export interface StringProperty extends BaseProperty<string> {
|
|
|
321
574
|
* Rules for validating this property
|
|
322
575
|
*/
|
|
323
576
|
validation?: StringPropertyValidationSchema;
|
|
324
|
-
/**
|
|
325
|
-
* Add an icon to clear the value and set it to `null`. Defaults to `false`
|
|
326
|
-
*/
|
|
327
|
-
clearable?: boolean;
|
|
328
577
|
/**
|
|
329
578
|
* You can use this property (a string) to behave as a reference to another
|
|
330
579
|
* collection. The stored value is the ID of the entity in the
|
|
@@ -486,6 +735,13 @@ export interface DateProperty extends BaseProperty<Date> {
|
|
|
486
735
|
* Add an icon to clear the value and set it to `null`. Defaults to `false`
|
|
487
736
|
*/
|
|
488
737
|
clearable?: boolean;
|
|
738
|
+
/**
|
|
739
|
+
* IANA timezone string (e.g., "America/New_York", "Europe/London").
|
|
740
|
+
* Used to display and input dates in the specified timezone.
|
|
741
|
+
* The value stored will always be in UTC.
|
|
742
|
+
* If not provided, uses the user's local timezone.
|
|
743
|
+
*/
|
|
744
|
+
timezone?: string;
|
|
489
745
|
}
|
|
490
746
|
/**
|
|
491
747
|
* @group Entity properties
|
|
@@ -665,6 +921,15 @@ export type StorageConfig = {
|
|
|
665
921
|
* - `{path}` - Path of this entity
|
|
666
922
|
*/
|
|
667
923
|
storagePath: string | ((context: UploadedFileContext) => string);
|
|
924
|
+
/**
|
|
925
|
+
* When set to true, this flag indicates that the bucket name will be
|
|
926
|
+
* included in the saved storage path.
|
|
927
|
+
*
|
|
928
|
+
* E.g. `gs://my-bucket/path/to/file.png` instead of just `path/to/file.png`
|
|
929
|
+
*
|
|
930
|
+
* Defaults to false.
|
|
931
|
+
*/
|
|
932
|
+
includeBucketUrl?: boolean;
|
|
668
933
|
/**
|
|
669
934
|
* When set to true, this flag indicates that the download URL of the file
|
|
670
935
|
* will be saved in the datasource, instead of the storage path.
|
|
@@ -755,7 +1020,7 @@ export interface ImageResize {
|
|
|
755
1020
|
* - `contain`: Scale down to fit within bounds, preserving aspect ratio (default)
|
|
756
1021
|
* - `cover`: Scale to fill bounds, preserving aspect ratio (may crop)
|
|
757
1022
|
*/
|
|
758
|
-
mode?:
|
|
1023
|
+
mode?: "contain" | "cover";
|
|
759
1024
|
/**
|
|
760
1025
|
* Output format for the resized image.
|
|
761
1026
|
* - `original`: Keep the original format (default)
|
|
@@ -763,7 +1028,7 @@ export interface ImageResize {
|
|
|
763
1028
|
* - `png`: Convert to PNG
|
|
764
1029
|
* - `webp`: Convert to WebP
|
|
765
1030
|
*/
|
|
766
|
-
format?:
|
|
1031
|
+
format?: "original" | "jpeg" | "png" | "webp";
|
|
767
1032
|
/**
|
|
768
1033
|
* Quality for lossy formats (JPEG, WebP). Number between 0 and 100.
|
|
769
1034
|
* Higher is better quality but larger file size. Defaults to 80.
|
package/dist/types/storage.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface UploadFileProps {
|
|
|
7
7
|
path?: string;
|
|
8
8
|
metadata?: any;
|
|
9
9
|
bucket?: string;
|
|
10
|
+
onProgress?: (progress: number) => void;
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* @group Models
|
|
@@ -20,6 +21,14 @@ export interface UploadFileResult {
|
|
|
20
21
|
* Bucket where the file was uploaded
|
|
21
22
|
*/
|
|
22
23
|
bucket: string;
|
|
24
|
+
/**
|
|
25
|
+
* Fully qualified storage URL for the uploaded file.
|
|
26
|
+
*
|
|
27
|
+
* For example: `gs://my-bucket/path/to/file.png`.
|
|
28
|
+
*
|
|
29
|
+
* This is optional for backwards compatibility.
|
|
30
|
+
*/
|
|
31
|
+
storageUrl?: string;
|
|
23
32
|
}
|
|
24
33
|
/**
|
|
25
34
|
* @group Models
|