Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion docs/examples/jumper.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ function onShowSizeChange(current, pageSize) {
console.log(pageSize);
}

function onChange(current, pageSize) {
function onChange(current, pageSize, info) {
console.log('onChange:current=', current);
console.log('onChange:pageSize=', pageSize);
console.log('onChange:recommendPage=', info?.recommendPage);
}

const App = () => (
Expand Down
6 changes: 5 additions & 1 deletion src/Pagination.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -197,15 +197,19 @@ const Pagination: React.FC<PaginationProps> = (props) => {
}

function changePageSize(size: number) {
const preservedPage = Math.floor(((current - 1) * pageSize) / size) + 1;
const newCurrent = calculatePage(size, pageSize, total);
const recommendPage =
newCurrent === 0 ? 1 : Math.min(preservedPage, newCurrent);

const nextCurrent =
current > newCurrent && newCurrent !== 0 ? newCurrent : current;

setPageSize(size);
setInternalInputVal(nextCurrent);
onShowSizeChange?.(current, size);
setCurrent(nextCurrent);
onChange?.(nextCurrent, size);
onChange?.(nextCurrent, size, { recommendPage });
}

function handleChange(page: number) {
Expand Down
9 changes: 6 additions & 3 deletions src/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,12 @@ export interface PaginationData {
}

export interface PaginationProps
extends Partial<PaginationData>,
React.AriaAttributes {
onChange?: (page: number, pageSize: number) => void;
extends Partial<PaginationData>, React.AriaAttributes {
onChange?: (
page: number,
pageSize: number,
info?: { recommendPage?: number },
) => void;
onShowSizeChange?: (current: number, size: number) => void;
itemRender?: (
page: number,
Expand Down
2 changes: 1 addition & 1 deletion tests/index.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ describe('current value on onShowSizeChange when total is 0', () => {
fireEvent.keyDown(input, { key: 'Down', keyCode: 40, which: 40 });
fireEvent.keyDown(input, { key: 'Enter', keyCode: 13, which: 13 });
expect(onShowSizeChange).toHaveBeenLastCalledWith(1, 20);
expect(onChange).toHaveBeenLastCalledWith(1, 20);
expect(onChange).toHaveBeenLastCalledWith(1, 20, { recommendPage: 1 });
});

it('when total is 0, pager should show `1` and being disabled', () => {
Expand Down
2 changes: 1 addition & 1 deletion tests/simple.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ describe('simple Pagination', () => {
const pageSize1 = container.querySelectorAll('.rc-select-item')[0];
fireEvent.click(pageSize1);
expect(onChange).toHaveBeenCalled();
expect(onChange).toHaveBeenLastCalledWith(1, 10);
expect(onChange).toHaveBeenLastCalledWith(1, 10, { recommendPage: 1 });
});

it('should support keyboard event', () => {
Expand Down
2 changes: 1 addition & 1 deletion tests/sizer.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ describe('Pagination with sizer', () => {
const pageSize1 = container.querySelectorAll('.rc-select-item')[0];
fireEvent.click(pageSize1);
expect(onChange).toHaveBeenCalled();
expect(onChange).toHaveBeenLastCalledWith(1, 10);
expect(onChange).toHaveBeenLastCalledWith(1, 10, { recommendPage: 1 });
});

// https://github.com/ant-design/ant-design/issues/26580
Expand Down
Loading