import { assign } from 'lodash'; import React from 'react'; import ReactDOM from 'react-dom/client'; import DOMAttachedObject from 'vj/components/DOMAttachedObject'; import AutoComplete, { AutoCompleteOptions } from '.'; import UserSelectAutoCompleteFC from './components/UserSelectAutoComplete'; const Component = React.forwardRef((props, ref) => { const [value, setValue] = React.useState(props.value ?? ''); return ( i.trim()).filter((i) => i)} onChange={(v) => { setValue(v); props.onChange(v); }} multi={props.multi} /> ); }); export default class UserSelectAutoComplete extends AutoComplete { static DOMAttachKey = 'ucwUserSelectAutoCompleteInstance'; constructor($dom, options: AutoCompleteOptions) { super($dom, { classes: 'user-select', ...options, }); } value(): Multi extends true ? number[] : string { if (this.options.multi) return this.ref?.getSelectedItemKeys().map((i) => +i) ?? this.$dom.val(); return this.ref?.getSelectedItems()[0] ?? null; } attach() { const value = this.$dom.val(); ReactDOM.createRoot(this.container).render( { this.ref = ref; }} value={value} multi={this.options.multi} onChange={this.onChange} />, ); } } assign(UserSelectAutoComplete, DOMAttachedObject); window.Hydro.components.UserSelectAutoComplete = UserSelectAutoComplete;