@micromag/core 0.3.420 → 0.3.423

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/components.js CHANGED
@@ -15,6 +15,7 @@ import { useForm, useDocumentEvent, useIntersectionObserver, useDimensionObserve
15
15
  import { useFieldsManager, useFieldComponent, FieldContextProvider, withModals, useModals, useUppy, withPanels, usePanels, ScreenSizeProvider, useScreenComponent, ScreenProvider, useScreenRenderContext, useScreenSize } from '@micromag/core/contexts';
16
16
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
17
17
  import get from 'lodash/get';
18
+ import queryString from 'query-string';
18
19
  import ReactDOM from 'react-dom';
19
20
  import isArray from 'lodash/isArray';
20
21
  import { faAngleDown } from '@fortawesome/free-solid-svg-icons/faAngleDown';
@@ -1554,8 +1555,12 @@ var messages = defineMessages({
1554
1555
  });
1555
1556
  var propTypes$x = {
1556
1557
  page: PropTypes$1.number,
1558
+ lastPage: PropTypes$1.number,
1559
+ maxPages: PropTypes$1.number,
1557
1560
  total: PropTypes$1.number,
1558
1561
  url: PropTypes$1.string,
1562
+ query: PropTypes$1.object,
1563
+ // eslint-disable-line react/forbid-prop-types
1559
1564
  withPreviousNext: PropTypes$1.bool,
1560
1565
  className: PropTypes$1.string,
1561
1566
  paginationClassName: PropTypes$1.string,
@@ -1565,8 +1570,11 @@ var propTypes$x = {
1565
1570
  };
1566
1571
  var defaultProps$x = {
1567
1572
  page: 1,
1573
+ lastPage: 1,
1574
+ maxPages: 10,
1568
1575
  total: 1,
1569
1576
  url: null,
1577
+ query: null,
1570
1578
  withPreviousNext: false,
1571
1579
  className: null,
1572
1580
  paginationClassName: null,
@@ -1575,9 +1583,12 @@ var defaultProps$x = {
1575
1583
  onClickPage: null
1576
1584
  };
1577
1585
  var PaginationMenu = function PaginationMenu(_ref) {
1578
- var page = _ref.page,
1579
- total = _ref.total,
1586
+ var parentPage = _ref.page,
1587
+ parentLastPage = _ref.lastPage,
1588
+ parentMaxPages = _ref.maxPages,
1589
+ parentTotal = _ref.total,
1580
1590
  url = _ref.url,
1591
+ query = _ref.query,
1581
1592
  withPreviousNext = _ref.withPreviousNext,
1582
1593
  className = _ref.className,
1583
1594
  paginationClassName = _ref.paginationClassName,
@@ -1585,11 +1596,38 @@ var PaginationMenu = function PaginationMenu(_ref) {
1585
1596
  linkClassName = _ref.linkClassName,
1586
1597
  onClickPage = _ref.onClickPage;
1587
1598
  var getUrl = useCallback(function (currentPage) {
1588
- return url !== null ? "".concat(url).concat(url.indexOf('?') !== -1 ? "&page=".concat(currentPage) : "?page=".concat(currentPage)) : null;
1589
- }, [url]);
1590
- var pages = _toConsumableArray(Array(total).keys()).map(function (it) {
1591
- return it + 1;
1599
+ return url !== null ? "".concat(url, "?").concat(queryString.stringify(_objectSpread(_objectSpread({}, query), {}, {
1600
+ page: currentPage
1601
+ }), {
1602
+ arrayFormat: 'bracket'
1603
+ })) : null;
1604
+ }, [url, query]);
1605
+
1606
+ // TODO: test this
1607
+ // const pages = [...Array(total).keys()].map((it) => it + 1);
1608
+
1609
+ var page = parseInt(parentPage, 10);
1610
+ var total = parseInt(parentTotal, 10);
1611
+ var maxPages = parseInt(parentMaxPages, 10);
1612
+ var lastPage = parseInt(parentLastPage, 10);
1613
+ var pageNumbers = Array.from({
1614
+ length: parseInt(lastPage, 10)
1615
+ }, function (_, i) {
1616
+ return i + 1;
1592
1617
  });
1618
+ var stripPages = maxPages !== null && lastPage > maxPages;
1619
+ var startPage = stripPages ? Math.min(Math.max(page - maxPages / 2, 1), lastPage - maxPages) : null;
1620
+ var endPage = stripPages ? startPage + maxPages : null;
1621
+ var strippedPages = stripPages ? pageNumbers.reduce(function (selectedPages, pageNumber) {
1622
+ if (pageNumber === 1 && startPage - 1 > 1) {
1623
+ return [pageNumber, '...'];
1624
+ }
1625
+ if (pageNumber === lastPage && endPage + 1 < lastPage) {
1626
+ return [].concat(_toConsumableArray(selectedPages), ['...', pageNumber]);
1627
+ }
1628
+ return pageNumber >= startPage && pageNumber <= endPage ? [].concat(_toConsumableArray(selectedPages), [pageNumber]) : selectedPages;
1629
+ }, []) : pageNumbers;
1630
+ var pages = strippedPages.length > 0 ? strippedPages : [1];
1593
1631
  return /*#__PURE__*/React.createElement("nav", {
1594
1632
  className: classNames([styles$p.container, _defineProperty({}, className, className !== null)])
1595
1633
  }, /*#__PURE__*/React.createElement("ul", {
package/lib/components.js CHANGED
@@ -19,6 +19,7 @@ var hooks = require('@micromag/core/hooks');
19
19
  var contexts = require('@micromag/core/contexts');
20
20
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
21
21
  var get = require('lodash/get');
22
+ var queryString = require('query-string');
22
23
  var ReactDOM = require('react-dom');
23
24
  var isArray = require('lodash/isArray');
24
25
  var faAngleDown = require('@fortawesome/free-solid-svg-icons/faAngleDown');
@@ -76,6 +77,7 @@ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumab
76
77
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
77
78
  var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
78
79
  var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
80
+ var queryString__default = /*#__PURE__*/_interopDefaultLegacy(queryString);
79
81
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
80
82
  var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
81
83
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
@@ -1595,8 +1597,12 @@ var messages = reactIntl.defineMessages({
1595
1597
  });
1596
1598
  var propTypes$x = {
1597
1599
  page: PropTypes__default["default"].number,
1600
+ lastPage: PropTypes__default["default"].number,
1601
+ maxPages: PropTypes__default["default"].number,
1598
1602
  total: PropTypes__default["default"].number,
1599
1603
  url: PropTypes__default["default"].string,
1604
+ query: PropTypes__default["default"].object,
1605
+ // eslint-disable-line react/forbid-prop-types
1600
1606
  withPreviousNext: PropTypes__default["default"].bool,
1601
1607
  className: PropTypes__default["default"].string,
1602
1608
  paginationClassName: PropTypes__default["default"].string,
@@ -1606,8 +1612,11 @@ var propTypes$x = {
1606
1612
  };
1607
1613
  var defaultProps$x = {
1608
1614
  page: 1,
1615
+ lastPage: 1,
1616
+ maxPages: 10,
1609
1617
  total: 1,
1610
1618
  url: null,
1619
+ query: null,
1611
1620
  withPreviousNext: false,
1612
1621
  className: null,
1613
1622
  paginationClassName: null,
@@ -1616,9 +1625,12 @@ var defaultProps$x = {
1616
1625
  onClickPage: null
1617
1626
  };
1618
1627
  var PaginationMenu = function PaginationMenu(_ref) {
1619
- var page = _ref.page,
1620
- total = _ref.total,
1628
+ var parentPage = _ref.page,
1629
+ parentLastPage = _ref.lastPage,
1630
+ parentMaxPages = _ref.maxPages,
1631
+ parentTotal = _ref.total,
1621
1632
  url = _ref.url,
1633
+ query = _ref.query,
1622
1634
  withPreviousNext = _ref.withPreviousNext,
1623
1635
  className = _ref.className,
1624
1636
  paginationClassName = _ref.paginationClassName,
@@ -1626,11 +1638,38 @@ var PaginationMenu = function PaginationMenu(_ref) {
1626
1638
  linkClassName = _ref.linkClassName,
1627
1639
  onClickPage = _ref.onClickPage;
1628
1640
  var getUrl = React.useCallback(function (currentPage) {
1629
- return url !== null ? "".concat(url).concat(url.indexOf('?') !== -1 ? "&page=".concat(currentPage) : "?page=".concat(currentPage)) : null;
1630
- }, [url]);
1631
- var pages = _toConsumableArray__default["default"](Array(total).keys()).map(function (it) {
1632
- return it + 1;
1641
+ return url !== null ? "".concat(url, "?").concat(queryString__default["default"].stringify(_objectSpread__default["default"](_objectSpread__default["default"]({}, query), {}, {
1642
+ page: currentPage
1643
+ }), {
1644
+ arrayFormat: 'bracket'
1645
+ })) : null;
1646
+ }, [url, query]);
1647
+
1648
+ // TODO: test this
1649
+ // const pages = [...Array(total).keys()].map((it) => it + 1);
1650
+
1651
+ var page = parseInt(parentPage, 10);
1652
+ var total = parseInt(parentTotal, 10);
1653
+ var maxPages = parseInt(parentMaxPages, 10);
1654
+ var lastPage = parseInt(parentLastPage, 10);
1655
+ var pageNumbers = Array.from({
1656
+ length: parseInt(lastPage, 10)
1657
+ }, function (_, i) {
1658
+ return i + 1;
1633
1659
  });
1660
+ var stripPages = maxPages !== null && lastPage > maxPages;
1661
+ var startPage = stripPages ? Math.min(Math.max(page - maxPages / 2, 1), lastPage - maxPages) : null;
1662
+ var endPage = stripPages ? startPage + maxPages : null;
1663
+ var strippedPages = stripPages ? pageNumbers.reduce(function (selectedPages, pageNumber) {
1664
+ if (pageNumber === 1 && startPage - 1 > 1) {
1665
+ return [pageNumber, '...'];
1666
+ }
1667
+ if (pageNumber === lastPage && endPage + 1 < lastPage) {
1668
+ return [].concat(_toConsumableArray__default["default"](selectedPages), ['...', pageNumber]);
1669
+ }
1670
+ return pageNumber >= startPage && pageNumber <= endPage ? [].concat(_toConsumableArray__default["default"](selectedPages), [pageNumber]) : selectedPages;
1671
+ }, []) : pageNumbers;
1672
+ var pages = strippedPages.length > 0 ? strippedPages : [1];
1634
1673
  return /*#__PURE__*/React__default["default"].createElement("nav", {
1635
1674
  className: classNames__default["default"]([styles$p.container, _defineProperty__default["default"]({}, className, className !== null)])
1636
1675
  }, /*#__PURE__*/React__default["default"].createElement("ul", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.420",
3
+ "version": "0.3.423",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -119,6 +119,7 @@
119
119
  "lodash": "^4.17.21",
120
120
  "param-case": "^3.0.4",
121
121
  "prop-types": "^15.7.2",
122
+ "query-string": "^6.13.7",
122
123
  "raf": "^3.4.1",
123
124
  "react-helmet": "^6.1.0",
124
125
  "react-intl": "^5.12.1",
@@ -136,5 +137,5 @@
136
137
  "access": "public",
137
138
  "registry": "https://registry.npmjs.org/"
138
139
  },
139
- "gitHead": "5b0f037a41c3bca07a5bce8f0dce205242f7ad17"
140
+ "gitHead": "c02e69c23fd099d5684bc0b69e02f19825cecfd2"
140
141
  }