From 9dd0f34e0bc8c394f9afa956d32763abe8540b4d Mon Sep 17 00:00:00 2001 From: Eduard Aksamitov Date: Wed, 6 Mar 2024 12:14:30 +0300 Subject: [PATCH] fix(todo): broken context actions Signed-off-by: Eduard Aksamitov --- models/time/src/index.ts | 12 ++++---- .../ui/src/components/PanelInstance.svelte | 29 +++++++++++-------- .../src/components/Workbench.svelte | 2 +- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/models/time/src/index.ts b/models/time/src/index.ts index e67814f9d82..ac3620c3115 100644 --- a/models/time/src/index.ts +++ b/models/time/src/index.ts @@ -158,6 +158,10 @@ export function createModel (builder: Builder): void { titleProvider: time.function.ToDoTitleProvider }) + builder.mixin(time.class.ToDo, core.class.Class, view.mixin.ObjectPanel, { + component: time.component.EditToDo + }) + builder.createDoc( workbench.class.Application, core.space.Model, @@ -269,14 +273,10 @@ export function createModel (builder: Builder): void { createAction( builder, { - action: view.actionImpl.ShowPopup, + action: view.actionImpl.ShowPanel, actionProps: { component: time.component.EditToDo, - element: 'top', - fillProps: { - _object: 'object', - space: 'space' - } + element: 'content' }, label: time.string.EditToDo, icon: view.icon.Edit, diff --git a/packages/ui/src/components/PanelInstance.svelte b/packages/ui/src/components/PanelInstance.svelte index 66845009093..01ca301c88e 100644 --- a/packages/ui/src/components/PanelInstance.svelte +++ b/packages/ui/src/components/PanelInstance.svelte @@ -23,7 +23,7 @@ import type { AnySvelteComponent, PopupOptions, DeviceOptions } from '../types' import Spinner from './Spinner.svelte' - export let contentPanel: HTMLElement + export let contentPanel: HTMLElement | undefined export let kind: 'default' | 'modern' = 'default' export let embedded: boolean = false export let readonly: boolean = false @@ -106,34 +106,39 @@ } const _update = (): void => { - if (props) { + if (props && contentPanel) { fitPopup(props, contentPanel) } } const checkResize = (el: Element) => { - if (props) fitPopup(props, contentPanel) + if (props && contentPanel) fitPopup(props, contentPanel) } + onMount(() => { + if (props && contentPanel) fitPopup(props, contentPanel) + }) + afterUpdate(() => { - if (props) fitPopup(props, contentPanel) - if (!keepSize && props?.element === 'content' && contentPanel !== undefined) { + if (props && contentPanel) fitPopup(props, contentPanel) + }) + + $: if (props && contentPanel !== undefined) { + fitPopup(props, contentPanel) + if (!keepSize && props?.element === 'content') { keepSize = true resizeObserver(contentPanel, checkResize) } - }) - export function fitPopupInstance (): void { - if (props) fitPopup(props, contentPanel) } - onMount(() => { - if (props) fitPopup(props, contentPanel) - }) + export function fitPopupInstance (): void { + if (props && contentPanel) fitPopup(props, contentPanel) + } { - if (props) fitPopup(props, contentPanel) + if (props && contentPanel) fitPopup(props, contentPanel) }} on:keydown={(evt) => { if (props) handleKeydown(evt) diff --git a/plugins/workbench-resources/src/components/Workbench.svelte b/plugins/workbench-resources/src/components/Workbench.svelte index 1951a7750cc..f68b05cc53c 100644 --- a/plugins/workbench-resources/src/components/Workbench.svelte +++ b/plugins/workbench-resources/src/components/Workbench.svelte @@ -83,7 +83,7 @@ import TopMenu from './icons/TopMenu.svelte' let contentPanel: HTMLElement - let replacedPanel: HTMLElement + let replacedPanel: HTMLElement | undefined const { setTheme } = getContext<{ setTheme: (theme: string) => void }>('theme')