@hyphen/hyphen-components 2.13.0 → 2.14.0

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.
@@ -3383,20 +3383,17 @@ var Modal = /*#__PURE__*/function () {
3383
3383
  return Modal;
3384
3384
  }();
3385
3385
 
3386
- var generatePages = function generatePages(pageRange, pageTotal, activePage, numberOfPagesDisplayed) {
3387
- var _pages;
3386
+ var generatePages = function generatePages(pageTotal, activePage, numberOfPagesDisplayed) {
3387
+ var pageRange = Math.min(pageTotal, Math.max(1, numberOfPagesDisplayed));
3388
3388
  var pages = [];
3389
3389
  var startingPage = 1;
3390
3390
  var endingPage = pageRange;
3391
- if (pageTotal <= pageRange) {
3392
- startingPage = 1;
3393
- endingPage = pageRange;
3394
- } else if (activePage + numberOfPagesDisplayed > pageTotal) {
3395
- startingPage = pageTotal - (numberOfPagesDisplayed - 1);
3396
- endingPage = startingPage + (numberOfPagesDisplayed - 1);
3397
- } else if (activePage > numberOfPagesDisplayed && activePage + numberOfPagesDisplayed <= pageTotal) {
3398
- startingPage = activePage - Math.floor(numberOfPagesDisplayed / 2);
3399
- endingPage = startingPage + (numberOfPagesDisplayed - 1);
3391
+ if (activePage + Math.floor(pageRange / 2) >= pageTotal) {
3392
+ startingPage = Math.max(1, pageTotal - pageRange + 1);
3393
+ endingPage = pageTotal;
3394
+ } else {
3395
+ startingPage = Math.max(1, activePage - Math.floor(pageRange / 2));
3396
+ endingPage = Math.min(pageTotal, startingPage + pageRange - 1);
3400
3397
  }
3401
3398
  for (var i = startingPage; i <= endingPage; i += 1) {
3402
3399
  pages.push({
@@ -3404,36 +3401,32 @@ var generatePages = function generatePages(pageRange, pageTotal, activePage, num
3404
3401
  isPage: true
3405
3402
  });
3406
3403
  }
3407
- if (pageTotal > ((_pages = pages[pages.length - 1]) == null ? void 0 : _pages.pageNumber)) {
3408
- var secondToLastPage = pageTotal !== activePage + numberOfPagesDisplayed ? activePage + numberOfPagesDisplayed : pageTotal - 1;
3409
- // only add ellipsis if there are more than 0 pages between the final page and the rest of the pages
3410
- if (pageTotal > numberOfPagesDisplayed + 1) {
3404
+ // Handling ellipsis for overflow pages
3405
+ if (endingPage < pageTotal) {
3406
+ if (endingPage < pageTotal - 1) {
3411
3407
  pages.push({
3412
- pageNumber: secondToLastPage,
3408
+ pageNumber: -1,
3413
3409
  isPage: false
3414
- });
3410
+ }); // represents ellipsis
3415
3411
  }
3416
3412
  pages.push({
3417
3413
  pageNumber: pageTotal,
3418
3414
  isPage: true
3419
3415
  });
3420
3416
  }
3421
- if (activePage > numberOfPagesDisplayed) {
3422
- var threeDotsPage = activePage - numberOfPagesDisplayed > 1 ? activePage - numberOfPagesDisplayed : activePage - numberOfPagesDisplayed + 1;
3417
+ if (startingPage > 1) {
3423
3418
  pages.unshift({
3424
3419
  pageNumber: 1,
3425
3420
  isPage: true
3426
- }, {
3427
- pageNumber: threeDotsPage,
3428
- isPage: false
3429
3421
  });
3422
+ if (startingPage > 2) {
3423
+ pages.splice(1, 0, {
3424
+ pageNumber: -1,
3425
+ isPage: false
3426
+ }); // represents ellipsis
3427
+ }
3430
3428
  }
3431
- return [].concat(pages);
3432
- };
3433
- // Return the true page range in cases
3434
- // where number of pages wanted for display is larger than the actual page total.
3435
- var generatePageRange = function generatePageRange(numberOfPagesDisplayed, pageTotal) {
3436
- return numberOfPagesDisplayed > pageTotal ? pageTotal : numberOfPagesDisplayed;
3429
+ return pages;
3437
3430
  };
3438
3431
  var generatePageTotal = function generatePageTotal(totalItemsCount, itemsPerPage) {
3439
3432
  return Math.ceil(totalItemsCount / itemsPerPage);
@@ -3442,19 +3435,12 @@ var generatePageTotal = function generatePageTotal(totalItemsCount, itemsPerPage
3442
3435
  // E.G: if the items per page is 20 and we are on page 1, it will return:
3443
3436
  // { first: 1, last: 20 }
3444
3437
  var generateActiveListRange = function generateActiveListRange(activePage, totalItemsCount, itemsPerPage) {
3445
- var activePageRange = {};
3446
- var pageTotal = generatePageTotal(totalItemsCount, itemsPerPage);
3447
- if (activePage === 1) {
3448
- activePageRange.first = 1;
3449
- activePageRange.last = totalItemsCount > itemsPerPage ? itemsPerPage : totalItemsCount;
3450
- } else if (activePage < pageTotal) {
3451
- activePageRange.first = activePage * itemsPerPage - (itemsPerPage - 1);
3452
- activePageRange.last = activePage * itemsPerPage;
3453
- } else {
3454
- activePageRange.first = activePage * itemsPerPage - (itemsPerPage - 1);
3455
- activePageRange.last = totalItemsCount;
3456
- }
3457
- return activePageRange;
3438
+ var first = (activePage - 1) * itemsPerPage + 1;
3439
+ var last = Math.min(activePage * itemsPerPage, totalItemsCount);
3440
+ return {
3441
+ first: first,
3442
+ last: last
3443
+ };
3458
3444
  };
3459
3445
 
3460
3446
  var Pagination = function Pagination(_ref) {
@@ -3477,23 +3463,31 @@ var Pagination = function Pagination(_ref) {
3477
3463
  _ref$prevPageText = _ref.prevPageText,
3478
3464
  prevPageText = _ref$prevPageText === void 0 ? 'Previous' : _ref$prevPageText;
3479
3465
  var pageTotal = useMemo(function () {
3466
+ if (itemsPerPage <= 0) return 1;
3480
3467
  return generatePageTotal(totalItemsCount, itemsPerPage);
3481
3468
  }, [totalItemsCount, itemsPerPage]);
3482
- var pageRange = useMemo(function () {
3483
- return generatePageRange(numberOfPagesDisplayed, pageTotal);
3484
- }, [numberOfPagesDisplayed, pageTotal]);
3469
+ var validActivePage = Math.max(1, Math.min(activePage, pageTotal));
3485
3470
  var activeListRange = useMemo(function () {
3486
- return generateActiveListRange(activePage, totalItemsCount, itemsPerPage);
3487
- }, [activePage, totalItemsCount, itemsPerPage]);
3471
+ return generateActiveListRange(validActivePage, totalItemsCount, itemsPerPage);
3472
+ }, [validActivePage, totalItemsCount, itemsPerPage]);
3488
3473
  var pages = useMemo(function () {
3489
- return generatePages(pageRange, pageTotal, activePage, numberOfPagesDisplayed);
3490
- }, [pageRange, pageTotal, activePage, numberOfPagesDisplayed]);
3474
+ return generatePages(pageTotal, validActivePage, numberOfPagesDisplayed);
3475
+ }, [pageTotal, validActivePage, numberOfPagesDisplayed]);
3476
+ var paginationClassNames = useMemo(function () {
3477
+ return classNames(className);
3478
+ }, [className]);
3479
+ var activeListRangeText = useMemo(function () {
3480
+ if (totalItemsCount === 0) {
3481
+ return 'No items to display';
3482
+ }
3483
+ return "Showing " + activeListRange.first + "-" + activeListRange.last + " of " + totalItemsCount;
3484
+ }, [activeListRange, totalItemsCount]);
3491
3485
  return React.createElement(Box, {
3492
3486
  as: "nav",
3493
3487
  direction: "row",
3494
3488
  alignItems: "center",
3495
3489
  justifyContent: "space-between",
3496
- className: classNames(className)
3490
+ className: paginationClassNames
3497
3491
  }, React.createElement(Box, {
3498
3492
  direction: "row",
3499
3493
  justifyContent: {
@@ -3507,18 +3501,17 @@ var Pagination = function Pagination(_ref) {
3507
3501
  }, React.createElement(Button, {
3508
3502
  variant: "secondary",
3509
3503
  size: isCompact ? 'sm' : 'md',
3510
- isDisabled: activePage === 1,
3504
+ isDisabled: validActivePage === 1,
3511
3505
  onClick: function onClick() {
3512
- return onChange(activePage - 1);
3506
+ return onChange(validActivePage - 1);
3513
3507
  }
3514
3508
  }, prevPageText), arePagesVisible && React.createElement(Box, {
3515
3509
  direction: "row",
3516
3510
  gap: "2xs"
3517
- }, pages.map(function (_ref2) {
3511
+ }, pages.map(function (_ref2, index) {
3518
3512
  var pageNumber = _ref2.pageNumber,
3519
3513
  isPage = _ref2.isPage;
3520
- console.log(activePage, pageNumber, isPage);
3521
- return React.createElement(Button, {
3514
+ return isPage ? React.createElement(Button, {
3522
3515
  key: pageNumber,
3523
3516
  onClick: function onClick() {
3524
3517
  return onChange(pageNumber);
@@ -3529,13 +3522,21 @@ var Pagination = function Pagination(_ref) {
3529
3522
  minWidth: isCompact ? '33px' : '42px'
3530
3523
  },
3531
3524
  className: className
3532
- }, isPage ? pageNumber : '...');
3525
+ }, pageNumber) : React.createElement(Box, {
3526
+ key: "ellipsis-" + index,
3527
+ style: {
3528
+ display: 'flexk',
3529
+ minWidth: isCompact ? '33px' : '42px',
3530
+ justifyContent: 'space-around',
3531
+ alignItems: 'center'
3532
+ }
3533
+ }, "...");
3533
3534
  })), React.createElement(Button, {
3534
3535
  variant: "secondary",
3535
3536
  size: isCompact ? 'sm' : 'md',
3536
- isDisabled: activePage === pageTotal,
3537
+ isDisabled: validActivePage === pageTotal,
3537
3538
  onClick: function onClick() {
3538
- return onChange(activePage + 1);
3539
+ return onChange(validActivePage + 1);
3539
3540
  }
3540
3541
  }, nextPageText)), React.createElement(Box, {
3541
3542
  as: "p",
@@ -3544,7 +3545,7 @@ var Pagination = function Pagination(_ref) {
3544
3545
  tablet: 'block'
3545
3546
  },
3546
3547
  fontSize: isCompact ? 'sm' : 'md'
3547
- }, isTotalVisible && "Showing " + activeListRange.first + "-" + activeListRange.last + " of " + totalItemsCount));
3548
+ }, isTotalVisible && activeListRangeText));
3548
3549
  };
3549
3550
 
3550
3551
  var styles$6 = {"slider":"RangeInput-module_slider__Z6D68","disabled":"RangeInput-module_disabled__gyu72"};