@firecms/core 3.0.1 → 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/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/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 +30146 -15178
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +30032 -15085
- 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/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 +268 -12
- package/dist/types/storage.d.ts +1 -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 +10 -1
- package/package.json +51 -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/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 +1 -0
- package/src/components/VirtualTable/VirtualTable.tsx +275 -119
- 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 +149 -67
- 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 +13 -13
- package/src/form/components/StorageItemPreview.tsx +5 -3
- package/src/form/components/StorageUploadProgress.tsx +18 -3
- 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 +2 -1
- 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/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 +359 -37
- package/src/types/storage.ts +2 -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 +23 -29
- /package/dist/util/{references.d.ts → previews.d.ts} +0 -0
|
@@ -5,6 +5,7 @@ import { Badge, Checkbox, cls, IconButton, Menu, MenuItem, MoreVertIcon, Skeleto
|
|
|
5
5
|
import { useFireCMSContext, useLargeLayout } from "../../hooks";
|
|
6
6
|
import { getEntityFromCache } from "../../util/entity_cache";
|
|
7
7
|
import { getLocalChangesBackup } from "../../util";
|
|
8
|
+
import { getChanges } from "../../form/EntityForm";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
*
|
|
@@ -20,41 +21,52 @@ import { getLocalChangesBackup } from "../../util";
|
|
|
20
21
|
* @group Collection components
|
|
21
22
|
*/
|
|
22
23
|
export const EntityCollectionRowActions = function EntityCollectionRowActions({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
24
|
+
entity,
|
|
25
|
+
collection,
|
|
26
|
+
fullPath,
|
|
27
|
+
fullIdPath,
|
|
28
|
+
width,
|
|
29
|
+
frozen,
|
|
30
|
+
isSelected,
|
|
31
|
+
selectionEnabled,
|
|
32
|
+
size,
|
|
33
|
+
highlightEntity,
|
|
34
|
+
onCollectionChange,
|
|
35
|
+
unhighlightEntity,
|
|
36
|
+
actions = [],
|
|
37
|
+
hideId,
|
|
38
|
+
selectionController,
|
|
39
|
+
openEntityMode,
|
|
40
|
+
sortableNodeRef,
|
|
41
|
+
sortableStyle,
|
|
42
|
+
sortableAttributes,
|
|
43
|
+
isDragging,
|
|
44
|
+
isDraggable
|
|
45
|
+
}:
|
|
46
|
+
{
|
|
47
|
+
entity: Entity<any>,
|
|
48
|
+
collection?: EntityCollection<any>,
|
|
49
|
+
fullPath?: string,
|
|
50
|
+
fullIdPath?: string,
|
|
51
|
+
width: number,
|
|
52
|
+
frozen?: boolean,
|
|
53
|
+
size: CollectionSize,
|
|
54
|
+
isSelected?: boolean,
|
|
55
|
+
selectionEnabled?: boolean,
|
|
56
|
+
actions?: EntityAction[],
|
|
57
|
+
hideId?: boolean,
|
|
58
|
+
onCollectionChange?: () => void,
|
|
59
|
+
selectionController?: SelectionController;
|
|
60
|
+
highlightEntity?: (entity: Entity<any>) => void;
|
|
61
|
+
unhighlightEntity?: (entity: Entity<any>) => void;
|
|
62
|
+
openEntityMode: "side_panel" | "full_screen";
|
|
63
|
+
// Sortable props for dnd-kit integration
|
|
64
|
+
sortableNodeRef?: (node: HTMLElement | null) => void;
|
|
65
|
+
sortableStyle?: React.CSSProperties;
|
|
66
|
+
sortableAttributes?: Record<string, any>;
|
|
67
|
+
isDragging?: boolean;
|
|
68
|
+
isDraggable?: boolean;
|
|
69
|
+
}) {
|
|
58
70
|
|
|
59
71
|
const largeLayout = useLargeLayout();
|
|
60
72
|
|
|
@@ -70,12 +82,18 @@ export const EntityCollectionRowActions = function EntityCollectionRowActions({
|
|
|
70
82
|
const collapsedActions = actions.filter(a => a.collapsed || a.collapsed === undefined);
|
|
71
83
|
const uncollapsedActions = actions.filter(a => a.collapsed === false);
|
|
72
84
|
const enableLocalChangesBackup = collection ? getLocalChangesBackup(collection) : false;
|
|
73
|
-
const
|
|
85
|
+
const cachedData = enableLocalChangesBackup ? getEntityFromCache(fullPath + "/" + entity.id) : undefined;
|
|
86
|
+
const hasDraft = (() => {
|
|
87
|
+
if (!cachedData || typeof cachedData !== "object" || Object.keys(cachedData).length === 0) return false;
|
|
88
|
+
const realChanges = getChanges(cachedData as any, (entity?.values ?? {}) as any);
|
|
89
|
+
return Object.keys(realChanges).length > 0;
|
|
90
|
+
})();
|
|
74
91
|
const iconSize = largeLayout && (size === "m" || size === "l" || size == "xl") ? "medium" : "small";
|
|
75
|
-
|
|
92
|
+
|
|
93
|
+
const content = (
|
|
76
94
|
<div
|
|
77
95
|
className={cls(
|
|
78
|
-
"h-full flex items-center justify-center flex-col bg-surface-50 dark:bg-surface-900 bg-opacity-90 dark:bg-opacity-90 z-10",
|
|
96
|
+
"h-full flex items-center justify-center flex-col bg-surface-50 dark:bg-surface-900 bg-opacity-90 bg-surface-50/90 dark:bg-opacity-90 dark:bg-surface-900/90 z-10 shrink-0",
|
|
79
97
|
frozen ? "sticky left-0" : ""
|
|
80
98
|
)}
|
|
81
99
|
onClick={useCallback((event: any) => {
|
|
@@ -89,7 +107,7 @@ export const EntityCollectionRowActions = function EntityCollectionRowActions({
|
|
|
89
107
|
}}>
|
|
90
108
|
|
|
91
109
|
{(hasActions || selectionEnabled) &&
|
|
92
|
-
<div className="w-
|
|
110
|
+
<div className="w-full flex justify-center">
|
|
93
111
|
|
|
94
112
|
{uncollapsedActions.map((action, index) => {
|
|
95
113
|
const isEditAction = action.key === "edit";
|
|
@@ -124,8 +142,8 @@ export const EntityCollectionRowActions = function EntityCollectionRowActions({
|
|
|
124
142
|
}
|
|
125
143
|
return (
|
|
126
144
|
<Tooltip key={index}
|
|
127
|
-
|
|
128
|
-
|
|
145
|
+
title={tooltip}
|
|
146
|
+
asChild={true}>
|
|
129
147
|
{iconButton}
|
|
130
148
|
</Tooltip>
|
|
131
149
|
);
|
|
@@ -135,7 +153,7 @@ export const EntityCollectionRowActions = function EntityCollectionRowActions({
|
|
|
135
153
|
<Menu
|
|
136
154
|
trigger={<IconButton
|
|
137
155
|
size={iconSize}>
|
|
138
|
-
<MoreVertIcon/>
|
|
156
|
+
<MoreVertIcon />
|
|
139
157
|
</IconButton>}>
|
|
140
158
|
{collapsedActions.map((action, index) => (
|
|
141
159
|
<MenuItem
|
|
@@ -183,7 +201,7 @@ export const EntityCollectionRowActions = function EntityCollectionRowActions({
|
|
|
183
201
|
<span className="min-w-0 truncate text-center">
|
|
184
202
|
{entity
|
|
185
203
|
? entity.id
|
|
186
|
-
: <Skeleton/>
|
|
204
|
+
: <Skeleton />
|
|
187
205
|
}
|
|
188
206
|
</span>
|
|
189
207
|
</div>
|
|
@@ -192,4 +210,25 @@ export const EntityCollectionRowActions = function EntityCollectionRowActions({
|
|
|
192
210
|
</div>
|
|
193
211
|
);
|
|
194
212
|
|
|
213
|
+
// Wrap with sortable outer div when sortable props are provided
|
|
214
|
+
// Remove tabIndex from attributes to avoid capturing focus before cell content
|
|
215
|
+
if (sortableNodeRef) {
|
|
216
|
+
const { tabIndex: _tabIndex, ...sortableAttrsWithoutTabIndex } = sortableAttributes ?? {};
|
|
217
|
+
return (
|
|
218
|
+
<div
|
|
219
|
+
ref={sortableNodeRef}
|
|
220
|
+
style={sortableStyle}
|
|
221
|
+
className={cls(
|
|
222
|
+
"flex-shrink-0",
|
|
223
|
+
frozen && "sticky left-0 z-10 bg-white dark:bg-surface-950"
|
|
224
|
+
)}
|
|
225
|
+
{...sortableAttrsWithoutTabIndex}
|
|
226
|
+
>
|
|
227
|
+
{content}
|
|
228
|
+
</div>
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return content;
|
|
233
|
+
|
|
195
234
|
};
|
|
@@ -42,45 +42,48 @@ import { getRowHeight } from "../common/table_height";
|
|
|
42
42
|
* @group Components
|
|
43
43
|
*/
|
|
44
44
|
export const EntityCollectionTable = function EntityCollectionTable<M extends Record<string, any> = any, USER extends User = any>
|
|
45
|
-
({
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
45
|
+
({
|
|
46
|
+
className,
|
|
47
|
+
style,
|
|
48
|
+
forceFilter,
|
|
49
|
+
actionsStart,
|
|
50
|
+
actions,
|
|
51
|
+
viewModeToggle,
|
|
52
|
+
title,
|
|
53
|
+
tableRowActionsBuilder,
|
|
54
|
+
uniqueFieldValidator,
|
|
55
|
+
getPropertyFor,
|
|
56
|
+
onValueChange,
|
|
57
|
+
selectionController,
|
|
58
|
+
highlightedEntities,
|
|
59
|
+
onEntityClick,
|
|
60
|
+
onColumnResize,
|
|
61
|
+
initialScroll,
|
|
62
|
+
onScroll,
|
|
63
|
+
onSizeChanged,
|
|
64
|
+
textSearchEnabled = false,
|
|
65
|
+
hoverRow = true,
|
|
66
|
+
inlineEditing = false,
|
|
67
|
+
additionalFields,
|
|
68
|
+
displayedColumnIds,
|
|
69
|
+
defaultSize,
|
|
70
|
+
properties,
|
|
71
|
+
tableController,
|
|
72
|
+
filterable = true,
|
|
73
|
+
sortable = true,
|
|
74
|
+
endAdornment,
|
|
75
|
+
AddColumnComponent,
|
|
76
|
+
AdditionalHeaderWidget,
|
|
77
|
+
additionalIDHeaderWidget,
|
|
78
|
+
emptyComponent,
|
|
79
|
+
getIdColumnWidth,
|
|
80
|
+
onTextSearchClick,
|
|
81
|
+
textSearchLoading,
|
|
82
|
+
enablePopupIcon,
|
|
83
|
+
openEntityMode = "side_panel",
|
|
84
|
+
onColumnsOrderChange,
|
|
85
|
+
hideToolbar = false
|
|
86
|
+
}: EntityCollectionTableProps<M>) {
|
|
84
87
|
|
|
85
88
|
const ref = useRef<HTMLDivElement>(null);
|
|
86
89
|
|
|
@@ -91,6 +94,13 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
91
94
|
|
|
92
95
|
const [size, setSize] = React.useState<CollectionSize>(defaultSize ?? "m");
|
|
93
96
|
|
|
97
|
+
// Sync internal size with defaultSize prop when it changes
|
|
98
|
+
React.useEffect(() => {
|
|
99
|
+
if (defaultSize) {
|
|
100
|
+
setSize(defaultSize);
|
|
101
|
+
}
|
|
102
|
+
}, [defaultSize]);
|
|
103
|
+
|
|
94
104
|
const updateSize = useCallback((size: CollectionSize) => {
|
|
95
105
|
if (onSizeChanged)
|
|
96
106
|
onSizeChanged(size);
|
|
@@ -110,11 +120,17 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
110
120
|
const customFieldValidator: CustomFieldValidator | undefined = uniqueFieldValidator;
|
|
111
121
|
|
|
112
122
|
const propertyCellRenderer = ({
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
123
|
+
column,
|
|
124
|
+
columnIndex,
|
|
125
|
+
rowData,
|
|
126
|
+
rowIndex,
|
|
127
|
+
sortableNodeRef,
|
|
128
|
+
sortableStyle,
|
|
129
|
+
sortableAttributes,
|
|
130
|
+
isDragging,
|
|
131
|
+
isDraggable,
|
|
132
|
+
frozen
|
|
133
|
+
}: CellRendererParams<any>) => {
|
|
118
134
|
|
|
119
135
|
const entity: Entity<M> = rowData;
|
|
120
136
|
|
|
@@ -150,7 +166,13 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
150
166
|
entity={entity}
|
|
151
167
|
disabled={disabled}
|
|
152
168
|
enablePopupIcon={enablePopupIcon}
|
|
153
|
-
path={entity.path}
|
|
169
|
+
path={entity.path}
|
|
170
|
+
sortableNodeRef={sortableNodeRef}
|
|
171
|
+
sortableStyle={sortableStyle}
|
|
172
|
+
sortableAttributes={sortableAttributes}
|
|
173
|
+
isDragging={isDragging}
|
|
174
|
+
isDraggable={isDraggable}
|
|
175
|
+
frozen={frozen} />
|
|
154
176
|
: renderSkeletonText()
|
|
155
177
|
}
|
|
156
178
|
</ErrorBoundary>);
|
|
@@ -158,10 +180,16 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
158
180
|
};
|
|
159
181
|
|
|
160
182
|
const additionalCellRenderer = useCallback(({
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
183
|
+
column,
|
|
184
|
+
rowData,
|
|
185
|
+
width,
|
|
186
|
+
sortableNodeRef,
|
|
187
|
+
sortableStyle,
|
|
188
|
+
sortableAttributes,
|
|
189
|
+
isDragging,
|
|
190
|
+
isDraggable,
|
|
191
|
+
frozen
|
|
192
|
+
}: CellRendererParams<any>) => {
|
|
165
193
|
|
|
166
194
|
const entity: Entity<M> = rowData;
|
|
167
195
|
|
|
@@ -178,7 +206,7 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
178
206
|
}
|
|
179
207
|
|
|
180
208
|
const child: React.ReactNode = Builder
|
|
181
|
-
? <Builder entity={entity} context={context}/>
|
|
209
|
+
? <Builder entity={entity} context={context} />
|
|
182
210
|
: <>
|
|
183
211
|
{additionalField.value?.({
|
|
184
212
|
entity,
|
|
@@ -198,6 +226,12 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
198
226
|
allowScroll={false}
|
|
199
227
|
showExpandIcon={false}
|
|
200
228
|
disabledTooltip={"This column can't be edited directly"}
|
|
229
|
+
sortableNodeRef={sortableNodeRef}
|
|
230
|
+
sortableStyle={sortableStyle}
|
|
231
|
+
sortableAttributes={sortableAttributes}
|
|
232
|
+
isDragging={isDragging}
|
|
233
|
+
isDraggable={isDraggable}
|
|
234
|
+
frozen={frozen}
|
|
201
235
|
>
|
|
202
236
|
<ErrorBoundary>
|
|
203
237
|
{child}
|
|
@@ -215,8 +249,14 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
215
249
|
AdditionalHeaderWidget
|
|
216
250
|
});
|
|
217
251
|
|
|
252
|
+
// Get keys from property columns to filter out duplicate additional fields
|
|
253
|
+
const propertyColumnKeys = new Set(columnsResult.map(col => col.key));
|
|
254
|
+
|
|
218
255
|
const additionalTableColumns: VirtualTableColumn[] = additionalFields
|
|
219
|
-
|
|
256
|
+
// Filter out additional fields whose key already exists in property columns
|
|
257
|
+
? additionalFields
|
|
258
|
+
.filter((additionalField) => !propertyColumnKeys.has(additionalField.key))
|
|
259
|
+
.map((additionalField) =>
|
|
220
260
|
({
|
|
221
261
|
key: additionalField.key,
|
|
222
262
|
align: "left",
|
|
@@ -265,11 +305,16 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
265
305
|
});
|
|
266
306
|
else
|
|
267
307
|
return <EntityCollectionRowActions entity={props.rowData}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
308
|
+
width={column.width}
|
|
309
|
+
frozen={column.frozen}
|
|
310
|
+
isSelected={false}
|
|
311
|
+
size={size}
|
|
312
|
+
openEntityMode={openEntityMode}
|
|
313
|
+
sortableNodeRef={props.sortableNodeRef}
|
|
314
|
+
sortableStyle={props.sortableStyle}
|
|
315
|
+
sortableAttributes={props.sortableAttributes}
|
|
316
|
+
isDragging={props.isDragging}
|
|
317
|
+
isDraggable={props.isDraggable} />;
|
|
273
318
|
} else if (additionalFieldsMap[columnKey]) {
|
|
274
319
|
return additionalCellRenderer(props);
|
|
275
320
|
} else if (props.columnIndex < columns.length + 1) {
|
|
@@ -286,8 +331,14 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
286
331
|
value={null}
|
|
287
332
|
align={"left"}
|
|
288
333
|
fullHeight={false}
|
|
289
|
-
disabled={true}
|
|
290
|
-
|
|
334
|
+
disabled={true}
|
|
335
|
+
sortableNodeRef={props.sortableNodeRef}
|
|
336
|
+
sortableStyle={props.sortableStyle}
|
|
337
|
+
sortableAttributes={props.sortableAttributes}
|
|
338
|
+
isDragging={props.isDragging}
|
|
339
|
+
isDraggable={props.isDraggable}
|
|
340
|
+
frozen={props.frozen}>
|
|
341
|
+
<ErrorView error={e} />
|
|
291
342
|
</EntityTableCell>;
|
|
292
343
|
}
|
|
293
344
|
}, [tableRowActionsBuilder, additionalCellRenderer, propertyCellRenderer, size]);
|
|
@@ -295,36 +346,36 @@ export const EntityCollectionTable = function EntityCollectionTable<M extends Re
|
|
|
295
346
|
return (
|
|
296
347
|
|
|
297
348
|
<div ref={ref}
|
|
298
|
-
|
|
299
|
-
|
|
349
|
+
style={style}
|
|
350
|
+
className={cls("h-full w-full flex flex-col bg-white dark:bg-surface-950", className)}>
|
|
300
351
|
|
|
301
|
-
<CollectionTableToolbar
|
|
352
|
+
{!hideToolbar && <CollectionTableToolbar
|
|
302
353
|
onTextSearch={textSearchEnabled ? onTextSearch : undefined}
|
|
303
354
|
textSearchLoading={textSearchLoading}
|
|
304
355
|
onTextSearchClick={textSearchEnabled ? onTextSearchClick : undefined}
|
|
305
|
-
size={size}
|
|
306
|
-
onSizeChanged={updateSize}
|
|
307
356
|
title={title}
|
|
308
357
|
actionsStart={actionsStart}
|
|
309
358
|
actions={actions}
|
|
310
|
-
|
|
359
|
+
viewModeToggle={viewModeToggle}
|
|
360
|
+
loading={tableController.dataLoading} />}
|
|
311
361
|
|
|
312
362
|
<SelectableTable columns={columns}
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
363
|
+
size={size}
|
|
364
|
+
inlineEditing={inlineEditing}
|
|
365
|
+
cellRenderer={cellRenderer}
|
|
366
|
+
onEntityClick={onEntityClick}
|
|
367
|
+
highlightedRow={(entity: Entity<M>) => Boolean(selectedEntities?.find(e => e.id === entity.id && e.path === entity.path))}
|
|
368
|
+
tableController={tableController}
|
|
369
|
+
onValueChange={onValueChange}
|
|
370
|
+
initialScroll={initialScroll}
|
|
371
|
+
onScroll={onScroll}
|
|
372
|
+
onColumnResize={onColumnResize}
|
|
373
|
+
hoverRow={hoverRow}
|
|
374
|
+
filterable={filterable}
|
|
375
|
+
emptyComponent={emptyComponent}
|
|
376
|
+
endAdornment={endAdornment}
|
|
377
|
+
AddColumnComponent={AddColumnComponent}
|
|
378
|
+
onColumnsOrderChange={onColumnsOrderChange} />
|
|
328
379
|
|
|
329
380
|
</div>
|
|
330
381
|
);
|