Skip to content

Commit eb607ca

Browse files
authored
feat(pagination): add 'xs' range option for page size selector (#3083)
* feat(pagination): add 'xs' range option for page size selector * fix(validation): update error message to include 'xs' in page range options * feat(pagination): add 'xs' option to pageRangeSize selector
1 parent 3cf46bf commit eb607ca

File tree

5 files changed

+15
-4
lines changed

5 files changed

+15
-4
lines changed

.changeset/afraid-mangos-count.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@commercetools-uikit/pagination': minor
3+
---
4+
5+
added 'xs' option to pageRangeSize selector

packages/components/pagination/src/page-size-selector/page-size-selector.tsx

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { warning } from '@commercetools-uikit/utils';
77
import Label from '@commercetools-uikit/label';
88
import messages from './messages';
99

10-
export type TPageRangeSize = 's' | 'm' | 'l';
10+
export type TPageRangeSize = 'xs' | 's' | 'm' | 'l';
1111

1212
export type TPageSizeSelectorProps = {
1313
/**
@@ -18,6 +18,8 @@ export type TPageSizeSelectorProps = {
1818
/**
1919
* Range of items per page.
2020
* <br/>
21+
* `XS: 5,10,15,20`
22+
* <br/>
2123
* `SMALL: 20,50`
2224
* <br/>
2325
* `MEDIUM: 20,50,100`
@@ -39,6 +41,8 @@ export type TPageSizeSelectorProps = {
3941

4042
const mapRangeToListOfOptions = (perPageRange: TPageRangeSize) => {
4143
switch (perPageRange) {
44+
case 'xs':
45+
return [5, 10, 15, 20];
4246
case 's':
4347
return [20, 50];
4448
case 'm':
@@ -47,7 +51,7 @@ const mapRangeToListOfOptions = (perPageRange: TPageRangeSize) => {
4751
return [200, 500];
4852
default:
4953
throw new Error(
50-
`Invalid page range "${perPageRange}", expected one of "s,m,l".`
54+
`Invalid page range "${perPageRange}", expected one of "xs,s,m,l".`
5155
);
5256
}
5357
};

packages/components/pagination/src/pagination.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ describe('validation', () => {
138138
/>
139139
)
140140
).toThrowErrorMatchingInlineSnapshot(
141-
`"Invalid page range "wrong", expected one of "s,m,l"."`
141+
`"Invalid page range "wrong", expected one of "xs,s,m,l"."`
142142
);
143143
});
144144
describe.each`

packages/components/pagination/src/pagination.stories.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export const BasicExample: Story = {
2323
totalItems: 200,
2424
page: 1,
2525
onPageChange: () => alert('onPageChange Request'),
26-
onPerPageChange: () => alert('onPerPageChange Request'),
26+
onPerPageChange: (v) => alert(`onPerPageChange Request: ${v}`),
2727
perPage: 20,
2828
},
2929
decorators: [

packages/components/pagination/src/pagination.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ export type TPaginationProps = {
2727
/**
2828
* Range of items per page.
2929
* <br/>
30+
* `xs: 5,10,15,20`
31+
* <br/>
3032
* `s: 20,50`
3133
* <br/>
3234
* `m: 20,50,100`

0 commit comments

Comments
 (0)