mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +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;
|
default?: string;
|
||||||
columns?: number;
|
columns?: number;
|
||||||
rows?: number;
|
rows?: number;
|
||||||
|
multi?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
type Result<T extends string, R extends Record<T, Field>> = {
|
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
|
{['userId', 'username', 'user'].includes(field.type) && <UserSelectAutoComplete
|
||||||
data-autofocus={field.autofocus}
|
data-autofocus={field.autofocus}
|
||||||
|
multi={field.multi}
|
||||||
ref={(el) => { refs.current[name] = el; }}
|
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) => {
|
onChange={(e) => {
|
||||||
const val = refs.current[name].getSelectedItems()[0];
|
if (e === selected[name]) return;
|
||||||
setValues({ ...values, [name]: field.type === 'username' ? val?.uname : field.type === 'userId' ? val?._id : val });
|
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 });
|
setSelected({ ...selected, [name]: e });
|
||||||
}}
|
}}
|
||||||
/>}
|
/>}
|
||||||
|
|||||||
@@ -28,15 +28,14 @@ const page = new NamedPage('domain_user', () => {
|
|||||||
type: 'userId',
|
type: 'userId',
|
||||||
required: true,
|
required: true,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
|
multi: true,
|
||||||
label: i18n('Username / UID'),
|
label: i18n('Username / UID'),
|
||||||
columns: 6,
|
|
||||||
},
|
},
|
||||||
role: {
|
role: {
|
||||||
type: 'text',
|
type: 'text',
|
||||||
required: true,
|
required: true,
|
||||||
label: 'Role',
|
label: 'Role',
|
||||||
options: UiContext.roles.filter((i) => !['default', 'guest'].includes(i)),
|
options: UiContext.roles.filter((i) => !['default', 'guest'].includes(i)),
|
||||||
columns: -6,
|
|
||||||
},
|
},
|
||||||
...((UiContext.canForceJoin && UiContext.domain._id !== 'system') ? {
|
...((UiContext.canForceJoin && UiContext.domain._id !== 'system') ? {
|
||||||
join: {
|
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 {
|
try {
|
||||||
await request.post('', {
|
await request.post('', {
|
||||||
operation: 'set_users',
|
operation: 'set_users',
|
||||||
uids: [res.user],
|
uids: res.user,
|
||||||
role: res.role,
|
role: res.role,
|
||||||
join: res.join,
|
join: res.join,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in new issue
Block a user