@hyphen/hyphen-components 2.13.0 → 2.13.1

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