|
- import _extends from "@babel/runtime/helpers/esm/extends";
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
- import React from 'react';
- import PropTypes from 'prop-types';
- import classNames from 'classnames';
- import { mapToCssModules, tagPropType } from './utils';
- var propTypes = {
- 'aria-label': PropTypes.string,
- children: PropTypes.node,
- className: PropTypes.string,
- cssModule: PropTypes.object,
- next: PropTypes.bool,
- previous: PropTypes.bool,
- tag: tagPropType
- };
- var defaultProps = {
- tag: 'a'
- };
-
- var PaginationLink = function PaginationLink(props) {
- var className = props.className,
- cssModule = props.cssModule,
- next = props.next,
- previous = props.previous,
- Tag = props.tag,
- attributes = _objectWithoutPropertiesLoose(props, ["className", "cssModule", "next", "previous", "tag"]);
-
- var classes = mapToCssModules(classNames(className, 'page-link'), cssModule);
- var defaultAriaLabel;
-
- if (previous) {
- defaultAriaLabel = 'Previous';
- } else if (next) {
- defaultAriaLabel = 'Next';
- }
-
- var ariaLabel = props['aria-label'] || defaultAriaLabel;
- var defaultCaret;
-
- if (previous) {
- defaultCaret = "\xAB";
- } else if (next) {
- defaultCaret = "\xBB";
- }
-
- var children = props.children;
-
- if (children && Array.isArray(children) && children.length === 0) {
- children = null;
- }
-
- if (!attributes.href && Tag === 'a') {
- Tag = 'button';
- }
-
- if (previous || next) {
- children = [React.createElement("span", {
- "aria-hidden": "true",
- key: "caret"
- }, children || defaultCaret), React.createElement("span", {
- className: "sr-only",
- key: "sr"
- }, ariaLabel)];
- }
-
- return React.createElement(Tag, _extends({}, attributes, {
- className: classes,
- "aria-label": ariaLabel
- }), children);
- };
-
- PaginationLink.propTypes = propTypes;
- PaginationLink.defaultProps = defaultProps;
- export default PaginationLink;
|