import createRef from '../../_util/createRef'; /* eslint-disable no-console */ import Select, { Option } from '..'; import '../assets/index.less'; import { nextTick } from 'vue'; const Combobox = { data() { this.textareaRef = createRef(); this.timeoutId; return { disabled: false, value: '', options: [], }; }, mounted() { nextTick(() => { console.log('Ref:', this.textareaRef.current); }); }, methods: { onChange(value, option) { console.log('onChange', value, option); this.value = value; }, onKeyDown(e) { const { value } = this; if (e.keyCode === 13) { console.log('onEnter', value); } }, onSelect(v, option) { console.log('onSelect', v, option); }, onSearch(text: string) { console.log('onSearch:', text); }, onAsyncChange(value) { window.clearTimeout(this.timeoutId); console.log(value); this.options = []; //const value = String(Math.random()); this.timeoutId = window.setTimeout(() => { this.options = [{ value }, { value: `${value}-${value}` }]; }, 1000); }, toggleDisabled() { const { disabled } = this; this.disabled = !disabled; }, }, render() { const { value, disabled } = this; return ( <div> <h2>combobox</h2> <p> <button type="button" onClick={this.toggleDisabled}> toggle disabled </button> <button type="button" onClick={() => { this.value = ''; }} > reset </button> </p> <div> <Select disabled={disabled} style={{ width: '500px' }} onChange={this.onChange} onSelect={this.onSelect} onSearch={this.onSearch} onInputKeyDown={this.onKeyDown} notFoundContent="" allowClear placeholder="please select" value={value} mode="combobox" backfill onFocus={() => console.log('focus')} onBlur={() => console.log('blur')} > <Option value="jack"> <b style={{ color: 'red' }}>jack</b> </Option> <Option value="lucy">lucy</Option> <Option value="disabled" disabled> disabled </Option> <Option value="yiminghe">yiminghe</Option> <Option value="竹林星光">竹林星光</Option> </Select> <h3>Customize Input Element</h3> <Select mode="combobox" style={{ width: '200px' }} getInputElement={() => ( <textarea style={{ background: 'red' }} rows={3} ref={this.textareaRef} /> )} options={[{ value: 'light' }, { value: 'bamboo' }]} allowClear placeholder="2333" /> <h3>Async Input Element</h3> <Select mode="combobox" notFoundContent={null} style={{ width: '200px' }} options={this.options} onChange={this.onAsyncChange} /> </div> </div> ); }, }; export default Combobox; /* eslint-enable */