From fcd81fbcc9bf5a2760762dbdf2d780aac0928092 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 11 Jan 2022 13:15:22 +0800 Subject: [PATCH] ui: bug fix --- ...omplete.jsx => UserSelectAutoComplete.tsx} | 29 +++++++++++++++---- packages/ui-default/package.json | 2 +- 2 files changed, 25 insertions(+), 6 deletions(-) rename packages/ui-default/components/autocomplete/components/{UserSelectAutoComplete.jsx => UserSelectAutoComplete.tsx} (80%) diff --git a/packages/ui-default/components/autocomplete/components/UserSelectAutoComplete.jsx b/packages/ui-default/components/autocomplete/components/UserSelectAutoComplete.tsx similarity index 80% rename from packages/ui-default/components/autocomplete/components/UserSelectAutoComplete.jsx rename to packages/ui-default/components/autocomplete/components/UserSelectAutoComplete.tsx index 8c91ebfe7..7292fc66c 100644 --- a/packages/ui-default/components/autocomplete/components/UserSelectAutoComplete.jsx +++ b/packages/ui-default/components/autocomplete/components/UserSelectAutoComplete.tsx @@ -6,17 +6,31 @@ import PropTypes from 'prop-types'; import api, { gql } from 'vj/utils/api'; import AutoComplete from './AutoComplete'; +interface UserSelectAutoCompleteProps { + multi?: boolean; + defaultItems?: string; + width: string, + height: string, + listStyle: any, + onChange: (value) => any, + allowEmptyQuery: boolean, + freeSolo: boolean, + freeSoloConverter: any, +} + // eslint-disable-next-line prefer-arrow-callback -const UserSelectAutoComplete = forwardRef(function UserSelectAutoComplete(props, ref) { +const UserSelectAutoComplete = forwardRef(function UserSelectAutoComplete( + props: UserSelectAutoCompleteProps, ref: React.Ref, +) { const multi = props.multi ?? false; const rawDefaultItems = props.defaultItems ?? ''; const defaultItems = multi ? rawDefaultItems .split(',') .map((i) => i.trim()) - .filter((i) => i.length > 0) + .filter((i) => i.length) .map((i) => +i) : rawDefaultItems; - const comRef = createRef(); + const comRef = createRef(); const itemsBox = useRef([]); const { isLoading } = useQuery(['default_user', defaultItems], async () => { if (!multi || defaultItems.length === 0) return; @@ -35,8 +49,13 @@ const UserSelectAutoComplete = forwardRef(function UserSelectAutoComplete(props, } }, [itemsBox.current]); - useImperativeHandle(ref, () => ({ - ...comRef.current, + useImperativeHandle(ref, () => new Proxy(comRef, { + get(target, propKey) { + if (typeof target.current?.[propKey] === 'function') { + return (...args: any[]) => target.current[propKey](...args); + } + return target.current?.[propKey]; + }, })); const itemsFn = (query) => api(gql` diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index fdf25eda2..db92aec67 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.29.3", + "version": "4.29.4", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",