File tree Expand file tree Collapse file tree 3 files changed +70
-6
lines changed Expand file tree Collapse file tree 3 files changed +70
-6
lines changed Original file line number Diff line number Diff line change @@ -7,7 +7,7 @@ import 'rc-select/assets/index.less';
77
88class App extends React . Component {
99 state = {
10- pageSize : 10 ,
10+ pageSize : 15 ,
1111 } ;
1212
1313 onShowSizeChange = ( current , pageSize ) => {
@@ -16,34 +16,35 @@ class App extends React.Component {
1616 } ;
1717
1818 render ( ) {
19+ const { pageSize } = this . state ;
1920 return (
2021 < div style = { { margin : 10 } } >
2122 < Pagination
2223 selectComponentClass = { Select }
2324 showSizeChanger
24- pageSize = { this . state . pageSize }
25+ pageSize = { pageSize }
2526 onShowSizeChange = { this . onShowSizeChange }
2627 defaultCurrent = { 3 }
2728 total = { 40 }
2829 />
2930 < Pagination
3031 selectComponentClass = { Select }
31- pageSize = { this . state . pageSize }
32+ pageSize = { pageSize }
3233 onShowSizeChange = { this . onShowSizeChange }
3334 defaultCurrent = { 3 }
3435 total = { 50 }
3536 />
3637 < Pagination
3738 selectComponentClass = { Select }
38- pageSize = { this . state . pageSize }
39+ pageSize = { pageSize }
3940 onShowSizeChange = { this . onShowSizeChange }
4041 defaultCurrent = { 3 }
4142 total = { 60 }
4243 />
4344 < Pagination
4445 selectComponentClass = { Select }
4546 showSizeChanger = { false }
46- pageSize = { this . state . pageSize }
47+ pageSize = { pageSize }
4748 onShowSizeChange = { this . onShowSizeChange }
4849 defaultCurrent = { 3 }
4950 total = { 60 }
Original file line number Diff line number Diff line change @@ -57,10 +57,26 @@ class Options extends React.Component {
5757 }
5858 } ;
5959
60- render ( ) {
60+ getPageSizeOptions ( ) {
6161 const {
6262 pageSize,
6363 pageSizeOptions,
64+ } = this . props ;
65+ if ( pageSizeOptions . some ( option => option . toString ( ) === pageSize . toString ( ) ) ) {
66+ return pageSizeOptions ;
67+ }
68+ return pageSizeOptions . concat ( [ pageSize . toString ( ) ] ) . sort ( ( a , b ) => {
69+ // eslint-disable-next-line no-restricted-globals
70+ const numberA = isNaN ( Number ( a ) ) ? 0 : Number ( a ) ;
71+ // eslint-disable-next-line no-restricted-globals
72+ const numberB = isNaN ( Number ( b ) ) ? 0 : Number ( b ) ;
73+ return numberA - numberB ;
74+ } ) ;
75+ }
76+
77+ render ( ) {
78+ const {
79+ pageSize,
6480 locale,
6581 rootPrefixCls,
6682 changeSize,
@@ -82,6 +98,8 @@ class Options extends React.Component {
8298 return null ;
8399 }
84100
101+ const pageSizeOptions = this . getPageSizeOptions ( ) ;
102+
85103 if ( changeSize && Select ) {
86104 const options = pageSizeOptions . map ( ( opt , i ) => (
87105 < Select . Option key = { i } value = { opt } >
Original file line number Diff line number Diff line change 1+ import React from 'react' ;
2+ import { mount } from 'enzyme' ;
3+ import Select from 'rc-select' ;
4+ import Pagination from '../src' ;
5+
6+ describe ( 'Pagination with sizer' , ( ) => {
7+ it ( 'should merge custom pageSize to pageSizeOptions' , ( ) => {
8+ const wrapper = mount (
9+ < Pagination
10+ total = { 500 }
11+ pageSize = { 15 }
12+ showSizeChanger
13+ selectComponentClass = { Select }
14+ /> ,
15+ ) ;
16+ wrapper . find ( Select ) . find ( 'input' ) . simulate ( 'mousedown' ) ;
17+ expect ( wrapper . find ( Select ) . find ( '.rc-select-item' ) . length ) . toBe ( 5 ) ;
18+ } ) ;
19+
20+ it ( 'should not merge duplicated pageSize to pageSizeOptions' , ( ) => {
21+ const wrapper = mount (
22+ < Pagination
23+ total = { 500 }
24+ pageSize = { 20 }
25+ showSizeChanger
26+ selectComponentClass = { Select }
27+ /> ,
28+ ) ;
29+ wrapper . find ( Select ) . find ( 'input' ) . simulate ( 'mousedown' ) ;
30+ expect ( wrapper . find ( Select ) . find ( '.rc-select-item' ) . length ) . toBe ( 4 ) ;
31+ } ) ;
32+
33+ it ( 'should merge pageSize to pageSizeOptions with proper order' , ( ) => {
34+ const wrapper = mount (
35+ < Pagination
36+ total = { 500 }
37+ pageSize = { 45 }
38+ showSizeChanger
39+ selectComponentClass = { Select }
40+ /> ,
41+ ) ;
42+ wrapper . find ( Select ) . find ( 'input' ) . simulate ( 'mousedown' ) ;
43+ expect ( wrapper . find ( Select ) . find ( '.rc-select-item' ) . at ( 2 ) . text ( ) ) . toBe ( '45 条/页✓' ) ;
44+ } ) ;
45+ } ) ;
You can’t perform that action at this time.
0 commit comments