|
79 | 79 | findObjectPresenter(_class) |
80 | 80 | } |
81 | 81 |
|
82 | | - const checkSelected = (item?: Doc): void => { |
83 | | - if (item === undefined) { |
84 | | - return |
85 | | - } |
86 | | - if (selectedElements.has(item._id)) { |
87 | | - selectedElements.delete(item._id) |
| 82 | + const checkSelected = (_id: Ref<Doc>): void => { |
| 83 | + if (selectedElements.has(_id)) { |
| 84 | + selectedElements.delete(_id) |
88 | 85 | } else { |
89 | | - selectedElements.add(item._id) |
| 86 | + selectedElements.add(_id) |
90 | 87 | } |
91 | 88 |
|
92 | 89 | selectedObjects = Array.from(selectedElements) |
|
97 | 94 | let selection = 0 |
98 | 95 | let list: ListView |
99 | 96 |
|
100 | | - async function handleSelection (evt: Event | undefined, objects: Doc[], selection: number): Promise<void> { |
| 97 | + function handleSelection (evt: Event | undefined, objects: Doc[], selection: number): void { |
101 | 98 | const item = objects[selection] |
102 | 99 | if (item === undefined) { |
103 | 100 | return |
104 | 101 | } |
105 | 102 |
|
| 103 | + select(item) |
| 104 | + } |
| 105 | +
|
| 106 | + function select (item: Doc): void { |
106 | 107 | if (!multiSelect) { |
107 | 108 | if (allowDeselect) { |
108 | 109 | selected = item._id === selected ? undefined : item._id |
|
111 | 112 | } |
112 | 113 | dispatch(closeAfterSelect ? 'close' : 'update', selected !== undefined ? item : undefined) |
113 | 114 | } else { |
114 | | - checkSelected(item) |
| 115 | + checkSelected(item._id) |
115 | 116 | } |
116 | 117 | } |
117 | 118 |
|
|
129 | 130 | if (key.code === 'Enter') { |
130 | 131 | key.preventDefault() |
131 | 132 | key.stopPropagation() |
132 | | - void handleSelection(key, objects, selection) |
| 133 | + handleSelection(key, objects, selection) |
133 | 134 | } |
134 | 135 | } |
135 | 136 | const manager = createFocusManager() |
|
142 | 143 | showPopup(c.component, c.props ?? {}, 'top', async (res) => { |
143 | 144 | if (res != null) { |
144 | 145 | // We expect reference to new object. |
145 | | - const newPerson = await getClient().findOne(_class, { _id: res }) |
146 | | - if (newPerson !== undefined) { |
147 | | - search = c.update?.(newPerson) ?? '' |
148 | | - dispatch('created', newPerson) |
149 | | - dispatch('search', search) |
| 146 | + const newObject = await getClient().findOne(_class, { _id: res }) |
| 147 | + if (newObject !== undefined) { |
| 148 | + dispatch('created', newObject) |
| 149 | + select(newObject) |
150 | 150 | } |
151 | 151 | } |
152 | 152 | }) |
|
248 | 248 | class="menu-item withList w-full flex-row-center" |
249 | 249 | disabled={readonly || isDeselectDisabled || loading} |
250 | 250 | on:click={() => { |
251 | | - void handleSelection(undefined, objects, item) |
| 251 | + handleSelection(undefined, objects, item) |
252 | 252 | }} |
253 | 253 | > |
254 | 254 | {#if type === 'text'} |
|
0 commit comments