ui: domain_role: allow select multi

This commit is contained in:
undefined committed 2026-04-10 01:32:34 +08:00
1 parent 1bded00d53
commit 940a499115
2 files changed
+14 -7

No files matched your search

@@ -123,6 +123,7 @@ export interface Field {
default?: string;
columns?: number;
rows?: number;
multi?: boolean;
}
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
/>)}
{['userId', 'username', 'user'].includes(field.type) && <UserSelectAutoComplete
data-autofocus={field.autofocus}
multi={field.multi}
ref={(el) => { refs.current[name] = el; }}
selectedKeys={selected[name] ? [selected[name].toString()] : []}
selectedKeys={selected[name]
? (field.multi
? String(selected[name]).split(',').filter(Boolean)
: [selected[name].toString()])
: []}
onChange={(e) => {
const val = refs.current[name].getSelectedItems()[0];
setValues({ ...values, [name]: field.type === 'username' ? val?.uname : field.type === 'userId' ? val?._id : val });
if (e === selected[name]) return;
const items = refs.current[name].getSelectedItems();
const extract = (v) => (field.type === 'username' ? v?.uname : field.type === 'userId' ? v?._id : v);
setValues({ ...values, [name]: field.multi ? items.map(extract) : extract(items[0]) });
setSelected({ ...selected, [name]: e });
}}
/>}
@@ -28,15 +28,14 @@ const page = new NamedPage('domain_user', () => {
type: 'userId',
required: true,
autofocus: true,
multi: true,
label: i18n('Username / UID'),
columns: 6,
},
role: {
type: 'text',
required: true,
label: 'Role',
options: UiContext.roles.filter((i) => !['default', 'guest'].includes(i)),
columns: -6,
},
...((UiContext.canForceJoin && UiContext.domain._id !== 'system') ? {
join: {
@@ -45,11 +44,11 @@ const page = new NamedPage('domain_user', () => {
},
} : {}),
});
if (!res?.user || !res?.role) return;
if (!res?.user?.length || !res?.role) return;
try {
await request.post('', {
operation: 'set_users',
uids: [res.user],
uids: res.user,
role: res.role,
join: res.join,
});