@@ -26,7 +26,7 @@ import {Pagination, PaginationProps} from '@gravity-ui/uikit';
26
26
const [state , setState ] = React .useState ({page: 1 , pageSize: 100 });
27
27
28
28
const handleUpdate: PaginationProps ['onUpdate '] = (page , pageSize ) =>
29
- setState (( prevState ) => ({ ... prevState, page, pageSize}) );
29
+ setState ({ page, pageSize});
30
30
31
31
const pagination = < Pagination page= {1 } pageSize= {100 } total= {1000 } onUpdate= {handleUpdate} / > ;
32
32
```
@@ -35,7 +35,7 @@ const pagination = <Pagination page={1} pageSize={100} total={1000} onUpdate={ha
35
35
36
36
In this case user will iteract with pagination's buttons as with custom controls.
37
37
38
- Set ` itemWrapper ` prop to use pagination as custom contrlols . In this case ` onUpdate ` will fire only on input and select components.
38
+ Set ` itemWrapper ` prop to use pagination as custom controls . In this case ` onUpdate ` will fire only on input and select components.
39
39
40
40
> For example, you can wrap it in ` <a/> ` tag and use them as links. Pages will be available to open (from context menu for example) in new tab, new window, etc.
41
41
@@ -54,14 +54,16 @@ function pageHrefBuilder(page: number, pageSize: number) {
54
54
return window .location .href .replace (window .location .search , ` ?${ queryParams .toString ()} ` );
55
55
}
56
56
57
- const [state , setState ] = React .useState ({page: 1 , pageSize: 100 });
57
+ const queryParams = new URLSearchParams (window .location .search );
58
+ const page = Number (queryParams .get (PAGE_PARAM ));
59
+ const pageSize = Number (queryParams .get (PAGE_SIZE_PARAM ));
58
60
59
- const renderWrapper = ({page, pageSize, button }) => {
60
- return button .props .disabled ? (
61
- button
61
+ const renderWrapper = ({page, pageSize, item }) => {
62
+ return item .props .disabled ? (
63
+ item
62
64
) : (
63
- < a href= {pageHrefBuilder (page, pageSize)} key= {button .key }>
64
- {button }
65
+ < a href= {pageHrefBuilder (page, pageSize)} key= {item .key }>
66
+ {item }
65
67
< / a>
66
68
);
67
69
},
@@ -71,11 +73,11 @@ const handleUpdate = (page, pageSize)=>{
71
73
}
72
74
73
75
const pagination = < Pagination
74
- page= {1 }
75
- pageSize= {100 }
76
+ page= {page || 1 }
77
+ pageSize= {pageSize || 100 }
76
78
total= {1000 }
77
79
itemWrapper= {renderWrapper}
78
- onUpdate= {( page , pageSize ) => setState ({page, pageSize}) }
80
+ onUpdate= {handleUpdate }
79
81
> ;
80
82
```
81
83
@@ -95,29 +97,32 @@ function pageHrefBuilder(page: number, pageSize: number) {
95
97
return window .location .href .replace (window .location .search , ` ?${ queryParams .toString ()} ` );
96
98
}
97
99
98
- const [state , setState ] = React .useState ({page: 1 , pageSize: 100 });
99
100
const navigate = useNavigate ();
100
101
101
- const renderWrapper = ({page, pageSize, button}) => {
102
- return button .props .disabled ? (
103
- button
102
+ const queryParams = new URLSearchParams (window .location .search );
103
+ const page = Number (queryParams .get (PAGE_PARAM ));
104
+ const pageSize = Number (queryParams .get (PAGE_SIZE_PARAM ));
105
+
106
+ const renderWrapper = ({page, pageSize, item}) => {
107
+ return item .props .disabled ? (
108
+ item
104
109
) : (
105
- < Link to= {pageHrefBuilder (page, pageSize)} key= {button .key }>
106
- {button }
110
+ < Link to= {pageHrefBuilder (page, pageSize)} key= {item .key }>
111
+ {item }
107
112
< / a>
108
113
);
109
114
},
110
115
111
- const handleUpdate = (page , pageSize )=> {
116
+ const handleUpdate = (page , pageSize ) => {
112
117
navigate (pageHrefBuilder (page, pageSize));
113
118
}
114
119
115
120
const pagination = < Pagination
116
- page= {1 }
117
- pageSize= {100 }
121
+ page= {page || 1 }
122
+ pageSize= {pageSize || 100 }
118
123
total= {1000 }
119
124
itemWrapper= {renderWrapper}
120
- onUpdate= {( page , pageSize ) => setState ({page, pageSize}) }
125
+ onUpdate= {handleUpdate }
121
126
> ;
122
127
```
123
128
0 commit comments