Skip to content

Commit 47d555d

Browse files
RSS1102uyarn
andauthored
fix(select): onInputChange miss callback second parameters (#3427)
* fix(select): `onInputChange` miss callback second parameters * chore: complete params * chore: fix lint --------- Co-authored-by: Uyarn <[email protected]>
1 parent f612cca commit 47d555d

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

src/select/__tests__/index.test.jsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,19 @@ describe('Select', () => {
9292
});
9393
expect(wrapper.element).toMatchSnapshot();
9494
});
95+
it(':filterable', async () => {
96+
const wrapper = mount(
97+
{
98+
render() {
99+
return <Select filterable={true}></Select>;
100+
},
101+
},
102+
{ attachTo: document.body },
103+
);
104+
const input = wrapper.find('input[placeholder="请选择"]');
105+
input.trigger('focus');
106+
expect(input.element).toBe(document.activeElement);
107+
});
95108
});
96109
});
97110

src/select/select.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -346,14 +346,14 @@ export default defineComponent({
346346
.slice(0, max.value || Infinity),
347347
{ e, trigger: isAllOptionsChecked.value ? 'uncheck' : 'check' },
348348
);
349-
!reserveKeyword?.value && setTInputValue('');
349+
!reserveKeyword?.value && setTInputValue('', { e, trigger: 'change' });
350350
};
351351

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

372372
const handleTInputValueChange = (val: string, context: SelectInputValueChangeContext) => {
373373
if (context.trigger === 'blur' || !innerPopupVisible.value) return;
374-
setTInputValue(val);
374+
setTInputValue(val, context);
375375
debounceSearch({ e: context.e as KeyboardEvent });
376376
};
377377

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

0 commit comments

Comments
 (0)