@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.
@@ -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
  };
@@ -5253,6 +5253,10 @@
5253
5253
  display: table-cell;
5254
5254
  }
5255
5255
 
5256
+ .display-contents {
5257
+ display: contents;
5258
+ }
5259
+
5256
5260
  @media (min-width: 680px) {
5257
5261
  .display-inherit-tablet {
5258
5262
  display: inherit;
@@ -5281,6 +5285,9 @@
5281
5285
  .display-table-cell-tablet {
5282
5286
  display: table-cell;
5283
5287
  }
5288
+ .display-contents-tablet {
5289
+ display: contents;
5290
+ }
5284
5291
  }
5285
5292
  @media (min-width: 992px) {
5286
5293
  .display-inherit-desktop {
@@ -5310,6 +5317,9 @@
5310
5317
  .display-table-cell-desktop {
5311
5318
  display: table-cell;
5312
5319
  }
5320
+ .display-contents-desktop {
5321
+ display: contents;
5322
+ }
5313
5323
  }
5314
5324
  @media (min-width: 1280px) {
5315
5325
  .display-inherit-hd {
@@ -5339,6 +5349,9 @@
5339
5349
  .display-table-cell-hd {
5340
5350
  display: table-cell;
5341
5351
  }
5352
+ .display-contents-hd {
5353
+ display: contents;
5354
+ }
5342
5355
  }
5343
5356
  .flex-auto {
5344
5357
  flex: 1 1 auto;
@@ -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"};