@commercetools-uikit/pagination 15.14.3 → 15.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commercetools-uikit-pagination.cjs.d.ts +1 -0
- package/dist/commercetools-uikit-pagination.cjs.d.ts.map +1 -0
- package/dist/commercetools-uikit-pagination.cjs.dev.js +46 -48
- package/dist/commercetools-uikit-pagination.cjs.prod.js +45 -47
- package/dist/commercetools-uikit-pagination.esm.js +46 -48
- package/package.json +11 -11
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commercetools-uikit-pagination.cjs.d.ts","sourceRoot":"","sources":["./declarations/src/index.d.ts"],"names":[],"mappings":"AAAA"}
|
|
@@ -58,12 +58,12 @@ var NumberInput__default = /*#__PURE__*/_interopDefault(NumberInput);
|
|
|
58
58
|
var SecondaryIconButton__default = /*#__PURE__*/_interopDefault(SecondaryIconButton);
|
|
59
59
|
var Text__default = /*#__PURE__*/_interopDefault(Text);
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
const isValid = (page, totalPages) => {
|
|
62
62
|
if (page > totalPages) return false;
|
|
63
63
|
if (page <= 0) return false;
|
|
64
64
|
return true;
|
|
65
65
|
};
|
|
66
|
-
|
|
66
|
+
const normalizePageValue = (value, totalPages) => {
|
|
67
67
|
if (value < 1) {
|
|
68
68
|
return 1;
|
|
69
69
|
}
|
|
@@ -102,18 +102,18 @@ function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys__default["d
|
|
|
102
102
|
|
|
103
103
|
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$1(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$1(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
const PageNavigator = props => {
|
|
106
|
+
const intl = reactIntl.useIntl();
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
108
|
+
const _useTheme = designSystem.useTheme(),
|
|
109
|
+
themedValue = _useTheme.themedValue;
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
const _useState = react.useState(uniqueId__default["default"]('page-number-')),
|
|
112
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
113
|
+
pageNumberInputId = _useState2[0];
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
const TotalPagesCountComponent = themedValue(Text__default["default"].Body, Label__default["default"]);
|
|
116
|
+
const paginationForm = formik.useFormik({
|
|
117
117
|
initialValues: {
|
|
118
118
|
page: props.page
|
|
119
119
|
},
|
|
@@ -121,13 +121,13 @@ var PageNavigator = function PageNavigator(props) {
|
|
|
121
121
|
validateOnBlur: true,
|
|
122
122
|
validateOnChange: true,
|
|
123
123
|
validateOnMount: true,
|
|
124
|
-
onSubmit:
|
|
124
|
+
onSubmit: (values
|
|
125
125
|
/**, helpers */
|
|
126
|
-
) {
|
|
127
|
-
|
|
126
|
+
) => {
|
|
127
|
+
const nextNormalizedValue = Number(normalizePageValue(values.page, props.totalPages));
|
|
128
128
|
props.onPageChange(nextNormalizedValue);
|
|
129
129
|
},
|
|
130
|
-
validate:
|
|
130
|
+
validate: values => {
|
|
131
131
|
if (!isValid(values.page, props.totalPages)) {
|
|
132
132
|
return {
|
|
133
133
|
page: true
|
|
@@ -137,21 +137,21 @@ var PageNavigator = function PageNavigator(props) {
|
|
|
137
137
|
return {};
|
|
138
138
|
}
|
|
139
139
|
});
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
140
|
+
const page = props.page,
|
|
141
|
+
totalPages = props.totalPages;
|
|
142
|
+
const isDisabled = totalPages === 0;
|
|
143
|
+
const isPreviousDisabled = page <= 1;
|
|
144
|
+
const isNextDisabled = page >= totalPages;
|
|
145
|
+
const handlePrevPageChange = react.useCallback(() => {
|
|
146
|
+
const previousPage = _valuesInstanceProperty__default["default"](paginationForm).page - 1;
|
|
147
147
|
|
|
148
148
|
if (previousPage >= 1) {
|
|
149
149
|
paginationForm.setFieldValue('page', previousPage, true);
|
|
150
150
|
paginationForm.submitForm();
|
|
151
151
|
}
|
|
152
152
|
}, [paginationForm]);
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
const handleNextPageChange = react.useCallback(() => {
|
|
154
|
+
const nextPage = _valuesInstanceProperty__default["default"](paginationForm).page + 1;
|
|
155
155
|
|
|
156
156
|
if (nextPage <= totalPages) {
|
|
157
157
|
paginationForm.setFieldValue('page', nextPage, true);
|
|
@@ -208,7 +208,7 @@ PageNavigator.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
208
208
|
PageNavigator.displayName = 'PageNavigator';
|
|
209
209
|
var PageNavigator$1 = PageNavigator;
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
const messages = reactIntl.defineMessages({
|
|
212
212
|
pageSize: {
|
|
213
213
|
id: 'UIKit.Pagination.PageSizeSelector.pageSize',
|
|
214
214
|
description: 'How many items are per page',
|
|
@@ -221,7 +221,7 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["def
|
|
|
221
221
|
|
|
222
222
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
|
|
223
223
|
|
|
224
|
-
|
|
224
|
+
const mapRangeToListOfOptions = perPageRange => {
|
|
225
225
|
switch (perPageRange) {
|
|
226
226
|
case 's':
|
|
227
227
|
return [20, 50];
|
|
@@ -237,23 +237,23 @@ var mapRangeToListOfOptions = function mapRangeToListOfOptions(perPageRange) {
|
|
|
237
237
|
}
|
|
238
238
|
};
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
const PageSizeSelector = props => {
|
|
241
241
|
var _context;
|
|
242
242
|
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
const _useTheme = designSystem.useTheme(),
|
|
244
|
+
themedValue = _useTheme.themedValue;
|
|
245
245
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
const _useState = react.useState(uniqueId__default["default"]('per-page-selector-')),
|
|
247
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
248
|
+
perPageSelectorId = _useState2[0];
|
|
249
249
|
|
|
250
|
-
|
|
250
|
+
const options = mapRangeToListOfOptions(props.perPageRange);
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
const hasValidPerPageOption = _includesInstanceProperty__default["default"](options).call(options, props.perPage);
|
|
253
253
|
|
|
254
254
|
process.env.NODE_ENV !== "production" ? utils.warning(hasValidPerPageOption, _concatInstanceProperty__default["default"](_context = "@commercetools-uikit/pagination: invalid page size ".concat(props.perPage, ". It must be one of the values of the selected range in \"")).call(_context, options.toString(), "\".")) : void 0;
|
|
255
|
-
|
|
256
|
-
|
|
255
|
+
const onPerPageChange = props.onPerPageChange;
|
|
256
|
+
const handleSelectPerPage = react.useCallback(event => {
|
|
257
257
|
onPerPageChange(Number(event.target.value));
|
|
258
258
|
}, [onPerPageChange]);
|
|
259
259
|
return jsxRuntime.jsxs(Spacings__default["default"].Inline, {
|
|
@@ -264,12 +264,10 @@ var PageSizeSelector = function PageSizeSelector(props) {
|
|
|
264
264
|
id: perPageSelectorId,
|
|
265
265
|
name: "per-page-selector",
|
|
266
266
|
value: props.perPage.toString(),
|
|
267
|
-
options: _mapInstanceProperty__default["default"](options).call(options,
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
};
|
|
272
|
-
}),
|
|
267
|
+
options: _mapInstanceProperty__default["default"](options).call(options, option => ({
|
|
268
|
+
value: option.toString(),
|
|
269
|
+
label: option.toString()
|
|
270
|
+
})),
|
|
273
271
|
onChange: handleSelectPerPage
|
|
274
272
|
})
|
|
275
273
|
}), jsxRuntime.jsx(Label__default["default"], {
|
|
@@ -290,7 +288,7 @@ PageSizeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
290
288
|
pageItems: _pt__default["default"].number.isRequired
|
|
291
289
|
} : {};
|
|
292
290
|
PageSizeSelector.displayName = 'PageSizeSelector';
|
|
293
|
-
|
|
291
|
+
const defaultProps$1 = {
|
|
294
292
|
perPage: 20,
|
|
295
293
|
perPageRange: 's'
|
|
296
294
|
};
|
|
@@ -309,9 +307,9 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
309
307
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
310
308
|
};
|
|
311
309
|
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
310
|
+
const Pagination = props => {
|
|
311
|
+
const totalPages = Math.ceil(props.totalItems / props.perPage);
|
|
312
|
+
const pageItems = props.page === totalPages ? props.totalItems - props.perPage * (props.page - 1) : props.perPage;
|
|
315
313
|
return jsxRuntime.jsxs(Spacings__default["default"].Inline, {
|
|
316
314
|
justifyContent: "space-between",
|
|
317
315
|
children: [jsxRuntime.jsx("div", {
|
|
@@ -331,7 +329,7 @@ var Pagination = function Pagination(props) {
|
|
|
331
329
|
};
|
|
332
330
|
|
|
333
331
|
Pagination.displayName = 'Pagination';
|
|
334
|
-
|
|
332
|
+
const defaultProps = {
|
|
335
333
|
perPage: 20,
|
|
336
334
|
perPageRange: 's'
|
|
337
335
|
};
|
|
@@ -339,7 +337,7 @@ Pagination.defaultProps = defaultProps;
|
|
|
339
337
|
var Pagination$1 = Pagination;
|
|
340
338
|
|
|
341
339
|
// NOTE: This string will be replaced on build time with the package version.
|
|
342
|
-
var version = "15.
|
|
340
|
+
var version = "15.15.1";
|
|
343
341
|
|
|
344
342
|
exports.PageNavigator = PageNavigator$1;
|
|
345
343
|
exports.PageSizeSelector = PageSizeSelector$1;
|
|
@@ -56,12 +56,12 @@ var NumberInput__default = /*#__PURE__*/_interopDefault(NumberInput);
|
|
|
56
56
|
var SecondaryIconButton__default = /*#__PURE__*/_interopDefault(SecondaryIconButton);
|
|
57
57
|
var Text__default = /*#__PURE__*/_interopDefault(Text);
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
const isValid = (page, totalPages) => {
|
|
60
60
|
if (page > totalPages) return false;
|
|
61
61
|
if (page <= 0) return false;
|
|
62
62
|
return true;
|
|
63
63
|
};
|
|
64
|
-
|
|
64
|
+
const normalizePageValue = (value, totalPages) => {
|
|
65
65
|
if (value < 1) {
|
|
66
66
|
return 1;
|
|
67
67
|
}
|
|
@@ -100,18 +100,18 @@ function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys__default["d
|
|
|
100
100
|
|
|
101
101
|
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$1(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$1(Object(source))).call(_context2, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
|
|
102
102
|
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
const PageNavigator = props => {
|
|
104
|
+
const intl = reactIntl.useIntl();
|
|
105
105
|
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
const _useTheme = designSystem.useTheme(),
|
|
107
|
+
themedValue = _useTheme.themedValue;
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
const _useState = react.useState(uniqueId__default["default"]('page-number-')),
|
|
110
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
111
|
+
pageNumberInputId = _useState2[0];
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
const TotalPagesCountComponent = themedValue(Text__default["default"].Body, Label__default["default"]);
|
|
114
|
+
const paginationForm = formik.useFormik({
|
|
115
115
|
initialValues: {
|
|
116
116
|
page: props.page
|
|
117
117
|
},
|
|
@@ -119,13 +119,13 @@ var PageNavigator = function PageNavigator(props) {
|
|
|
119
119
|
validateOnBlur: true,
|
|
120
120
|
validateOnChange: true,
|
|
121
121
|
validateOnMount: true,
|
|
122
|
-
onSubmit:
|
|
122
|
+
onSubmit: (values
|
|
123
123
|
/**, helpers */
|
|
124
|
-
) {
|
|
125
|
-
|
|
124
|
+
) => {
|
|
125
|
+
const nextNormalizedValue = Number(normalizePageValue(values.page, props.totalPages));
|
|
126
126
|
props.onPageChange(nextNormalizedValue);
|
|
127
127
|
},
|
|
128
|
-
validate:
|
|
128
|
+
validate: values => {
|
|
129
129
|
if (!isValid(values.page, props.totalPages)) {
|
|
130
130
|
return {
|
|
131
131
|
page: true
|
|
@@ -135,21 +135,21 @@ var PageNavigator = function PageNavigator(props) {
|
|
|
135
135
|
return {};
|
|
136
136
|
}
|
|
137
137
|
});
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
138
|
+
const page = props.page,
|
|
139
|
+
totalPages = props.totalPages;
|
|
140
|
+
const isDisabled = totalPages === 0;
|
|
141
|
+
const isPreviousDisabled = page <= 1;
|
|
142
|
+
const isNextDisabled = page >= totalPages;
|
|
143
|
+
const handlePrevPageChange = react.useCallback(() => {
|
|
144
|
+
const previousPage = _valuesInstanceProperty__default["default"](paginationForm).page - 1;
|
|
145
145
|
|
|
146
146
|
if (previousPage >= 1) {
|
|
147
147
|
paginationForm.setFieldValue('page', previousPage, true);
|
|
148
148
|
paginationForm.submitForm();
|
|
149
149
|
}
|
|
150
150
|
}, [paginationForm]);
|
|
151
|
-
|
|
152
|
-
|
|
151
|
+
const handleNextPageChange = react.useCallback(() => {
|
|
152
|
+
const nextPage = _valuesInstanceProperty__default["default"](paginationForm).page + 1;
|
|
153
153
|
|
|
154
154
|
if (nextPage <= totalPages) {
|
|
155
155
|
paginationForm.setFieldValue('page', nextPage, true);
|
|
@@ -202,7 +202,7 @@ PageNavigator.propTypes = {};
|
|
|
202
202
|
PageNavigator.displayName = 'PageNavigator';
|
|
203
203
|
var PageNavigator$1 = PageNavigator;
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
const messages = reactIntl.defineMessages({
|
|
206
206
|
pageSize: {
|
|
207
207
|
id: 'UIKit.Pagination.PageSizeSelector.pageSize',
|
|
208
208
|
description: 'How many items are per page',
|
|
@@ -215,7 +215,7 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["def
|
|
|
215
215
|
|
|
216
216
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
|
|
217
217
|
|
|
218
|
-
|
|
218
|
+
const mapRangeToListOfOptions = perPageRange => {
|
|
219
219
|
switch (perPageRange) {
|
|
220
220
|
case 's':
|
|
221
221
|
return [20, 50];
|
|
@@ -231,20 +231,20 @@ var mapRangeToListOfOptions = function mapRangeToListOfOptions(perPageRange) {
|
|
|
231
231
|
}
|
|
232
232
|
};
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
const PageSizeSelector = props => {
|
|
235
235
|
|
|
236
|
-
|
|
237
|
-
|
|
236
|
+
const _useTheme = designSystem.useTheme(),
|
|
237
|
+
themedValue = _useTheme.themedValue;
|
|
238
238
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
239
|
+
const _useState = react.useState(uniqueId__default["default"]('per-page-selector-')),
|
|
240
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
241
|
+
perPageSelectorId = _useState2[0];
|
|
242
242
|
|
|
243
|
-
|
|
243
|
+
const options = mapRangeToListOfOptions(props.perPageRange);
|
|
244
244
|
|
|
245
245
|
_includesInstanceProperty__default["default"](options).call(options, props.perPage);
|
|
246
|
-
|
|
247
|
-
|
|
246
|
+
const onPerPageChange = props.onPerPageChange;
|
|
247
|
+
const handleSelectPerPage = react.useCallback(event => {
|
|
248
248
|
onPerPageChange(Number(event.target.value));
|
|
249
249
|
}, [onPerPageChange]);
|
|
250
250
|
return jsxRuntime.jsxs(Spacings__default["default"].Inline, {
|
|
@@ -255,12 +255,10 @@ var PageSizeSelector = function PageSizeSelector(props) {
|
|
|
255
255
|
id: perPageSelectorId,
|
|
256
256
|
name: "per-page-selector",
|
|
257
257
|
value: props.perPage.toString(),
|
|
258
|
-
options: _mapInstanceProperty__default["default"](options).call(options,
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
};
|
|
263
|
-
}),
|
|
258
|
+
options: _mapInstanceProperty__default["default"](options).call(options, option => ({
|
|
259
|
+
value: option.toString(),
|
|
260
|
+
label: option.toString()
|
|
261
|
+
})),
|
|
264
262
|
onChange: handleSelectPerPage
|
|
265
263
|
})
|
|
266
264
|
}), jsxRuntime.jsx(Label__default["default"], {
|
|
@@ -276,7 +274,7 @@ var PageSizeSelector = function PageSizeSelector(props) {
|
|
|
276
274
|
|
|
277
275
|
PageSizeSelector.propTypes = {};
|
|
278
276
|
PageSizeSelector.displayName = 'PageSizeSelector';
|
|
279
|
-
|
|
277
|
+
const defaultProps$1 = {
|
|
280
278
|
perPage: 20,
|
|
281
279
|
perPageRange: 's'
|
|
282
280
|
};
|
|
@@ -288,9 +286,9 @@ var _ref = {
|
|
|
288
286
|
styles: "flex-grow:2"
|
|
289
287
|
} ;
|
|
290
288
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
289
|
+
const Pagination = props => {
|
|
290
|
+
const totalPages = Math.ceil(props.totalItems / props.perPage);
|
|
291
|
+
const pageItems = props.page === totalPages ? props.totalItems - props.perPage * (props.page - 1) : props.perPage;
|
|
294
292
|
return jsxRuntime.jsxs(Spacings__default["default"].Inline, {
|
|
295
293
|
justifyContent: "space-between",
|
|
296
294
|
children: [jsxRuntime.jsx("div", {
|
|
@@ -310,7 +308,7 @@ var Pagination = function Pagination(props) {
|
|
|
310
308
|
};
|
|
311
309
|
|
|
312
310
|
Pagination.displayName = 'Pagination';
|
|
313
|
-
|
|
311
|
+
const defaultProps = {
|
|
314
312
|
perPage: 20,
|
|
315
313
|
perPageRange: 's'
|
|
316
314
|
};
|
|
@@ -318,7 +316,7 @@ Pagination.defaultProps = defaultProps;
|
|
|
318
316
|
var Pagination$1 = Pagination;
|
|
319
317
|
|
|
320
318
|
// NOTE: This string will be replaced on build time with the package version.
|
|
321
|
-
var version = "15.
|
|
319
|
+
var version = "15.15.1";
|
|
322
320
|
|
|
323
321
|
exports.PageNavigator = PageNavigator$1;
|
|
324
322
|
exports.PageSizeSelector = PageSizeSelector$1;
|
|
@@ -30,12 +30,12 @@ import NumberInput from '@commercetools-uikit/number-input';
|
|
|
30
30
|
import SecondaryIconButton from '@commercetools-uikit/secondary-icon-button';
|
|
31
31
|
import Text from '@commercetools-uikit/text';
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
const isValid = (page, totalPages) => {
|
|
34
34
|
if (page > totalPages) return false;
|
|
35
35
|
if (page <= 0) return false;
|
|
36
36
|
return true;
|
|
37
37
|
};
|
|
38
|
-
|
|
38
|
+
const normalizePageValue = (value, totalPages) => {
|
|
39
39
|
if (value < 1) {
|
|
40
40
|
return 1;
|
|
41
41
|
}
|
|
@@ -74,18 +74,18 @@ function ownKeys$1(object, enumerableOnly) { var keys = _Object$keys(object); if
|
|
|
74
74
|
|
|
75
75
|
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys$1(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys$1(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
const PageNavigator = props => {
|
|
78
|
+
const intl = useIntl();
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
const _useTheme = useTheme(),
|
|
81
|
+
themedValue = _useTheme.themedValue;
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
const _useState = useState(uniqueId('page-number-')),
|
|
84
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
85
|
+
pageNumberInputId = _useState2[0];
|
|
86
86
|
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
const TotalPagesCountComponent = themedValue(Text.Body, Label);
|
|
88
|
+
const paginationForm = useFormik({
|
|
89
89
|
initialValues: {
|
|
90
90
|
page: props.page
|
|
91
91
|
},
|
|
@@ -93,13 +93,13 @@ var PageNavigator = function PageNavigator(props) {
|
|
|
93
93
|
validateOnBlur: true,
|
|
94
94
|
validateOnChange: true,
|
|
95
95
|
validateOnMount: true,
|
|
96
|
-
onSubmit:
|
|
96
|
+
onSubmit: (values
|
|
97
97
|
/**, helpers */
|
|
98
|
-
) {
|
|
99
|
-
|
|
98
|
+
) => {
|
|
99
|
+
const nextNormalizedValue = Number(normalizePageValue(values.page, props.totalPages));
|
|
100
100
|
props.onPageChange(nextNormalizedValue);
|
|
101
101
|
},
|
|
102
|
-
validate:
|
|
102
|
+
validate: values => {
|
|
103
103
|
if (!isValid(values.page, props.totalPages)) {
|
|
104
104
|
return {
|
|
105
105
|
page: true
|
|
@@ -109,21 +109,21 @@ var PageNavigator = function PageNavigator(props) {
|
|
|
109
109
|
return {};
|
|
110
110
|
}
|
|
111
111
|
});
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
112
|
+
const page = props.page,
|
|
113
|
+
totalPages = props.totalPages;
|
|
114
|
+
const isDisabled = totalPages === 0;
|
|
115
|
+
const isPreviousDisabled = page <= 1;
|
|
116
|
+
const isNextDisabled = page >= totalPages;
|
|
117
|
+
const handlePrevPageChange = useCallback(() => {
|
|
118
|
+
const previousPage = _valuesInstanceProperty(paginationForm).page - 1;
|
|
119
119
|
|
|
120
120
|
if (previousPage >= 1) {
|
|
121
121
|
paginationForm.setFieldValue('page', previousPage, true);
|
|
122
122
|
paginationForm.submitForm();
|
|
123
123
|
}
|
|
124
124
|
}, [paginationForm]);
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
const handleNextPageChange = useCallback(() => {
|
|
126
|
+
const nextPage = _valuesInstanceProperty(paginationForm).page + 1;
|
|
127
127
|
|
|
128
128
|
if (nextPage <= totalPages) {
|
|
129
129
|
paginationForm.setFieldValue('page', nextPage, true);
|
|
@@ -180,7 +180,7 @@ PageNavigator.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
180
180
|
PageNavigator.displayName = 'PageNavigator';
|
|
181
181
|
var PageNavigator$1 = PageNavigator;
|
|
182
182
|
|
|
183
|
-
|
|
183
|
+
const messages = defineMessages({
|
|
184
184
|
pageSize: {
|
|
185
185
|
id: 'UIKit.Pagination.PageSizeSelector.pageSize',
|
|
186
186
|
description: 'How many items are per page',
|
|
@@ -193,7 +193,7 @@ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (
|
|
|
193
193
|
|
|
194
194
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
195
195
|
|
|
196
|
-
|
|
196
|
+
const mapRangeToListOfOptions = perPageRange => {
|
|
197
197
|
switch (perPageRange) {
|
|
198
198
|
case 's':
|
|
199
199
|
return [20, 50];
|
|
@@ -209,23 +209,23 @@ var mapRangeToListOfOptions = function mapRangeToListOfOptions(perPageRange) {
|
|
|
209
209
|
}
|
|
210
210
|
};
|
|
211
211
|
|
|
212
|
-
|
|
212
|
+
const PageSizeSelector = props => {
|
|
213
213
|
var _context;
|
|
214
214
|
|
|
215
|
-
|
|
216
|
-
|
|
215
|
+
const _useTheme = useTheme(),
|
|
216
|
+
themedValue = _useTheme.themedValue;
|
|
217
217
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
218
|
+
const _useState = useState(uniqueId('per-page-selector-')),
|
|
219
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
220
|
+
perPageSelectorId = _useState2[0];
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
const options = mapRangeToListOfOptions(props.perPageRange);
|
|
223
223
|
|
|
224
|
-
|
|
224
|
+
const hasValidPerPageOption = _includesInstanceProperty(options).call(options, props.perPage);
|
|
225
225
|
|
|
226
226
|
process.env.NODE_ENV !== "production" ? warning(hasValidPerPageOption, _concatInstanceProperty(_context = "@commercetools-uikit/pagination: invalid page size ".concat(props.perPage, ". It must be one of the values of the selected range in \"")).call(_context, options.toString(), "\".")) : void 0;
|
|
227
|
-
|
|
228
|
-
|
|
227
|
+
const onPerPageChange = props.onPerPageChange;
|
|
228
|
+
const handleSelectPerPage = useCallback(event => {
|
|
229
229
|
onPerPageChange(Number(event.target.value));
|
|
230
230
|
}, [onPerPageChange]);
|
|
231
231
|
return jsxs(Spacings.Inline, {
|
|
@@ -236,12 +236,10 @@ var PageSizeSelector = function PageSizeSelector(props) {
|
|
|
236
236
|
id: perPageSelectorId,
|
|
237
237
|
name: "per-page-selector",
|
|
238
238
|
value: props.perPage.toString(),
|
|
239
|
-
options: _mapInstanceProperty(options).call(options,
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
};
|
|
244
|
-
}),
|
|
239
|
+
options: _mapInstanceProperty(options).call(options, option => ({
|
|
240
|
+
value: option.toString(),
|
|
241
|
+
label: option.toString()
|
|
242
|
+
})),
|
|
245
243
|
onChange: handleSelectPerPage
|
|
246
244
|
})
|
|
247
245
|
}), jsx(Label, {
|
|
@@ -262,7 +260,7 @@ PageSizeSelector.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
262
260
|
pageItems: _pt.number.isRequired
|
|
263
261
|
} : {};
|
|
264
262
|
PageSizeSelector.displayName = 'PageSizeSelector';
|
|
265
|
-
|
|
263
|
+
const defaultProps$1 = {
|
|
266
264
|
perPage: 20,
|
|
267
265
|
perPageRange: 's'
|
|
268
266
|
};
|
|
@@ -281,9 +279,9 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
281
279
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
282
280
|
};
|
|
283
281
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
282
|
+
const Pagination = props => {
|
|
283
|
+
const totalPages = Math.ceil(props.totalItems / props.perPage);
|
|
284
|
+
const pageItems = props.page === totalPages ? props.totalItems - props.perPage * (props.page - 1) : props.perPage;
|
|
287
285
|
return jsxs(Spacings.Inline, {
|
|
288
286
|
justifyContent: "space-between",
|
|
289
287
|
children: [jsx("div", {
|
|
@@ -303,7 +301,7 @@ var Pagination = function Pagination(props) {
|
|
|
303
301
|
};
|
|
304
302
|
|
|
305
303
|
Pagination.displayName = 'Pagination';
|
|
306
|
-
|
|
304
|
+
const defaultProps = {
|
|
307
305
|
perPage: 20,
|
|
308
306
|
perPageRange: 's'
|
|
309
307
|
};
|
|
@@ -311,6 +309,6 @@ Pagination.defaultProps = defaultProps;
|
|
|
311
309
|
var Pagination$1 = Pagination;
|
|
312
310
|
|
|
313
311
|
// NOTE: This string will be replaced on build time with the package version.
|
|
314
|
-
var version = "15.
|
|
312
|
+
var version = "15.15.1";
|
|
315
313
|
|
|
316
314
|
export { PageNavigator$1 as PageNavigator, PageSizeSelector$1 as PageSizeSelector, Pagination$1 as Pagination, version };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercetools-uikit/pagination",
|
|
3
3
|
"description": "Components for navigating through pages of items",
|
|
4
|
-
"version": "15.
|
|
4
|
+
"version": "15.15.1",
|
|
5
5
|
"bugs": "https://github.com/commercetools/ui-kit/issues",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -21,16 +21,16 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@babel/runtime": "^7.20.13",
|
|
23
23
|
"@babel/runtime-corejs3": "^7.20.13",
|
|
24
|
-
"@commercetools-uikit/constraints": "15.
|
|
25
|
-
"@commercetools-uikit/design-system": "15.
|
|
26
|
-
"@commercetools-uikit/icons": "15.
|
|
27
|
-
"@commercetools-uikit/label": "15.
|
|
28
|
-
"@commercetools-uikit/number-input": "15.
|
|
29
|
-
"@commercetools-uikit/secondary-icon-button": "15.
|
|
30
|
-
"@commercetools-uikit/select-input": "15.
|
|
31
|
-
"@commercetools-uikit/spacings": "15.
|
|
32
|
-
"@commercetools-uikit/text": "15.
|
|
33
|
-
"@commercetools-uikit/utils": "15.
|
|
24
|
+
"@commercetools-uikit/constraints": "15.15.1",
|
|
25
|
+
"@commercetools-uikit/design-system": "15.15.1",
|
|
26
|
+
"@commercetools-uikit/icons": "15.15.1",
|
|
27
|
+
"@commercetools-uikit/label": "15.15.1",
|
|
28
|
+
"@commercetools-uikit/number-input": "15.15.1",
|
|
29
|
+
"@commercetools-uikit/secondary-icon-button": "15.15.1",
|
|
30
|
+
"@commercetools-uikit/select-input": "15.15.1",
|
|
31
|
+
"@commercetools-uikit/spacings": "15.15.1",
|
|
32
|
+
"@commercetools-uikit/text": "15.15.1",
|
|
33
|
+
"@commercetools-uikit/utils": "15.15.1",
|
|
34
34
|
"@emotion/react": "^11.10.5",
|
|
35
35
|
"@emotion/styled": "^11.10.5",
|
|
36
36
|
"formik": "^2.2.9",
|