import React, { PropsWithChildren, useCallback, useState } from 'react' import { AutoComplete, SelectOptionItems } from 'react-icecream' export default function Demo() { return ( <> ) } function NameInput() { const maxNameLength = 10 const [name, setName] = useState('') const isNameValid = name.length <= maxNameLength const fetchNames = useCallback((keyword: string) => { const names = ['Alice', 'Bob', '张三', '李四'] return names .filter(item => (keyword ? item.toLowerCase().includes(keyword.toLowerCase()) : true)) .map(item => ({ value: item, content: item })) }, []) return ( {name.length}/{maxNameLength}} value={name} onChange={setName} validateStatus={isNameValid ? 'success' : 'error'} clearable fetch={fetchNames} /> ) } function fetchOptions(keyword: string): SelectOptionItems { if (!keyword) { return [] } return [ { value: keyword, content: keyword }, { value: keyword.repeat(2), content: keyword.repeat(2) }, { value: keyword.repeat(3), content: keyword.repeat(3) } ] } function fetchRemoteOptions(keyword: string): Promise> { if (!keyword) { return Promise.resolve([]) } return new Promise(resolve => { setTimeout(() => resolve(fetchOptions(keyword)), 2000) }) } function fetchGroupedOptions(keyword: string): SelectOptionItems { if (!keyword) { return [] } return [{ title: 'Group 1', options: [ { value: keyword.repeat(2), content: keyword.repeat(2) } ] }, { title: 'Group 2', options: [ { value: keyword.repeat(3), content: keyword.repeat(3) } ] }] } function Line({ children }: PropsWithChildren<{}>) { return
{children}
}