@rebasepro/admin 0.9.0 → 0.9.1-canary.0fce67c
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 +7 -7
- package/dist/{CollectionEditorDialog-B-7uW3iJ.js → CollectionEditorDialog-DbPpDDwb.js} +33 -11
- package/dist/CollectionEditorDialog-DbPpDDwb.js.map +1 -0
- package/dist/{PropertyEditView-7KMTcrqi.js → PropertyEditView-DfJbZ67t.js} +5 -5
- package/dist/PropertyEditView-DfJbZ67t.js.map +1 -0
- package/dist/{RouterCollectionsStudioView-epqIbZrJ.js → RouterCollectionsStudioView-C6XQ7Il5.js} +5 -5
- package/dist/RouterCollectionsStudioView-C6XQ7Il5.js.map +1 -0
- package/dist/collection_editor/api/generateCollectionApi.d.ts +4 -4
- package/dist/collection_editor/ui/collection_editor/PropertyEditView.d.ts +1 -1
- package/dist/collection_editor/ui/collection_editor/SwitchControl.d.ts +1 -1
- package/dist/collection_editor/useSafeSnackbarController.d.ts +1 -1
- package/dist/collection_editor_ui.js +5 -5
- package/dist/collection_editor_ui.js.map +1 -1
- package/dist/components/CollectionTableBinding/CollectionTableBindingProps.d.ts +1 -1
- package/dist/components/CollectionTableBinding/internal/EntityTableCell.d.ts +1 -1
- package/dist/components/CollectionTableBinding/internal/popup_field/PopupFormField.d.ts +1 -1
- package/dist/components/CollectionTableBinding/table_bindings.d.ts +1 -1
- package/dist/components/CollectionViewBinding/hooks/useCollectionInlineEditor.d.ts +1 -1
- package/dist/components/{RebaseCMS.d.ts → RebaseAdmin.d.ts} +2 -2
- package/dist/components/RebaseLayout.d.ts +5 -4
- package/dist/components/RebaseShell.d.ts +1 -0
- package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
- package/dist/components/SelectableTable/SelectableTableContext.d.ts +1 -1
- package/dist/components/SidePanelProvider.d.ts +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/editor.js +1 -1
- package/dist/editor.js.map +1 -1
- package/dist/form/components/LocalChangesMenu.d.ts +1 -1
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
- package/dist/{history-7X5bON_n.js → history-GSa4BgDt.js} +5 -5
- package/dist/history-GSa4BgDt.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/{src-sUZfe29F.js → src-B8WuGSPZ.js} +160 -56
- package/dist/src-B8WuGSPZ.js.map +1 -0
- package/dist/types/components/formex.d.ts +1 -1
- package/package.json +12 -17
- package/src/collection_editor/ConfigControllerProvider.tsx +1 -1
- package/src/collection_editor/api/generateCollectionApi.ts +4 -4
- package/src/collection_editor/ui/AddKanbanColumnAction.tsx +1 -1
- package/src/collection_editor/ui/CollectionViewHeaderAction.tsx +1 -1
- package/src/collection_editor/ui/EditorCollectionAction.tsx +1 -1
- package/src/collection_editor/ui/EditorCollectionActionStart.tsx +1 -1
- package/src/collection_editor/ui/EditorEntityAction.tsx +1 -1
- package/src/collection_editor/ui/HomePageEditorCollectionAction.tsx +1 -1
- package/src/collection_editor/ui/KanbanSetupAction.tsx +1 -1
- package/src/collection_editor/ui/MissingReferenceWidget.tsx +1 -1
- package/src/collection_editor/ui/NewCollectionButton.tsx +1 -1
- package/src/collection_editor/ui/NewCollectionCard.tsx +1 -1
- package/src/collection_editor/ui/PropertyAddColumnComponent.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/CollectionDetailsForm.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/CollectionEditorDialog.tsx +3 -3
- package/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/CollectionRLSTab.tsx +37 -6
- package/src/collection_editor/ui/collection_editor/CollectionRelationsTab.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/CollectionStudioView.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/CollectionsStudioView.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/DisplaySettingsForm.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/EntityActionsEditTab.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/EntityActionsSelectDialog.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/EnumForm.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/GeneralSettingsForm.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/GetCodeDialog.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/KanbanConfigSection.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/PropertyEditView.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/PropertyFieldPreview.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/PropertyTree.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/RouterCollectionStudioView.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/SubcollectionsEditTab.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/SwitchControl.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/MapPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/StringPropertyField.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +1 -1
- package/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.tsx +2 -2
- package/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.tsx +2 -2
- package/src/collection_editor/useSafeSnackbarController.ts +1 -1
- package/src/components/AdminModeSyncer.tsx +1 -1
- package/src/components/ArrayContainer.tsx +1 -1
- package/src/components/ClearFilterSortButton.tsx +1 -1
- package/src/components/CollectionPanel.tsx +1 -1
- package/src/components/CollectionTableBinding/CollectionRowActions.tsx +2 -2
- package/src/components/CollectionTableBinding/CollectionTableBinding.tsx +3 -3
- package/src/components/CollectionTableBinding/CollectionTableBindingProps.tsx +1 -1
- package/src/components/CollectionTableBinding/PropertyTableCell.tsx +1 -1
- package/src/components/CollectionTableBinding/column_utils.tsx +1 -1
- package/src/components/CollectionTableBinding/fields/TableMultipleRelationField.tsx +2 -2
- package/src/components/CollectionTableBinding/fields/TableReferenceField.tsx +1 -1
- package/src/components/CollectionTableBinding/fields/TableRelationField.tsx +2 -2
- package/src/components/CollectionTableBinding/fields/TableStorageUpload.tsx +1 -1
- package/src/components/CollectionTableBinding/internal/CollectionTableToolbar.tsx +1 -1
- package/src/components/CollectionTableBinding/internal/EntityTableCell.tsx +2 -2
- package/src/components/CollectionTableBinding/internal/EntityTableCellActions.tsx +1 -1
- package/src/components/CollectionTableBinding/internal/popup_field/PopupFormField.tsx +4 -4
- package/src/components/CollectionTableBinding/table_bindings.tsx +1 -1
- package/src/components/CollectionViewBinding/BoardCardBinding.tsx +2 -2
- package/src/components/CollectionViewBinding/CollectionBoardViewBinding.tsx +3 -3
- package/src/components/CollectionViewBinding/CollectionCardViewBinding.tsx +1 -1
- package/src/components/CollectionViewBinding/CollectionListViewBinding.tsx +3 -3
- package/src/components/CollectionViewBinding/CollectionViewActions.tsx +2 -2
- package/src/components/CollectionViewBinding/CollectionViewBinding.tsx +1 -1
- package/src/components/CollectionViewBinding/CollectionViewStartActions.tsx +1 -1
- package/src/components/CollectionViewBinding/EntityCardBinding.tsx +3 -3
- package/src/components/CollectionViewBinding/FiltersDialog.tsx +19 -1
- package/src/components/CollectionViewBinding/SplitListView.tsx +1 -1
- package/src/components/CollectionViewBinding/ViewModeToggle.tsx +1 -1
- package/src/components/CollectionViewBinding/hooks/useCollectionInlineEditor.ts +2 -2
- package/src/components/CollectionViewBinding/hooks/useKanbanDragAndDrop.ts +2 -2
- package/src/components/CollectionViewBinding/useBoardDataController.tsx +9 -3
- package/src/components/CollectionViewBinding/usePreviewSlots.ts +1 -1
- package/src/components/DefaultAppBar.tsx +3 -3
- package/src/components/DefaultDrawer.tsx +3 -3
- package/src/components/DeleteEntityDialog.tsx +1 -1
- package/src/components/DetailViewBinding.tsx +3 -3
- package/src/components/DrawerNavigationGroup.tsx +2 -2
- package/src/components/EditFormActions.tsx +4 -4
- package/src/components/EditViewBinding.tsx +6 -6
- package/src/components/EntityPreviewBinding.tsx +3 -3
- package/src/components/EntityViewBinding.tsx +2 -2
- package/src/components/HomePage/ContentHomePage.tsx +4 -4
- package/src/components/HomePage/FavouritesView.tsx +1 -1
- package/src/components/HomePage/NavigationCardBinding.tsx +3 -3
- package/src/components/HomePage/NavigationGroup.tsx +1 -1
- package/src/components/HomePage/RenameGroupDialog.tsx +1 -1
- package/src/components/JsonPreviewBinding.tsx +1 -1
- package/src/components/{RebaseCMS.tsx → RebaseAdmin.tsx} +3 -3
- package/src/components/RebaseAuthGate.tsx +2 -2
- package/src/components/RebaseLayout.tsx +7 -13
- package/src/components/RebaseNavigation.tsx +18 -3
- package/src/components/RebaseRouteDefs.tsx +2 -2
- package/src/components/RebaseShell.tsx +2 -1
- package/src/components/ReferenceTable/SelectionTableBinding.tsx +5 -5
- package/src/components/RelationSelector.tsx +1 -1
- package/src/components/SearchIconsView.tsx +2 -2
- package/src/components/SelectableTable/SelectableTable.tsx +2 -2
- package/src/components/SelectableTable/SelectableTableContext.tsx +1 -1
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +1 -1
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +1 -1
- package/src/components/SelectableTable/filters/FilterFieldBinding.tsx +1 -1
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +1 -1
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +1 -1
- package/src/components/SideDialogs.tsx +1 -1
- package/src/components/SidePanelBinding.tsx +1 -1
- package/src/components/SidePanelProvider.tsx +2 -2
- package/src/components/UserSelector.tsx +1 -1
- package/src/components/admin/CreationResultDialog.tsx +6 -3
- package/src/components/app/Scaffold.tsx +6 -2
- package/src/components/common/default_entity_actions.tsx +123 -25
- package/src/components/field_configs.tsx +1 -1
- package/src/components/history/EntityHistoryEntry.tsx +1 -1
- package/src/components/history/EntityHistoryView.tsx +4 -4
- package/src/components/history/LastEditedByIndicator.tsx +2 -2
- package/src/components/index.ts +1 -1
- package/src/data_export/export/BasicExportAction.tsx +1 -1
- package/src/data_export/export/ExportCollectionAction.tsx +1 -1
- package/src/data_import/components/DataNewPropertiesMapping.tsx +1 -1
- package/src/data_import/components/ImportFileUpload.tsx +1 -1
- package/src/data_import/components/ImportNewPropertyFieldPreview.tsx +1 -1
- package/src/data_import/components/ImportSaveInProgress.tsx +1 -1
- package/src/data_import/import/ImportCollectionAction.tsx +2 -2
- package/src/data_import/utils/data.ts +2 -2
- package/src/data_import/utils/get_properties_mapping.ts +1 -1
- package/src/editor/components/image-bubble.tsx +1 -1
- package/src/editor/components/table-bubble.tsx +1 -1
- package/src/editor/editor.tsx +1 -1
- package/src/editor/selectors/link-selector.tsx +1 -1
- package/src/editor/selectors/node-selector.tsx +1 -1
- package/src/form/EntityForm.tsx +4 -4
- package/src/form/EntityFormActions.tsx +1 -1
- package/src/form/EntityFormBinding.tsx +4 -4
- package/src/form/PropertyFieldBinding.tsx +3 -3
- package/src/form/components/ErrorFocus.tsx +1 -1
- package/src/form/components/LocalChangesMenu.tsx +3 -3
- package/src/form/components/StorageItemPreview.tsx +1 -1
- package/src/form/components/StorageUploadProgress.tsx +3 -3
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +1 -1
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +1 -1
- package/src/form/field_bindings/BlockFieldBinding.tsx +2 -2
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +1 -1
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +2 -2
- package/src/form/field_bindings/MapFieldBinding.tsx +1 -1
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +2 -2
- package/src/form/field_bindings/MultipleRelationFieldBinding.tsx +1 -1
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +2 -2
- package/src/form/field_bindings/RelationFieldBinding.tsx +1 -1
- package/src/form/field_bindings/RepeatFieldBinding.tsx +1 -1
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +3 -3
- package/src/form/form_utils.ts +1 -1
- package/src/hooks/navigation/useNavigationResolution.ts +19 -4
- package/src/hooks/useBuildSidePanel.tsx +2 -2
- package/src/hooks/useCMSContext.tsx +1 -1
- package/src/hooks/useHistory.ts +1 -1
- package/src/hooks/useResolvedNavigationFrom.tsx +4 -2
- package/src/index.ts +3 -3
- package/src/preview/PropertyPreview.tsx +2 -2
- package/src/preview/components/DatePreview.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +1 -1
- package/src/preview/components/ImagePreview.tsx +1 -1
- package/src/preview/components/ReferencePreview.tsx +2 -2
- package/src/preview/components/RelationPreview.tsx +1 -1
- package/src/preview/components/StorageThumbnail.tsx +1 -1
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -1
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +1 -1
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +1 -1
- package/src/routes/RebaseRoute.tsx +2 -2
- package/src/types/components/formex.tsx +1 -1
- package/src/util/previews.ts +4 -2
- package/dist/CollectionEditorDialog-B-7uW3iJ.js.map +0 -1
- package/dist/PropertyEditView-7KMTcrqi.js.map +0 -1
- package/dist/RouterCollectionsStudioView-epqIbZrJ.js.map +0 -1
- package/dist/history-7X5bON_n.js.map +0 -1
- package/dist/src-sUZfe29F.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useMemo } from "react";
|
|
2
|
-
import { setIn } from "@rebasepro/
|
|
2
|
+
import { setIn } from "@rebasepro/forms";
|
|
3
3
|
import { CollectionConfig, RebaseData, RebaseContext } from "@rebasepro/types";
|
|
4
|
-
import { OnCellValueChange, saveEntityWithCallbacks, SaveEntityWithCallbacksProps, UniqueFieldValidator } from "@rebasepro/
|
|
4
|
+
import { OnCellValueChange, saveEntityWithCallbacks, SaveEntityWithCallbacksProps, UniqueFieldValidator } from "@rebasepro/app";
|
|
5
5
|
|
|
6
6
|
export interface UseCollectionInlineEditorParams<M extends Record<string, unknown>> {
|
|
7
7
|
path: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useMemo } from "react";
|
|
2
|
-
import { setIn } from "@rebasepro/
|
|
2
|
+
import { setIn } from "@rebasepro/forms";
|
|
3
3
|
import { CollectionConfig, RebaseData, RebaseContext, AnalyticsController, Entity } from "@rebasepro/types";
|
|
4
|
-
import { saveEntityWithCallbacks, SaveEntityWithCallbacksProps } from "@rebasepro/
|
|
4
|
+
import { saveEntityWithCallbacks, SaveEntityWithCallbacksProps } from "@rebasepro/app";
|
|
5
5
|
import { BoardItem } from "@rebasepro/ui";
|
|
6
6
|
import { BoardDataController } from "../useBoardDataController";
|
|
7
7
|
import { generateKeyBetween } from "fractional-indexing";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CollectionConfig } from "@rebasepro/types";
|
|
2
2
|
import { Entity, FilterValues } from "@rebasepro/types";
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
|
-
import { useData, useRebaseContext } from "@rebasepro/
|
|
4
|
+
import { getRelationIncludeParams, useData, useRebaseContext } from "@rebasepro/app";
|
|
5
5
|
|
|
6
6
|
const DEFAULT_PAGE_SIZE = 20;
|
|
7
7
|
|
|
@@ -410,18 +410,24 @@ values: { ...e.values,
|
|
|
410
410
|
|
|
411
411
|
// Set up listener or fetch
|
|
412
412
|
const accessor = currentDataClient.collection(currentResolvedPath);
|
|
413
|
+
|
|
414
|
+
// Eagerly include relations to avoid N+1 fetches.
|
|
415
|
+
const includeParams = getRelationIncludeParams(currentCollection);
|
|
416
|
+
|
|
413
417
|
if (accessor.listen) {
|
|
414
418
|
const unsubscribe = accessor.listen({
|
|
415
419
|
where: whereFilter,
|
|
416
420
|
limit: itemCount,
|
|
417
|
-
orderBy: orderByParam
|
|
421
|
+
orderBy: orderByParam,
|
|
422
|
+
include: includeParams
|
|
418
423
|
}, res => onUpdate(res.data as Entity<M>[]), onError);
|
|
419
424
|
unsubscribersRef.current[column] = unsubscribe;
|
|
420
425
|
} else {
|
|
421
426
|
accessor.find({
|
|
422
427
|
where: whereFilter,
|
|
423
428
|
limit: itemCount,
|
|
424
|
-
orderBy: orderByParam
|
|
429
|
+
orderBy: orderByParam,
|
|
430
|
+
include: includeParams
|
|
425
431
|
})
|
|
426
432
|
.then(res => onUpdate(res.data as Entity<M>[]))
|
|
427
433
|
.catch(onError);
|
|
@@ -2,7 +2,7 @@ import { useMemo } from "react";
|
|
|
2
2
|
import type { CollectionConfig, Property, RelationProperty } from "@rebasepro/types";
|
|
3
3
|
import type { Entity, PropertyConfig, EntityRelation } from "@rebasepro/types";
|
|
4
4
|
import { getEntityImagePreviewPropertyKey } from "@rebasepro/common";
|
|
5
|
-
import { getEntityFromCache } from "@rebasepro/
|
|
5
|
+
import { getEntityFromCache } from "@rebasepro/app";
|
|
6
6
|
import { getEntityTitlePropertyKey, getEntityPreviewKeys } from "../../util/previews";
|
|
7
7
|
import { getValueInPath } from "@rebasepro/utils";
|
|
8
8
|
import type { AuthController } from "@rebasepro/types";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
|
|
4
4
|
import { Link, useNavigate } from "react-router-dom";
|
|
5
|
-
import { RebaseLogo, LanguageToggle } from "@rebasepro/
|
|
5
|
+
import { RebaseLogo, LanguageToggle } from "@rebasepro/app";
|
|
6
6
|
import { ErrorBoundary, iconSize } from "@rebasepro/ui";
|
|
7
7
|
import {
|
|
8
8
|
Avatar,
|
|
@@ -18,12 +18,12 @@ import {
|
|
|
18
18
|
SunMoonIcon,
|
|
19
19
|
Typography
|
|
20
20
|
} from "@rebasepro/ui";
|
|
21
|
-
import { useAuthController, useLargeLayout, useModeController, useAdminModeController, useTranslation } from "@rebasepro/
|
|
21
|
+
import { useAuthController, useLargeLayout, useModeController, useAdminModeController, useTranslation } from "@rebasepro/app";
|
|
22
22
|
import { useUrlController } from "../hooks/navigation/contexts/UrlContext";
|
|
23
23
|
import { User } from "@rebasepro/types";
|
|
24
24
|
import { useApp } from "./app/useApp";
|
|
25
25
|
import { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
|
|
26
|
-
import { UserSettingsView } from "@rebasepro/
|
|
26
|
+
import { UserSettingsView } from "@rebasepro/app";
|
|
27
27
|
|
|
28
28
|
export type DefaultAppBarProps<ADDITIONAL_PROPS = object> = {
|
|
29
29
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { NavigationEntry, NavigationResult } from "@rebasepro/types";
|
|
2
2
|
import React, { useMemo } from "react";
|
|
3
3
|
|
|
4
|
-
import { useCollapsedGroups, buildCollapsedDefaults, useLargeLayout, useAdminModeController, useAuthController, useModeController, useTranslation, useSlot, useRebaseContext, useAnalyticsController, useRebaseRegistry, useComponentOverride } from "@rebasepro/
|
|
4
|
+
import { useCollapsedGroups, buildCollapsedDefaults, useLargeLayout, useAdminModeController, useAuthController, useModeController, useTranslation, useSlot, useRebaseContext, useAnalyticsController, useRebaseRegistry, useComponentOverride } from "@rebasepro/app";
|
|
5
5
|
import { useUrlController } from "../hooks/navigation/contexts/UrlContext";
|
|
6
6
|
import { useNavigationStateController } from "../hooks/navigation/contexts/NavigationStateContext";
|
|
7
7
|
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
Typography
|
|
30
30
|
} from "@rebasepro/ui";
|
|
31
31
|
import { DrawerNavigationGroup } from "./DrawerNavigationGroup";
|
|
32
|
-
import { LanguageToggle, RebaseLogo } from "@rebasepro/
|
|
32
|
+
import { LanguageToggle, RebaseLogo } from "@rebasepro/app";
|
|
33
33
|
import { useApp } from "./app/useApp";
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -166,7 +166,7 @@ function CMSNavigationContent() {
|
|
|
166
166
|
const allNavigationEntries = navigationState.topLevelNavigation?.navigationEntries ?? [];
|
|
167
167
|
|
|
168
168
|
// Build a set of Studio-only dev view slugs so we can distinguish them from
|
|
169
|
-
// CMS custom views added via <
|
|
169
|
+
// CMS custom views added via <RebaseAdmin views={...}> or plugins.
|
|
170
170
|
const studioViewSlugs = useMemo(() => {
|
|
171
171
|
const slugs = new Set<string>();
|
|
172
172
|
(registry.studioConfig?.devViews ?? []).forEach(v => slugs.add(v.slug));
|
|
@@ -3,7 +3,7 @@ import type { FormContext } from "../types/fields";
|
|
|
3
3
|
import type { PluginFormActionProps } from "@rebasepro/types";
|
|
4
4
|
import React, { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import { Entity, EntityStatus, getCollectionDataPath, Property } from "@rebasepro/types";
|
|
6
|
-
import { PluginProviderStack, resolveComponentRef, useComponentOverride, CollectionScopeProvider } from "@rebasepro/
|
|
6
|
+
import { PluginProviderStack, resolveComponentRef, useComponentOverride, CollectionScopeProvider } from "@rebasepro/app";
|
|
7
7
|
|
|
8
8
|
import { CollectionViewBinding, EntityViewBinding } from "../components";
|
|
9
9
|
import { CircularProgressCenter, iconSize } from "@rebasepro/ui";
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
Typography
|
|
26
26
|
} from "@rebasepro/ui";
|
|
27
27
|
import { ErrorBoundary } from "@rebasepro/ui";
|
|
28
|
-
import { ErrorView, createFormexStub, usePermissions, useTranslation, getIcon } from "@rebasepro/
|
|
28
|
+
import { ErrorView, createFormexStub, usePermissions, useTranslation, getIcon } from "@rebasepro/app";
|
|
29
29
|
import {
|
|
30
30
|
getSubcollections,
|
|
31
31
|
removeInitialAndTrailingSlashes,
|
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
useRebaseContext,
|
|
39
39
|
useLargeLayout,
|
|
40
40
|
useSlot
|
|
41
|
-
} from "@rebasepro/
|
|
41
|
+
} from "@rebasepro/app";
|
|
42
42
|
import { useUrlController, useCollectionRegistryController } from "../index";
|
|
43
43
|
import { useNavigate } from "react-router-dom";
|
|
44
44
|
import { getValueInPath } from "@rebasepro/utils";
|
|
@@ -2,9 +2,9 @@ import type { NavigationEntry } from "@rebasepro/types";
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { ChevronDownIcon, cls, iconSize, Typography } from "@rebasepro/ui";
|
|
4
4
|
|
|
5
|
-
import { IconForView } from "@rebasepro/
|
|
5
|
+
import { IconForView } from "@rebasepro/app";
|
|
6
6
|
import { DrawerNavigationItem } from "./DrawerNavigationItem";
|
|
7
|
-
import { useTranslation, useComponentOverride } from "@rebasepro/
|
|
7
|
+
import { useTranslation, useComponentOverride } from "@rebasepro/app";
|
|
8
8
|
|
|
9
9
|
export interface DrawerNavigationGroupProps {
|
|
10
10
|
/**
|
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
useCustomizationController,
|
|
15
15
|
useSnackbarController,
|
|
16
16
|
useTranslation
|
|
17
|
-
} from "@rebasepro/
|
|
17
|
+
} from "@rebasepro/app";
|
|
18
18
|
import { SideDialogController, useSideDialogContext } from "./SideDialogs";
|
|
19
|
-
import { FormexController } from "@rebasepro/
|
|
20
|
-
import { ErrorTooltip } from "@rebasepro/
|
|
21
|
-
import { usePermissions } from "@rebasepro/
|
|
19
|
+
import { FormexController } from "@rebasepro/forms";
|
|
20
|
+
import { ErrorTooltip } from "@rebasepro/app";
|
|
21
|
+
import { usePermissions } from "@rebasepro/app";
|
|
22
22
|
import { useCMSContext } from "../index";
|
|
23
23
|
|
|
24
24
|
export function EditFormActions({
|
|
@@ -3,7 +3,7 @@ import type { FormContext } from "../types/fields";
|
|
|
3
3
|
import type { PluginFormActionProps } from "@rebasepro/types";
|
|
4
4
|
import React, { lazy, Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import { Entity, EntityStatus, getCollectionDataPath } from "@rebasepro/types";
|
|
6
|
-
import { PluginProviderStack, resolveComponentRef, useComponentOverride, CollectionScopeProvider } from "@rebasepro/
|
|
6
|
+
import { PluginProviderStack, resolveComponentRef, useComponentOverride, CollectionScopeProvider } from "@rebasepro/app";
|
|
7
7
|
|
|
8
8
|
import { CollectionViewBinding, EntityViewBinding } from "../components";
|
|
9
9
|
import { CircularProgressCenter, iconSize } from "@rebasepro/ui";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
Typography
|
|
24
24
|
} from "@rebasepro/ui";
|
|
25
25
|
import { ErrorBoundary } from "@rebasepro/ui";
|
|
26
|
-
import { ErrorView } from "@rebasepro/
|
|
26
|
+
import { ErrorView } from "@rebasepro/app";
|
|
27
27
|
import {
|
|
28
28
|
getSubcollections,
|
|
29
29
|
removeInitialAndTrailingSlashes,
|
|
@@ -37,8 +37,8 @@ import {
|
|
|
37
37
|
useLargeLayout,
|
|
38
38
|
useSlot,
|
|
39
39
|
getIcon
|
|
40
|
-
} from "@rebasepro/
|
|
41
|
-
import { getEntityFromMemoryCache } from "@rebasepro/
|
|
40
|
+
} from "@rebasepro/app";
|
|
41
|
+
import { getEntityFromMemoryCache } from "@rebasepro/app";
|
|
42
42
|
import { EntityFormBinding } from "../form";
|
|
43
43
|
import type { EntityFormBindingProps } from "../form";
|
|
44
44
|
import type { OnUpdateParams } from "../types/components/EntityFormProps";
|
|
@@ -46,8 +46,8 @@ import { EditFormActions } from "./EditFormActions";
|
|
|
46
46
|
import { JsonPreviewBinding } from "../components/JsonPreviewBinding";
|
|
47
47
|
// Lazy-load history view — only loaded when user clicks the HistoryIcon tab
|
|
48
48
|
const EntityHistoryView = lazy(() => import("../components/history").then(m => ({ default: m.EntityHistoryView })));
|
|
49
|
-
import { createFormexStub, getEntityFromCache } from "@rebasepro/
|
|
50
|
-
import { usePermissions } from "@rebasepro/
|
|
49
|
+
import { createFormexStub, getEntityFromCache } from "@rebasepro/app";
|
|
50
|
+
import { usePermissions } from "@rebasepro/app";
|
|
51
51
|
import { useUrlController } from "../index";
|
|
52
52
|
import { useNavigate } from "react-router-dom";
|
|
53
53
|
|
|
@@ -21,9 +21,9 @@ import {
|
|
|
21
21
|
useCustomizationController,
|
|
22
22
|
useData,
|
|
23
23
|
ErrorView
|
|
24
|
-
} from "@rebasepro/
|
|
25
|
-
import { useAnalyticsController } from "@rebasepro/
|
|
26
|
-
import { IconForView } from "@rebasepro/
|
|
24
|
+
} from "@rebasepro/app";
|
|
25
|
+
import { useAnalyticsController } from "@rebasepro/app";
|
|
26
|
+
import { IconForView } from "@rebasepro/app";
|
|
27
27
|
import { getPropertyInPath } from "../util/property_utils";
|
|
28
28
|
import { getEntityPreviewKeys, getEntityTitlePropertyKey } from "../util/previews";
|
|
29
29
|
import { getValueInPath } from "@rebasepro/utils";
|
|
@@ -5,8 +5,8 @@ import React from "react";
|
|
|
5
5
|
import { Entity } from "@rebasepro/types";
|
|
6
6
|
import { cls, defaultBorderMixin, ExternalLinkIcon, IconButton, Typography } from "@rebasepro/ui";
|
|
7
7
|
;
|
|
8
|
-
import { useCustomizationController } from "@rebasepro/
|
|
9
|
-
import { useAuthController } from "@rebasepro/
|
|
8
|
+
import { useCustomizationController } from "@rebasepro/app";
|
|
9
|
+
import { useAuthController } from "@rebasepro/app";
|
|
10
10
|
import { PropertyCollectionView } from "./PropertyCollectionView";
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -19,10 +19,10 @@ import { SortableContext, verticalListSortingStrategy } from "@dnd-kit/sortable"
|
|
|
19
19
|
import { restrictToVerticalAxis, restrictToWindowEdges } from "@dnd-kit/modifiers";
|
|
20
20
|
import { RenameGroupDialog } from "./RenameGroupDialog";
|
|
21
21
|
import { toArray } from "@rebasepro/utils";
|
|
22
|
-
import { useCollapsedGroups, buildCollapsedDefaults, useCustomizationController, useTranslation, useSlot, useAdminModeController, useRebaseRegistry } from "@rebasepro/
|
|
23
|
-
import { useRestoreScroll } from "@rebasepro/
|
|
22
|
+
import { useCollapsedGroups, buildCollapsedDefaults, useCustomizationController, useTranslation, useSlot, useAdminModeController, useRebaseRegistry } from "@rebasepro/app";
|
|
23
|
+
import { useRestoreScroll } from "@rebasepro/app";
|
|
24
24
|
|
|
25
|
-
import { SchemaDriftBanner } from "@rebasepro/
|
|
25
|
+
import { SchemaDriftBanner } from "@rebasepro/app";
|
|
26
26
|
import { useBreadcrumbsController, useCMSContext } from "../../index";
|
|
27
27
|
|
|
28
28
|
export const DEFAULT_GROUP_NAME = "Views";
|
|
@@ -64,7 +64,7 @@ export function ContentHomePage({
|
|
|
64
64
|
} = navigationStateController.topLevelNavigation || {};
|
|
65
65
|
|
|
66
66
|
// Build a set of Studio-only dev view slugs so we can distinguish them from
|
|
67
|
-
// CMS custom views added via <
|
|
67
|
+
// CMS custom views added via <RebaseAdmin views={...}> or plugins.
|
|
68
68
|
const studioViewSlugs = useMemo(() => {
|
|
69
69
|
const slugs = new Set<string>();
|
|
70
70
|
(registry.studioConfig?.devViews ?? []).forEach(v => slugs.add(v.slug));
|
|
@@ -2,7 +2,7 @@ import type { NavigationEntry } from "@rebasepro/types";
|
|
|
2
2
|
import { useNavigate } from "react-router-dom";
|
|
3
3
|
;
|
|
4
4
|
import { Chip, Collapse, StarIcon } from "@rebasepro/ui";
|
|
5
|
-
import { useUserConfigurationPersistence } from "@rebasepro/
|
|
5
|
+
import { useUserConfigurationPersistence } from "@rebasepro/app";
|
|
6
6
|
import { useNavigationStateController } from "../../index";
|
|
7
7
|
|
|
8
8
|
function NavigationChip({ entry }: { entry: NavigationEntry }) {
|
|
@@ -5,9 +5,9 @@ import { IconButton, StarIcon, Tooltip } from "@rebasepro/ui";
|
|
|
5
5
|
import { NavigationCard } from "./NavigationCard";
|
|
6
6
|
import { SmallNavigationCard } from "./SmallNavigationCard";
|
|
7
7
|
import React from "react";
|
|
8
|
-
import { useRebaseContext, useSlot } from "@rebasepro/
|
|
9
|
-
import { IconForView } from "@rebasepro/
|
|
10
|
-
import { useUserConfigurationPersistence } from "@rebasepro/
|
|
8
|
+
import { useRebaseContext, useSlot } from "@rebasepro/app";
|
|
9
|
+
import { IconForView } from "@rebasepro/app";
|
|
10
|
+
import { useUserConfigurationPersistence } from "@rebasepro/app";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* This is the component used in the home page to render a card for each
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren, useState } from "react";
|
|
2
2
|
import { cls, ExpandablePanel, IconButton, iconSize, PencilIcon, Typography } from "@rebasepro/ui";
|
|
3
|
-
import { useTranslation } from "@rebasepro/
|
|
3
|
+
import { useTranslation } from "@rebasepro/app";
|
|
4
4
|
|
|
5
5
|
export function NavigationGroup({
|
|
6
6
|
children,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, TextField } from "@rebasepro/ui";
|
|
3
|
-
import { useTranslation } from "@rebasepro/
|
|
3
|
+
import { useTranslation } from "@rebasepro/app";
|
|
4
4
|
|
|
5
5
|
interface RenameGroupDialogProps {
|
|
6
6
|
open: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useRef } from "react";
|
|
2
2
|
import { Highlight, themes } from "prism-react-renderer";
|
|
3
|
-
import { useModeController } from "@rebasepro/
|
|
3
|
+
import { useModeController } from "@rebasepro/app";
|
|
4
4
|
|
|
5
5
|
export function JsonPreviewBinding({ values }: { values: object }) {
|
|
6
6
|
const code = JSON.stringify(values, null, "\t");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useLayoutEffect } from "react";
|
|
2
|
-
import { useRebaseRegistryDispatch } from "@rebasepro/
|
|
3
|
-
import type {
|
|
2
|
+
import { useRebaseRegistryDispatch } from "@rebasepro/app";
|
|
3
|
+
import type { RebaseAdminConfig } from "@rebasepro/types";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Declarative component to configure the CMS in Rebase.
|
|
@@ -10,7 +10,7 @@ import type { RebaseCMSConfig } from "@rebasepro/types";
|
|
|
10
10
|
* is auto-wired as a native feature (slots, provider, Studio view) without
|
|
11
11
|
* needing any external plugin.
|
|
12
12
|
*/
|
|
13
|
-
export function
|
|
13
|
+
export function RebaseAdmin({ collections, views, homePage, entityViews, entityActions, collectionEditor, navigationGroupMappings, basePath }: RebaseAdminConfig) {
|
|
14
14
|
const dispatch = useRebaseRegistryDispatch();
|
|
15
15
|
|
|
16
16
|
useLayoutEffect(() => {
|
|
@@ -2,9 +2,9 @@ import React from "react";
|
|
|
2
2
|
import {
|
|
3
3
|
useRebaseRegistry,
|
|
4
4
|
useAuthController
|
|
5
|
-
} from "@rebasepro/
|
|
5
|
+
} from "@rebasepro/app";
|
|
6
6
|
import { CircularProgressCenter } from "@rebasepro/ui";
|
|
7
|
-
import { LoginView } from "@rebasepro/
|
|
7
|
+
import { LoginView } from "@rebasepro/app";
|
|
8
8
|
import type { AuthControllerExtended } from "@rebasepro/types";
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -4,10 +4,9 @@ import {
|
|
|
4
4
|
useAdminModeController,
|
|
5
5
|
useComponentOverride,
|
|
6
6
|
useRebaseRegistry
|
|
7
|
-
} from "@rebasepro/
|
|
7
|
+
} from "@rebasepro/app";
|
|
8
8
|
|
|
9
9
|
import { Scaffold } from "./app/Scaffold";
|
|
10
|
-
import { AppBar } from "./app/AppBar";
|
|
11
10
|
import { Drawer } from "./app/Drawer";
|
|
12
11
|
import { SideDialogs } from "./SideDialogs";
|
|
13
12
|
import { AdminModeSyncer } from "./AdminModeSyncer";
|
|
@@ -16,7 +15,7 @@ import type { AppView } from "@rebasepro/types";
|
|
|
16
15
|
export interface RebaseLayoutProps {
|
|
17
16
|
/** Title shown in the drawer. */
|
|
18
17
|
title?: string;
|
|
19
|
-
/**
|
|
18
|
+
/** Top bar. Only rendered if provided — pass `<AppBar/>` for the default one. */
|
|
20
19
|
appBar?: React.ReactNode;
|
|
21
20
|
/** Custom Drawer to override the default. */
|
|
22
21
|
drawer?: React.ReactNode;
|
|
@@ -27,17 +26,18 @@ export interface RebaseLayoutProps {
|
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
/**
|
|
30
|
-
* Layout layer — provides the Scaffold,
|
|
29
|
+
* Layout layer — provides the Scaffold, Drawer, and SideDialogs.
|
|
31
30
|
*
|
|
32
31
|
* Wraps the route outlet with the standard Rebase admin layout.
|
|
33
|
-
* Override
|
|
32
|
+
* Override the drawer via props; pass `appBar` to add a top bar (there is
|
|
33
|
+
* none by default — the drawer owns navigation and user actions).
|
|
34
34
|
*
|
|
35
35
|
* **Independently usable**: Use this when you want the Rebase layout
|
|
36
36
|
* without its default route definitions.
|
|
37
37
|
*
|
|
38
38
|
* @example
|
|
39
39
|
* ```tsx
|
|
40
|
-
* <RebaseLayout title="My Admin">
|
|
40
|
+
* <RebaseLayout title="My Admin" appBar={<AppBar/>}>
|
|
41
41
|
* <Route path="/" element={<MyHomePage />} />
|
|
42
42
|
* <Route path="/custom" element={<CustomView />} />
|
|
43
43
|
* </RebaseLayout>
|
|
@@ -53,14 +53,8 @@ export function RebaseLayout(props: RebaseLayoutProps) {
|
|
|
53
53
|
} = props;
|
|
54
54
|
|
|
55
55
|
const adminModeController = useAdminModeController();
|
|
56
|
-
const ResolvedAppBar = useComponentOverride("Shell.AppBar", AppBar);
|
|
57
56
|
const ResolvedDrawer = useComponentOverride("Shell.Drawer", Drawer);
|
|
58
57
|
|
|
59
|
-
const ActiveAppBar = appBar ?? <ResolvedAppBar
|
|
60
|
-
includeLanguageToggle={false}
|
|
61
|
-
includeModeToggle={false}
|
|
62
|
-
includeUserMenu={false}
|
|
63
|
-
/>;
|
|
64
58
|
const ActiveDrawer = drawer ?? (
|
|
65
59
|
<ResolvedDrawer
|
|
66
60
|
title={title}
|
|
@@ -71,7 +65,7 @@ export function RebaseLayout(props: RebaseLayoutProps) {
|
|
|
71
65
|
return (
|
|
72
66
|
<Scaffold autoOpenDrawer={autoOpenDrawer}>
|
|
73
67
|
<AdminModeSyncer devViews={devViews}/>
|
|
74
|
-
{
|
|
68
|
+
{appBar}
|
|
75
69
|
{ActiveDrawer}
|
|
76
70
|
<Outlet/>
|
|
77
71
|
<SideDialogs/>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useMemo, useRef, useEffect, lazy, Suspense } from "react";
|
|
1
|
+
import React, { useMemo, useRef, useEffect, useCallback, useContext, lazy, Suspense } from "react";
|
|
2
2
|
import {
|
|
3
3
|
useRebaseRegistry,
|
|
4
4
|
useRebaseContext,
|
|
@@ -9,11 +9,12 @@ import {
|
|
|
9
9
|
useRebaseClient,
|
|
10
10
|
useData,
|
|
11
11
|
useDataSources,
|
|
12
|
+
CollectionResolverRegistrationContext,
|
|
12
13
|
StudioBridgeRegistryProvider,
|
|
13
14
|
useBridgeRegistration,
|
|
14
15
|
CustomizationControllerContext,
|
|
15
16
|
RebaseDataContext
|
|
16
|
-
} from "@rebasepro/
|
|
17
|
+
} from "@rebasepro/app";
|
|
17
18
|
import { buildRoutedRebaseData, resolveDataSource } from "@rebasepro/common";
|
|
18
19
|
import { CircularProgressCenter } from "@rebasepro/ui";
|
|
19
20
|
import type { AppView, CollectionEditorOptions, EntityCustomView, EntityAction, CollectionConfig, RebasePlugin } from "@rebasepro/types";
|
|
@@ -103,6 +104,20 @@ export function RebaseNavigation({ children }: RebaseNavigationProps) {
|
|
|
103
104
|
const defaultData = useData();
|
|
104
105
|
const getCollectionRef = useRef(collectionRegistryController.getCollection);
|
|
105
106
|
getCollectionRef.current = collectionRegistryController.getCollection;
|
|
107
|
+
|
|
108
|
+
// Hand the data layer a way to read this registry. It was built by <Rebase>,
|
|
109
|
+
// above us, and needs a collection's primary keys to give its rows an
|
|
110
|
+
// address — rows themselves carry only columns.
|
|
111
|
+
//
|
|
112
|
+
// Registered during render, not in an effect: the views that fetch rows are
|
|
113
|
+
// below us, and their effects run before ours, so an effect here would bind
|
|
114
|
+
// after the first page had already been converted. The call only assigns a
|
|
115
|
+
// ref, so repeating it per render is free.
|
|
116
|
+
const registerCollectionResolver = useContext(CollectionResolverRegistrationContext);
|
|
117
|
+
const resolveCollection = useCallback(
|
|
118
|
+
(slug: string) => getCollectionRef.current(slug),
|
|
119
|
+
[]);
|
|
120
|
+
registerCollectionResolver(resolveCollection);
|
|
106
121
|
const routedData = useMemo(() => buildRoutedRebaseData({
|
|
107
122
|
defaultData,
|
|
108
123
|
sources: dataSources.sources,
|
|
@@ -220,7 +235,7 @@ export function RebaseNavigation({ children }: RebaseNavigationProps) {
|
|
|
220
235
|
|
|
221
236
|
// ── Merge CMS-registered entityViews/entityActions into the customization controller ──
|
|
222
237
|
// The <Rebase> component builds the customizationController from its own props,
|
|
223
|
-
// but entity views passed to <
|
|
238
|
+
// but entity views passed to <RebaseAdmin> are stored in the registry and not
|
|
224
239
|
// automatically merged. We re-provide an enriched controller here so that
|
|
225
240
|
// downstream consumers (EditViewBinding, side panels, etc.) can resolve
|
|
226
241
|
// string-keyed entity views like "blog_preview".
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
UIReferenceView,
|
|
8
8
|
NotFoundPage,
|
|
9
9
|
useComponentOverride
|
|
10
|
-
} from "@rebasepro/
|
|
10
|
+
} from "@rebasepro/app";
|
|
11
11
|
import { CircularProgressCenter } from "@rebasepro/ui";
|
|
12
12
|
|
|
13
13
|
import { ContentHomePage as DefaultHomePage } from "./HomePage/ContentHomePage";
|
|
@@ -17,7 +17,7 @@ import { CustomViewRoute } from "../routes/CustomViewRoute";
|
|
|
17
17
|
import { useNavigationStateController } from "../hooks/navigation/contexts/NavigationStateContext";
|
|
18
18
|
import { CollectionEditorDialogs } from "./CollectionEditorDialogs";
|
|
19
19
|
import { useEffect } from "react";
|
|
20
|
-
import { useTranslation } from "@rebasepro/
|
|
20
|
+
import { useTranslation } from "@rebasepro/app";
|
|
21
21
|
import { useBreadcrumbsController } from "../index";
|
|
22
22
|
|
|
23
23
|
function SettingsView() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useMemo } from "react";
|
|
2
2
|
import {
|
|
3
3
|
useRebaseRegistry
|
|
4
|
-
} from "@rebasepro/
|
|
4
|
+
} from "@rebasepro/app";
|
|
5
5
|
import { ErrorBoundary } from "@rebasepro/ui";
|
|
6
6
|
|
|
7
7
|
import { RebaseAuthGate } from "./RebaseAuthGate";
|
|
@@ -11,6 +11,7 @@ import { RebaseRouteDefs } from "./RebaseRouteDefs";
|
|
|
11
11
|
|
|
12
12
|
export interface RebaseShellProps {
|
|
13
13
|
title?: string;
|
|
14
|
+
/** Top bar. Only rendered if provided — pass `<AppBar/>` for the default one. */
|
|
14
15
|
appBar?: React.ReactNode;
|
|
15
16
|
drawer?: React.ReactNode;
|
|
16
17
|
autoOpenDrawer?: boolean;
|
|
@@ -14,15 +14,15 @@ import {
|
|
|
14
14
|
useDataTableController,
|
|
15
15
|
useLargeLayout,
|
|
16
16
|
usePermissions
|
|
17
|
-
} from "@rebasepro/
|
|
18
|
-
import { ErrorView } from "@rebasepro/
|
|
17
|
+
} from "@rebasepro/app";
|
|
18
|
+
import { ErrorView } from "@rebasepro/app";
|
|
19
19
|
import { Button, DialogActions, PlusIcon, Typography } from "@rebasepro/ui";
|
|
20
|
-
import { IconForView } from "@rebasepro/
|
|
20
|
+
import { IconForView } from "@rebasepro/app";
|
|
21
21
|
import { useSelectionController } from "../CollectionViewBinding/useSelectionController";
|
|
22
22
|
|
|
23
|
-
import { useColumnIds } from "@rebasepro/
|
|
23
|
+
import { useColumnIds } from "@rebasepro/app";
|
|
24
24
|
import { useSideDialogContext } from "../SideDialogs";
|
|
25
|
-
import { useAnalyticsController } from "@rebasepro/
|
|
25
|
+
import { useAnalyticsController } from "@rebasepro/app";
|
|
26
26
|
import { useUrlController, useSidePanel } from "../../index";
|
|
27
27
|
|
|
28
28
|
/**
|
|
@@ -26,7 +26,7 @@ import { useCallback, useEffect, useRef, useState } from "react";
|
|
|
26
26
|
import { Command as CommandPrimitive } from "cmdk";
|
|
27
27
|
import { Entity, EntityRelation, FilterValues, Relation, getCollectionDataPath } from "@rebasepro/types";
|
|
28
28
|
import { EntityPreviewBindingData } from "./EntityPreviewBinding";
|
|
29
|
-
import { useData, useRelationSelector } from "@rebasepro/
|
|
29
|
+
import { useData, useRelationSelector } from "@rebasepro/app";
|
|
30
30
|
import { useSidePanel } from "../hooks/useSidePanel";
|
|
31
31
|
import { normalizeToEntityRelation } from "@rebasepro/common";
|
|
32
32
|
import { EmptyValue } from "../preview";
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
SearchBar,
|
|
11
11
|
Tooltip
|
|
12
12
|
} from "@rebasepro/ui";
|
|
13
|
-
import { iconsSearch } from "@rebasepro/
|
|
14
|
-
import { useTranslation } from "@rebasepro/
|
|
13
|
+
import { iconsSearch } from "@rebasepro/app";
|
|
14
|
+
import { useTranslation } from "@rebasepro/app";
|
|
15
15
|
|
|
16
16
|
const UPDATE_SEARCH_INDEX_WAIT_MS = 220;
|
|
17
17
|
|
|
@@ -3,11 +3,11 @@ import type { Property, WhereFilterOp } from "@rebasepro/types";
|
|
|
3
3
|
import React, { useCallback, useEffect, useMemo, useRef } from "react";
|
|
4
4
|
import { CollectionSize, Entity, EntityTableController, FilterValues, SelectedCellProps } from "@rebasepro/types";
|
|
5
5
|
import { CellRendererParams, TableView, VirtualTableColumn, VirtualTableFilterValues, OnRowClickParams } from "@rebasepro/ui";
|
|
6
|
-
import { DEFAULT_PAGE_SIZE, DataCollectionTableController, OnCellValueChange, OnColumnResizeParams } from "@rebasepro/
|
|
6
|
+
import { DEFAULT_PAGE_SIZE, DataCollectionTableController, OnCellValueChange, OnColumnResizeParams } from "@rebasepro/app";
|
|
7
7
|
import { FilterFormFieldProps } from "@rebasepro/ui";
|
|
8
8
|
import { useOutsideAlerter } from "@rebasepro/ui";
|
|
9
9
|
import { SelectableTableContext } from "./SelectableTableContext";
|
|
10
|
-
import { getRowHeight } from "@rebasepro/
|
|
10
|
+
import { getRowHeight } from "@rebasepro/app";
|
|
11
11
|
import { FilterFieldBinding } from "./filters/FilterFieldBinding";
|
|
12
12
|
|
|
13
13
|
export type SelectableTableProps<M extends Record<string, unknown>> = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useContext } from "react";
|
|
2
|
-
import { DataCollectionTableController } from "@rebasepro/
|
|
2
|
+
import { DataCollectionTableController } from "@rebasepro/app";
|
|
3
3
|
|
|
4
4
|
export const SelectableTableContext = React.createContext<DataCollectionTableController<Record<string, unknown>>>(null! as DataCollectionTableController<Record<string, unknown>>);
|
|
5
5
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { VirtualTableWhereFilterOp } from "@rebasepro/ui";
|
|
3
3
|
import { BooleanSwitchWithLabel } from "@rebasepro/ui";
|
|
4
|
-
import { useTranslation } from "@rebasepro/
|
|
4
|
+
import { useTranslation } from "@rebasepro/app";
|
|
5
5
|
|
|
6
6
|
interface BooleanFieldProps {
|
|
7
7
|
name: string,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useState } from "react";
|
|
2
2
|
import { VirtualTableWhereFilterOp } from "@rebasepro/ui";
|
|
3
3
|
import { DateTimeField, Select, SelectItem } from "@rebasepro/ui";
|
|
4
|
-
import { useCustomizationController } from "@rebasepro/
|
|
4
|
+
import { useCustomizationController } from "@rebasepro/app";
|
|
5
5
|
|
|
6
6
|
interface DateTimeFilterFieldProps {
|
|
7
7
|
name: string,
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
WhereFilterOp
|
|
9
9
|
} from "@rebasepro/types";
|
|
10
10
|
import { enumToObjectEntries, resolveFilterOperators } from "@rebasepro/common";
|
|
11
|
-
import { useCollectionScope, useComponentOverride, useResolvedComponent } from "@rebasepro/
|
|
11
|
+
import { useCollectionScope, useComponentOverride, useResolvedComponent } from "@rebasepro/app";
|
|
12
12
|
import { StringNumberFilterField } from "./StringNumberFilterField";
|
|
13
13
|
import { BooleanFilterField } from "./BooleanFilterField";
|
|
14
14
|
import { DateTimeFilterField } from "./DateTimeFilterField";
|
|
@@ -6,7 +6,7 @@ import { Entity, EntityReference } from "@rebasepro/types";
|
|
|
6
6
|
import { ReferencePreview } from "../../../preview";
|
|
7
7
|
import { Button, Checkbox, Label, Select, SelectItem } from "@rebasepro/ui";
|
|
8
8
|
import { getReferenceFrom } from "@rebasepro/common";
|
|
9
|
-
import { useTranslation } from "@rebasepro/
|
|
9
|
+
import { useTranslation } from "@rebasepro/app";
|
|
10
10
|
import { useCollectionRegistryController } from "../../../index";
|
|
11
11
|
|
|
12
12
|
interface ReferenceFilterFieldProps {
|