Automatically select enum after creation (#9915)

This commit is contained in:
Denis Bykhov
2025-09-23 08:12:19 +07:00
committed by GitHub
parent 18b6c1c6e0
commit 59d262d24d
2 changed files with 19 additions and 18 deletions
@@ -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<Doc>): 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<void> {
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'}
@@ -52,17 +52,18 @@
async function save (): Promise<void> {
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 {