@vertesia/ui 1.4.0 → 1.5.0-dev.20260713.113008Z
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/lib/core/components/InputList.d.ts.map +1 -1
- package/lib/core/components/InputList.js +3 -2
- package/lib/core/components/InputList.js.map +1 -1
- package/lib/core/components/SelectList.d.ts.map +1 -1
- package/lib/core/components/SelectList.js +1 -1
- package/lib/core/components/SelectList.js.map +1 -1
- package/lib/core/components/TagsInput.d.ts.map +1 -1
- package/lib/core/components/TagsInput.js +36 -4
- package/lib/core/components/TagsInput.js.map +1 -1
- package/lib/core/components/popup/Popup.js +2 -1
- package/lib/core/components/popup/Popup.js.map +1 -1
- package/lib/core/components/popup/position.d.ts.map +1 -1
- package/lib/core/components/popup/position.js +3 -6
- package/lib/core/components/popup/position.js.map +1 -1
- package/lib/core/components/shadcn/badge.d.ts +2 -2
- package/lib/core/components/shadcn/badge.d.ts.map +1 -1
- package/lib/core/components/shadcn/badge.js +3 -0
- package/lib/core/components/shadcn/badge.js.map +1 -1
- package/lib/core/components/shadcn/breadcrumb.d.ts.map +1 -1
- package/lib/core/components/shadcn/breadcrumb.js +2 -2
- package/lib/core/components/shadcn/breadcrumb.js.map +1 -1
- package/lib/core/components/shadcn/filters/filterBar.d.ts.map +1 -1
- package/lib/core/components/shadcn/filters/filterBar.js +1 -3
- package/lib/core/components/shadcn/filters/filterBar.js.map +1 -1
- package/lib/core/components/shadcn/resizeable.d.ts +1 -1
- package/lib/core/components/shadcn/resizeable.d.ts.map +1 -1
- package/lib/core/components/shadcn/resizeable.js +12 -2
- package/lib/core/components/shadcn/resizeable.js.map +1 -1
- package/lib/core/components/shadcn/selectBox.d.ts +7 -1
- package/lib/core/components/shadcn/selectBox.d.ts.map +1 -1
- package/lib/core/components/shadcn/selectBox.js +29 -12
- package/lib/core/components/shadcn/selectBox.js.map +1 -1
- package/lib/core/components/table/index.d.ts.map +1 -1
- package/lib/core/components/table/index.js +1 -1
- package/lib/core/components/table/index.js.map +1 -1
- package/lib/core/hooks/useIntersectionObserver.d.ts.map +1 -1
- package/lib/core/hooks/useIntersectionObserver.js +3 -1
- package/lib/core/hooks/useIntersectionObserver.js.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/AgentRightPanel.js +3 -6
- package/lib/features/agent/chat/AgentRightPanel.js.map +1 -1
- package/lib/features/agent/chat/AnimatedThinkingDots.d.ts.map +1 -1
- package/lib/features/agent/chat/AnimatedThinkingDots.js +1 -1
- package/lib/features/agent/chat/AnimatedThinkingDots.js.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.d.ts.map +1 -1
- package/lib/features/agent/chat/AskUserWidget.js +4 -3
- package/lib/features/agent/chat/AskUserWidget.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentConversation.js +56 -11
- package/lib/features/agent/chat/ModernAgentConversation.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts +8 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js +40 -31
- package/lib/features/agent/chat/ModernAgentOutput/AllMessagesMixed.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js +3 -3
- package/lib/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js +5 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageInput.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js +3 -7
- package/lib/features/agent/chat/ModernAgentOutput/MessageItem.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js +5 -5
- package/lib/features/agent/chat/ModernAgentOutput/PlanPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js +4 -4
- package/lib/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js +3 -3
- package/lib/features/agent/chat/ModernAgentOutput/ToolCallGroup.js.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.d.ts.map +1 -1
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js +156 -8
- package/lib/features/agent/chat/ModernAgentOutput/WorkstreamTabs.js.map +1 -1
- package/lib/features/agent/chat/hooks/useFileProcessing.d.ts +1 -0
- package/lib/features/agent/chat/hooks/useFileProcessing.d.ts.map +1 -1
- package/lib/features/agent/chat/hooks/useFileProcessing.js +37 -3
- package/lib/features/agent/chat/hooks/useFileProcessing.js.map +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.js +1 -1
- package/lib/features/facets/AgentRunnerFacetsNav.js.map +1 -1
- package/lib/features/facets/InteractionsFacetsNav.d.ts +10 -1
- package/lib/features/facets/InteractionsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/InteractionsFacetsNav.js +14 -5
- package/lib/features/facets/InteractionsFacetsNav.js.map +1 -1
- package/lib/features/facets/PromptsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/PromptsFacetsNav.js +12 -1
- package/lib/features/facets/PromptsFacetsNav.js.map +1 -1
- package/lib/features/facets/RunsFacetsNav.d.ts.map +1 -1
- package/lib/features/facets/RunsFacetsNav.js +1 -1
- package/lib/features/facets/RunsFacetsNav.js.map +1 -1
- package/lib/features/magic-pdf/AnnotatedImageSlider.d.ts.map +1 -1
- package/lib/features/magic-pdf/AnnotatedImageSlider.js +1 -3
- package/lib/features/magic-pdf/AnnotatedImageSlider.js.map +1 -1
- package/lib/features/magic-pdf/MagicPdfProvider.js +2 -3
- package/lib/features/magic-pdf/MagicPdfProvider.js.map +1 -1
- package/lib/features/store/objects/DocumentSearchResults.d.ts +6 -2
- package/lib/features/store/objects/DocumentSearchResults.d.ts.map +1 -1
- package/lib/features/store/objects/DocumentSearchResults.js +6 -6
- package/lib/features/store/objects/DocumentSearchResults.js.map +1 -1
- package/lib/features/store/objects/components/ContentOverview.js +1 -1
- package/lib/features/store/objects/components/ContentOverview.js.map +1 -1
- package/lib/features/store/objects/components/DocumentIcon.d.ts.map +1 -1
- package/lib/features/store/objects/components/DocumentIcon.js +1 -1
- package/lib/features/store/objects/components/DocumentIcon.js.map +1 -1
- package/lib/features/store/objects/components/DocumentInput.js.map +1 -1
- package/lib/features/store/objects/search/DocumentSearchContext.d.ts +4 -4
- package/lib/features/store/objects/search/DocumentSearchContext.d.ts.map +1 -1
- package/lib/features/store/objects/search/DocumentSearchContext.js +1 -1
- package/lib/features/store/objects/search/DocumentSearchContext.js.map +1 -1
- package/lib/features/store/objects/selection/ObjectsActionContext.d.ts.map +1 -1
- package/lib/features/store/objects/selection/ObjectsActionContext.js +2 -25
- package/lib/features/store/objects/selection/ObjectsActionContext.js.map +1 -1
- package/lib/features/store/objects/selection/ObjectsActionContextClass.d.ts +0 -2
- package/lib/features/store/objects/selection/ObjectsActionContextClass.d.ts.map +1 -1
- package/lib/features/store/objects/selection/ObjectsActionContextClass.js +1 -7
- package/lib/features/store/objects/selection/ObjectsActionContextClass.js.map +1 -1
- package/lib/features/store/objects/selection/ObjectsActionHooks.d.ts +0 -1
- package/lib/features/store/objects/selection/ObjectsActionHooks.d.ts.map +1 -1
- package/lib/features/store/objects/selection/ObjectsActionHooks.js +0 -10
- package/lib/features/store/objects/selection/ObjectsActionHooks.js.map +1 -1
- package/lib/features/store/objects/selection/SelectionActions.d.ts +4 -0
- package/lib/features/store/objects/selection/SelectionActions.d.ts.map +1 -1
- package/lib/features/store/objects/selection/SelectionActions.js +4 -18
- package/lib/features/store/objects/selection/SelectionActions.js.map +1 -1
- package/lib/features/store/objects/selection/actions/DeleteObjectsAction.d.ts.map +1 -1
- package/lib/features/store/objects/selection/actions/DeleteObjectsAction.js +16 -7
- package/lib/features/store/objects/selection/actions/DeleteObjectsAction.js.map +1 -1
- package/lib/features/store/objects/selection/actions/StartWorkflowButton.d.ts +7 -0
- package/lib/features/store/objects/selection/actions/StartWorkflowButton.d.ts.map +1 -0
- package/lib/features/store/objects/selection/actions/StartWorkflowButton.js +51 -0
- package/lib/features/store/objects/selection/actions/StartWorkflowButton.js.map +1 -0
- package/lib/features/store/objects/selection/actions/index.d.ts +0 -1
- package/lib/features/store/objects/selection/actions/index.d.ts.map +1 -1
- package/lib/features/store/objects/selection/actions/index.js +0 -1
- package/lib/features/store/objects/selection/actions/index.js.map +1 -1
- package/lib/features/store/types/ContentObjectTypesSearch.d.ts.map +1 -1
- package/lib/features/store/types/ContentObjectTypesSearch.js +55 -3
- package/lib/features/store/types/ContentObjectTypesSearch.js.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.d.ts +5 -1
- package/lib/features/store/types/ContentObjectTypesTable.d.ts.map +1 -1
- package/lib/features/store/types/ContentObjectTypesTable.js +4 -2
- package/lib/features/store/types/ContentObjectTypesTable.js.map +1 -1
- package/lib/features/store/types/search/ObjectTypeSearchContext.js +1 -1
- package/lib/features/store/types/search/ObjectTypeSearchContext.js.map +1 -1
- package/lib/i18n/locales/ar.json +17 -0
- package/lib/i18n/locales/de.json +17 -0
- package/lib/i18n/locales/en.json +33 -0
- package/lib/i18n/locales/es.json +17 -0
- package/lib/i18n/locales/fr.json +17 -0
- package/lib/i18n/locales/it.json +17 -0
- package/lib/i18n/locales/ja.json +17 -0
- package/lib/i18n/locales/ko.json +17 -0
- package/lib/i18n/locales/pt.json +17 -0
- package/lib/i18n/locales/ru.json +17 -0
- package/lib/i18n/locales/tr.json +17 -0
- package/lib/i18n/locales/zh-TW.json +17 -0
- package/lib/i18n/locales/zh.json +17 -0
- package/lib/layout/Sidebar.d.ts +5 -1
- package/lib/layout/Sidebar.d.ts.map +1 -1
- package/lib/layout/Sidebar.js.map +1 -1
- package/lib/router/NestedRouterProvider.d.ts +1 -1
- package/lib/router/NestedRouterProvider.d.ts.map +1 -1
- package/lib/router/NestedRouterProvider.js +2 -2
- package/lib/router/NestedRouterProvider.js.map +1 -1
- package/lib/router/Redirect.d.ts +13 -0
- package/lib/router/Redirect.d.ts.map +1 -0
- package/lib/router/Redirect.js +20 -0
- package/lib/router/Redirect.js.map +1 -0
- package/lib/router/Router.d.ts.map +1 -1
- package/lib/router/Router.js +1 -2
- package/lib/router/Router.js.map +1 -1
- package/lib/router/index.d.ts +1 -0
- package/lib/router/index.d.ts.map +1 -1
- package/lib/router/index.js +1 -0
- package/lib/router/index.js.map +1 -1
- package/lib/session/DevSessionProvider.d.ts +8 -0
- package/lib/session/DevSessionProvider.d.ts.map +1 -0
- package/lib/session/DevSessionProvider.js +33 -0
- package/lib/session/DevSessionProvider.js.map +1 -0
- package/lib/session/UserSessionProvider.d.ts.map +1 -1
- package/lib/session/UserSessionProvider.js +16 -2
- package/lib/session/UserSessionProvider.js.map +1 -1
- package/lib/session/auth/composable.d.ts +10 -1
- package/lib/session/auth/composable.d.ts.map +1 -1
- package/lib/session/auth/composable.js +38 -2
- package/lib/session/auth/composable.js.map +1 -1
- package/lib/session/index.d.ts +1 -0
- package/lib/session/index.d.ts.map +1 -1
- package/lib/session/index.js +1 -0
- package/lib/session/index.js.map +1 -1
- package/lib/shell/VertesiaShell.d.ts +3 -1
- package/lib/shell/VertesiaShell.d.ts.map +1 -1
- package/lib/shell/VertesiaShell.js +5 -4
- package/lib/shell/VertesiaShell.js.map +1 -1
- package/lib/shell/login/SignInRestrictedEnvStep.d.ts +14 -0
- package/lib/shell/login/SignInRestrictedEnvStep.d.ts.map +1 -0
- package/lib/shell/login/SignInRestrictedEnvStep.js +50 -0
- package/lib/shell/login/SignInRestrictedEnvStep.js.map +1 -0
- package/lib/shell/login/SigninScreen.d.ts.map +1 -1
- package/lib/shell/login/SigninScreen.js +16 -3
- package/lib/shell/login/SigninScreen.js.map +1 -1
- package/lib/shell/login/productionUrl.d.ts +16 -0
- package/lib/shell/login/productionUrl.d.ts.map +1 -0
- package/lib/shell/login/productionUrl.js +19 -0
- package/lib/shell/login/productionUrl.js.map +1 -0
- package/lib/shell/login/signInUtils.d.ts.map +1 -1
- package/lib/shell/login/signInUtils.js +14 -1
- package/lib/shell/login/signInUtils.js.map +1 -1
- package/lib/vertesia-ui-core.js +95 -2
- package/lib/vertesia-ui-core.js.map +1 -1
- package/lib/vertesia-ui-env.js +2 -2
- package/lib/vertesia-ui-env.js.map +1 -1
- package/lib/vertesia-ui-features.js +454 -2
- package/lib/vertesia-ui-features.js.map +1 -1
- package/lib/vertesia-ui-i18n.js +41 -2
- package/lib/vertesia-ui-i18n.js.map +1 -1
- package/lib/vertesia-ui-layout.js +2 -2
- package/lib/vertesia-ui-layout.js.map +1 -1
- package/lib/vertesia-ui-router.js +2 -2
- package/lib/vertesia-ui-router.js.map +1 -1
- package/lib/vertesia-ui-session.js +2 -2
- package/lib/vertesia-ui-session.js.map +1 -1
- package/lib/vertesia-ui-shell.js +2 -2
- package/lib/vertesia-ui-shell.js.map +1 -1
- package/lib/vertesia-ui-widgets.js +9 -2
- package/lib/vertesia-ui-widgets.js.map +1 -1
- package/lib/widgets/json-view/JSONCode.d.ts.map +1 -1
- package/lib/widgets/json-view/JSONCode.js +1 -1
- package/lib/widgets/json-view/JSONCode.js.map +1 -1
- package/lib/widgets/json-view/JSONTable.d.ts.map +1 -1
- package/lib/widgets/json-view/JSONTable.js +1 -1
- package/lib/widgets/json-view/JSONTable.js.map +1 -1
- package/lib/widgets/markdown/ArtifactContentRenderer.d.ts.map +1 -1
- package/lib/widgets/markdown/ArtifactContentRenderer.js +1 -1
- package/lib/widgets/markdown/ArtifactContentRenderer.js.map +1 -1
- package/lib/widgets/markdown/CodeBlockPlaceholder.d.ts.map +1 -1
- package/lib/widgets/markdown/CodeBlockPlaceholder.js +1 -1
- package/lib/widgets/markdown/CodeBlockPlaceholder.js.map +1 -1
- package/lib/widgets/monacoEditor/foldingProviders.d.ts.map +1 -1
- package/lib/widgets/monacoEditor/foldingProviders.js +5 -10
- package/lib/widgets/monacoEditor/foldingProviders.js.map +1 -1
- package/lib/widgets/schema-editor/ManagedSchema.d.ts.map +1 -1
- package/lib/widgets/schema-editor/ManagedSchema.js +1 -2
- package/lib/widgets/schema-editor/ManagedSchema.js.map +1 -1
- package/lib/widgets/upload/UploadResultCategory.d.ts.map +1 -1
- package/lib/widgets/upload/UploadResultCategory.js +1 -1
- package/lib/widgets/upload/UploadResultCategory.js.map +1 -1
- package/lib/widgets/xml-viewer/components/TextElement/index.d.ts.map +1 -1
- package/lib/widgets/xml-viewer/components/TextElement/index.js +1 -1
- package/lib/widgets/xml-viewer/components/TextElement/index.js.map +1 -1
- package/package.json +38 -43
- package/src/core/components/InputList.tsx +5 -10
- package/src/core/components/SelectList.tsx +7 -2
- package/src/core/components/TagsInput.tsx +41 -4
- package/src/core/components/popup/Popup.tsx +3 -3
- package/src/core/components/popup/position.ts +3 -6
- package/src/core/components/shadcn/badge.tsx +3 -0
- package/src/core/components/shadcn/breadcrumb.tsx +2 -4
- package/src/core/components/shadcn/filters/filterBar.tsx +2 -3
- package/src/core/components/shadcn/resizeable.test.tsx +77 -0
- package/src/core/components/shadcn/resizeable.tsx +28 -2
- package/src/core/components/shadcn/selectBox.tsx +70 -36
- package/src/core/components/table/index.tsx +1 -2
- package/src/core/hooks/useIntersectionObserver.tsx +3 -1
- package/src/features/agent/chat/AgentRightPanel.tsx +5 -6
- package/src/features/agent/chat/AnimatedThinkingDots.tsx +1 -2
- package/src/features/agent/chat/AskUserWidget.test.tsx +49 -0
- package/src/features/agent/chat/AskUserWidget.tsx +32 -22
- package/src/features/agent/chat/ModernAgentConversation.test.tsx +198 -1
- package/src/features/agent/chat/ModernAgentConversation.tsx +62 -15
- package/src/features/agent/chat/ModernAgentOutput/AllMessagesMixed.tsx +60 -34
- package/src/features/agent/chat/ModernAgentOutput/InlineSlidingPlanPanel.tsx +3 -3
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.test.tsx +25 -0
- package/src/features/agent/chat/ModernAgentOutput/MessageInput.tsx +5 -1
- package/src/features/agent/chat/ModernAgentOutput/MessageItem.tsx +30 -30
- package/src/features/agent/chat/ModernAgentOutput/PlanPanel.tsx +5 -6
- package/src/features/agent/chat/ModernAgentOutput/SlidingPlanPanel.tsx +4 -5
- package/src/features/agent/chat/ModernAgentOutput/ToolCallGroup.tsx +3 -5
- package/src/features/agent/chat/ModernAgentOutput/WorkstreamTabs.tsx +326 -42
- package/src/features/agent/chat/hooks/useFileProcessing.test.tsx +70 -0
- package/src/features/agent/chat/hooks/useFileProcessing.ts +37 -6
- package/src/features/facets/AgentRunnerFacetsNav.tsx +1 -2
- package/src/features/facets/InteractionsFacetsNav.tsx +30 -5
- package/src/features/facets/PromptsFacetsNav.tsx +13 -1
- package/src/features/facets/RunsFacetsNav.tsx +1 -2
- package/src/features/magic-pdf/AnnotatedImageSlider.tsx +1 -2
- package/src/features/magic-pdf/MagicPdfProvider.tsx +4 -4
- package/src/features/store/objects/DocumentSearchResults.tsx +11 -1
- package/src/features/store/objects/components/ContentOverview.tsx +1 -2
- package/src/features/store/objects/components/DocumentIcon.tsx +1 -2
- package/src/features/store/objects/components/DocumentInput.tsx +2 -2
- package/src/features/store/objects/search/DocumentSearchContext.test.ts +2 -2
- package/src/features/store/objects/search/DocumentSearchContext.ts +3 -3
- package/src/features/store/objects/selection/ObjectsActionContext.tsx +2 -27
- package/src/features/store/objects/selection/ObjectsActionContextClass.ts +1 -7
- package/src/features/store/objects/selection/ObjectsActionHooks.ts +0 -11
- package/src/features/store/objects/selection/SelectionActions.tsx +9 -34
- package/src/features/store/objects/selection/actions/DeleteObjectsAction.tsx +40 -7
- package/src/features/store/objects/selection/actions/StartWorkflowButton.tsx +104 -0
- package/src/features/store/objects/selection/actions/index.ts +0 -1
- package/src/features/store/types/ContentObjectTypesSearch.tsx +110 -1
- package/src/features/store/types/ContentObjectTypesTable.tsx +42 -3
- package/src/features/store/types/search/ObjectTypeSearchContext.tsx +1 -1
- package/src/i18n/locales/ar.json +17 -0
- package/src/i18n/locales/de.json +17 -0
- package/src/i18n/locales/en.json +33 -0
- package/src/i18n/locales/es.json +17 -0
- package/src/i18n/locales/fr.json +17 -0
- package/src/i18n/locales/it.json +17 -0
- package/src/i18n/locales/ja.json +17 -0
- package/src/i18n/locales/ko.json +17 -0
- package/src/i18n/locales/pt.json +17 -0
- package/src/i18n/locales/ru.json +17 -0
- package/src/i18n/locales/tr.json +17 -0
- package/src/i18n/locales/zh-TW.json +17 -0
- package/src/i18n/locales/zh.json +17 -0
- package/src/layout/Sidebar.tsx +6 -1
- package/src/router/NestedRouterProvider.tsx +2 -2
- package/src/router/Redirect.tsx +29 -0
- package/src/router/Router.tsx +1 -2
- package/src/router/index.ts +1 -0
- package/src/session/DevSessionProvider.tsx +46 -0
- package/src/session/UserSessionProvider.tsx +18 -2
- package/src/session/auth/composable.ts +41 -3
- package/src/session/index.ts +1 -0
- package/src/shell/VertesiaShell.tsx +27 -14
- package/src/shell/login/SignInRestrictedEnvStep.tsx +87 -0
- package/src/shell/login/SigninScreen.tsx +29 -16
- package/src/shell/login/productionUrl.test.ts +19 -0
- package/src/shell/login/productionUrl.ts +18 -0
- package/src/shell/login/signInUtils.ts +14 -1
- package/src/widgets/json-view/JSONCode.tsx +1 -2
- package/src/widgets/json-view/JSONTable.tsx +1 -2
- package/src/widgets/markdown/ArtifactContentRenderer.tsx +4 -7
- package/src/widgets/markdown/CodeBlockPlaceholder.tsx +1 -2
- package/src/widgets/monacoEditor/foldingProviders.ts +10 -15
- package/src/widgets/schema-editor/ManagedSchema.ts +1 -2
- package/src/widgets/upload/UploadResultCategory.tsx +2 -3
- package/src/widgets/xml-viewer/components/TextElement/index.tsx +1 -2
- package/lib/features/store/objects/selection/actions/StartWorkflowComponent.d.ts +0 -4
- package/lib/features/store/objects/selection/actions/StartWorkflowComponent.d.ts.map +0 -1
- package/lib/features/store/objects/selection/actions/StartWorkflowComponent.js +0 -77
- package/lib/features/store/objects/selection/actions/StartWorkflowComponent.js.map +0 -1
- package/src/features/store/objects/selection/actions/StartWorkflowComponent.tsx +0 -127
|
@@ -2,11 +2,12 @@ import type { SignupData, SignupPayload } from '@vertesia/common';
|
|
|
2
2
|
import { Env } from '@vertesia/ui/env';
|
|
3
3
|
import { useUITranslation } from '@vertesia/ui/i18n';
|
|
4
4
|
import { RegionTag } from '@vertesia/ui/layout';
|
|
5
|
-
import { UserNotFoundError, useUserSession, useUXTracking } from '@vertesia/ui/session';
|
|
5
|
+
import { RestrictedEnvironmentError, UserNotFoundError, useUserSession, useUXTracking } from '@vertesia/ui/session';
|
|
6
6
|
import { useCallback, useEffect, useState } from 'react';
|
|
7
7
|
import SignInAuthPending from './SignInAuthPending';
|
|
8
8
|
import SignInEmailStep, { type TenantInfo } from './SignInEmailStep';
|
|
9
9
|
import SignInProvidersStep from './SignInProvidersStep';
|
|
10
|
+
import SignInRestrictedEnvStep from './SignInRestrictedEnvStep';
|
|
10
11
|
import SignInReturningStep from './SignInReturningStep';
|
|
11
12
|
import SignInTenantBlockedStep from './SignInTenantBlockedStep';
|
|
12
13
|
import SignInTenantStep from './SignInTenantStep';
|
|
@@ -64,7 +65,7 @@ function matchesPathPrefix(pathname: string, prefix?: string | string[]) {
|
|
|
64
65
|
});
|
|
65
66
|
}
|
|
66
67
|
|
|
67
|
-
type Mode = 'email' | 'providers' | 'tenant' | 'blocked' | 'returning' | 'pending' | 'signup';
|
|
68
|
+
type Mode = 'email' | 'providers' | 'tenant' | 'blocked' | 'returning' | 'pending' | 'signup' | 'restricted';
|
|
68
69
|
|
|
69
70
|
function SigninScreenImpl({
|
|
70
71
|
isNested = false,
|
|
@@ -97,6 +98,8 @@ function SigninScreenImpl({
|
|
|
97
98
|
if (!authError) return;
|
|
98
99
|
if (authError instanceof UserNotFoundError) {
|
|
99
100
|
setMode('signup');
|
|
101
|
+
} else if (authError instanceof RestrictedEnvironmentError) {
|
|
102
|
+
setMode('restricted');
|
|
100
103
|
} else if (isInviteRequiredError(authError)) {
|
|
101
104
|
const pending = readPendingSignin();
|
|
102
105
|
if (pending) setEmail(pending.email);
|
|
@@ -179,7 +182,10 @@ function SigninScreenImpl({
|
|
|
179
182
|
};
|
|
180
183
|
|
|
181
184
|
const shouldHideTransientAuthError =
|
|
182
|
-
suppressAuthError &&
|
|
185
|
+
suppressAuthError &&
|
|
186
|
+
authError !== undefined &&
|
|
187
|
+
!(authError instanceof UserNotFoundError) &&
|
|
188
|
+
!(authError instanceof RestrictedEnvironmentError);
|
|
183
189
|
|
|
184
190
|
if (isLoading || user || shouldHideTransientAuthError) return null;
|
|
185
191
|
|
|
@@ -194,6 +200,8 @@ function SigninScreenImpl({
|
|
|
194
200
|
onBack={startOver}
|
|
195
201
|
/>
|
|
196
202
|
);
|
|
203
|
+
} else if (mode === 'restricted') {
|
|
204
|
+
content = <SignInRestrictedEnvStep onUseDifferentEmail={startOver} />;
|
|
197
205
|
} else if (mode === 'signup' && !localStorage.getItem('tenantName')) {
|
|
198
206
|
content = <SignupForm onSignup={onSignup} goBack={startOver} />;
|
|
199
207
|
} else if (mode === 'tenant' && tenant) {
|
|
@@ -231,20 +239,25 @@ function SigninScreenImpl({
|
|
|
231
239
|
|
|
232
240
|
{content}
|
|
233
241
|
|
|
234
|
-
{authError &&
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
242
|
+
{authError &&
|
|
243
|
+
!(authError instanceof UserNotFoundError) &&
|
|
244
|
+
!(authError instanceof RestrictedEnvironmentError) &&
|
|
245
|
+
!isInviteRequiredError(authError) && (
|
|
246
|
+
<div className="mt-6 max-w-[420px] text-center text-sm text-muted">
|
|
247
|
+
<div>
|
|
248
|
+
{t('auth.signInError')}
|
|
249
|
+
<br />
|
|
250
|
+
{t('auth.signInErrorContact')}
|
|
251
|
+
<a className="text-info mx-1" href="mailto:support@vertesiahq.com">
|
|
252
|
+
support@vertesiahq.com
|
|
253
|
+
</a>
|
|
254
|
+
{t('auth.signInErrorPersists')}
|
|
255
|
+
<pre className="mt-2 text-xs">
|
|
256
|
+
{t('auth.error', { message: authError.message })}
|
|
257
|
+
</pre>
|
|
258
|
+
</div>
|
|
245
259
|
</div>
|
|
246
|
-
|
|
247
|
-
)}
|
|
260
|
+
)}
|
|
248
261
|
|
|
249
262
|
<div className="flex items-center gap-5 mt-10 text-xs text-muted-foreground">
|
|
250
263
|
<a href="https://vertesiahq.com/privacy" className="hover:text-foreground transition">
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { getProductionAppUrl } from './productionUrl.js';
|
|
3
|
+
|
|
4
|
+
describe('getProductionAppUrl', () => {
|
|
5
|
+
it('sends a non-US region to its own regional production site', () => {
|
|
6
|
+
expect(getProductionAppUrl('eu1')).toBe('https://cloud.eu1.vertesia.io/');
|
|
7
|
+
expect(getProductionAppUrl('jp1')).toBe('https://cloud.jp1.vertesia.io/');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('sends US regions to the canonical non-regional production site', () => {
|
|
11
|
+
expect(getProductionAppUrl('us1')).toBe('https://cloud.vertesia.io/');
|
|
12
|
+
expect(getProductionAppUrl('us')).toBe('https://cloud.vertesia.io/');
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('falls back to the canonical production site when the region is unknown', () => {
|
|
16
|
+
expect(getProductionAppUrl(undefined)).toBe('https://cloud.vertesia.io/');
|
|
17
|
+
expect(getProductionAppUrl('')).toBe('https://cloud.vertesia.io/');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the URL of the production Vertesia web application for a given deployment region. Used by
|
|
3
|
+
* the "restricted environment" sign-in step to send a user without early access to production, where
|
|
4
|
+
* they do have access — in their own region, never another one (an EU user must not land on the US
|
|
5
|
+
* site, and vice versa).
|
|
6
|
+
*
|
|
7
|
+
* The mapping mirrors the server's `detectUiUrl` production branch (packages/server-common):
|
|
8
|
+
* - US (`us` / `us1`) or unknown region → `https://cloud.vertesia.io/` (canonical, non-regional)
|
|
9
|
+
* - any other region (e.g. `eu1`, `jp1`) → `https://cloud.{region}.vertesia.io/`
|
|
10
|
+
*
|
|
11
|
+
* Region is preferred over parsing the current hostname because it is well-defined for every serving
|
|
12
|
+
* pattern (including the direct-routing `*.ui.{region}.vertesia.io` hosts, which carry no
|
|
13
|
+
* `preview.`/`preprod.` prefix to strip). Callers pass `Env.region` from `@vertesia/ui/env`.
|
|
14
|
+
*/
|
|
15
|
+
export function getProductionAppUrl(region?: string): string {
|
|
16
|
+
const isNonUsRegion = region && region !== 'us' && region !== 'us1';
|
|
17
|
+
return isNonUsRegion ? `https://cloud.${region}.vertesia.io/` : 'https://cloud.vertesia.io/';
|
|
18
|
+
}
|
|
@@ -222,8 +222,21 @@ export function firstNameFromEmail(email: string): string {
|
|
|
222
222
|
return first.charAt(0).toUpperCase() + first.slice(1).toLowerCase();
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
+
function hasWhitespace(value: string): boolean {
|
|
226
|
+
for (const char of value) {
|
|
227
|
+
if (char.trim() === '') return true;
|
|
228
|
+
}
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
|
|
225
232
|
export function isValidEmail(email: string): boolean {
|
|
226
|
-
|
|
233
|
+
const value = (email || '').trim();
|
|
234
|
+
const at = value.indexOf('@');
|
|
235
|
+
if (at <= 0 || at !== value.lastIndexOf('@')) return false;
|
|
236
|
+
|
|
237
|
+
const domain = value.slice(at + 1);
|
|
238
|
+
const dot = domain.indexOf('.');
|
|
239
|
+
return dot > 0 && dot < domain.length - 1 && !hasWhitespace(value);
|
|
227
240
|
}
|
|
228
241
|
|
|
229
242
|
/**
|
|
@@ -17,8 +17,7 @@ export function JSONCode({ data, className }: { data: unknown; className?: strin
|
|
|
17
17
|
>
|
|
18
18
|
<code>
|
|
19
19
|
{lines.map((line, index) => (
|
|
20
|
-
|
|
21
|
-
<span key={index}>
|
|
20
|
+
<span key={`line-${index}`}>
|
|
22
21
|
{renderJsonLine(line)}
|
|
23
22
|
{index < lines.length - 1 ? '\n' : null}
|
|
24
23
|
</span>
|
|
@@ -36,8 +36,7 @@ function formatValue(value: unknown): JSX.Element | string {
|
|
|
36
36
|
return (
|
|
37
37
|
<>
|
|
38
38
|
{value.map((item, index) => (
|
|
39
|
-
|
|
40
|
-
<div className="flex gap-1" key={index}>
|
|
39
|
+
<div className="flex gap-1" key={`item-${index}`}>
|
|
41
40
|
<span className="text-xs align-top pe-2 font-medium">{index + 1}:</span>
|
|
42
41
|
<span className="text-xs">{formatValue(item)}</span>
|
|
43
42
|
</div>
|
|
@@ -151,9 +151,8 @@ function TableRenderer({ content }: { content: unknown }): ReactElement {
|
|
|
151
151
|
<table className="min-w-full text-sm border-collapse">
|
|
152
152
|
<thead>
|
|
153
153
|
<tr className="border-b">
|
|
154
|
-
{headers.map((h
|
|
155
|
-
|
|
156
|
-
<th key={i} className="px-3 py-2 text-start font-medium text-muted">
|
|
154
|
+
{headers.map((h) => (
|
|
155
|
+
<th key={h} className="px-3 py-2 text-start font-medium text-muted">
|
|
157
156
|
{h}
|
|
158
157
|
</th>
|
|
159
158
|
))}
|
|
@@ -161,11 +160,9 @@ function TableRenderer({ content }: { content: unknown }): ReactElement {
|
|
|
161
160
|
</thead>
|
|
162
161
|
<tbody>
|
|
163
162
|
{rows.slice(0, 100).map((row, i) => (
|
|
164
|
-
|
|
165
|
-
<tr key={i} className="border-b border-muted/20">
|
|
163
|
+
<tr key={`row-${i}`} className="border-b border-muted/20">
|
|
166
164
|
{row.map((cell, j) => (
|
|
167
|
-
|
|
168
|
-
<td key={j} className="px-3 py-2">
|
|
165
|
+
<td key={`cell-${j}`} className="px-3 py-2">
|
|
169
166
|
{cell}
|
|
170
167
|
</td>
|
|
171
168
|
))}
|
|
@@ -92,8 +92,7 @@ export function CodeBlockPlaceholder({ type, error, onRetry, message, height }:
|
|
|
92
92
|
<div className="flex gap-1">
|
|
93
93
|
{[...Array(3)].map((_, i) => (
|
|
94
94
|
<div
|
|
95
|
-
|
|
96
|
-
key={i}
|
|
95
|
+
key={`dot-${i}`}
|
|
97
96
|
className="h-2 w-2 rounded-full bg-muted animate-bounce"
|
|
98
97
|
style={{ animationDelay: `${i * 150}ms` }}
|
|
99
98
|
/>
|
|
@@ -19,9 +19,8 @@ export function registerCustomFoldingProviders(monacoInstance: typeof import('mo
|
|
|
19
19
|
if (match) {
|
|
20
20
|
const level = match[1].length;
|
|
21
21
|
while (stack.length > 0 && stack[stack.length - 1].level >= level) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (lineNumber - 1 > top.line) {
|
|
22
|
+
const top = stack.pop();
|
|
23
|
+
if (top && lineNumber - 1 > top.line) {
|
|
25
24
|
ranges.push({ start: top.line, end: lineNumber - 1 });
|
|
26
25
|
}
|
|
27
26
|
}
|
|
@@ -30,9 +29,8 @@ export function registerCustomFoldingProviders(monacoInstance: typeof import('mo
|
|
|
30
29
|
}
|
|
31
30
|
const lastLine = lines.length;
|
|
32
31
|
while (stack.length > 0) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (lastLine > top.line) {
|
|
32
|
+
const top = stack.pop();
|
|
33
|
+
if (top && lastLine > top.line) {
|
|
36
34
|
ranges.push({ start: top.line, end: lastLine });
|
|
37
35
|
}
|
|
38
36
|
}
|
|
@@ -98,14 +96,13 @@ export function registerCustomFoldingProviders(monacoInstance: typeof import('mo
|
|
|
98
96
|
braceStack.push(lineNumber);
|
|
99
97
|
}
|
|
100
98
|
if (ch === '}' && braceStack.length > 0) {
|
|
101
|
-
|
|
102
|
-
const start = braceStack.pop()!;
|
|
99
|
+
const start = braceStack.pop();
|
|
103
100
|
// If there is non-whitespace content after `}` on this line
|
|
104
101
|
// (e.g. "} else {"), end the fold at the previous line so
|
|
105
102
|
// the continuation is not hidden inside the fold.
|
|
106
103
|
const restOfLine = line.slice(j + 1).trimStart();
|
|
107
104
|
const endLine = restOfLine.length > 0 ? lineNumber - 1 : lineNumber;
|
|
108
|
-
if (endLine > start) braceRanges.push({ start, end: endLine });
|
|
105
|
+
if (start !== undefined && endLine > start) braceRanges.push({ start, end: endLine });
|
|
109
106
|
}
|
|
110
107
|
}
|
|
111
108
|
|
|
@@ -118,9 +115,8 @@ export function registerCustomFoldingProviders(monacoInstance: typeof import('mo
|
|
|
118
115
|
headingStack.length > 0 &&
|
|
119
116
|
headingStack[headingStack.length - 1].level >= level
|
|
120
117
|
) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if (lineNumber - 1 > top.line) {
|
|
118
|
+
const top = headingStack.pop();
|
|
119
|
+
if (top && lineNumber - 1 > top.line) {
|
|
124
120
|
headingRanges.push({ start: top.line, end: lineNumber - 1 });
|
|
125
121
|
}
|
|
126
122
|
}
|
|
@@ -129,9 +125,8 @@ export function registerCustomFoldingProviders(monacoInstance: typeof import('mo
|
|
|
129
125
|
// Template just closed — seal all open heading sections here
|
|
130
126
|
if (!inTemplate) {
|
|
131
127
|
while (headingStack.length > 0) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (lineNumber > top.line) {
|
|
128
|
+
const top = headingStack.pop();
|
|
129
|
+
if (top && lineNumber > top.line) {
|
|
135
130
|
headingRanges.push({ start: top.line, end: lineNumber });
|
|
136
131
|
}
|
|
137
132
|
}
|
|
@@ -58,8 +58,7 @@ export class ManagedSchema implements SchemaLoader {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
get children() {
|
|
61
|
-
|
|
62
|
-
return this.root.children!;
|
|
61
|
+
return this.root.children ?? [];
|
|
63
62
|
}
|
|
64
63
|
|
|
65
64
|
reload() {
|
|
@@ -70,9 +70,8 @@ export function UploadResultCategory({
|
|
|
70
70
|
<div id={panelId} className="p-3 border-t border-color-border max-h-48 overflow-y-auto">
|
|
71
71
|
{items.length > 0 ? (
|
|
72
72
|
<ul className="space-y-1">
|
|
73
|
-
{items.map((item
|
|
74
|
-
|
|
75
|
-
<li key={index} className="text-sm py-1 px-2 rounded hover:bg-color-muted/10">
|
|
73
|
+
{items.map((item) => (
|
|
74
|
+
<li key={item} className="text-sm py-1 px-2 rounded hover:bg-color-muted/10">
|
|
76
75
|
{item}
|
|
77
76
|
</li>
|
|
78
77
|
))}
|
|
@@ -19,8 +19,7 @@ export function TextElement(props: TextElementProps) {
|
|
|
19
19
|
.split('\n')
|
|
20
20
|
.filter((element) => !!element.trim())
|
|
21
21
|
.map((line, index) => (
|
|
22
|
-
|
|
23
|
-
<div key={`${index}`}>{`${indentation}${line.trim()}`}</div>
|
|
22
|
+
<div key={`line-${index}`}>{`${indentation}${line.trim()}`}</div>
|
|
24
23
|
))}
|
|
25
24
|
</div>
|
|
26
25
|
) : (
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ActionComponentTypeProps, ObjectsActionSpec } from '../ObjectsActionSpec';
|
|
2
|
-
export declare function StartWorkflowComponent({ action, objectIds, collectionId }: ActionComponentTypeProps): import("react").JSX.Element;
|
|
3
|
-
export declare const StartWorkflowAction: ObjectsActionSpec;
|
|
4
|
-
//# sourceMappingURL=StartWorkflowComponent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StartWorkflowComponent.d.ts","sourceRoot":"","sources":["../../../../../../src/features/store/objects/selection/actions/StartWorkflowComponent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAExF,wBAAgB,sBAAsB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,wBAAwB,+BAwCnG;AAGD,eAAO,MAAM,mBAAmB,EAAE,iBAOjC,CAAC"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Button, Modal, ModalBody, ModalFooter, ModalTitle, SelectList, useToast } from '@vertesia/ui/core';
|
|
3
|
-
import { i18nInstance, NAMESPACE, useUITranslation } from '@vertesia/ui/i18n';
|
|
4
|
-
import { useUserSession } from '@vertesia/ui/session';
|
|
5
|
-
import { useCallback, useState } from 'react';
|
|
6
|
-
import { useObjectsActionCallback, useObjectsActionContext } from '../ObjectsActionHooks';
|
|
7
|
-
export function StartWorkflowComponent({ action, objectIds, collectionId }) {
|
|
8
|
-
const { t } = useUITranslation();
|
|
9
|
-
const toast = useToast();
|
|
10
|
-
const { client } = useUserSession();
|
|
11
|
-
const [isOpen, setOpen] = useState(false);
|
|
12
|
-
const callback = useCallback(() => {
|
|
13
|
-
setOpen(true);
|
|
14
|
-
return Promise.resolve(true);
|
|
15
|
-
}, []);
|
|
16
|
-
const onStartWorkflow = (workflowId) => {
|
|
17
|
-
setOpen(false);
|
|
18
|
-
if (!workflowId) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
// const objectIds = params.selection.getObjectIds();
|
|
22
|
-
// const workflowId = params.action.id;
|
|
23
|
-
return client.store.workflows.rules
|
|
24
|
-
.execute(workflowId, objectIds, { collection_id: collectionId })
|
|
25
|
-
.then(() => {
|
|
26
|
-
toast({
|
|
27
|
-
title: t('store.actions.workflowStarted'),
|
|
28
|
-
status: 'success',
|
|
29
|
-
duration: 3000,
|
|
30
|
-
});
|
|
31
|
-
})
|
|
32
|
-
.catch((err) => {
|
|
33
|
-
toast({
|
|
34
|
-
title: t('store.actions.errorStartingWorkflow'),
|
|
35
|
-
status: 'error',
|
|
36
|
-
description: err.message,
|
|
37
|
-
duration: 9000,
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
useObjectsActionCallback(action.id, callback);
|
|
42
|
-
return _jsx(StartWorkflowModal, { isOpen: isOpen, onClose: onStartWorkflow });
|
|
43
|
-
}
|
|
44
|
-
const t = i18nInstance.getFixedT(null, NAMESPACE);
|
|
45
|
-
export const StartWorkflowAction = {
|
|
46
|
-
id: 'startWorkflow',
|
|
47
|
-
name: t('store.actions.startWorkflow'),
|
|
48
|
-
description: t('store.actions.startWorkflowDesc'),
|
|
49
|
-
confirm: false,
|
|
50
|
-
hideInList: true,
|
|
51
|
-
component: StartWorkflowComponent,
|
|
52
|
-
};
|
|
53
|
-
function StartWorkflowModal({ isOpen, onClose }) {
|
|
54
|
-
const { t } = useUITranslation();
|
|
55
|
-
return (_jsxs(Modal, { onClose: () => onClose(undefined), isOpen: isOpen, className: "", children: [_jsx(ModalTitle, { children: t('store.actions.startWorkflowByRule') }), _jsx(StartWorkflowBody, { onClose: onClose })] }));
|
|
56
|
-
}
|
|
57
|
-
function optionLayout(option) {
|
|
58
|
-
return {
|
|
59
|
-
label: (_jsxs("div", { children: [_jsx("div", { children: option.name }), _jsx("div", { className: "text-sm text-muted", children: option.description })] })),
|
|
60
|
-
reverse: true,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
function StartWorkflowBody({ onClose }) {
|
|
64
|
-
const { t } = useUITranslation();
|
|
65
|
-
const [selected, setSelected] = useState(undefined);
|
|
66
|
-
const context = useObjectsActionContext();
|
|
67
|
-
const onSelect = (value) => {
|
|
68
|
-
setSelected(value);
|
|
69
|
-
};
|
|
70
|
-
const onStart = () => {
|
|
71
|
-
if (selected) {
|
|
72
|
-
onClose(selected.id);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
return (_jsxs("div", { children: [_jsxs(ModalBody, { children: [_jsx("div", { className: "pb-2", children: t('store.actions.chooseWorkflowRule') }), _jsx("div", { className: "max-h-[420px] overflow-y-scroll border-border border rounded-md", children: _jsx(SelectList, { options: context.wfRules, optionLayout: optionLayout, onChange: onSelect, value: selected }) })] }), _jsxs(ModalFooter, { children: [_jsx(Button, { variant: "secondary", onClick: () => onClose(), children: "Cancel" }), _jsx(Button, { onClick: onStart, isDisabled: !selected, children: "Start" })] })] }));
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=StartWorkflowComponent.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StartWorkflowComponent.js","sourceRoot":"","sources":["../../../../../../src/features/store/objects/selection/actions/StartWorkflowComponent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { Button, Modal, ModalBody, ModalFooter, ModalTitle, SelectList, useToast } from '@vertesia/ui/core';
|
|
2
|
-
import { i18nInstance, NAMESPACE, useUITranslation } from '@vertesia/ui/i18n';
|
|
3
|
-
import { useUserSession } from '@vertesia/ui/session';
|
|
4
|
-
import { useCallback, useState } from 'react';
|
|
5
|
-
import { useObjectsActionCallback, useObjectsActionContext } from '../ObjectsActionHooks';
|
|
6
|
-
import type { ActionComponentTypeProps, ObjectsActionSpec } from '../ObjectsActionSpec';
|
|
7
|
-
|
|
8
|
-
export function StartWorkflowComponent({ action, objectIds, collectionId }: ActionComponentTypeProps) {
|
|
9
|
-
const { t } = useUITranslation();
|
|
10
|
-
const toast = useToast();
|
|
11
|
-
const { client } = useUserSession();
|
|
12
|
-
const [isOpen, setOpen] = useState(false);
|
|
13
|
-
|
|
14
|
-
const callback = useCallback(() => {
|
|
15
|
-
setOpen(true);
|
|
16
|
-
return Promise.resolve(true);
|
|
17
|
-
}, []);
|
|
18
|
-
|
|
19
|
-
const onStartWorkflow = (workflowId?: string | undefined) => {
|
|
20
|
-
setOpen(false);
|
|
21
|
-
if (!workflowId) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
// const objectIds = params.selection.getObjectIds();
|
|
25
|
-
// const workflowId = params.action.id;
|
|
26
|
-
return client.store.workflows.rules
|
|
27
|
-
.execute(workflowId, objectIds, { collection_id: collectionId })
|
|
28
|
-
.then(() => {
|
|
29
|
-
toast({
|
|
30
|
-
title: t('store.actions.workflowStarted'),
|
|
31
|
-
status: 'success',
|
|
32
|
-
duration: 3000,
|
|
33
|
-
});
|
|
34
|
-
})
|
|
35
|
-
.catch((err) => {
|
|
36
|
-
toast({
|
|
37
|
-
title: t('store.actions.errorStartingWorkflow'),
|
|
38
|
-
status: 'error',
|
|
39
|
-
description: err.message,
|
|
40
|
-
duration: 9000,
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
useObjectsActionCallback(action.id, callback);
|
|
46
|
-
|
|
47
|
-
return <StartWorkflowModal isOpen={isOpen} onClose={onStartWorkflow} />;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const t = i18nInstance.getFixedT(null, NAMESPACE);
|
|
51
|
-
export const StartWorkflowAction: ObjectsActionSpec = {
|
|
52
|
-
id: 'startWorkflow',
|
|
53
|
-
name: t('store.actions.startWorkflow'),
|
|
54
|
-
description: t('store.actions.startWorkflowDesc'),
|
|
55
|
-
confirm: false,
|
|
56
|
-
hideInList: true,
|
|
57
|
-
component: StartWorkflowComponent,
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
interface StartWorkflowModalProps {
|
|
61
|
-
isOpen: boolean;
|
|
62
|
-
onClose: (workflowId?: string | undefined) => void;
|
|
63
|
-
}
|
|
64
|
-
function StartWorkflowModal({ isOpen, onClose }: StartWorkflowModalProps) {
|
|
65
|
-
const { t } = useUITranslation();
|
|
66
|
-
return (
|
|
67
|
-
<Modal onClose={() => onClose(undefined)} isOpen={isOpen} className="">
|
|
68
|
-
<ModalTitle>{t('store.actions.startWorkflowByRule')}</ModalTitle>
|
|
69
|
-
<StartWorkflowBody onClose={onClose} />
|
|
70
|
-
</Modal>
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
function optionLayout(option: ObjectsActionSpec) {
|
|
75
|
-
return {
|
|
76
|
-
label: (
|
|
77
|
-
<div>
|
|
78
|
-
<div>{option.name}</div>
|
|
79
|
-
<div className="text-sm text-muted">{option.description}</div>
|
|
80
|
-
</div>
|
|
81
|
-
),
|
|
82
|
-
reverse: true,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
interface StartWorkflowBodyProps {
|
|
87
|
-
onClose: (workflowId?: string | undefined) => void;
|
|
88
|
-
}
|
|
89
|
-
function StartWorkflowBody({ onClose }: StartWorkflowBodyProps) {
|
|
90
|
-
const { t } = useUITranslation();
|
|
91
|
-
const [selected, setSelected] = useState<ObjectsActionSpec | undefined>(undefined);
|
|
92
|
-
const context = useObjectsActionContext();
|
|
93
|
-
|
|
94
|
-
const onSelect = (value: ObjectsActionSpec) => {
|
|
95
|
-
setSelected(value);
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
const onStart = () => {
|
|
99
|
-
if (selected) {
|
|
100
|
-
onClose(selected.id);
|
|
101
|
-
}
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
return (
|
|
105
|
-
<div>
|
|
106
|
-
<ModalBody>
|
|
107
|
-
<div className="pb-2">{t('store.actions.chooseWorkflowRule')}</div>
|
|
108
|
-
<div className="max-h-[420px] overflow-y-scroll border-border border rounded-md">
|
|
109
|
-
<SelectList
|
|
110
|
-
options={context.wfRules}
|
|
111
|
-
optionLayout={optionLayout}
|
|
112
|
-
onChange={onSelect}
|
|
113
|
-
value={selected}
|
|
114
|
-
/>
|
|
115
|
-
</div>
|
|
116
|
-
</ModalBody>
|
|
117
|
-
<ModalFooter>
|
|
118
|
-
<Button variant="secondary" onClick={() => onClose()}>
|
|
119
|
-
Cancel
|
|
120
|
-
</Button>
|
|
121
|
-
<Button onClick={onStart} isDisabled={!selected}>
|
|
122
|
-
Start
|
|
123
|
-
</Button>
|
|
124
|
-
</ModalFooter>
|
|
125
|
-
</div>
|
|
126
|
-
);
|
|
127
|
-
}
|