@heycar-uikit/core
Version:
The React UI library from HeyCar
36 lines (32 loc) • 2.14 kB
JavaScript
import React from 'react';
import cn from 'classnames';
import { ChevronRight, ChevronLeft } from '../../icons/modern';
import Typography from '../../typography/modern';
import { P as PaginationItemType } from './Pagination.types-7a359c42.js';
var styles = {"pagination":"pagination__pagination_rwdob","currentPage":"pagination__currentPage_rwdob","itemNumber":"pagination__itemNumber_rwdob","arrow":"pagination__arrow_rwdob","ellipsis":"pagination__ellipsis_rwdob","slash":"pagination__slash_rwdob"};
require('./styles/default.css');
const ELEMENTS_THAT_CAN_BE_DISABLED = ['button', 'input'];
const PaginationItem = ({ page, isCurrentPage, isDisabled, itemType, onClick, component = onClick ? 'button' : 'a', ...rest }) => {
const Component = component;
const canUseDisabledProp = typeof component === 'string' &&
ELEMENTS_THAT_CAN_BE_DISABLED.includes(component);
const disabledProp = {
[canUseDisabledProp ? 'disabled' : 'aria-disabled']: isDisabled,
};
switch (itemType) {
case PaginationItemType.PageNumber:
return (React.createElement(Component, { className: cn(styles.itemNumber, isCurrentPage && styles.currentPage), ...rest, "aria-current": isCurrentPage, onClick: onClick },
React.createElement(Typography, { variant: "subheading2" }, page)));
case PaginationItemType.Ellipsis:
return (React.createElement(Typography, { className: styles.ellipsis, variant: "subheading2" }, '...'));
case PaginationItemType.Slash:
return (React.createElement(Typography, { className: styles.slash, variant: "subheading2" }, '/'));
case PaginationItemType.Previous:
return (React.createElement(Component, { className: styles.arrow, ...disabledProp, ...rest, onClick: onClick },
React.createElement(ChevronLeft, null)));
case PaginationItemType.Next:
return (React.createElement(Component, { className: styles.arrow, ...disabledProp, ...rest, onClick: onClick },
React.createElement(ChevronRight, null)));
}
};
export { PaginationItem as P, styles as s };