@wb-tech/ui-react
Version:
WildBerries react ui-kit
62 lines (53 loc) • 1.55 kB
text/typescript
interface IParams {
areFirstDotsShown: boolean,
areLastDotsShown: boolean,
numberOfMiddleButtons: number,
numberOfEdgeButtons: number,
numberOfPages: number,
currentPage: number,
windowWidth?: number
}
const getMiddlePageButtonsBase = ({
currentPage,
areFirstDotsShown,
areLastDotsShown,
numberOfPages,
numberOfMiddleButtons,
numberOfEdgeButtons
}: IParams) => {
const numberOfPagesKeys = Array.from(Array(numberOfPages).keys());
if(areFirstDotsShown && areLastDotsShown) {
const deltaMiddleButtonsOffset = (numberOfMiddleButtons - 1) / 2;
return numberOfPagesKeys.slice(
currentPage - deltaMiddleButtonsOffset,
currentPage + deltaMiddleButtonsOffset + 1
);
}
if(areFirstDotsShown) {
return numberOfPagesKeys.slice(
numberOfPages - numberOfEdgeButtons + 1,
numberOfPages
);
}
if(areLastDotsShown) {
return numberOfPagesKeys.slice(2, numberOfEdgeButtons + 1);
}
return numberOfPagesKeys.slice(2, numberOfPages);
};
export const getMiddlePageButtons = ({
windowWidth,
currentPage,
areFirstDotsShown,
areLastDotsShown,
...baseMiddleButtonsParams
}: IParams) => {
if(windowWidth && windowWidth <= 440 && areFirstDotsShown && areLastDotsShown) {
return [currentPage];
}
return getMiddlePageButtonsBase({
...baseMiddleButtonsParams,
areFirstDotsShown,
areLastDotsShown,
currentPage
});
};