Skip to content

Commit f71f4c5

Browse files
committed
fix: display logic
1 parent ef34813 commit f71f4c5

File tree

7 files changed

+31
-21
lines changed

7 files changed

+31
-21
lines changed

src/BaseSelect/index.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -504,12 +504,9 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
504504
// ============================ Disabled ============================
505505
// Close dropdown & remove focus state when disabled change
506506
React.useEffect(() => {
507-
// if (mergedOpen && disabled) {
508-
// triggerOpen(false);
509-
// }
510-
511507
// After onBlur is triggered, the focused does not need to be reset
512508
if (disabled) {
509+
triggerOpen(false);
513510
setFocused(false);
514511
}
515512
}, [disabled, mergedOpen]);

src/SelectInput/Content/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export interface SharedContentProps {
1010
}
1111

1212
const SelectContent = React.forwardRef<HTMLInputElement>(function SelectContent(_, ref) {
13-
const { multiple, onInputKeyDown } = useSelectInputContext();
13+
const { multiple, onInputKeyDown, tabIndex } = useSelectInputContext();
1414
const baseProps = useBaseProps();
1515
const { showSearch } = baseProps;
1616

@@ -20,6 +20,7 @@ const SelectContent = React.forwardRef<HTMLInputElement>(function SelectContent(
2020
...ariaProps,
2121
onKeyDown: onInputKeyDown,
2222
readOnly: !showSearch,
23+
tabIndex,
2324
};
2425

2526
if (multiple) {

src/SelectInput/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const DEFAULT_OMIT_PROPS = [
5454
'tabIndex',
5555
'activeValue',
5656
'onSelectorRemove',
57+
'focused',
5758
] as const;
5859

5960
export default React.forwardRef<SelectInputRef, SelectInputProps>(function SelectInput(

src/hooks/useOpen.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ export default function useOpen(
3636

3737
const nextOpenVal = typeof nextOpen === 'boolean' ? nextOpen : !mergedOpen;
3838

39-
if (nextOpenVal === mergedOpen) {
40-
return;
41-
}
42-
39+
// Since `mergedOpen` is post-processed, we need to check if the value really changed
4340
if (nextOpenVal) {
4441
triggerEvent(true);
4542
return;

tests/Select.test.tsx

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -672,8 +672,8 @@ describe('Select.Basic', () => {
672672

673673
const focusSpy = jest.spyOn(container.querySelector('input'), 'focus');
674674

675-
fireEvent.mouseDown(container.querySelector('.rc-select-selector'));
676-
fireEvent.click(container.querySelector('.rc-select-selector'));
675+
fireEvent.mouseDown(container.querySelector('.rc-select'));
676+
fireEvent.click(container.querySelector('.rc-select'));
677677
expect(focusSpy).toHaveBeenCalled();
678678

679679
// We should mock trigger focus event since it not work in jsdom
@@ -1371,7 +1371,7 @@ describe('Select.Basic', () => {
13711371
);
13721372

13731373
// Open
1374-
fireEvent.mouseDown(container.querySelector('.rc-select-selector'));
1374+
fireEvent.mouseDown(container.querySelector('.rc-select'));
13751375

13761376
fireEvent.mouseDown(container.querySelector('div#dropdown-custom-node'));
13771377
fireEvent.click(container.querySelector('div#dropdown-custom-node'));
@@ -1864,6 +1864,8 @@ describe('Select.Basic', () => {
18641864
});
18651865

18661866
it('should not open dropdown after remove disabled', () => {
1867+
jest.useFakeTimers();
1868+
18671869
const renderDemo = (disabled?: boolean) => (
18681870
<Select disabled={disabled}>
18691871
<Option value="1">1</Option>
@@ -1873,9 +1875,25 @@ describe('Select.Basic', () => {
18731875

18741876
const { container, rerender } = render(renderDemo());
18751877
toggleOpen(container);
1878+
act(() => {
1879+
jest.runAllTimers();
1880+
});
1881+
console.log('~~~~1');
18761882
rerender(renderDemo(true));
1883+
act(() => {
1884+
jest.runAllTimers();
1885+
});
1886+
1887+
console.log('~~~~2');
18771888
rerender(renderDemo(false));
1889+
1890+
act(() => {
1891+
jest.runAllTimers();
1892+
});
1893+
18781894
expectOpen(container, false);
1895+
1896+
jest.useRealTimers();
18791897
});
18801898
});
18811899

@@ -2113,9 +2131,7 @@ describe('Select.Basic', () => {
21132131
const { container } = render(<Select tabIndex={0} />);
21142132
expect(container.querySelector('.rc-select').getAttribute('tabindex')).toBeFalsy();
21152133

2116-
expect(
2117-
container.querySelector('input.rc-select-selection-search-input').getAttribute('tabindex'),
2118-
).toBe('0');
2134+
expect(container.querySelector('input').getAttribute('tabindex')).toBe('0');
21192135
});
21202136

21212137
describe('placement', () => {
@@ -2179,7 +2195,7 @@ describe('Select.Basic', () => {
21792195
it('should support onClick', () => {
21802196
const onClick = jest.fn();
21812197
const { container } = render(<Select onClick={onClick} />);
2182-
fireEvent.click(container.querySelector('.rc-select-selector'));
2198+
fireEvent.click(container.querySelector('.rc-select'));
21832199
expect(onClick).toHaveBeenCalled();
21842200
});
21852201

tests/focus.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ describe('Select.Focus', () => {
7878

7979
const focusFn = jest.spyOn(container.querySelector('input'), 'focus');
8080

81-
fireEvent.click(container.querySelector('.rc-select-selector'));
81+
fireEvent.click(container.querySelector('.rc-select'));
8282
jest.runAllTimers();
8383

8484
expect(focusFn).toHaveBeenCalled();

tests/shared/blurTest.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,9 @@ export default function blurTest(mode: any) {
6262
handleBlur.mockReset();
6363

6464
const preventDefault = jest.fn();
65-
const mouseDownEvent = createEvent.mouseDown(
66-
wrapper.container.querySelector('.rc-select-selector'),
67-
);
65+
const mouseDownEvent = createEvent.mouseDown(wrapper.container.querySelector('.rc-select'));
6866
mouseDownEvent.preventDefault = preventDefault;
69-
fireEvent(wrapper.container.querySelector('.rc-select-selector'), mouseDownEvent);
67+
fireEvent(wrapper.container.querySelector('.rc-select'), mouseDownEvent);
7068
expect(preventDefault).toHaveBeenCalled();
7169
expect(handleBlur).not.toHaveBeenCalled();
7270

0 commit comments

Comments
 (0)