mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 09:36:08 +08:00
ui: domain_role: allow select multi
This commit is contained in:
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,
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user