Skip to content

Commit da8303b

Browse files
committed
fix showSizeChanger
1 parent 68aa2fe commit da8303b

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

docs/examples/showSizeChanger.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import Select from 'rc-select';
44
import '../../assets/index.less';
55

66
export default () => {
7-
const pageSizeOnChange = (size) => {
8-
console.log({ size });
7+
const pageSizeOnChange = (value) => {
8+
console.log(value);
99
};
1010

1111
return (
@@ -27,7 +27,12 @@ export default () => {
2727
total={50}
2828
selectComponentClass={Select}
2929
showSizeChanger={{
30-
options: [10, 25, 50, 75, 100],
30+
options: [
31+
{ value: '10', label: '10 条每页' },
32+
{ value: '25', label: '25 条每页' },
33+
{ value: '100', label: '100 条每页' },
34+
],
35+
className: 'my-select',
3136
showSearch: true,
3237
onChange: pageSizeOnChange,
3338
}}

src/Options.tsx

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { SelectProps } from 'rc-select';
22
import type { OptionProps } from 'rc-select/es/Option';
33
import KEYCODE from 'rc-util/lib/KeyCode';
4+
import classNames from 'classnames';
45
import React from 'react';
56
import type { PaginationLocale, PaginationProps } from './interface';
67

@@ -111,35 +112,48 @@ const Options: React.FC<OptionsProps> = (props) => {
111112

112113
// ============== render ==============
113114

114-
if (!changeSize && !quickGo) {
115+
if (!showSizeChanger && !quickGo) {
115116
return null;
116117
}
117118

118119
let changeSelect: React.ReactNode = null;
119120
let goInput: React.ReactNode = null;
120121
let gotoButton: React.ReactNode = null;
121122

122-
if (changeSize && Select) {
123-
const options = getPageSizeOptions().map((opt, i) => (
124-
<Select.Option key={i} value={opt.toString()}>
125-
{mergeBuildOptionText(opt)}
126-
</Select.Option>
127-
));
123+
if (showSizeChanger && Select) {
124+
// use showSizeChanger.options if existed, otherwise use pageSizeOptions
125+
const showSizeChangerOptions =
126+
typeof showSizeChanger === 'object' ? showSizeChanger.options : undefined;
127+
const showSizeChangerClassName =
128+
typeof showSizeChanger === 'object'
129+
? showSizeChanger.className
130+
: undefined;
131+
const options = showSizeChangerOptions
132+
? undefined
133+
: getPageSizeOptions().map((opt, i) => (
134+
<Select.Option key={i} value={opt.toString()}>
135+
{mergeBuildOptionText(opt)}
136+
</Select.Option>
137+
));
128138

129139
changeSelect = (
130140
<Select
131141
disabled={disabled}
132142
prefixCls={selectPrefixCls}
133143
showSearch={false}
134-
className={`${prefixCls}-size-changer`}
135-
optionLabelProp="children"
144+
optionLabelProp={showSizeChangerOptions ? 'label' : 'children'}
136145
popupMatchSelectWidth={false}
137146
value={(pageSize || pageSizeOptions[0]).toString()}
138147
onChange={changeSizeHandle}
139148
getPopupContainer={(triggerNode) => triggerNode.parentNode}
140149
aria-label={locale.page_size}
141150
defaultOpen={false}
142-
{...showSizeChanger}
151+
{...(typeof showSizeChanger === 'object' ? showSizeChanger : null)}
152+
className={classNames(
153+
`${prefixCls}-size-changer`,
154+
showSizeChangerClassName,
155+
)}
156+
options={showSizeChangerOptions}
143157
>
144158
{options}
145159
</Select>

0 commit comments

Comments
 (0)