From 59d262d24d8f6b60c2966f8895f022de4e11aba0 Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Tue, 23 Sep 2025 06:12:19 +0500 Subject: [PATCH] Automatically select enum after creation (#9915) --- .../src/components/DocPopup.svelte | 32 +++++++++---------- .../src/components/EditEnum.svelte | 5 +-- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/packages/presentation/src/components/DocPopup.svelte b/packages/presentation/src/components/DocPopup.svelte index 24d3ad34b8..d6f646595e 100644 --- a/packages/presentation/src/components/DocPopup.svelte +++ b/packages/presentation/src/components/DocPopup.svelte @@ -79,14 +79,11 @@ findObjectPresenter(_class) } - const checkSelected = (item?: Doc): void => { - if (item === undefined) { - return - } - if (selectedElements.has(item._id)) { - selectedElements.delete(item._id) + const checkSelected = (_id: Ref): void => { + if (selectedElements.has(_id)) { + selectedElements.delete(_id) } else { - selectedElements.add(item._id) + selectedElements.add(_id) } selectedObjects = Array.from(selectedElements) @@ -97,12 +94,16 @@ let selection = 0 let list: ListView - async function handleSelection (evt: Event | undefined, objects: Doc[], selection: number): Promise { + function handleSelection (evt: Event | undefined, objects: Doc[], selection: number): void { const item = objects[selection] if (item === undefined) { return } + select(item) + } + + function select (item: Doc): void { if (!multiSelect) { if (allowDeselect) { selected = item._id === selected ? undefined : item._id @@ -111,7 +112,7 @@ } dispatch(closeAfterSelect ? 'close' : 'update', selected !== undefined ? item : undefined) } else { - checkSelected(item) + checkSelected(item._id) } } @@ -129,7 +130,7 @@ if (key.code === 'Enter') { key.preventDefault() key.stopPropagation() - void handleSelection(key, objects, selection) + handleSelection(key, objects, selection) } } const manager = createFocusManager() @@ -142,11 +143,10 @@ showPopup(c.component, c.props ?? {}, 'top', async (res) => { if (res != null) { // We expect reference to new object. - const newPerson = await getClient().findOne(_class, { _id: res }) - if (newPerson !== undefined) { - search = c.update?.(newPerson) ?? '' - dispatch('created', newPerson) - dispatch('search', search) + const newObject = await getClient().findOne(_class, { _id: res }) + if (newObject !== undefined) { + dispatch('created', newObject) + select(newObject) } } }) @@ -248,7 +248,7 @@ class="menu-item withList w-full flex-row-center" disabled={readonly || isDeselectDisabled || loading} on:click={() => { - void handleSelection(undefined, objects, item) + handleSelection(undefined, objects, item) }} > {#if type === 'text'} diff --git a/plugins/setting-resources/src/components/EditEnum.svelte b/plugins/setting-resources/src/components/EditEnum.svelte index 8eab13c8cf..0594aa5a3c 100644 --- a/plugins/setting-resources/src/components/EditEnum.svelte +++ b/plugins/setting-resources/src/components/EditEnum.svelte @@ -52,17 +52,18 @@ async function save (): Promise { if (value === undefined) { - await client.createDoc(core.class.Enum, core.space.Model, { + const _id = await client.createDoc(core.class.Enum, core.space.Model, { name, enumValues: values }) + dispatch('close', _id) } else { await client.update(value, { name, enumValues: values }) + dispatch('close', value._id) } - dispatch('close') } function add (): void {