UNPKG

@wener/console

Version:
119 lines (118 loc) 4.89 kB
function _array_like_to_array(arr, len) { if (len == null || len > arr.length) len = arr.length; for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i]; return arr2; } function _array_with_holes(arr) { if (Array.isArray(arr)) return arr; } function _iterable_to_array_limit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){ _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally{ try { if (!_n && _i["return"] != null) _i["return"](); } finally{ if (_d) throw _e; } } return _arr; } function _non_iterable_rest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _sliced_to_array(arr, i) { return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest(); } function _unsupported_iterable_to_array(o, minLen) { if (!o) return; if (typeof o === "string") return _array_like_to_array(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen); } import { useEffect, useState } from 'react'; import { PiArrowLeftThin, PiArrowLineLeftThin, PiArrowLineRightThin, PiArrowRightThin } from 'react-icons/pi'; import { clamp } from '@wener/utils'; export var PageNav = function(param) { var _param_pageNumber = param.pageNumber, pageNumber = _param_pageNumber === void 0 ? 1 : _param_pageNumber, onPageNumberChange = param.onPageNumberChange, _param_pageCount = param.pageCount, pageCount = _param_pageCount === void 0 ? 1 : _param_pageCount, _param_canPrev = param.canPrev, canPrev = _param_canPrev === void 0 ? pageNumber > 1 : _param_canPrev, _param_canNext = param.canNext, canNext = _param_canNext === void 0 ? pageNumber < pageCount : _param_canNext; var goto = function(n) { onPageNumberChange === null || onPageNumberChange === void 0 ? void 0 : onPageNumberChange(n); }; var _useState = _sliced_to_array(useState(String(pageNumber)), 2), value = _useState[0], setValue = _useState[1]; useEffect(function() { setValue(String(pageNumber)); }, [ pageNumber ]); var btnClass = 'join-item btn btn-xs btn-square px-0 [&>svg]:flex-shrink-0 not-hover:bg-transparent border-none'; return /*#__PURE__*/ React.createElement("div", { className: "join font-thin tabular-nums *:px-2 disabled:*:opacity-50" }, /*#__PURE__*/ React.createElement("button", { type: 'button', disabled: !canPrev, onClick: function() { return goto(1); }, className: btnClass, title: '第一页' }, /*#__PURE__*/ React.createElement(PiArrowLineLeftThin, { className: 'h-3 w-3' })), /*#__PURE__*/ React.createElement("button", { type: 'button', disabled: !canPrev, onClick: function() { return goto(pageNumber - 1); }, className: btnClass, title: '上一页' }, /*#__PURE__*/ React.createElement(PiArrowLeftThin, { className: 'h-3 w-3' })), /*#__PURE__*/ React.createElement("input", { value: value, onChange: function(e) { setValue(e.currentTarget.value); }, onKeyUp: function(e) { if (e.key === 'Enter') { var n = clamp(Number(value) || 1, 1, pageCount); goto(n); setValue(String(n)); } }, className: "input input-xs input-ghost join-item w-[5ch] text-center tabular-nums" }), /*#__PURE__*/ React.createElement("button", { type: 'button', disabled: !canNext, onClick: function() { return goto(pageNumber + 1); }, className: btnClass, title: '下一页' }, /*#__PURE__*/ React.createElement(PiArrowRightThin, { className: 'h-3 w-3' })), /*#__PURE__*/ React.createElement("button", { type: 'button', disabled: !canNext, onClick: function() { return goto(pageCount); }, title: '最后一页', className: btnClass }, /*#__PURE__*/ React.createElement(PiArrowLineRightThin, { className: 'h-3 w-3' }))); };