diff --git a/package.json b/package.json index dcca9d42..4a35f4ab 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "rc-motion": "^2.0.1", "rc-overflow": "^1.0.0", "rc-util": "^5.16.1", - "rc-virtual-list": "^3.4.13" + "rc-virtual-list": "^3.5.2" }, "devDependencies": { "@testing-library/jest-dom": "^5.16.5", diff --git a/src/OptionList.tsx b/src/OptionList.tsx index 7208a88f..dd4f034d 100644 --- a/src/OptionList.tsx +++ b/src/OptionList.tsx @@ -53,6 +53,7 @@ const OptionList: React.ForwardRefRenderFunction = (_, r rawValues, fieldNames, virtual, + direction, listHeight, listItemHeight, } = React.useContext(SelectContext); @@ -297,6 +298,7 @@ const OptionList: React.ForwardRefRenderFunction = (_, r onMouseDown={onListMouseDown} onScroll={onPopupScroll} virtual={virtual} + direction={direction} innerProps={virtual ? null : a11yProps} > {(item, itemIndex) => { diff --git a/src/Select.tsx b/src/Select.tsx index 51e36359..7baf410c 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -139,6 +139,7 @@ export interface SelectProps>> Values displayValues={displayValues} onDisplayValuesChange={onDisplayValuesChange} + // >>> Trigger + direction={direction} // >>> Search searchValue={mergedSearchValue} onSearch={onInternalSearch} diff --git a/src/SelectContext.ts b/src/SelectContext.ts index ed9ffea2..d6cf9372 100644 --- a/src/SelectContext.ts +++ b/src/SelectContext.ts @@ -14,6 +14,7 @@ export interface SelectContextProps { rawValues: Set; fieldNames?: FieldNames; virtual?: boolean; + direction?: "ltr" | "rtl"; listHeight?: number; listItemHeight?: number; childrenAsData?: boolean; diff --git a/tests/Select.test.tsx b/tests/Select.test.tsx index 8dd12c3f..a88e5345 100644 --- a/tests/Select.test.tsx +++ b/tests/Select.test.tsx @@ -1925,31 +1925,21 @@ describe('Select.Basic', () => { }); it('should support title', () => { - const wrapper1 = mount( - ); expect(wrapper1.find('.rc-select').prop('title')).toBe(undefined); expect(wrapper1.find('.rc-select-selection-item').prop('title')).toBe('lucy'); - const wrapper2 = mount( - ); expect(wrapper2.find('.rc-select').prop('title')).toBe(''); expect(wrapper2.find('.rc-select-selection-item').prop('title')).toBe(''); - const wrapper3 = mount( - ); expect(wrapper3.find('.rc-select').prop('title')).toBe('title'); expect(wrapper3.find('.rc-select-selection-item').prop('title')).toBe('title'); }); + + it('scrollbar should be left position with rtl direction', () => { + const options = new Array(10).fill(null).map((_, value) => ({ value })); + + const { container } = testingRender(