UNPKG

react-bulma-components

Version:

React components for Bulma framework

146 lines (133 loc) 6.23 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } import React from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import { normalizeAlign } from '../../services/normalizer'; import Element from '../element'; var getFirstPage = function getFirstPage(current, last, delta) { if (current === 1) { return 1; } var minPage = last - delta * 2; var page = Math.min(current - delta, minPage); return page <= 0 ? 1 : page; }; var getLastPage = function getLastPage(current, total, delta) { if (current === total) { return total; } var maxPage = delta * 2 + 1; var page = Math.max(current + delta, maxPage); return page > total ? total : page; }; var Pagination = function Pagination(_ref) { var _classnames; var current = _ref.current, disabled = _ref.disabled, total = _ref.total, next = _ref.next, previous = _ref.previous, showPrevNext = _ref.showPrevNext, showFirstLast = _ref.showFirstLast, delta = _ref.delta, autoHide = _ref.autoHide, className = _ref.className, size = _ref.size, align = _ref.align, rounded = _ref.rounded, onChange = _ref.onChange, props = _objectWithoutProperties(_ref, ["current", "disabled", "total", "next", "previous", "showPrevNext", "showFirstLast", "delta", "autoHide", "className", "size", "align", "rounded", "onChange"]); if (total <= 1 && autoHide || current > total) { return null; } var lastPage = getLastPage(current, total, delta); var firstPage = getFirstPage(current, lastPage, delta); var prevDisabled = current === 1 || disabled; var nextDisabled = current === total || disabled; return /*#__PURE__*/React.createElement(Element, _extends({}, props, { className: classnames('pagination', className, (_classnames = {}, _defineProperty(_classnames, "is-".concat(size), size), _defineProperty(_classnames, "is-".concat(normalizeAlign(align)), align), _defineProperty(_classnames, 'is-rounded', rounded), _classnames)), "aria-label": "pagination" }), showPrevNext && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("a", { role: "button", tabIndex: 0, onClick: prevDisabled ? undefined : function () { return onChange(current - 1); }, className: "pagination-previous", title: "This is the first page", disabled: prevDisabled }, previous), /*#__PURE__*/React.createElement("a", { role: "button", tabIndex: 0, onClick: nextDisabled ? undefined : function () { return onChange(current + 1); }, className: "pagination-next", disabled: nextDisabled }, next)), delta > 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("ul", { className: "pagination-list" }, showFirstLast && current !== 1 && firstPage !== 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("li", { key: 1 }, /*#__PURE__*/React.createElement("a", { role: "button", tabIndex: 0, className: "pagination-link", onClick: function onClick() { return onChange(1); }, "aria-label": "Page 1", "aria-current": "page", disabled: disabled }, "1")), /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("span", { className: "pagination-ellipsis" }, "\u2026"))), Array(lastPage - firstPage + 1).fill(0).map(function (_, i) { return ( /*#__PURE__*/ // eslint-disable-next-line react/no-array-index-key React.createElement("li", { key: i + firstPage }, /*#__PURE__*/React.createElement("a", { role: "button", tabIndex: 0, className: classnames('pagination-link', { 'is-current': current === i + firstPage }), onClick: current === firstPage + i ? undefined : function () { return onChange(firstPage + i); }, "aria-label": "Page ".concat(i + firstPage), "aria-current": "page", disabled: disabled }, i + firstPage)) ); }), showFirstLast && current !== lastPage && total !== lastPage && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("li", { key: total }, /*#__PURE__*/React.createElement("span", { className: "pagination-ellipsis" }, "\u2026")), /*#__PURE__*/React.createElement("li", null, /*#__PURE__*/React.createElement("a", { role: "button", tabIndex: 0, className: "pagination-link", onClick: function onClick() { return onChange(total); }, "aria-label": "Page ".concat(total), "aria-current": "page", disabled: disabled }, total)))))); }; Pagination.defaultProps = { total: 1, current: 1, delta: 1, next: 'Next', previous: 'Previous', renderAs: 'nav', showPrevNext: true, autoHide: true }; export default Pagination; //# sourceMappingURL=pagination.js.map