ui: UserSelectAutoComplete: add byId option (fix #1023)

This commit is contained in:
undefined committed 2025-07-29 13:45:05 +08:00
1 parent f23e7cabd5
commit f1659977ec
2 files changed
+5 -4

No files matched your search

@@ -4,14 +4,14 @@ import PropTypes from 'prop-types';
import { forwardRef } from 'react'; import { forwardRef } from 'react';
import { api } from 'vj/utils'; import { api } from 'vj/utils';
const UserSelectAutoComplete = forwardRef<AutoCompleteHandle<Udoc>, AutoCompleteProps<Udoc>>((props, ref) => ( const UserSelectAutoComplete = forwardRef<AutoCompleteHandle<Udoc>, AutoCompleteProps<Udoc> & { byId?: boolean }>((props, ref) => (
<AutoComplete<Udoc> <AutoComplete<Udoc>
ref={ref as any} ref={ref as any}
cacheKey="user" cacheKey="user"
queryItems={(query) => api('users', { search: query }, ['_id', 'uname', 'displayName', 'avatarUrl'])} queryItems={(query) => api('users', { search: query }, ['_id', 'uname', 'displayName', 'avatarUrl'])}
fetchItems={(ids) => api('users', { auto: ids }, ['_id', 'uname', 'displayName'])} fetchItems={(ids) => api('users', { auto: ids }, ['_id', 'uname', 'displayName'])}
itemText={(user) => user.uname + (user.displayName ? ` (${user.displayName})` : '')} itemText={(user) => user.uname + (user.displayName ? ` (${user.displayName})` : '')}
itemKey={(user) => ((props.multi || /^[+-]?\d+$/.test(user.uname.trim())) ? user._id.toString() : user.uname)} itemKey={(user) => ((props.multi || props.byId || /^[+-]?\d+$/.test(user.uname.trim())) ? user._id.toString() : user.uname)}
renderItem={(user) => ( renderItem={(user) => (
<div className="media"> <div className="media">
<div className="media__left medium"> <div className="media__left medium">
@@ -150,8 +150,9 @@ export async function prompt<T extends string>(title: string, fields: Record<T,
/> />
: field.type === 'user' : field.type === 'user'
? <UserSelectAutoComplete ? <UserSelectAutoComplete
data-autofocus={field.autofocus} selectedKeys={values[name] ? [values[name]] : []} data-autofocus={field.autofocus} selectedKeys={values[name] ? [values[name].toString()] : []}
onChange={(e) => setValues({ ...values, [name]: e })} onChange={(e) => setValues({ ...values, [name]: +e })}
byId
/> />
: <DomainSelectAutoComplete : <DomainSelectAutoComplete
data-autofocus={field.autofocus} selectedKeys={values[name] ? [values[name]] : []} data-autofocus={field.autofocus} selectedKeys={values[name] ? [values[name]] : []}