UNPKG

16.6 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var React = _interopRequireWildcard(require("react"));
9
10var _memoizeOne = _interopRequireDefault(require("memoize-one"));
11
12var _index = require("../locale/index.js");
13
14var _themeProvider = require("../styles/theme-provider.js");
15
16var _index2 = require("../select/index.js");
17
18var _index3 = require("../button/index.js");
19
20var _styledComponents = require("./styled-components.js");
21
22var _chevronLeft = _interopRequireDefault(require("../icon/chevron-left.js"));
23
24var _chevronRight = _interopRequireDefault(require("../icon/chevron-right.js"));
25
26var _overrides = require("../helpers/overrides.js");
27
28var _focusVisible = require("../utils/focusVisible.js");
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
33
34function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
36function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
37
38function _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); }
39
40function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
41
42function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
43
44function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
45
46function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
47
48function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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; }
49
50function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
51
52function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
53
54function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
55
56function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
57
58function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
59
60function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
61
62function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
63
64function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
65
66function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
67
68function _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; }
69
70var Pagination =
71/*#__PURE__*/
72function (_React$PureComponent) {
73 _inherits(Pagination, _React$PureComponent);
74
75 function Pagination() {
76 var _getPrototypeOf2;
77
78 var _this;
79
80 _classCallCheck(this, Pagination);
81
82 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
83 args[_key] = arguments[_key];
84 }
85
86 _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Pagination)).call.apply(_getPrototypeOf2, [this].concat(args)));
87
88 _defineProperty(_assertThisInitialized(_this), "state", {
89 isFocusVisible: false
90 });
91
92 _defineProperty(_assertThisInitialized(_this), "handleFocus", function (event) {
93 if ((0, _focusVisible.isFocusVisible)(event)) {
94 _this.setState({
95 isFocusVisible: true
96 });
97 }
98 });
99
100 _defineProperty(_assertThisInitialized(_this), "handleBlur", function (event) {
101 if (_this.state.isFocusVisible !== false) {
102 _this.setState({
103 isFocusVisible: false
104 });
105 }
106 });
107
108 _defineProperty(_assertThisInitialized(_this), "getMenuOptions", (0, _memoizeOne.default)(function (numPages) {
109 var menuOptions = [];
110
111 for (var i = 1; i <= numPages; i++) {
112 menuOptions.push({
113 label: i
114 });
115 }
116
117 return menuOptions;
118 }));
119
120 _defineProperty(_assertThisInitialized(_this), "onMenuItemSelect", function (data) {
121 var item = data.value[0];
122 var _this$props = _this.props,
123 onPageChange = _this$props.onPageChange,
124 currentPage = _this$props.currentPage;
125 var page = item.label;
126
127 if (page !== currentPage) {
128 onPageChange && onPageChange({
129 nextPage: page,
130 prevPage: currentPage
131 });
132 }
133 });
134
135 _defineProperty(_assertThisInitialized(_this), "onPrevClick", function (event) {
136 var _this$props2 = _this.props,
137 currentPage = _this$props2.currentPage,
138 onPageChange = _this$props2.onPageChange,
139 onPrevClick = _this$props2.onPrevClick;
140
141 if (currentPage > 1) {
142 onPageChange && onPageChange({
143 nextPage: currentPage - 1,
144 prevPage: currentPage
145 });
146 onPrevClick && onPrevClick({
147 event: event
148 });
149 }
150 });
151
152 _defineProperty(_assertThisInitialized(_this), "onNextClick", function (event) {
153 var _this$props3 = _this.props,
154 currentPage = _this$props3.currentPage,
155 numPages = _this$props3.numPages,
156 onPageChange = _this$props3.onPageChange,
157 onNextClick = _this$props3.onNextClick;
158
159 if (currentPage < numPages) {
160 onPageChange && onPageChange({
161 nextPage: currentPage + 1,
162 prevPage: currentPage
163 });
164 onNextClick && onNextClick({
165 event: event
166 });
167 }
168 });
169
170 _defineProperty(_assertThisInitialized(_this), "constructAriaWayfinderLabel", function (locale, prefix) {
171 var _this$props4 = _this.props,
172 currentPage = _this$props4.currentPage,
173 numPages = _this$props4.numPages,
174 labels = _this$props4.labels;
175 return prefix + ' ' + currentPage + ' ' + "".concat(labels && labels.preposition ? labels.preposition : locale.pagination.preposition) + ' ' + numPages;
176 });
177
178 return _this;
179 }
180
181 _createClass(Pagination, [{
182 key: "render",
183 value: function render() {
184 var _this2 = this;
185
186 var _this$props5 = this.props,
187 _this$props5$override = _this$props5.overrides,
188 overrides = _this$props5$override === void 0 ? {} : _this$props5$override,
189 currentPage = _this$props5.currentPage,
190 labels = _this$props5.labels,
191 numPages = _this$props5.numPages,
192 size = _this$props5.size;
193
194 var _getOverrides = (0, _overrides.getOverrides)(overrides.Root, _styledComponents.StyledRoot),
195 _getOverrides2 = _slicedToArray(_getOverrides, 2),
196 Root = _getOverrides2[0],
197 rootProps = _getOverrides2[1];
198
199 var _getOverrides3 = (0, _overrides.getOverrides)(overrides.MaxLabel, _styledComponents.StyledMaxLabel),
200 _getOverrides4 = _slicedToArray(_getOverrides3, 2),
201 MaxLabel = _getOverrides4[0],
202 maxLabelProps = _getOverrides4[1];
203
204 var _getOverrides5 = (0, _overrides.getOverrides)(overrides.DropdownContainer, _styledComponents.StyledDropdownContainer),
205 _getOverrides6 = _slicedToArray(_getOverrides5, 2),
206 DropdownContainer = _getOverrides6[0],
207 dropdownContainerProps = _getOverrides6[1];
208
209 var _getOverrides7 = (0, _overrides.getOverrides)(overrides.Select, _index2.Select),
210 _getOverrides8 = _slicedToArray(_getOverrides7, 2),
211 Select = _getOverrides8[0],
212 selectProps = _getOverrides8[1];
213
214 var options = this.getMenuOptions(numPages);
215 return React.createElement(_themeProvider.ThemeContext.Consumer, null, function (theme) {
216 return React.createElement(_index.LocaleContext.Consumer, null, function (locale) {
217 return React.createElement(Root, _extends({
218 "aria-label": "pagination",
219 "data-baseweb": "pagination"
220 }, rootProps), React.createElement(_index3.Button, {
221 "aria-label": _this2.constructAriaWayfinderLabel(locale, 'previous page. current page'),
222 disabled: currentPage <= 1,
223 onClick: _this2.onPrevClick,
224 startEnhancer: function startEnhancer() {
225 return theme.direction === 'rtl' ? React.createElement(_chevronRight.default, {
226 title: '',
227 size: 24
228 }) : React.createElement(_chevronLeft.default, {
229 title: '',
230 size: 24
231 });
232 },
233 kind: _index3.KIND.tertiary,
234 overrides: {
235 BaseButton: overrides.PrevButton
236 },
237 size: size
238 }, labels && labels.prevButton ? labels.prevButton : locale.pagination.prev), React.createElement(DropdownContainer, _extends({
239 $isFocusVisible: _this2.state.isFocusVisible
240 }, dropdownContainerProps, {
241 onFocus: (0, _focusVisible.forkFocus)(dropdownContainerProps, _this2.handleFocus),
242 onBlur: (0, _focusVisible.forkBlur)(dropdownContainerProps, _this2.handleBlur)
243 }), React.createElement(Select, _extends({
244 options: options,
245 labelKey: "label",
246 valueKey: "label",
247 onChange: _this2.onMenuItemSelect,
248 searchable: false,
249 clearable: false,
250 value: [{
251 label: currentPage
252 }],
253 maxDropdownHeight: "200px",
254 size: size,
255 overrides: {
256 ControlContainer: {
257 style: function style(_ref) {
258 var $theme = _ref.$theme,
259 $disabled = _ref.$disabled,
260 $isOpen = _ref.$isOpen,
261 $error = _ref.$error;
262 return {
263 borderLeftColor: 'transparent',
264 borderRightColor: 'transparent',
265 borderTopColor: 'transparent',
266 borderBottomColor: 'transparent',
267 boxShadow: 'none',
268 backgroundColor: $disabled ? $theme.colors.buttonDisabledFill : $isOpen ? $theme.colors.buttonTertiaryHover : $error ? $theme.colors.negative50 : $theme.colors.buttonTertiaryFill,
269 ':hover': {
270 backgroundColor: $theme.colors.buttonTertiaryHover
271 }
272 };
273 }
274 },
275 InputContainer: {
276 style: {
277 marginLeft: 0
278 }
279 },
280 ValueContainer: {
281 style: function style(_ref2) {
282 var $theme = _ref2.$theme;
283 return {
284 flexBasis: 'auto'
285 };
286 }
287 },
288 SingleValue: {
289 style: function style(_ref3) {
290 var $theme = _ref3.$theme;
291 return _objectSpread({
292 position: 'relative',
293 paddingTop: '0',
294 paddingBottom: '0',
295 paddingLeft: $theme.sizing.scale200,
296 paddingRight: $theme.sizing.scale500,
297 color: $theme.colors.buttonTertiaryText
298 }, $theme.typography.font350, {
299 lineHeight: 'unset'
300 });
301 }
302 },
303 SelectArrow: {
304 style: function style(_ref4) {
305 var $theme = _ref4.$theme;
306 return {
307 width: '24px',
308 height: '24px',
309 color: $theme.colors.buttonTertiaryText
310 };
311 }
312 }
313 }
314 }, selectProps))), React.createElement(MaxLabel, _extends({
315 "aria-label": _this2.constructAriaWayfinderLabel(locale, 'page')
316 }, maxLabelProps), "".concat(labels && labels.preposition ? labels.preposition : locale.pagination.preposition || '', " ").concat(numPages)), React.createElement(_index3.Button, {
317 "aria-label": _this2.constructAriaWayfinderLabel(locale, 'next page. current page'),
318 disabled: currentPage >= numPages,
319 onClick: _this2.onNextClick,
320 endEnhancer: function endEnhancer() {
321 return theme.direction === 'rtl' ? React.createElement(_chevronLeft.default, {
322 title: '',
323 size: 24
324 }) : React.createElement(_chevronRight.default, {
325 title: '',
326 size: 24
327 });
328 },
329 kind: _index3.KIND.tertiary,
330 overrides: {
331 BaseButton: overrides.NextButton
332 },
333 size: size
334 }, labels && labels.nextButton ? labels.nextButton : locale.pagination.next));
335 });
336 });
337 }
338 }]);
339
340 return Pagination;
341}(React.PureComponent);
342
343exports.default = Pagination;
344
345_defineProperty(Pagination, "defaultProps", {
346 labels: {},
347 overrides: {}
348});
\No newline at end of file