Skip to content

Commit 940a499

Browse files
committed
ui: domain_role: allow select multi
1 parent 1bded00 commit 940a499

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

packages/ui-default/components/dialog/index.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ export interface Field {
123123
default?: string;
124124
columns?: number;
125125
rows?: number;
126+
multi?: boolean;
126127
}
127128

128129
type Result<T extends string, R extends Record<T, Field>> = {
@@ -211,11 +212,18 @@ export async function prompt<T extends string, R extends Record<T, Field>>(title
211212
/>)}
212213
{['userId', 'username', 'user'].includes(field.type) && <UserSelectAutoComplete
213214
data-autofocus={field.autofocus}
215+
multi={field.multi}
214216
ref={(el) => { refs.current[name] = el; }}
215-
selectedKeys={selected[name] ? [selected[name].toString()] : []}
217+
selectedKeys={selected[name]
218+
? (field.multi
219+
? String(selected[name]).split(',').filter(Boolean)
220+
: [selected[name].toString()])
221+
: []}
216222
onChange={(e) => {
217-
const val = refs.current[name].getSelectedItems()[0];
218-
setValues({ ...values, [name]: field.type === 'username' ? val?.uname : field.type === 'userId' ? val?._id : val });
223+
if (e === selected[name]) return;
224+
const items = refs.current[name].getSelectedItems();
225+
const extract = (v) => (field.type === 'username' ? v?.uname : field.type === 'userId' ? v?._id : v);
226+
setValues({ ...values, [name]: field.multi ? items.map(extract) : extract(items[0]) });
219227
setSelected({ ...selected, [name]: e });
220228
}}
221229
/>}

packages/ui-default/pages/domain_user.page.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,14 @@ const page = new NamedPage('domain_user', () => {
2828
type: 'userId',
2929
required: true,
3030
autofocus: true,
31+
multi: true,
3132
label: i18n('Username / UID'),
32-
columns: 6,
3333
},
3434
role: {
3535
type: 'text',
3636
required: true,
3737
label: 'Role',
3838
options: UiContext.roles.filter((i) => !['default', 'guest'].includes(i)),
39-
columns: -6,
4039
},
4140
...((UiContext.canForceJoin && UiContext.domain._id !== 'system') ? {
4241
join: {
@@ -45,11 +44,11 @@ const page = new NamedPage('domain_user', () => {
4544
},
4645
} : {}),
4746
});
48-
if (!res?.user || !res?.role) return;
47+
if (!res?.user?.length || !res?.role) return;
4948
try {
5049
await request.post('', {
5150
operation: 'set_users',
52-
uids: [res.user],
51+
uids: res.user,
5352
role: res.role,
5453
join: res.join,
5554
});

0 commit comments

Comments
 (0)