fix[Select]: fix select losing focus issue (#7829)
parent
4f7bd6f28d
commit
22dad3ba6d
|
@ -159,6 +159,52 @@ describe('Select', () => {
|
||||||
}, 500);
|
}, 500);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('The select trigger should be blur when the panel is closed.', async () => {
|
||||||
|
const wrapper = mount(
|
||||||
|
{
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<Select
|
||||||
|
dropdownRender={() => {
|
||||||
|
return <input id="dropdownRenderInput" />;
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
sync: false,
|
||||||
|
attachTo: 'body',
|
||||||
|
},
|
||||||
|
);
|
||||||
|
await asyncExpect(async () => {
|
||||||
|
await wrapper.find('.ant-select-selector').trigger('mousedown');
|
||||||
|
await wrapper.find('.ant-select-selection-search-input').trigger('focus');
|
||||||
|
});
|
||||||
|
|
||||||
|
await asyncExpect(async () => {
|
||||||
|
const el = wrapper.find('.ant-select');
|
||||||
|
|
||||||
|
expect(el.classes()).toContain('ant-select-focused');
|
||||||
|
$$('#dropdownRenderInput')[0].focus();
|
||||||
|
|
||||||
|
expect(el.classes()).toContain('ant-select-focused');
|
||||||
|
|
||||||
|
document.body.dispatchEvent(
|
||||||
|
new MouseEvent('mousedown', {
|
||||||
|
bubbles: true,
|
||||||
|
cancelable: true,
|
||||||
|
view: window,
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}, 100);
|
||||||
|
|
||||||
|
await asyncExpect(async () => {
|
||||||
|
const el = wrapper.find('.ant-select');
|
||||||
|
expect(el.classes()).not.toContain('ant-select-focused');
|
||||||
|
}, 200);
|
||||||
|
});
|
||||||
|
|
||||||
describe('Select Custom Icons', () => {
|
describe('Select Custom Icons', () => {
|
||||||
it('should support customized icons', () => {
|
it('should support customized icons', () => {
|
||||||
const wrapper = mount({
|
const wrapper = mount({
|
||||||
|
|
|
@ -343,6 +343,14 @@ export default defineComponent({
|
||||||
if (mergedOpen.value !== nextOpen && !props.disabled) {
|
if (mergedOpen.value !== nextOpen && !props.disabled) {
|
||||||
setInnerOpen(nextOpen);
|
setInnerOpen(nextOpen);
|
||||||
props.onDropdownVisibleChange && props.onDropdownVisibleChange(nextOpen);
|
props.onDropdownVisibleChange && props.onDropdownVisibleChange(nextOpen);
|
||||||
|
|
||||||
|
if (!nextOpen && popupFocused.value) {
|
||||||
|
popupFocused.value = false;
|
||||||
|
setMockFocused(false, () => {
|
||||||
|
focusRef.value = false;
|
||||||
|
blurRef.value = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue