@object-ui/app-shell 6.2.3 → 7.1.0
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/CHANGELOG.md +1229 -0
- package/README.md +292 -0
- package/dist/assistant/assistantBus.d.ts +72 -0
- package/dist/assistant/assistantBus.js +133 -0
- package/dist/chrome/CommandPalette.d.ts +1 -1
- package/dist/chrome/CommandPalette.js +26 -22
- package/dist/chrome/ConditionalAuthWrapper.d.ts +1 -1
- package/dist/chrome/ConsoleToaster.d.ts +1 -1
- package/dist/chrome/ConsoleToaster.js +3 -1
- package/dist/chrome/ErrorBoundary.d.ts +1 -1
- package/dist/chrome/KeyboardShortcutsDialog.d.ts +1 -1
- package/dist/chrome/KeyboardShortcutsDialog.js +16 -5
- package/dist/chrome/LoadingScreen.d.ts +1 -1
- package/dist/chrome/LoadingScreen.js +22 -26
- package/dist/chrome/RouteFader.d.ts +1 -1
- package/dist/chrome/ThemeProvider.d.ts +1 -1
- package/dist/components/ManagedByBadge.d.ts +1 -1
- package/dist/console/AppContent.d.ts +1 -1
- package/dist/console/AppContent.js +184 -39
- package/dist/console/ConsoleShell.d.ts +7 -7
- package/dist/console/ConsoleShell.js +32 -3
- package/dist/console/ai/AiChatPage.d.ts +88 -1
- package/dist/console/ai/AiChatPage.js +747 -66
- package/dist/console/ai/ConversationsSidebar.d.ts +26 -1
- package/dist/console/ai/ConversationsSidebar.js +149 -34
- package/dist/console/ai/LiveCanvas.d.ts +28 -0
- package/dist/console/ai/LiveCanvas.js +80 -0
- package/dist/console/ai/reconcileTurn.d.ts +8 -0
- package/dist/console/ai/reconcileTurn.js +20 -0
- package/dist/console/auth/AuthPageLayout.d.ts +1 -1
- package/dist/console/auth/ForgotPasswordPage.d.ts +1 -1
- package/dist/console/auth/LoginPage.d.ts +1 -1
- package/dist/console/auth/RegisterPage.d.ts +1 -1
- package/dist/console/auth/RegisterPage.js +23 -3
- package/dist/console/cloud-connection/CloudConnectionPanel.d.ts +1 -0
- package/dist/console/cloud-connection/CloudConnectionPanel.js +169 -0
- package/dist/console/home/AppCard.d.ts +1 -1
- package/dist/console/home/AppCard.js +6 -12
- package/dist/console/home/HomeAppsStrip.d.ts +8 -0
- package/dist/console/home/HomeAppsStrip.js +61 -0
- package/dist/console/home/HomeLayout.d.ts +1 -1
- package/dist/console/home/HomeLayout.js +3 -1
- package/dist/console/home/HomePage.d.ts +1 -2
- package/dist/console/home/HomePage.js +149 -21
- package/dist/console/home/HomeRail.d.ts +22 -0
- package/dist/console/home/HomeRail.js +62 -0
- package/dist/console/home/QuickActions.d.ts +1 -1
- package/dist/console/home/QuickActions.js +3 -11
- package/dist/console/home/RecentApps.d.ts +1 -1
- package/dist/console/home/RecentApps.js +2 -2
- package/dist/console/home/StarredApps.d.ts +1 -1
- package/dist/console/home/StarredApps.js +2 -2
- package/dist/console/marketplace/InstalledListWidget.d.ts +1 -0
- package/dist/console/marketplace/InstalledListWidget.js +93 -0
- package/dist/console/marketplace/MarkdownText.d.ts +1 -1
- package/dist/console/marketplace/MarketplaceAccessDenied.d.ts +1 -1
- package/dist/console/marketplace/MarketplaceInstalledPage.d.ts +8 -14
- package/dist/console/marketplace/MarketplaceInstalledPage.js +14 -66
- package/dist/console/marketplace/MarketplacePackagePage.d.ts +1 -1
- package/dist/console/marketplace/MarketplacePackagePage.js +249 -8
- package/dist/console/marketplace/MarketplacePage.d.ts +1 -1
- package/dist/console/marketplace/MarketplacePage.js +60 -3
- package/dist/console/marketplace/PackageIcon.d.ts +1 -1
- package/dist/console/marketplace/PluginDisclosure.d.ts +14 -0
- package/dist/console/marketplace/PluginDisclosure.js +38 -0
- package/dist/console/marketplace/marketplaceApi.d.ts +123 -0
- package/dist/console/marketplace/marketplaceApi.js +254 -1
- package/dist/console/organizations/CreateWorkspaceDialog.d.ts +1 -1
- package/dist/console/organizations/OrganizationsLayout.d.ts +1 -1
- package/dist/console/organizations/OrganizationsPage.d.ts +1 -1
- package/dist/console/organizations/manage/AcceptInvitationPage.d.ts +1 -1
- package/dist/console/organizations/manage/InvitationsPage.d.ts +1 -1
- package/dist/console/organizations/manage/InviteMemberDialog.d.ts +1 -1
- package/dist/console/organizations/manage/MembersPage.d.ts +1 -1
- package/dist/console/organizations/manage/OrganizationLayout.d.ts +1 -1
- package/dist/console/organizations/manage/SettingsPage.d.ts +1 -1
- package/dist/context/CommandPaletteProvider.d.ts +44 -0
- package/dist/context/CommandPaletteProvider.js +71 -0
- package/dist/context/FavoritesProvider.d.ts +1 -1
- package/dist/context/NavigationContext.d.ts +1 -1
- package/dist/context/RecentItemsProvider.d.ts +2 -2
- package/dist/context/UserStateAdapters.d.ts +1 -1
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.js +1 -0
- package/dist/hooks/index.d.ts +5 -2
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/useActionModal.d.ts +53 -0
- package/dist/hooks/useActionModal.js +111 -0
- package/dist/hooks/useChatConversation.d.ts +137 -4
- package/dist/hooks/useChatConversation.js +316 -25
- package/dist/hooks/useConsoleActionRuntime.d.ts +70 -0
- package/dist/hooks/useConsoleActionRuntime.js +564 -0
- package/dist/hooks/useConversationList.js +61 -3
- package/dist/hooks/useHomeInbox.d.ts +13 -0
- package/dist/hooks/useHomeInbox.js +142 -0
- package/dist/hooks/useNavPins.js +17 -23
- package/dist/hooks/useNavigationSync.d.ts +33 -0
- package/dist/hooks/useNavigationSync.js +98 -12
- package/dist/hooks/useReconcileOnError.d.ts +40 -0
- package/dist/hooks/useReconcileOnError.js +37 -0
- package/dist/hooks/useRecordApprovals.d.ts +18 -19
- package/dist/hooks/useRecordApprovals.js +24 -40
- package/dist/hooks/useResponsiveSidebar.js +14 -5
- package/dist/hooks/useSettleSignal.d.ts +19 -0
- package/dist/hooks/useSettleSignal.js +20 -0
- package/dist/hooks/useTrackRouteAsRecent.js +35 -0
- package/dist/hooks/useUrlOverlay.d.ts +62 -0
- package/dist/hooks/useUrlOverlay.js +88 -0
- package/dist/index.d.ts +18 -8
- package/dist/index.js +17 -5
- package/dist/layout/ActivityFeed.d.ts +1 -1
- package/dist/layout/AppHeader.d.ts +3 -2
- package/dist/layout/AppHeader.js +237 -72
- package/dist/layout/AppSidebar.d.ts +2 -1
- package/dist/layout/AppSidebar.js +26 -46
- package/dist/layout/AppSwitcher.d.ts +2 -1
- package/dist/layout/AppSwitcher.js +9 -5
- package/dist/layout/AuthPageLayout.d.ts +1 -1
- package/dist/layout/ConnectionStatus.d.ts +1 -1
- package/dist/layout/ConnectionStatus.js +9 -6
- package/dist/layout/ConsoleChatbotFab.d.ts +19 -1
- package/dist/layout/ConsoleChatbotFab.js +16 -2
- package/dist/layout/ConsoleFloatingChatbot.d.ts +34 -2
- package/dist/layout/ConsoleFloatingChatbot.js +391 -41
- package/dist/layout/ConsoleLayout.d.ts +1 -1
- package/dist/layout/ConsoleLayout.js +27 -11
- package/dist/layout/ContextSelectors.d.ts +44 -0
- package/dist/layout/ContextSelectors.js +242 -0
- package/dist/layout/InboxPopover.d.ts +6 -1
- package/dist/layout/InboxPopover.js +25 -6
- package/dist/layout/LocaleSwitcher.d.ts +1 -1
- package/dist/layout/LocalizedSidebarTrigger.d.ts +2 -0
- package/dist/layout/LocalizedSidebarTrigger.js +15 -0
- package/dist/layout/MobileViewSwitcherContext.d.ts +1 -1
- package/dist/layout/ModeToggle.d.ts +1 -1
- package/dist/layout/PageHeader.d.ts +1 -1
- package/dist/layout/UnifiedSidebar.d.ts +2 -1
- package/dist/layout/UnifiedSidebar.js +116 -15
- package/dist/layout/agentPicker.d.ts +56 -0
- package/dist/layout/agentPicker.js +40 -0
- package/dist/observability/index.d.ts +1 -0
- package/dist/observability/index.js +1 -0
- package/dist/observability/settleSignal.d.ts +64 -0
- package/dist/observability/settleSignal.js +131 -0
- package/dist/preview/CommitTimeline.d.ts +15 -0
- package/dist/preview/CommitTimeline.js +82 -0
- package/dist/preview/DraftChangesPanel.d.ts +19 -0
- package/dist/preview/DraftChangesPanel.js +114 -0
- package/dist/preview/DraftPreviewBar.d.ts +8 -0
- package/dist/preview/DraftPreviewBar.js +86 -0
- package/dist/preview/PreviewDraftEmptyState.d.ts +16 -0
- package/dist/preview/PreviewDraftEmptyState.js +47 -0
- package/dist/preview/PreviewModeContext.d.ts +57 -0
- package/dist/preview/PreviewModeContext.js +99 -0
- package/dist/preview/UnpublishedAppBar.d.ts +8 -0
- package/dist/preview/UnpublishedAppBar.js +83 -0
- package/dist/preview/commitHistory.d.ts +28 -0
- package/dist/preview/commitHistory.js +48 -0
- package/dist/preview/draftStatus.d.ts +20 -0
- package/dist/preview/draftStatus.js +27 -0
- package/dist/preview/usePublishAllDrafts.d.ts +18 -0
- package/dist/preview/usePublishAllDrafts.js +106 -0
- package/dist/providers/AdapterProvider.d.ts +1 -1
- package/dist/providers/AdapterProvider.js +6 -1
- package/dist/providers/ExpressionProvider.d.ts +1 -1
- package/dist/providers/MetadataProvider.d.ts +17 -2
- package/dist/providers/MetadataProvider.js +192 -12
- package/dist/runtime-config.d.ts +46 -2
- package/dist/runtime-config.js +39 -2
- package/dist/services/builtinComponents.js +68 -59
- package/dist/skeletons/SkeletonDashboard.d.ts +1 -1
- package/dist/skeletons/SkeletonDetail.d.ts +1 -1
- package/dist/skeletons/SkeletonGrid.d.ts +1 -1
- package/dist/utils/appRoute.d.ts +21 -0
- package/dist/utils/appRoute.js +25 -0
- package/dist/utils/deriveRelatedLists.d.ts +54 -0
- package/dist/utils/deriveRelatedLists.js +91 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/managedByEmptyState.d.ts +8 -1
- package/dist/utils/managedByEmptyState.js +13 -7
- package/dist/utils/preferLocal.d.ts +18 -0
- package/dist/utils/preferLocal.js +24 -0
- package/dist/views/ActionConfirmDialog.d.ts +1 -1
- package/dist/views/ActionConfirmDialog.js +3 -1
- package/dist/views/ActionParamDialog.d.ts +6 -1
- package/dist/views/ActionParamDialog.js +9 -3
- package/dist/views/ActionResultDialog.d.ts +13 -0
- package/dist/views/ActionResultDialog.js +134 -0
- package/dist/views/ComponentNavView.d.ts +14 -1
- package/dist/views/CreateViewDialog.d.ts +1 -1
- package/dist/views/DashboardConfigPanel.d.ts +28 -0
- package/dist/views/DashboardConfigPanel.js +81 -0
- package/dist/views/DashboardView.d.ts +4 -3
- package/dist/views/DashboardView.js +38 -239
- package/dist/views/FlowRunner.d.ts +31 -0
- package/dist/views/FlowRunner.js +121 -0
- package/dist/views/InterfaceListPage.d.ts +49 -0
- package/dist/views/InterfaceListPage.js +347 -0
- package/dist/views/MetadataInspector.d.ts +2 -2
- package/dist/views/ObjectView.d.ts +1 -1
- package/dist/views/ObjectView.js +209 -532
- package/dist/views/PageView.d.ts +8 -3
- package/dist/views/PageView.js +45 -32
- package/dist/views/RecordDetailView.d.ts +1 -1
- package/dist/views/RecordDetailView.js +363 -148
- package/dist/views/RecordFormPage.d.ts +1 -1
- package/dist/views/RecordFormPage.js +26 -1
- package/dist/views/ReportConfigPanel.d.ts +37 -0
- package/dist/views/ReportConfigPanel.js +85 -0
- package/dist/views/ReportView.d.ts +1 -1
- package/dist/views/ReportView.js +116 -7
- package/dist/views/RuntimeDraftBar.d.ts +30 -0
- package/dist/views/RuntimeDraftBar.js +112 -0
- package/dist/views/ScreenView.d.ts +70 -0
- package/dist/views/ScreenView.js +73 -0
- package/dist/views/SearchResultsPage.d.ts +1 -1
- package/dist/views/SearchResultsPage.js +8 -18
- package/dist/views/ViewConfigPanel.d.ts +24 -17
- package/dist/views/ViewConfigPanel.js +121 -77
- package/dist/views/index.d.ts +1 -1
- package/dist/views/index.js +1 -1
- package/dist/views/metadata-admin/AuditPanel.d.ts +28 -0
- package/dist/views/metadata-admin/AuditPanel.js +79 -0
- package/dist/views/metadata-admin/DiagnosticsPage.d.ts +20 -0
- package/dist/views/metadata-admin/DiagnosticsPage.js +69 -0
- package/dist/views/metadata-admin/DirectoryPage.d.ts +16 -1
- package/dist/views/metadata-admin/DirectoryPage.js +101 -24
- package/dist/views/metadata-admin/DraftReviewPanel.d.ts +33 -0
- package/dist/views/metadata-admin/DraftReviewPanel.js +77 -0
- package/dist/views/metadata-admin/EmbeddedItemEditor.d.ts +17 -1
- package/dist/views/metadata-admin/EmbeddedItemEditor.js +15 -8
- package/dist/views/metadata-admin/JsonSourceEditor.d.ts +39 -0
- package/dist/views/metadata-admin/JsonSourceEditor.js +196 -0
- package/dist/views/metadata-admin/LayeredDiff.d.ts +39 -1
- package/dist/views/metadata-admin/LayeredDiff.js +171 -5
- package/dist/views/metadata-admin/MetadataDetailDrawer.d.ts +15 -1
- package/dist/views/metadata-admin/MetadataTypeActions.d.ts +48 -0
- package/dist/views/metadata-admin/MetadataTypeActions.js +165 -0
- package/dist/views/metadata-admin/PackagesPage.d.ts +18 -0
- package/dist/views/metadata-admin/PackagesPage.js +403 -0
- package/dist/views/metadata-admin/PageShell.d.ts +1 -1
- package/dist/views/metadata-admin/PageShell.js +9 -4
- package/dist/views/metadata-admin/PermissionMatrixEditor.d.ts +35 -1
- package/dist/views/metadata-admin/QuickFind.d.ts +21 -1
- package/dist/views/metadata-admin/QuickFind.js +6 -3
- package/dist/views/metadata-admin/RelatedPanel.d.ts +24 -1
- package/dist/views/metadata-admin/RelatedPanel.js +20 -18
- package/dist/views/metadata-admin/ResourceEditPage.d.ts +40 -1
- package/dist/views/metadata-admin/ResourceEditPage.js +1250 -60
- package/dist/views/metadata-admin/ResourceHistoryPage.d.ts +39 -1
- package/dist/views/metadata-admin/ResourceHistoryPage.js +66 -16
- package/dist/views/metadata-admin/ResourceListPage.d.ts +13 -1
- package/dist/views/metadata-admin/ResourceListPage.js +258 -30
- package/dist/views/metadata-admin/ResourceRouter.d.ts +23 -1
- package/dist/views/metadata-admin/SchemaForm.d.ts +34 -1
- package/dist/views/metadata-admin/SchemaForm.js +559 -49
- package/dist/views/metadata-admin/StudioHomePage.d.ts +22 -0
- package/dist/views/metadata-admin/StudioHomePage.js +205 -0
- package/dist/views/metadata-admin/anchors.js +255 -24
- package/dist/views/metadata-admin/clientValidation.d.ts +50 -0
- package/dist/views/metadata-admin/clientValidation.js +169 -0
- package/dist/views/metadata-admin/color-variant-field.d.ts +30 -0
- package/dist/views/metadata-admin/color-variant-field.js +38 -0
- package/dist/views/metadata-admin/createDerive.d.ts +75 -0
- package/dist/views/metadata-admin/createDerive.js +179 -0
- package/dist/views/metadata-admin/dashboard-schema.d.ts +12 -0
- package/dist/views/metadata-admin/dashboard-schema.js +80 -0
- package/dist/views/metadata-admin/datasource/DatasourceResourcePage.d.ts +35 -0
- package/dist/views/metadata-admin/datasource/DatasourceResourcePage.js +327 -0
- package/dist/views/metadata-admin/datasource/register.d.ts +1 -0
- package/dist/views/metadata-admin/datasource/register.js +24 -0
- package/dist/views/metadata-admin/default-inspector-registry.d.ts +49 -0
- package/dist/views/metadata-admin/default-inspector-registry.js +8 -0
- package/dist/views/metadata-admin/default-schemas.js +115 -10
- package/dist/views/metadata-admin/external/ExternalDatasourcePanel.d.ts +27 -0
- package/dist/views/metadata-admin/external/ExternalDatasourcePanel.js +69 -0
- package/dist/views/metadata-admin/external/ImportObjectDialog.d.ts +27 -0
- package/dist/views/metadata-admin/external/ImportObjectDialog.js +77 -0
- package/dist/views/metadata-admin/external/SchemaBrowser.d.ts +16 -0
- package/dist/views/metadata-admin/external/SchemaBrowser.js +74 -0
- package/dist/views/metadata-admin/external/ValidationPanel.d.ts +16 -0
- package/dist/views/metadata-admin/external/ValidationPanel.js +68 -0
- package/dist/views/metadata-admin/external/api.d.ts +100 -0
- package/dist/views/metadata-admin/external/api.js +124 -0
- package/dist/views/metadata-admin/i18n.d.ts +1 -0
- package/dist/views/metadata-admin/i18n.js +1252 -2
- package/dist/views/metadata-admin/index.d.ts +8 -5
- package/dist/views/metadata-admin/index.js +12 -2
- package/dist/views/metadata-admin/inspector-registry.d.ts +51 -0
- package/dist/views/metadata-admin/inspector-registry.js +11 -0
- package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.d.ts +30 -0
- package/dist/views/metadata-admin/inspectors/ActionDefaultInspector.js +180 -0
- package/dist/views/metadata-admin/inspectors/AppNavInspector.d.ts +16 -0
- package/dist/views/metadata-admin/inspectors/AppNavInspector.js +110 -0
- package/dist/views/metadata-admin/inspectors/ConditionBuilder.d.ts +29 -0
- package/dist/views/metadata-admin/inspectors/ConditionBuilder.js +154 -0
- package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.d.ts +28 -0
- package/dist/views/metadata-admin/inspectors/DashboardDefaultInspector.js +110 -0
- package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.d.ts +18 -0
- package/dist/views/metadata-admin/inspectors/DashboardWidgetInspector.js +139 -0
- package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.js +221 -0
- package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.d.ts +16 -0
- package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.js +126 -0
- package/dist/views/metadata-admin/inspectors/FlowInspector.d.ts +12 -0
- package/dist/views/metadata-admin/inspectors/FlowInspector.js +9 -0
- package/dist/views/metadata-admin/inspectors/FlowKeyValueField.d.ts +30 -0
- package/dist/views/metadata-admin/inspectors/FlowKeyValueField.js +125 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.d.ts +18 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.js +40 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeInspector.d.ts +14 -0
- package/dist/views/metadata-admin/inspectors/FlowNodeInspector.js +205 -0
- package/dist/views/metadata-admin/inspectors/FlowObjectListField.d.ts +26 -0
- package/dist/views/metadata-admin/inspectors/FlowObjectListField.js +105 -0
- package/dist/views/metadata-admin/inspectors/FlowReferenceField.d.ts +83 -0
- package/dist/views/metadata-admin/inspectors/FlowReferenceField.js +181 -0
- package/dist/views/metadata-admin/inspectors/FlowStringListField.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/FlowStringListField.js +60 -0
- package/dist/views/metadata-admin/inspectors/InspectorComboField.d.ts +40 -0
- package/dist/views/metadata-admin/inspectors/InspectorComboField.js +61 -0
- package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.d.ts +21 -0
- package/dist/views/metadata-admin/inspectors/ObjectDefaultInspector.js +55 -0
- package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.d.ts +23 -0
- package/dist/views/metadata-admin/inspectors/ObjectFieldInspector.js +365 -0
- package/dist/views/metadata-admin/inspectors/PageBlockInspector.d.ts +48 -0
- package/dist/views/metadata-admin/inspectors/PageBlockInspector.js +332 -0
- package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.d.ts +58 -0
- package/dist/views/metadata-admin/inspectors/ReportDefaultInspector.js +218 -0
- package/dist/views/metadata-admin/inspectors/ViewColumnInspector.d.ts +19 -0
- package/dist/views/metadata-admin/inspectors/ViewColumnInspector.js +144 -0
- package/dist/views/metadata-admin/inspectors/ViewInspector.d.ts +19 -0
- package/dist/views/metadata-admin/inspectors/ViewInspector.js +21 -0
- package/dist/views/metadata-admin/inspectors/ViewVariantInspector.d.ts +54 -0
- package/dist/views/metadata-admin/inspectors/ViewVariantInspector.js +191 -0
- package/dist/views/metadata-admin/inspectors/_shared.d.ts +128 -0
- package/dist/views/metadata-admin/inspectors/_shared.js +113 -0
- package/dist/views/metadata-admin/inspectors/datasetFilterCondition.d.ts +24 -0
- package/dist/views/metadata-admin/inspectors/datasetFilterCondition.js +97 -0
- package/dist/views/metadata-admin/inspectors/expression-validate.d.ts +26 -0
- package/dist/views/metadata-admin/inspectors/expression-validate.js +66 -0
- package/dist/views/metadata-admin/inspectors/flow-node-config.d.ts +143 -0
- package/dist/views/metadata-admin/inspectors/flow-node-config.js +506 -0
- package/dist/views/metadata-admin/inspectors/index.d.ts +1 -0
- package/dist/views/metadata-admin/inspectors/index.js +45 -0
- package/dist/views/metadata-admin/inspectors/json-schema-to-fields.d.ts +40 -0
- package/dist/views/metadata-admin/inspectors/json-schema-to-fields.js +227 -0
- package/dist/views/metadata-admin/inspectors/useDatasetFields.d.ts +72 -0
- package/dist/views/metadata-admin/inspectors/useDatasetFields.js +0 -0
- package/dist/views/metadata-admin/issuePath.d.ts +22 -0
- package/dist/views/metadata-admin/issuePath.js +65 -0
- package/dist/views/metadata-admin/mergeServerFields.d.ts +65 -0
- package/dist/views/metadata-admin/mergeServerFields.js +56 -0
- package/dist/views/metadata-admin/package-scope.d.ts +26 -0
- package/dist/views/metadata-admin/package-scope.js +43 -0
- package/dist/views/metadata-admin/preview-registry.d.ts +55 -0
- package/dist/views/metadata-admin/previews/ActionPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/ActionPreview.js +238 -0
- package/dist/views/metadata-admin/previews/AddWidgetPicker.d.ts +12 -0
- package/dist/views/metadata-admin/previews/AddWidgetPicker.js +56 -0
- package/dist/views/metadata-admin/previews/AgentPreview.d.ts +24 -0
- package/dist/views/metadata-admin/previews/AgentPreview.js +100 -0
- package/dist/views/metadata-admin/previews/AppNavCanvas.d.ts +31 -0
- package/dist/views/metadata-admin/previews/AppNavCanvas.js +260 -0
- package/dist/views/metadata-admin/previews/AppPreview.d.ts +16 -1
- package/dist/views/metadata-admin/previews/AppPreview.js +23 -14
- package/dist/views/metadata-admin/previews/BookPreview.d.ts +20 -0
- package/dist/views/metadata-admin/previews/BookPreview.js +132 -0
- package/dist/views/metadata-admin/previews/DashboardPreview.d.ts +16 -1
- package/dist/views/metadata-admin/previews/DashboardPreview.js +110 -8
- package/dist/views/metadata-admin/previews/DatasetPreview.d.ts +18 -0
- package/dist/views/metadata-admin/previews/DatasetPreview.js +105 -0
- package/dist/views/metadata-admin/previews/DatasourcePreview.d.ts +23 -0
- package/dist/views/metadata-admin/previews/DatasourcePreview.js +68 -0
- package/dist/views/metadata-admin/previews/EmailTemplatePreview.d.ts +14 -1
- package/dist/views/metadata-admin/previews/FieldStub.d.ts +30 -0
- package/dist/views/metadata-admin/previews/FieldStub.js +104 -0
- package/dist/views/metadata-admin/previews/FieldsListEditor.d.ts +50 -0
- package/dist/views/metadata-admin/previews/FieldsListEditor.js +97 -0
- package/dist/views/metadata-admin/previews/FlowCanvas.d.ts +49 -0
- package/dist/views/metadata-admin/previews/FlowCanvas.js +416 -0
- package/dist/views/metadata-admin/previews/FlowPreview.d.ts +20 -0
- package/dist/views/metadata-admin/previews/FlowPreview.js +120 -0
- package/dist/views/metadata-admin/previews/FlowRunsPanel.d.ts +46 -0
- package/dist/views/metadata-admin/previews/FlowRunsPanel.js +97 -0
- package/dist/views/metadata-admin/previews/FlowSimulatorPanel.d.ts +25 -0
- package/dist/views/metadata-admin/previews/FlowSimulatorPanel.js +204 -0
- package/dist/views/metadata-admin/previews/JobPreview.d.ts +28 -0
- package/dist/views/metadata-admin/previews/JobPreview.js +290 -0
- package/dist/views/metadata-admin/previews/ObjectFormCanvas.d.ts +30 -0
- package/dist/views/metadata-admin/previews/ObjectFormCanvas.js +547 -0
- package/dist/views/metadata-admin/previews/ObjectPreview.d.ts +14 -1
- package/dist/views/metadata-admin/previews/ObjectPreview.js +5 -30
- package/dist/views/metadata-admin/previews/OutlineStrip.d.ts +32 -0
- package/dist/views/metadata-admin/previews/OutlineStrip.js +8 -0
- package/dist/views/metadata-admin/previews/PageBlockCanvas.d.ts +49 -0
- package/dist/views/metadata-admin/previews/PageBlockCanvas.js +510 -0
- package/dist/views/metadata-admin/previews/PagePreview.d.ts +10 -1
- package/dist/views/metadata-admin/previews/PagePreview.js +200 -5
- package/dist/views/metadata-admin/previews/PermissionPreview.d.ts +27 -0
- package/dist/views/metadata-admin/previews/PermissionPreview.js +115 -0
- package/dist/views/metadata-admin/previews/PreviewShell.d.ts +29 -6
- package/dist/views/metadata-admin/previews/PreviewShell.js +16 -3
- package/dist/views/metadata-admin/previews/ReportPreview.d.ts +18 -1
- package/dist/views/metadata-admin/previews/ReportPreview.js +23 -15
- package/dist/views/metadata-admin/previews/RolePreview.d.ts +19 -0
- package/dist/views/metadata-admin/previews/RolePreview.js +14 -0
- package/dist/views/metadata-admin/previews/ScreenPreview.d.ts +38 -0
- package/dist/views/metadata-admin/previews/ScreenPreview.js +61 -0
- package/dist/views/metadata-admin/previews/SkillPreview.d.ts +22 -0
- package/dist/views/metadata-admin/previews/SkillPreview.js +34 -0
- package/dist/views/metadata-admin/previews/ToolPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/ToolPreview.js +122 -0
- package/dist/views/metadata-admin/previews/TranslationPreview.d.ts +25 -0
- package/dist/views/metadata-admin/previews/TranslationPreview.js +52 -0
- package/dist/views/metadata-admin/previews/ValidationPreview.d.ts +27 -0
- package/dist/views/metadata-admin/previews/ValidationPreview.js +110 -0
- package/dist/views/metadata-admin/previews/ViewColumnPanes.d.ts +62 -0
- package/dist/views/metadata-admin/previews/ViewColumnPanes.js +140 -0
- package/dist/views/metadata-admin/previews/ViewPreview.d.ts +23 -1
- package/dist/views/metadata-admin/previews/ViewPreview.js +101 -73
- package/dist/views/metadata-admin/previews/block-config.d.ts +82 -0
- package/dist/views/metadata-admin/previews/block-config.js +324 -0
- package/dist/views/metadata-admin/previews/block-types.d.ts +40 -0
- package/dist/views/metadata-admin/previews/block-types.js +110 -0
- package/dist/views/metadata-admin/previews/field-types.d.ts +53 -0
- package/dist/views/metadata-admin/previews/field-types.js +97 -0
- package/dist/views/metadata-admin/previews/flow-canvas-layout.d.ts +102 -0
- package/dist/views/metadata-admin/previews/flow-canvas-layout.js +227 -0
- package/dist/views/metadata-admin/previews/flow-canvas-parts.d.ts +96 -0
- package/dist/views/metadata-admin/previews/flow-canvas-parts.js +373 -0
- package/dist/views/metadata-admin/previews/form-preview.d.ts +24 -0
- package/dist/views/metadata-admin/previews/form-preview.js +29 -0
- package/dist/views/metadata-admin/previews/index.js +43 -0
- package/dist/views/metadata-admin/previews/object-fields-bridge.d.ts +66 -0
- package/dist/views/metadata-admin/previews/object-fields-bridge.js +171 -0
- package/dist/views/metadata-admin/previews/object-fields-io.d.ts +130 -0
- package/dist/views/metadata-admin/previews/object-fields-io.js +243 -0
- package/dist/views/metadata-admin/previews/screen-spec.d.ts +43 -0
- package/dist/views/metadata-admin/previews/screen-spec.js +108 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-types.d.ts +102 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-types.js +2 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.d.ts +15 -0
- package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.js +185 -0
- package/dist/views/metadata-admin/previews/simulator/flow-simulator.d.ts +73 -0
- package/dist/views/metadata-admin/previews/simulator/flow-simulator.js +426 -0
- package/dist/views/metadata-admin/previews/useDatasetCatalog.d.ts +47 -0
- package/dist/views/metadata-admin/previews/useDatasetCatalog.js +133 -0
- package/dist/views/metadata-admin/previews/useFlowNodePalette.d.ts +44 -0
- package/dist/views/metadata-admin/previews/useFlowNodePalette.js +124 -0
- package/dist/views/metadata-admin/previews/useMetaOptions.d.ts +8 -0
- package/dist/views/metadata-admin/previews/useMetaOptions.js +50 -0
- package/dist/views/metadata-admin/previews/useObjectFields.d.ts +23 -0
- package/dist/views/metadata-admin/previews/useObjectFields.js +79 -0
- package/dist/views/metadata-admin/previews/useObjectOptions.d.ts +8 -0
- package/dist/views/metadata-admin/previews/useObjectOptions.js +43 -0
- package/dist/views/metadata-admin/previews/view-column-io.d.ts +42 -0
- package/dist/views/metadata-admin/previews/view-column-io.js +73 -0
- package/dist/views/metadata-admin/previews/widget-types.d.ts +24 -0
- package/dist/views/metadata-admin/previews/widget-types.js +40 -0
- package/dist/views/metadata-admin/registry.d.ts +140 -19
- package/dist/views/metadata-admin/report-schema.d.ts +26 -0
- package/dist/views/metadata-admin/report-schema.js +121 -0
- package/dist/views/metadata-admin/useMetadata.d.ts +100 -2
- package/dist/views/metadata-admin/useMetadata.js +155 -4
- package/dist/views/metadata-admin/view-item-normalize.d.ts +20 -0
- package/dist/views/metadata-admin/view-item-normalize.js +68 -0
- package/dist/views/metadata-admin/view-schema.d.ts +16 -0
- package/dist/views/metadata-admin/view-schema.js +107 -0
- package/dist/views/metadata-admin/view-variant-model.d.ts +23 -0
- package/dist/views/metadata-admin/view-variant-model.js +64 -0
- package/dist/views/metadata-admin/widgets.d.ts +89 -1
- package/dist/views/metadata-admin/widgets.js +491 -17
- package/dist/views/runtime-metadata-persistence.d.ts +78 -0
- package/dist/views/runtime-metadata-persistence.js +89 -0
- package/dist/views/useOpenRecordList.d.ts +18 -0
- package/dist/views/useOpenRecordList.js +36 -0
- package/dist/views/userFilterUrlState.d.ts +15 -0
- package/dist/views/userFilterUrlState.js +53 -0
- package/dist/views/view-config-adapter.d.ts +38 -0
- package/dist/views/view-config-adapter.js +80 -0
- package/package.json +52 -34
- package/dist/views/DesignDrawer.d.ts +0 -28
- package/dist/views/DesignDrawer.js +0 -51
- package/dist/views/metadata-admin/DesignerEditorWrapper.d.ts +0 -68
- package/dist/views/metadata-admin/DesignerEditorWrapper.js +0 -158
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
3
|
+
/**
|
|
4
|
+
* Compact controls for the View column bar.
|
|
5
|
+
*
|
|
6
|
+
* • ColumnChip — a single draggable column "pill": click to
|
|
7
|
+
* select (→ inspector), drag to reorder, × to remove. Designed to
|
|
8
|
+
* sit in a one-line toolbar above the live grid preview so the
|
|
9
|
+
* preview — not the field manager — owns the canvas.
|
|
10
|
+
*
|
|
11
|
+
* • AddFieldPopover — an Airtable/Notion-style "+ Add field" button
|
|
12
|
+
* that opens a searchable checklist of the bound Object's fields.
|
|
13
|
+
* Click a field to append it as a column. Already-used fields are
|
|
14
|
+
* tagged "Added" but stay clickable (a table may show a field
|
|
15
|
+
* twice). Removal is explicit via the chip × so column-level config
|
|
16
|
+
* (label, width, sortable…) is never silently dropped.
|
|
17
|
+
*/
|
|
18
|
+
import * as React from 'react';
|
|
19
|
+
import { GripVertical, Plus, Search, X } from 'lucide-react';
|
|
20
|
+
import { Badge, Popover, PopoverContent, PopoverTrigger, } from '@object-ui/components';
|
|
21
|
+
import { resolveFieldTypeMeta, resolveCategoryTone } from './field-types';
|
|
22
|
+
import { detectLocale, t, tFormat } from '../i18n';
|
|
23
|
+
const DND_MIME = 'text/x-objectui-viewcol';
|
|
24
|
+
function FieldIcon({ type }) {
|
|
25
|
+
const meta = resolveFieldTypeMeta(type);
|
|
26
|
+
const tone = resolveCategoryTone(type);
|
|
27
|
+
const Icon = meta.Icon;
|
|
28
|
+
return _jsx(Icon, { className: `h-3.5 w-3.5 shrink-0 ${tone.icon}` });
|
|
29
|
+
}
|
|
30
|
+
/* ───────────────────────────── Column chip ────────────────────────────── */
|
|
31
|
+
export function ColumnChip({ index, label, fieldType, selected, canEdit, dragging, dropBefore, onSelect, onRemove, onDragStart, onDragEnd, onDragOverChip, onDropChip, }) {
|
|
32
|
+
return (_jsxs("div", { className: "relative flex items-stretch", children: [dropBefore && (_jsx("span", { className: "pointer-events-none absolute -left-1 top-0 h-full w-0.5 rounded bg-primary" })), _jsxs("div", { role: "button", tabIndex: 0, draggable: canEdit, "aria-pressed": selected, onDragStart: (e) => {
|
|
33
|
+
if (!canEdit)
|
|
34
|
+
return;
|
|
35
|
+
e.dataTransfer.effectAllowed = 'move';
|
|
36
|
+
e.dataTransfer.setData(DND_MIME, String(index));
|
|
37
|
+
onDragStart();
|
|
38
|
+
}, onDragEnd: onDragEnd, onDragOver: (e) => {
|
|
39
|
+
if (!canEdit || !dragging)
|
|
40
|
+
return;
|
|
41
|
+
if (!e.dataTransfer.types.includes(DND_MIME))
|
|
42
|
+
return;
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
e.dataTransfer.dropEffect = 'move';
|
|
45
|
+
onDragOverChip();
|
|
46
|
+
}, onDrop: (e) => {
|
|
47
|
+
if (!canEdit)
|
|
48
|
+
return;
|
|
49
|
+
if (!e.dataTransfer.types.includes(DND_MIME))
|
|
50
|
+
return;
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
e.stopPropagation();
|
|
53
|
+
onDropChip();
|
|
54
|
+
}, onClick: onSelect, onKeyDown: (e) => {
|
|
55
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
onSelect();
|
|
58
|
+
}
|
|
59
|
+
}, className: 'group inline-flex items-center gap-1.5 rounded-md border bg-card py-1 pl-1.5 pr-1 text-xs transition-colors hover:border-primary/40 ' +
|
|
60
|
+
(selected ? 'border-primary ring-1 ring-primary' : 'border-border') +
|
|
61
|
+
(canEdit ? ' cursor-grab active:cursor-grabbing' : ''), children: [canEdit && (_jsx(GripVertical, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground/40 group-hover:text-muted-foreground" })), _jsx(FieldIcon, { type: fieldType }), _jsx("span", { className: "max-w-[12rem] truncate font-medium", children: label }), canEdit && (_jsx("span", { role: "button", tabIndex: 0, "aria-label": `Remove ${label}`, onClick: (e) => {
|
|
62
|
+
e.stopPropagation();
|
|
63
|
+
onRemove();
|
|
64
|
+
}, onKeyDown: (e) => {
|
|
65
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
66
|
+
e.preventDefault();
|
|
67
|
+
e.stopPropagation();
|
|
68
|
+
onRemove();
|
|
69
|
+
}
|
|
70
|
+
}, className: "inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground/60 hover:bg-destructive/10 hover:text-destructive", children: _jsx(X, { className: "h-3 w-3" }) }))] })] }));
|
|
71
|
+
}
|
|
72
|
+
/* ───────────────────────── Field list row (vertical) ──────────────────── */
|
|
73
|
+
/**
|
|
74
|
+
* FieldListRow — a full-width, vertically-stacked variant of {@link ColumnChip}
|
|
75
|
+
* for the right-panel Fields list. Same HTML5 drag-and-drop contract (click to
|
|
76
|
+
* select, drag the handle to reorder, × to remove) but laid out as a list row
|
|
77
|
+
* (icon · label · machine name · remove) so it reads like a mainstream
|
|
78
|
+
* low-code field manager rather than a horizontal toolbar.
|
|
79
|
+
*/
|
|
80
|
+
export function FieldListRow({ index, label, fieldName, fieldType, selected, canEdit, dragging, dropBefore, onSelect, onRemove, onDragStart, onDragEnd, onDragOverRow, onDropRow, }) {
|
|
81
|
+
return (_jsxs("div", { className: "relative", children: [dropBefore && (_jsx("span", { className: "pointer-events-none absolute -top-0.5 left-0 right-0 h-0.5 rounded bg-primary" })), _jsxs("div", { role: "button", tabIndex: 0, draggable: canEdit, "aria-pressed": selected, onDragStart: (e) => {
|
|
82
|
+
if (!canEdit)
|
|
83
|
+
return;
|
|
84
|
+
e.dataTransfer.effectAllowed = 'move';
|
|
85
|
+
e.dataTransfer.setData(DND_MIME, String(index));
|
|
86
|
+
onDragStart();
|
|
87
|
+
}, onDragEnd: onDragEnd, onDragOver: (e) => {
|
|
88
|
+
if (!canEdit || !dragging)
|
|
89
|
+
return;
|
|
90
|
+
if (!e.dataTransfer.types.includes(DND_MIME))
|
|
91
|
+
return;
|
|
92
|
+
e.preventDefault();
|
|
93
|
+
e.dataTransfer.dropEffect = 'move';
|
|
94
|
+
onDragOverRow();
|
|
95
|
+
}, onDrop: (e) => {
|
|
96
|
+
if (!canEdit)
|
|
97
|
+
return;
|
|
98
|
+
if (!e.dataTransfer.types.includes(DND_MIME))
|
|
99
|
+
return;
|
|
100
|
+
e.preventDefault();
|
|
101
|
+
e.stopPropagation();
|
|
102
|
+
onDropRow();
|
|
103
|
+
}, onClick: onSelect, onKeyDown: (e) => {
|
|
104
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
onSelect();
|
|
107
|
+
}
|
|
108
|
+
}, className: 'group flex items-center gap-2 rounded-md border bg-card px-2 py-1.5 text-xs transition-colors hover:border-primary/40 ' +
|
|
109
|
+
(selected ? 'border-primary ring-1 ring-primary ' : 'border-border ') +
|
|
110
|
+
(canEdit ? 'cursor-grab active:cursor-grabbing' : ''), children: [canEdit && (_jsx(GripVertical, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground/40 group-hover:text-muted-foreground" })), _jsx(FieldIcon, { type: fieldType }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: label }), fieldName && fieldName !== label && (_jsx("code", { className: "max-w-[7rem] shrink-0 truncate text-[10px] text-muted-foreground", children: fieldName })), canEdit && (_jsx("span", { role: "button", tabIndex: 0, "aria-label": `Remove ${label}`, onClick: (e) => {
|
|
111
|
+
e.stopPropagation();
|
|
112
|
+
onRemove();
|
|
113
|
+
}, onKeyDown: (e) => {
|
|
114
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
115
|
+
e.preventDefault();
|
|
116
|
+
e.stopPropagation();
|
|
117
|
+
onRemove();
|
|
118
|
+
}
|
|
119
|
+
}, className: "inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground/60 hover:bg-destructive/10 hover:text-destructive", children: _jsx(X, { className: "h-3 w-3" }) }))] })] }));
|
|
120
|
+
}
|
|
121
|
+
/* ─────────────────────────── Add-field popover ────────────────────────── */
|
|
122
|
+
export function AddFieldPopover({ fields, usedNames, loading, error, onAdd, }) {
|
|
123
|
+
const locale = React.useMemo(() => detectLocale(), []);
|
|
124
|
+
const [open, setOpen] = React.useState(false);
|
|
125
|
+
const [query, setQuery] = React.useState('');
|
|
126
|
+
const filtered = React.useMemo(() => {
|
|
127
|
+
const q = query.trim().toLowerCase();
|
|
128
|
+
if (!q)
|
|
129
|
+
return fields;
|
|
130
|
+
return fields.filter((f) => f.name.toLowerCase().includes(q) || f.label.toLowerCase().includes(q));
|
|
131
|
+
}, [fields, query]);
|
|
132
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", className: "inline-flex items-center gap-1 rounded-md border border-dashed px-2 py-1 text-xs text-muted-foreground hover:border-primary/40 hover:bg-accent/40 hover:text-foreground", children: [_jsx(Plus, { className: "h-3.5 w-3.5" }), " ", t('engine.form.addFieldPlain', locale)] }) }), _jsxs(PopoverContent, { align: "start", className: "w-72 p-0", children: [_jsxs("div", { className: "relative border-b p-2", children: [_jsx(Search, { className: "pointer-events-none absolute left-4 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { autoFocus: true, value: query, onChange: (e) => setQuery(e.target.value), placeholder: t('engine.form.searchFields', locale), className: "h-8 w-full rounded border border-input bg-background pl-7 pr-2 text-xs outline-none focus:border-primary" })] }), _jsx("div", { className: "max-h-72 overflow-auto p-1", children: loading ? (_jsx(Hint, { children: t('engine.form.loadingFields', locale) })) : error ? (_jsx(Hint, { tone: "warn", children: tFormat('engine.form.noObjectFields', locale, { error }) })) : filtered.length === 0 ? (_jsx(Hint, { children: query ? t('engine.form.noMatchingFields', locale) : t('engine.form.noFieldsOnObject', locale) })) : (filtered.map((f) => {
|
|
133
|
+
const used = usedNames.has(f.name);
|
|
134
|
+
return (_jsxs("button", { type: "button", onClick: () => onAdd(f), className: "flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-xs hover:bg-accent", children: [_jsx(FieldIcon, { type: f.type }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: f.label }), f.name !== f.label && (_jsx("code", { className: "max-w-[6rem] truncate text-[10px] text-muted-foreground", children: f.name })), used && (_jsx(Badge, { variant: "secondary", className: "px-1 py-0 text-[9px]", children: t('engine.form.added', locale) }))] }, f.name));
|
|
135
|
+
})) })] })] }));
|
|
136
|
+
}
|
|
137
|
+
function Hint({ children, tone }) {
|
|
138
|
+
return (_jsx("div", { className: 'px-2 py-4 text-center text-[11px] ' +
|
|
139
|
+
(tone === 'warn' ? 'text-amber-600 dark:text-amber-300' : 'text-muted-foreground'), children: children }));
|
|
140
|
+
}
|
|
@@ -1,2 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ViewPreview — renders a View metadata draft using the same `object-view`
|
|
3
|
+
* SchemaRenderer the runtime ObjectView route uses, with the draft's own
|
|
4
|
+
* `config` body injected as a named `listView` so the preview reflects the
|
|
5
|
+
* unsaved edit (not the last saved version).
|
|
6
|
+
*
|
|
7
|
+
* A view is the canonical first-class **ViewItem** ({ viewKind, config }):
|
|
8
|
+
* one view, one `config` body — there are no in-document variant tabs. An
|
|
9
|
+
* object's *other* views are independent ViewItems surfaced by the view
|
|
10
|
+
* switcher (a query), not nested here.
|
|
11
|
+
*
|
|
12
|
+
* The render path forks on `viewKind`:
|
|
13
|
+
* - list-family (grid / kanban / calendar / …) → `object-view`, with the
|
|
14
|
+
* draft body injected as a named listView (below);
|
|
15
|
+
* - form-family (simple / drawer / …) → `object-form`, with the draft's
|
|
16
|
+
* sections mapped onto the form schema (a form view binds a record layout,
|
|
17
|
+
* not a list, so the list renderer would just fall back to a bare grid).
|
|
18
|
+
*
|
|
19
|
+
* A raw single-schema draft (a bare `{ type, … }` with no `config` wrapper,
|
|
20
|
+
* e.g. an ad-hoc preview) is rendered straight through SchemaRenderer.
|
|
21
|
+
*/
|
|
22
|
+
import * as React from 'react';
|
|
1
23
|
import type { MetadataPreviewProps } from '../preview-registry';
|
|
2
|
-
export declare function ViewPreview({ name, draft }: MetadataPreviewProps):
|
|
24
|
+
export declare function ViewPreview({ name, draft, editing }: MetadataPreviewProps): React.JSX.Element;
|
|
@@ -1,50 +1,39 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
3
3
|
/**
|
|
4
|
-
* ViewPreview — renders a View metadata draft using the same
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* ViewPreview — renders a View metadata draft using the same `object-view`
|
|
5
|
+
* SchemaRenderer the runtime ObjectView route uses, with the draft's own
|
|
6
|
+
* `config` body injected as a named `listView` so the preview reflects the
|
|
7
|
+
* unsaved edit (not the last saved version).
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* A view is the canonical first-class **ViewItem** ({ viewKind, config }):
|
|
10
|
+
* one view, one `config` body — there are no in-document variant tabs. An
|
|
11
|
+
* object's *other* views are independent ViewItems surfaced by the view
|
|
12
|
+
* switcher (a query), not nested here.
|
|
13
|
+
*
|
|
14
|
+
* The render path forks on `viewKind`:
|
|
15
|
+
* - list-family (grid / kanban / calendar / …) → `object-view`, with the
|
|
16
|
+
* draft body injected as a named listView (below);
|
|
17
|
+
* - form-family (simple / drawer / …) → `object-form`, with the draft's
|
|
18
|
+
* sections mapped onto the form schema (a form view binds a record layout,
|
|
19
|
+
* not a list, so the list renderer would just fall back to a bare grid).
|
|
20
|
+
*
|
|
21
|
+
* A raw single-schema draft (a bare `{ type, … }` with no `config` wrapper,
|
|
22
|
+
* e.g. an ad-hoc preview) is rendered straight through SchemaRenderer.
|
|
12
23
|
*/
|
|
13
24
|
import * as React from 'react';
|
|
14
|
-
import { SchemaRenderer } from '@object-ui/react';
|
|
25
|
+
import { SchemaRenderer, PreviewModeProvider } from '@object-ui/react';
|
|
26
|
+
import { toInlineFormType } from './form-preview';
|
|
15
27
|
import { PreviewShell, PreviewErrorBoundary, PreviewMessage } from './PreviewShell';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
'form',
|
|
19
|
-
'kanban',
|
|
20
|
-
'calendar',
|
|
21
|
-
'gantt',
|
|
22
|
-
'map',
|
|
23
|
-
'gallery',
|
|
24
|
-
'timeline',
|
|
25
|
-
'feed',
|
|
26
|
-
'detail',
|
|
27
|
-
];
|
|
28
|
-
function detectVariants(draft) {
|
|
29
|
-
const out = [];
|
|
30
|
-
for (const k of VIEW_VARIANT_KEYS) {
|
|
31
|
-
const v = draft[k];
|
|
32
|
-
if (v && typeof v === 'object' && !Array.isArray(v)) {
|
|
33
|
-
out.push({ key: k, schema: v });
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return out;
|
|
37
|
-
}
|
|
38
|
-
function resolveObjectName(draft, variantSchema) {
|
|
28
|
+
import { primaryVariantBinding } from '../view-variant-model';
|
|
29
|
+
function resolveObjectName(draft, body) {
|
|
39
30
|
const candidates = [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
31
|
+
body?.object,
|
|
32
|
+
body?.data?.object,
|
|
33
|
+
body?.objectName,
|
|
43
34
|
draft.object,
|
|
44
35
|
draft.objectName,
|
|
45
36
|
draft.data?.object,
|
|
46
|
-
draft.list?.data?.object,
|
|
47
|
-
draft.list?.object,
|
|
48
37
|
];
|
|
49
38
|
for (const c of candidates) {
|
|
50
39
|
if (typeof c === 'string' && c)
|
|
@@ -52,47 +41,90 @@ function resolveObjectName(draft, variantSchema) {
|
|
|
52
41
|
}
|
|
53
42
|
return undefined;
|
|
54
43
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
44
|
+
// A ViewItem form section uses the spec's `{ field, readonly, … }` shape, but
|
|
45
|
+
// `object-form` selects fields by `name` and reads `readOnly`. Normalize so the
|
|
46
|
+
// section's fields resolve (otherwise every section comes up empty).
|
|
47
|
+
function toFormFieldEntry(f) {
|
|
48
|
+
if (typeof f === 'string')
|
|
49
|
+
return f;
|
|
50
|
+
if (f && typeof f === 'object') {
|
|
51
|
+
const o = f;
|
|
52
|
+
const name = (o.field ?? o.name);
|
|
53
|
+
if (!name)
|
|
54
|
+
return o;
|
|
55
|
+
return { ...o, name, readOnly: o.readOnly ?? o.readonly };
|
|
56
|
+
}
|
|
57
|
+
return String(f);
|
|
58
|
+
}
|
|
59
|
+
function buildFormPreviewSchema(objectName, body) {
|
|
60
|
+
const rawType = typeof body.type === 'string' ? body.type : 'simple';
|
|
61
|
+
const formType = toInlineFormType(rawType);
|
|
62
|
+
const sections = Array.isArray(body.sections)
|
|
63
|
+
? body.sections.map((s) => ({
|
|
64
|
+
...s,
|
|
65
|
+
fields: Array.isArray(s?.fields) ? s.fields.map(toFormFieldEntry) : [],
|
|
66
|
+
}))
|
|
67
|
+
: undefined;
|
|
68
|
+
return {
|
|
69
|
+
type: 'object-form',
|
|
70
|
+
objectName,
|
|
71
|
+
// A blank create-mode form: the preview shows the layout without needing a
|
|
72
|
+
// sample record to be selected.
|
|
73
|
+
mode: 'create',
|
|
74
|
+
formType,
|
|
75
|
+
sections,
|
|
76
|
+
fields: Array.isArray(body.fields) ? body.fields : undefined,
|
|
77
|
+
showSubmit: false,
|
|
78
|
+
showCancel: false,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function ViewPreview({ name, draft, editing }) {
|
|
82
|
+
// The single ViewItem body (`draft.config`), or undefined for a raw schema.
|
|
83
|
+
const body = React.useMemo(() => primaryVariantBinding(draft)?.schema, [draft]);
|
|
84
|
+
const objectName = React.useMemo(() => resolveObjectName(draft, body), [draft, body]);
|
|
85
|
+
const designMode = !!editing;
|
|
86
|
+
// Surface the draft body as a named listView so the preview renders THIS
|
|
87
|
+
// view (with unsaved edits) rather than the object's saved default.
|
|
88
|
+
const { listViews, defaultViewId, defaultViewType } = React.useMemo(() => {
|
|
89
|
+
if (!body) {
|
|
90
|
+
return { listViews: {}, defaultViewId: undefined, defaultViewType: 'grid' };
|
|
77
91
|
}
|
|
78
|
-
|
|
79
|
-
|
|
92
|
+
const id = String(name) || 'default';
|
|
93
|
+
return {
|
|
94
|
+
listViews: {
|
|
95
|
+
[id]: {
|
|
96
|
+
...body,
|
|
97
|
+
label: body.label ?? draft.label ?? name,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
defaultViewId: id,
|
|
101
|
+
defaultViewType: body.type ?? 'grid',
|
|
102
|
+
};
|
|
103
|
+
}, [body, draft, name]);
|
|
80
104
|
// -------------------------------------------------------------------------
|
|
81
|
-
//
|
|
105
|
+
// Raw single-schema draft (no ViewItem `config` wrapper): render directly.
|
|
82
106
|
// -------------------------------------------------------------------------
|
|
83
|
-
if (!
|
|
107
|
+
if (!body && draft.type) {
|
|
84
108
|
const schema = { ...draft };
|
|
85
|
-
return (_jsx(PreviewShell, { hint: `view · ${schema.type}`, children: _jsx(PreviewErrorBoundary, { fallbackHint: "The view's `type` may not be registered, or required fields are missing.", children: _jsx("div", { className: "min-h-[300px] max-h-[75vh] overflow-auto", children: _jsx(SchemaRenderer, { schema: schema }) }) }) }));
|
|
109
|
+
return (_jsx(PreviewShell, { hint: `view · ${schema.type}${designMode ? ' · design' : ''}`, children: _jsx(PreviewErrorBoundary, { fallbackHint: "The view's `type` may not be registered, or required fields are missing.", children: _jsx("div", { className: "min-h-[300px] max-h-[75vh] overflow-auto", children: _jsx(PreviewModeProvider, { children: _jsx(SchemaRenderer, { schema: schema }) }) }) }) }));
|
|
86
110
|
}
|
|
87
111
|
if (!objectName) {
|
|
88
|
-
return (_jsx(PreviewShell, { hint:
|
|
112
|
+
return (_jsx(PreviewShell, { hint: `view${designMode ? ' · design' : ''}`, children: _jsxs(PreviewMessage, { tone: "warn", children: ["This view has no object binding yet. Set the bound ", _jsx("code", { children: "Object" }), " in the right panel to fetch live data and field options."] }) }));
|
|
113
|
+
}
|
|
114
|
+
// -------------------------------------------------------------------------
|
|
115
|
+
// Form-family view (`viewKind: 'form'`): render the record form layout via
|
|
116
|
+
// `object-form`. The list renderer (`object-view`) has no form layout, so a
|
|
117
|
+
// form view routed through it just falls back to a bare grid.
|
|
118
|
+
// -------------------------------------------------------------------------
|
|
119
|
+
if (draft.viewKind === 'form' && body) {
|
|
120
|
+
const rawType = String(body.type ?? 'simple');
|
|
121
|
+
const formSchema = buildFormPreviewSchema(objectName, body);
|
|
122
|
+
return (_jsx(PreviewShell, { hint: `view · ${rawType} · form${designMode ? ' · design' : ''}`, children: _jsx(PreviewErrorBoundary, { fallbackHint: "The form view references an object or field that doesn't resolve.", children: _jsx("div", { className: "min-h-[300px] max-h-[75vh] overflow-auto", children: _jsx(PreviewModeProvider, { children: _jsx(SchemaRenderer, { schema: formSchema }) }) }) }) }));
|
|
89
123
|
}
|
|
90
124
|
// -------------------------------------------------------------------------
|
|
91
|
-
//
|
|
92
|
-
// the
|
|
93
|
-
// reflects unsaved edits.
|
|
125
|
+
// Delegate to `object-view` — the same renderer the runtime route uses —
|
|
126
|
+
// with the draft body injected so the preview reflects unsaved edits.
|
|
94
127
|
// -------------------------------------------------------------------------
|
|
95
|
-
const defaultViewType = variants[0]?.schema?.type ?? 'grid';
|
|
96
128
|
const schema = React.useMemo(() => ({
|
|
97
129
|
type: 'object-view',
|
|
98
130
|
objectName,
|
|
@@ -105,9 +137,5 @@ export function ViewPreview({ name, draft }) {
|
|
|
105
137
|
showRefresh: true,
|
|
106
138
|
showViewSwitcher: true,
|
|
107
139
|
}), [objectName, defaultViewType, defaultViewId, listViews]);
|
|
108
|
-
|
|
109
|
-
.map((v) => v.key)
|
|
110
|
-
.slice(0, 3)
|
|
111
|
-
.join(' · ');
|
|
112
|
-
return (_jsx(PreviewShell, { hint: `view · ${variantHint || 'list'}`, children: _jsx(PreviewErrorBoundary, { fallbackHint: "The view references an object or field that doesn't resolve.", children: _jsx("div", { className: "min-h-[300px] max-h-[75vh] overflow-auto", children: _jsx(SchemaRenderer, { schema: schema }) }) }) }));
|
|
140
|
+
return (_jsx(PreviewShell, { hint: `view · ${defaultViewType}${designMode ? ' · design' : ''}`, children: _jsx(PreviewErrorBoundary, { fallbackHint: "The view references an object or field that doesn't resolve.", children: _jsx("div", { className: "min-h-[300px] max-h-[75vh] overflow-auto", children: _jsx(PreviewModeProvider, { children: _jsx(SchemaRenderer, { schema: schema }) }) }) }) }));
|
|
113
141
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* block-config — per-block configurable property schemas for the page editor.
|
|
3
|
+
*
|
|
4
|
+
* The page block inspector renders these as typed fields that edit the block's
|
|
5
|
+
* `properties` (the spec convention; the renderer hoists `properties.*` to the
|
|
6
|
+
* top level). Keep each field `name` aligned with the property name the
|
|
7
|
+
* corresponding renderer reads. Add block types here as they are needed.
|
|
8
|
+
*
|
|
9
|
+
* Field kinds:
|
|
10
|
+
* text | number | boolean | select — scalar props
|
|
11
|
+
* string-list — an array of strings (e.g. field names)
|
|
12
|
+
* array (+ itemFields) — an array of objects (e.g. tab items)
|
|
13
|
+
*/
|
|
14
|
+
/** Where a field/field-list picker resolves its object from:
|
|
15
|
+
* - 'page' — the record page's bound object (draft.object)
|
|
16
|
+
* - 'self' — a sibling property on the same block (objectProp) */
|
|
17
|
+
export type ObjectSource = {
|
|
18
|
+
objectFrom: 'page';
|
|
19
|
+
} | {
|
|
20
|
+
objectFrom: 'self';
|
|
21
|
+
objectProp: string;
|
|
22
|
+
};
|
|
23
|
+
export type BlockPropField = {
|
|
24
|
+
name: string;
|
|
25
|
+
label: string;
|
|
26
|
+
kind: 'text';
|
|
27
|
+
placeholder?: string;
|
|
28
|
+
} | {
|
|
29
|
+
name: string;
|
|
30
|
+
label: string;
|
|
31
|
+
kind: 'number';
|
|
32
|
+
placeholder?: string;
|
|
33
|
+
} | {
|
|
34
|
+
name: string;
|
|
35
|
+
label: string;
|
|
36
|
+
kind: 'boolean';
|
|
37
|
+
} | {
|
|
38
|
+
name: string;
|
|
39
|
+
label: string;
|
|
40
|
+
kind: 'select';
|
|
41
|
+
options: Array<{
|
|
42
|
+
value: string;
|
|
43
|
+
label: string;
|
|
44
|
+
}>;
|
|
45
|
+
} | {
|
|
46
|
+
name: string;
|
|
47
|
+
label: string;
|
|
48
|
+
kind: 'string-list';
|
|
49
|
+
placeholder?: string;
|
|
50
|
+
} | {
|
|
51
|
+
name: string;
|
|
52
|
+
label: string;
|
|
53
|
+
kind: 'array';
|
|
54
|
+
itemFields: BlockPropField[];
|
|
55
|
+
addLabel?: string;
|
|
56
|
+
} | {
|
|
57
|
+
name: string;
|
|
58
|
+
label: string;
|
|
59
|
+
kind: 'color';
|
|
60
|
+
options?: Array<{
|
|
61
|
+
value: string;
|
|
62
|
+
label: string;
|
|
63
|
+
}>;
|
|
64
|
+
} | {
|
|
65
|
+
name: string;
|
|
66
|
+
label: string;
|
|
67
|
+
kind: 'object-picker';
|
|
68
|
+
placeholder?: string;
|
|
69
|
+
} | ({
|
|
70
|
+
name: string;
|
|
71
|
+
label: string;
|
|
72
|
+
kind: 'field-picker';
|
|
73
|
+
placeholder?: string;
|
|
74
|
+
} & ObjectSource) | ({
|
|
75
|
+
name: string;
|
|
76
|
+
label: string;
|
|
77
|
+
kind: 'field-list';
|
|
78
|
+
placeholder?: string;
|
|
79
|
+
} & ObjectSource);
|
|
80
|
+
export declare const BLOCK_CONFIG: Record<string, BlockPropField[]>;
|
|
81
|
+
/** Block types that expose a configurable property panel. */
|
|
82
|
+
export declare function blockHasConfig(type: string | undefined): boolean;
|