Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions src/select/__tests__/index.test.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,19 @@ describe('Select', () => {
});
expect(wrapper.element).toMatchSnapshot();
});
it(':filterable', async () => {
const wrapper = mount(
{
render() {
return <Select filterable={true}></Select>;
},
},
{ attachTo: document.body },
);
const input = wrapper.find('input[placeholder="请选择"]');
input.trigger('focus');
expect(input.element).toBe(document.activeElement);
});
});
});

Expand Down
14 changes: 7 additions & 7 deletions src/select/select.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -346,14 +346,14 @@ export default defineComponent({
.slice(0, max.value || Infinity),
{ e, trigger: isAllOptionsChecked.value ? 'uncheck' : 'check' },
);
!reserveKeyword?.value && setTInputValue('');
!reserveKeyword?.value && setTInputValue('', { e, trigger: 'change' });
};

const handleCreate = () => {
const handleCreate = (e: KeyboardEvent) => {
if (!tInputValue.value) return;
const createVal = tInputValue.value;
// 只有多选情况下需要帮用户清除一次输入框内容,单选场景选中后 popup 消失,携带内容清除的作用
multiple.value && setTInputValue('');
multiple.value && setTInputValue('', { e, trigger: 'change' });
instance.emit('create', createVal);
props.onCreate?.(createVal);
};
Expand All @@ -371,7 +371,7 @@ export default defineComponent({

const handleTInputValueChange = (val: string, context: SelectInputValueChangeContext) => {
if (context.trigger === 'blur' || !innerPopupVisible.value) return;
setTInputValue(val);
setTInputValue(val, context);
debounceSearch({ e: context.e as KeyboardEvent });
};

Expand Down Expand Up @@ -529,7 +529,7 @@ export default defineComponent({
case 'Enter':
// 当支持创建、且 hoverIndex 为 -1(未选中)/0(创建条目)、第一项为创建项的时候,才视为触发 create 回调,并继续键盘事件
if (creatable.value && hoverIndex.value < 1 && displayOptions?.[0]?.isCreated) {
handleCreate();
handleCreate(e);
} else if (hoverIndex.value === -1) {
// 否则视为选择列表中筛选出的已有项目
// 当 hoverIndex 为 -1,即未选中任意项的时候,不触发其他键盘事件
Expand All @@ -554,7 +554,7 @@ export default defineComponent({
case 'Escape':
case 'Tab':
setInnerPopupVisible(false, { trigger: 'keydown-esc', e });
setTInputValue('');
setTInputValue('', { e, trigger: 'blur' });
break;
}
};
Expand All @@ -576,7 +576,7 @@ export default defineComponent({
// 显示 popup 的时候重置 hover 选项下标
hoverIndex.value = -1;
} else {
tInputValue.value && setTInputValue('');
tInputValue.value && setTInputValue('', { trigger: 'blur' });
}
});
provide('tSelect', {
Expand Down
Loading