@coreui/react 5.0.0-alpha.0 → 5.0.0-alpha.2

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.
Files changed (66) hide show
  1. package/README.md +1 -1
  2. package/dist/components/avatar/CAvatar.d.ts +1 -1
  3. package/dist/components/badge/CBadge.d.ts +1 -1
  4. package/dist/components/card/CCard.d.ts +1 -1
  5. package/dist/components/close-button/CCloseButton.d.ts +6 -0
  6. package/dist/components/dropdown/CDropdown.d.ts +1 -0
  7. package/dist/components/modal/CModal.d.ts +6 -0
  8. package/dist/components/nav/CNav.d.ts +1 -1
  9. package/dist/components/navbar/CNavbar.d.ts +1 -1
  10. package/dist/components/offcanvas/COffcanvas.d.ts +4 -0
  11. package/dist/index.es.js +177 -81
  12. package/dist/index.es.js.map +1 -1
  13. package/dist/index.js +177 -81
  14. package/dist/index.js.map +1 -1
  15. package/dist/types.d.ts +1 -1
  16. package/dist/utils/executeAfterTransition.d.ts +2 -0
  17. package/dist/utils/getTransitionDurationFromElement.d.ts +2 -0
  18. package/dist/utils/index.d.ts +3 -1
  19. package/package.json +2 -2
  20. package/src/components/avatar/CAvatar.tsx +1 -1
  21. package/src/components/badge/CBadge.tsx +1 -1
  22. package/src/components/button/CButton.tsx +1 -1
  23. package/src/components/button/__tests__/__snapshots__/CButton.spec.tsx.snap +0 -1
  24. package/src/components/card/CCard.tsx +1 -1
  25. package/src/components/carousel/CCarousel.tsx +9 -5
  26. package/src/components/carousel/__tests__/__snapshots__/CCarousel.spec.tsx.snap +9 -5
  27. package/src/components/close-button/CCloseButton.tsx +9 -1
  28. package/src/components/dropdown/CDropdown.tsx +43 -1
  29. package/src/components/dropdown/CDropdownMenu.tsx +1 -1
  30. package/src/components/dropdown/CDropdownToggle.tsx +3 -12
  31. package/src/components/modal/CModal.tsx +25 -9
  32. package/src/components/nav/CNav.tsx +2 -2
  33. package/src/components/nav/CNavGroup.tsx +9 -2
  34. package/src/components/nav/__tests__/__snapshots__/CNav.spec.tsx.snap +5 -4
  35. package/src/components/navbar/CNavbar.tsx +2 -2
  36. package/src/components/navbar/__tests__/CNavbar.spec.tsx +1 -1
  37. package/src/components/navbar/__tests__/__snapshots__/CNavbar.spec.tsx.snap +2 -1
  38. package/src/components/offcanvas/COffcanvas.tsx +8 -1
  39. package/src/components/popover/CPopover.tsx +2 -2
  40. package/src/components/progress/__tests__/__snapshots__/CProgress.spec.tsx.snap +10 -5
  41. package/src/components/progress/__tests__/__snapshots__/CProgressBar.spec.tsx.snap +0 -8
  42. package/src/components/sidebar/CSidebar.tsx +1 -1
  43. package/src/components/tooltip/CTooltip.tsx +2 -2
  44. package/src/components/widgets/CWidgetStatsA.tsx +1 -1
  45. package/src/components/widgets/CWidgetStatsB.tsx +2 -2
  46. package/src/components/widgets/CWidgetStatsC.tsx +4 -12
  47. package/src/components/widgets/CWidgetStatsD.tsx +1 -1
  48. package/src/components/widgets/CWidgetStatsE.tsx +1 -1
  49. package/src/components/widgets/CWidgetStatsF.tsx +1 -1
  50. package/src/components/widgets/__tests__/CWidgetStatsA.spec.tsx +1 -1
  51. package/src/components/widgets/__tests__/CWidgetStatsB.spec.tsx +1 -1
  52. package/src/components/widgets/__tests__/CWidgetStatsC.spec.tsx +1 -1
  53. package/src/components/widgets/__tests__/CWidgetStatsD.spec.tsx +1 -1
  54. package/src/components/widgets/__tests__/CWidgetStatsE.spec.tsx +1 -1
  55. package/src/components/widgets/__tests__/CWidgetStatsF.spec.tsx +1 -1
  56. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsA.spec.tsx.snap +1 -1
  57. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsB.spec.tsx.snap +12 -7
  58. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsC.spec.tsx.snap +14 -9
  59. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsD.spec.tsx.snap +2 -2
  60. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsE.spec.tsx.snap +1 -1
  61. package/src/components/widgets/__tests__/__snapshots__/CWidgetStatsF.spec.tsx.snap +2 -2
  62. package/src/hooks/usePopper.ts +10 -2
  63. package/src/types.ts +14 -7
  64. package/src/utils/executeAfterTransition.ts +46 -0
  65. package/src/utils/getTransitionDurationFromElement.ts +24 -0
  66. package/src/utils/index.ts +9 -1
package/dist/index.es.js CHANGED
@@ -4357,14 +4357,103 @@ var createPopper = /*#__PURE__*/popperGenerator({
4357
4357
  defaultModifiers: defaultModifiers
4358
4358
  }); // eslint-disable-next-line import/no-unused-modules
4359
4359
 
4360
+ var getTransitionDurationFromElement = function (element) {
4361
+ if (!element) {
4362
+ return 0;
4363
+ }
4364
+ // Get transition-duration of the element
4365
+ var _a = window.getComputedStyle(element), transitionDuration = _a.transitionDuration, transitionDelay = _a.transitionDelay;
4366
+ var floatTransitionDuration = Number.parseFloat(transitionDuration);
4367
+ var floatTransitionDelay = Number.parseFloat(transitionDelay);
4368
+ // Return 0 if element or transition duration is not found
4369
+ if (!floatTransitionDuration && !floatTransitionDelay) {
4370
+ return 0;
4371
+ }
4372
+ // If multiple durations are defined, take the first
4373
+ transitionDuration = transitionDuration.split(',')[0];
4374
+ transitionDelay = transitionDelay.split(',')[0];
4375
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * 1000;
4376
+ };
4377
+
4378
+ var execute = function (callback) {
4379
+ if (typeof callback === 'function') {
4380
+ callback();
4381
+ }
4382
+ };
4383
+ var triggerTransitionEnd = function (element) {
4384
+ element.dispatchEvent(new Event('transitionend'));
4385
+ };
4386
+ var executeAfterTransition = function (callback, transitionElement, waitForTransition) {
4387
+ if (waitForTransition === void 0) { waitForTransition = true; }
4388
+ if (!waitForTransition) {
4389
+ execute(callback);
4390
+ return;
4391
+ }
4392
+ var durationPadding = 5;
4393
+ var emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
4394
+ var called = false;
4395
+ var handler = function (_a) {
4396
+ var target = _a.target;
4397
+ if (target !== transitionElement) {
4398
+ return;
4399
+ }
4400
+ called = true;
4401
+ transitionElement.removeEventListener('transitionend', handler);
4402
+ execute(callback);
4403
+ };
4404
+ transitionElement.addEventListener('transitionend', handler);
4405
+ setTimeout(function () {
4406
+ if (!called) {
4407
+ triggerTransitionEnd(transitionElement);
4408
+ }
4409
+ }, emulatedDuration);
4410
+ };
4411
+
4412
+ var isRTL = function (element) {
4413
+ if (typeof document !== 'undefined' && document.documentElement.dir === 'rtl') {
4414
+ return true;
4415
+ }
4416
+ if (element) {
4417
+ return element.closest('[dir="rtl"]') !== null;
4418
+ }
4419
+ return false;
4420
+ };
4421
+
4422
+ var getRTLPlacement = function (placement, element) {
4423
+ switch (placement) {
4424
+ case 'right': {
4425
+ return isRTL(element) ? 'left' : 'right';
4426
+ }
4427
+ case 'left': {
4428
+ return isRTL(element) ? 'right' : 'left';
4429
+ }
4430
+ default: {
4431
+ return placement;
4432
+ }
4433
+ }
4434
+ };
4435
+
4436
+ var isInViewport = function (element) {
4437
+ var rect = element.getBoundingClientRect();
4438
+ return (Math.floor(rect.top) >= 0 &&
4439
+ Math.floor(rect.left) >= 0 &&
4440
+ Math.floor(rect.bottom) <= (window.innerHeight || document.documentElement.clientHeight) &&
4441
+ Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth));
4442
+ };
4443
+
4360
4444
  var usePopper = function () {
4361
4445
  var _popper = useRef();
4446
+ var el = useRef();
4362
4447
  var initPopper = function (reference, popper, options) {
4363
4448
  _popper.current = createPopper(reference, popper, options);
4449
+ el.current = popper;
4364
4450
  };
4365
4451
  var destroyPopper = function () {
4366
- if (_popper.current) {
4367
- _popper.current.destroy();
4452
+ var popperInstance = _popper.current;
4453
+ if (popperInstance && el.current) {
4454
+ executeAfterTransition(function () {
4455
+ popperInstance.destroy();
4456
+ }, el.current);
4368
4457
  }
4369
4458
  _popper.current = undefined;
4370
4459
  };
@@ -4474,13 +4563,14 @@ CAccordionHeader.propTypes = {
4474
4563
  CAccordionHeader.displayName = 'CAccordionHeader';
4475
4564
 
4476
4565
  var CCloseButton = forwardRef(function (_a, ref) {
4477
- var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest(_a, ["className", "disabled", "white"]);
4566
+ var className = _a.className, dark = _a.dark, disabled = _a.disabled, white = _a.white, rest = __rest(_a, ["className", "dark", "disabled", "white"]);
4478
4567
  return (React.createElement("button", __assign({ type: "button", className: classNames('btn', 'btn-close', {
4479
4568
  'btn-close-white': white,
4480
- }, disabled, className), "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
4569
+ }, disabled, className), "aria-label": "Close", disabled: disabled }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: ref })));
4481
4570
  });
4482
4571
  CCloseButton.propTypes = {
4483
4572
  className: PropTypes.string,
4573
+ dark: PropTypes.bool,
4484
4574
  disabled: PropTypes.bool,
4485
4575
  white: PropTypes.bool,
4486
4576
  };
@@ -4707,7 +4797,7 @@ CBreadcrumbItem.displayName = 'CBreadcrumbItem';
4707
4797
  var CButton = forwardRef(function (_a, ref) {
4708
4798
  var _b;
4709
4799
  var children = _a.children, className = _a.className, _c = _a.color, color = _c === void 0 ? 'primary' : _c, _d = _a.component, component = _d === void 0 ? 'button' : _d, shape = _a.shape, size = _a.size, _e = _a.type, type = _e === void 0 ? 'button' : _e, variant = _a.variant, rest = __rest(_a, ["children", "className", "color", "component", "shape", "size", "type", "variant"]);
4710
- return (React.createElement(CLink, __assign({ component: rest.href ? 'a' : component, type: type, className: classNames('btn', variant ? "btn-".concat(variant, "-").concat(color) : "btn-".concat(color), (_b = {}, _b["btn-".concat(size)] = size, _b), shape, className) }, rest, { ref: ref }), children));
4800
+ return (React.createElement(CLink, __assign({ component: rest.href ? 'a' : component }, (!rest.href && { type: type }), { className: classNames('btn', variant ? "btn-".concat(variant, "-").concat(color) : "btn-".concat(color), (_b = {}, _b["btn-".concat(size)] = size, _b), shape, className) }, rest, { ref: ref }), children));
4711
4801
  });
4712
4802
  CButton.propTypes = {
4713
4803
  children: PropTypes.node,
@@ -4880,38 +4970,6 @@ CCardTitle.propTypes = {
4880
4970
  };
4881
4971
  CCardTitle.displayName = 'CCardTitle';
4882
4972
 
4883
- var isRTL = function (element) {
4884
- if (typeof document !== 'undefined' && document.documentElement.dir === 'rtl') {
4885
- return true;
4886
- }
4887
- if (element) {
4888
- return element.closest('[dir="rtl"]') !== null;
4889
- }
4890
- return false;
4891
- };
4892
-
4893
- var getRTLPlacement = function (placement, element) {
4894
- switch (placement) {
4895
- case 'right': {
4896
- return isRTL(element) ? 'left' : 'right';
4897
- }
4898
- case 'left': {
4899
- return isRTL(element) ? 'right' : 'left';
4900
- }
4901
- default: {
4902
- return placement;
4903
- }
4904
- }
4905
- };
4906
-
4907
- var isInViewport = function (element) {
4908
- var rect = element.getBoundingClientRect();
4909
- return (Math.floor(rect.top) >= 0 &&
4910
- Math.floor(rect.left) >= 0 &&
4911
- Math.floor(rect.bottom) <= (window.innerHeight || document.documentElement.clientHeight) &&
4912
- Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth));
4913
- };
4914
-
4915
4973
  var CCarouselContext = createContext({});
4916
4974
  var CCarousel = forwardRef(function (_a, ref) {
4917
4975
  var children = _a.children, _b = _a.activeIndex, activeIndex = _b === void 0 ? 0 : _b, className = _a.className, controls = _a.controls, dark = _a.dark, indicators = _a.indicators, _c = _a.interval, interval = _c === void 0 ? 5000 : _c, onSlid = _a.onSlid, onSlide = _a.onSlide, _d = _a.pause, pause = _d === void 0 ? 'hover' : _d, _e = _a.touch, touch = _e === void 0 ? true : _e, transition = _a.transition, _f = _a.wrap, wrap = _f === void 0 ? true : _f, rest = __rest(_a, ["children", "activeIndex", "className", "controls", "dark", "indicators", "interval", "onSlid", "onSlide", "pause", "touch", "transition", "wrap"]);
@@ -5016,17 +5074,18 @@ var CCarousel = forwardRef(function (_a, ref) {
5016
5074
  setTouchPosition(touchDown);
5017
5075
  };
5018
5076
  return (React.createElement("div", __assign({ className: classNames('carousel slide', {
5019
- 'carousel-dark': dark,
5020
5077
  'carousel-fade': transition === 'crossfade',
5021
- }, className), onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5078
+ }, className) }, (dark && { 'data-coreui-theme': 'dark' }), { onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5022
5079
  React.createElement(CCarouselContext.Provider, { value: {
5023
5080
  setAnimating: setAnimating,
5024
5081
  setCustomInterval: setCustomInterval,
5025
5082
  } },
5026
- indicators && (React.createElement("ol", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5027
- return (React.createElement("li", { key: "indicator".concat(index), onClick: function () {
5083
+ indicators && (React.createElement("div", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5084
+ return (React.createElement("button", __assign({ key: "indicator".concat(index), onClick: function () {
5028
5085
  !animating && handleIndicatorClick(index);
5029
- }, className: active === index ? 'active' : '', "data-coreui-target": "" }));
5086
+ }, className: classNames({
5087
+ active: active === index
5088
+ }), "data-coreui-target": "" }, (active === index && { 'aria-current': true }), { "aria-label": "Slide ".concat(index + 1) })));
5030
5089
  }))),
5031
5090
  React.createElement("div", { className: "carousel-inner" }, Children.map(children, function (child, index) {
5032
5091
  if (React.isValidElement(child)) {
@@ -5159,6 +5218,18 @@ CConditionalPortal.propTypes = {
5159
5218
  };
5160
5219
  CConditionalPortal.displayName = 'CConditionalPortal';
5161
5220
 
5221
+ var getNextActiveElement = function (list, activeElement, shouldGetNext, isCycleAllowed) {
5222
+ var listLength = list.length;
5223
+ var index = list.indexOf(activeElement);
5224
+ if (index === -1) {
5225
+ return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
5226
+ }
5227
+ index += shouldGetNext ? 1 : -1;
5228
+ if (isCycleAllowed) {
5229
+ index = (index + listLength) % listLength;
5230
+ }
5231
+ return list[Math.max(0, Math.min(index, listLength - 1))];
5232
+ };
5162
5233
  var getPlacement = function (placement, direction, alignment, isRTL) {
5163
5234
  var _placement = placement;
5164
5235
  if (direction === 'dropup') {
@@ -5221,18 +5292,33 @@ var CDropdown = forwardRef(function (_a, ref) {
5221
5292
  }, [visible]);
5222
5293
  useEffect(function () {
5223
5294
  if (_visible && dropdownToggleRef.current && dropdownMenuRef.current) {
5295
+ dropdownToggleRef.current.focus();
5224
5296
  popper && initPopper(dropdownToggleRef.current, dropdownMenuRef.current, popperConfig);
5225
5297
  window.addEventListener('mouseup', handleMouseUp);
5226
5298
  window.addEventListener('keyup', handleKeyup);
5299
+ dropdownToggleRef.current.addEventListener('keydown', handleKeydown);
5300
+ dropdownMenuRef.current.addEventListener('keydown', handleKeydown);
5227
5301
  onShow && onShow();
5228
5302
  }
5229
5303
  return function () {
5230
5304
  popper && destroyPopper();
5231
5305
  window.removeEventListener('mouseup', handleMouseUp);
5232
5306
  window.removeEventListener('keyup', handleKeyup);
5307
+ dropdownToggleRef.current &&
5308
+ dropdownToggleRef.current.removeEventListener('keydown', handleKeydown);
5309
+ dropdownMenuRef.current &&
5310
+ dropdownMenuRef.current.removeEventListener('keydown', handleKeydown);
5233
5311
  onHide && onHide();
5234
5312
  };
5235
5313
  }, [_visible]);
5314
+ var handleKeydown = function (event) {
5315
+ if (_visible && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
5316
+ var target = event.target;
5317
+ event.preventDefault();
5318
+ var items = [].concat.apply([], Element.prototype.querySelectorAll.call(dropdownMenuRef.current, '.dropdown-item:not(.disabled):not(:disabled)'));
5319
+ getNextActiveElement(items, target, event.key === 'ArrowDown', true).focus();
5320
+ }
5321
+ };
5236
5322
  var handleKeyup = function (event) {
5237
5323
  if (autoClose === false) {
5238
5324
  return;
@@ -5260,7 +5346,6 @@ var CDropdown = forwardRef(function (_a, ref) {
5260
5346
  'dropup dropup-center': direction === 'dropup-center'
5261
5347
  },
5262
5348
  _b["".concat(direction)] = direction && direction !== 'center' && direction !== 'dropup-center',
5263
- _b.show = _visible,
5264
5349
  _b), className) }, rest, { ref: forkedRef }), children))));
5265
5350
  });
5266
5351
  var alignmentDirection = PropTypes.oneOf(['start', 'end']);
@@ -5354,9 +5439,8 @@ var CDropdownMenu = forwardRef(function (_a, ref) {
5354
5439
  var forkedRef = useForkedRef(ref, dropdownMenuRef);
5355
5440
  return (React.createElement(CConditionalPortal, { portal: portal !== null && portal !== void 0 ? portal : false },
5356
5441
  React.createElement(Component, __assign({ className: classNames('dropdown-menu', {
5357
- 'dropdown-menu-dark': dark,
5358
5442
  show: visible,
5359
- }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), rest), Component === 'ul'
5443
+ }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), (dark && { 'data-coreui-theme': 'dark' }), rest), Component === 'ul'
5360
5444
  ? React.Children.map(children, function (child, index) {
5361
5445
  if (React.isValidElement(child)) {
5362
5446
  return React.createElement("li", { key: index }, React.cloneElement(child));
@@ -5374,7 +5458,7 @@ CDropdownMenu.displayName = 'CDropdownMenu';
5374
5458
 
5375
5459
  var CDropdownToggle = function (_a) {
5376
5460
  var children = _a.children, _b = _a.caret, caret = _b === void 0 ? true : _b, custom = _a.custom, className = _a.className, split = _a.split, _c = _a.trigger, trigger = _c === void 0 ? 'click' : _c, rest = __rest(_a, ["children", "caret", "custom", "className", "split", "trigger"]);
5377
- var _d = useContext(CDropdownContext), dropdownToggleRef = _d.dropdownToggleRef, variant = _d.variant, visible = _d.visible, setVisible = _d.setVisible;
5461
+ var _d = useContext(CDropdownContext), dropdownToggleRef = _d.dropdownToggleRef, visible = _d.visible, setVisible = _d.setVisible;
5378
5462
  var triggers = __assign(__assign({}, ((trigger === 'click' || trigger.includes('click')) && {
5379
5463
  onClick: function (event) {
5380
5464
  event.preventDefault();
@@ -5387,17 +5471,13 @@ var CDropdownToggle = function (_a) {
5387
5471
  var togglerProps = __assign({ className: classNames({
5388
5472
  'dropdown-toggle': caret,
5389
5473
  'dropdown-toggle-split': split,
5390
- 'nav-link': variant === 'nav-item',
5474
+ show: visible,
5391
5475
  }, className), 'aria-expanded': visible }, (!rest.disabled && __assign({}, triggers)));
5392
- // We use any because Toggler can be `a` as well as `button`.
5393
5476
  var Toggler = function () {
5394
5477
  if (custom && React.isValidElement(children)) {
5395
5478
  return (React.createElement(React.Fragment, null, React.cloneElement(children, __assign(__assign({ 'aria-expanded': visible }, (!rest.disabled && __assign({}, triggers))), { ref: dropdownToggleRef }))));
5396
5479
  }
5397
- if (variant === 'nav-item') {
5398
- return (React.createElement("a", __assign({ href: "#" }, togglerProps, { ref: dropdownToggleRef }), children));
5399
- }
5400
- return (React.createElement(CButton, __assign({ type: "button" }, togglerProps, { tabIndex: 0 }, rest, { ref: dropdownToggleRef }),
5480
+ return (React.createElement(CButton, __assign({}, togglerProps, { tabIndex: 0 }, rest, { ref: dropdownToggleRef }),
5401
5481
  children,
5402
5482
  split && React.createElement("span", { className: "visually-hidden" }, "Toggle Dropdown")));
5403
5483
  };
@@ -6017,12 +6097,13 @@ CModalDialog.displayName = 'CModalDialog';
6017
6097
 
6018
6098
  var CModalContext = createContext({});
6019
6099
  var CModal = forwardRef(function (_a, ref) {
6020
- var children = _a.children, alignment = _a.alignment, _b = _a.backdrop, backdrop = _b === void 0 ? true : _b, className = _a.className, _c = _a.duration, duration = _c === void 0 ? 150 : _c, fullscreen = _a.fullscreen, _d = _a.keyboard, keyboard = _d === void 0 ? true : _d, onClose = _a.onClose, onClosePrevented = _a.onClosePrevented, onShow = _a.onShow, _e = _a.portal, portal = _e === void 0 ? true : _e, scrollable = _a.scrollable, size = _a.size, _f = _a.transition, transition = _f === void 0 ? true : _f, _g = _a.unmountOnClose, unmountOnClose = _g === void 0 ? true : _g, visible = _a.visible, rest = __rest(_a, ["children", "alignment", "backdrop", "className", "duration", "fullscreen", "keyboard", "onClose", "onClosePrevented", "onShow", "portal", "scrollable", "size", "transition", "unmountOnClose", "visible"]);
6100
+ var children = _a.children, alignment = _a.alignment, _b = _a.backdrop, backdrop = _b === void 0 ? true : _b, className = _a.className, _c = _a.duration, duration = _c === void 0 ? 150 : _c, _d = _a.focus, focus = _d === void 0 ? true : _d, fullscreen = _a.fullscreen, _e = _a.keyboard, keyboard = _e === void 0 ? true : _e, onClose = _a.onClose, onClosePrevented = _a.onClosePrevented, onShow = _a.onShow, _f = _a.portal, portal = _f === void 0 ? true : _f, scrollable = _a.scrollable, size = _a.size, _g = _a.transition, transition = _g === void 0 ? true : _g, _h = _a.unmountOnClose, unmountOnClose = _h === void 0 ? true : _h, visible = _a.visible, rest = __rest(_a, ["children", "alignment", "backdrop", "className", "duration", "focus", "fullscreen", "keyboard", "onClose", "onClosePrevented", "onShow", "portal", "scrollable", "size", "transition", "unmountOnClose", "visible"]);
6101
+ var activeElementRef = useRef(null);
6021
6102
  var modalRef = useRef(null);
6022
6103
  var modalContentRef = useRef(null);
6023
6104
  var forkedRef = useForkedRef(ref, modalRef);
6024
- var _h = useState(visible), _visible = _h[0], setVisible = _h[1];
6025
- var _j = useState(false), staticBackdrop = _j[0], setStaticBackdrop = _j[1];
6105
+ var _j = useState(visible), _visible = _j[0], setVisible = _j[1];
6106
+ var _k = useState(false), staticBackdrop = _k[0], setStaticBackdrop = _k[1];
6026
6107
  var contextValues = {
6027
6108
  visible: _visible,
6028
6109
  setVisible: setVisible,
@@ -6031,10 +6112,17 @@ var CModal = forwardRef(function (_a, ref) {
6031
6112
  setVisible(visible);
6032
6113
  }, [visible]);
6033
6114
  useEffect(function () {
6034
- document.addEventListener('click', handleClickOutside);
6035
- document.addEventListener('keydown', handleKeyDown);
6115
+ var _a;
6116
+ if (_visible) {
6117
+ activeElementRef.current = document.activeElement;
6118
+ document.addEventListener('mouseup', handleClickOutside);
6119
+ document.addEventListener('keydown', handleKeyDown);
6120
+ }
6121
+ else {
6122
+ (_a = activeElementRef.current) === null || _a === void 0 ? void 0 : _a.focus();
6123
+ }
6036
6124
  return function () {
6037
- document.removeEventListener('click', handleClickOutside);
6125
+ document.removeEventListener('mouseup', handleClickOutside);
6038
6126
  document.removeEventListener('keydown', handleKeyDown);
6039
6127
  };
6040
6128
  }, [_visible]);
@@ -6059,7 +6147,7 @@ var CModal = forwardRef(function (_a, ref) {
6059
6147
  }
6060
6148
  setTimeout(function () {
6061
6149
  var _a;
6062
- (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.focus();
6150
+ focus && ((_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.focus());
6063
6151
  }, transition ? duration : 0);
6064
6152
  }
6065
6153
  else {
@@ -6091,13 +6179,15 @@ var CModal = forwardRef(function (_a, ref) {
6091
6179
  return (React.createElement(React.Fragment, null,
6092
6180
  React.createElement(Transition$1, { in: _visible, mountOnEnter: true, nodeRef: modalRef, onEnter: onShow, onExit: onClose, unmountOnExit: unmountOnClose, timeout: transition ? duration : 0 }, function (state) { return (React.createElement(CConditionalPortal, { portal: portal },
6093
6181
  React.createElement(CModalContext.Provider, { value: contextValues },
6094
- React.createElement("div", { className: classNames('modal', {
6182
+ React.createElement("div", __assign({ className: classNames('modal', {
6095
6183
  'modal-static': staticBackdrop,
6096
6184
  fade: transition,
6097
6185
  show: state === 'entered',
6098
- }, className), tabIndex: -1, role: "dialog", style: __assign({}, (state !== 'exited' && { display: 'block' })), ref: forkedRef },
6186
+ }, className), tabIndex: -1 }, (_visible
6187
+ ? { 'aria-modal': true, role: 'dialog' }
6188
+ : { 'aria-hidden': 'true' }), { style: __assign({}, (state !== 'exited' && { display: 'block' })) }, rest, { ref: forkedRef }),
6099
6189
  React.createElement(CModalDialog, { alignment: alignment, fullscreen: fullscreen, scrollable: scrollable, size: size },
6100
- React.createElement(CModalContent, __assign({}, rest, { ref: modalContentRef }), children)))))); }),
6190
+ React.createElement(CModalContent, { ref: modalContentRef }, children)))))); }),
6101
6191
  backdrop && (React.createElement(CConditionalPortal, { portal: portal },
6102
6192
  React.createElement(CBackdrop, { visible: _visible })))));
6103
6193
  });
@@ -6107,6 +6197,7 @@ CModal.propTypes = {
6107
6197
  children: PropTypes.node,
6108
6198
  className: PropTypes.string,
6109
6199
  duration: PropTypes.number,
6200
+ focus: PropTypes.bool,
6110
6201
  fullscreen: PropTypes.oneOfType([
6111
6202
  PropTypes.bool,
6112
6203
  PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
@@ -6182,7 +6273,7 @@ CNav.propTypes = {
6182
6273
  className: PropTypes.string,
6183
6274
  component: PropTypes.elementType,
6184
6275
  layout: PropTypes.oneOf(['fill', 'justified']),
6185
- variant: PropTypes.oneOf(['tabs', 'pills']),
6276
+ variant: PropTypes.oneOf(['pills', 'tabs', 'underline']),
6186
6277
  };
6187
6278
  CNav.displayName = 'CNav';
6188
6279
 
@@ -6221,14 +6312,19 @@ CSidebarNav.propTypes = {
6221
6312
  };
6222
6313
  CSidebarNav.displayName = 'CSidebarNav';
6223
6314
 
6315
+ var isInVisibleGroup = function (el1, el2) {
6316
+ var array1 = el1.toString().split('.');
6317
+ var array2 = el2.toString().split('.');
6318
+ return array2.every(function (item, index) { return item === array1[index]; });
6319
+ };
6224
6320
  var CNavGroup = forwardRef(function (_a, ref) {
6225
6321
  var children = _a.children, className = _a.className, compact = _a.compact, idx = _a.idx, toggler = _a.toggler, visible = _a.visible, rest = __rest(_a, ["children", "className", "compact", "idx", "toggler", "visible"]);
6226
6322
  var _b = useState(), height = _b[0], setHeight = _b[1];
6227
6323
  var navItemsRef = useRef(null);
6228
6324
  var _c = useContext(CNavContext), visibleGroup = _c.visibleGroup, setVisibleGroup = _c.setVisibleGroup;
6229
- var _d = useState(Boolean(visible || (idx && visibleGroup && visibleGroup.toString().startsWith(idx.toString())))), _visible = _d[0], setVisible = _d[1];
6325
+ var _d = useState(Boolean(visible || (idx && visibleGroup && isInVisibleGroup(visibleGroup, idx)))), _visible = _d[0], setVisible = _d[1];
6230
6326
  useEffect(function () {
6231
- setVisible(Boolean(idx && visibleGroup && visibleGroup.toString().startsWith(idx.toString())));
6327
+ setVisible(Boolean(idx && visibleGroup && isInVisibleGroup(visibleGroup, idx)));
6232
6328
  }, [visibleGroup]);
6233
6329
  var handleTogglerOnCLick = function (event) {
6234
6330
  event.preventDefault();
@@ -6331,9 +6427,8 @@ var CNavbar = forwardRef(function (_a, ref) {
6331
6427
  var children = _a.children, className = _a.className, color = _a.color, colorScheme = _a.colorScheme, _c = _a.component, Component = _c === void 0 ? 'nav' : _c, container = _a.container, expand = _a.expand, placement = _a.placement, rest = __rest(_a, ["children", "className", "color", "colorScheme", "component", "container", "expand", "placement"]);
6332
6428
  return (React.createElement(Component, __assign({ className: classNames('navbar', (_b = {},
6333
6429
  _b["bg-".concat(color)] = color,
6334
- _b["navbar-".concat(colorScheme)] = colorScheme,
6335
6430
  _b[typeof expand === 'boolean' ? 'navbar-expand' : "navbar-expand-".concat(expand)] = expand,
6336
- _b), placement, className) }, rest, { ref: ref }), container ? (React.createElement("div", { className: typeof container === 'string' ? "container-".concat(container) : 'container' }, children)) : (React.createElement(React.Fragment, null, children))));
6431
+ _b), placement, className) }, (colorScheme && { 'data-coreui-theme': colorScheme }), rest, { ref: ref }), container ? (React.createElement("div", { className: typeof container === 'string' ? "container-".concat(container) : 'container' }, children)) : (React.createElement(React.Fragment, null, children))));
6337
6432
  });
6338
6433
  CNavbar.propTypes = {
6339
6434
  children: PropTypes.node,
@@ -6404,7 +6499,7 @@ CNavbarToggler.propTypes = {
6404
6499
  CNavbarToggler.displayName = 'CNavbarToggler';
6405
6500
 
6406
6501
  var COffcanvas = forwardRef(function (_a, ref) {
6407
- var children = _a.children, _b = _a.backdrop, backdrop = _b === void 0 ? true : _b, className = _a.className, _c = _a.keyboard, keyboard = _c === void 0 ? true : _c, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _d = _a.portal, portal = _d === void 0 ? false : _d, _e = _a.responsive, responsive = _e === void 0 ? true : _e, _f = _a.scroll, scroll = _f === void 0 ? false : _f, _g = _a.visible, visible = _g === void 0 ? false : _g, rest = __rest(_a, ["children", "backdrop", "className", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
6502
+ var children = _a.children, _b = _a.backdrop, backdrop = _b === void 0 ? true : _b, className = _a.className, dark = _a.dark, _c = _a.keyboard, keyboard = _c === void 0 ? true : _c, onHide = _a.onHide, onShow = _a.onShow, placement = _a.placement, _d = _a.portal, portal = _d === void 0 ? false : _d, _e = _a.responsive, responsive = _e === void 0 ? true : _e, _f = _a.scroll, scroll = _f === void 0 ? false : _f, _g = _a.visible, visible = _g === void 0 ? false : _g, rest = __rest(_a, ["children", "backdrop", "className", "dark", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
6408
6503
  var _h = useState(visible), _visible = _h[0], setVisible = _h[1];
6409
6504
  var offcanvasRef = useRef(null);
6410
6505
  var forkedRef = useForkedRef(ref, offcanvasRef);
@@ -6445,7 +6540,7 @@ var COffcanvas = forwardRef(function (_a, ref) {
6445
6540
  _a.showing = state === 'entering',
6446
6541
  _a.show = state === 'entered',
6447
6542
  _a['show hiding'] = state === 'exiting',
6448
- _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: forkedRef }), children)));
6543
+ _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: forkedRef }), children)));
6449
6544
  }),
6450
6545
  backdrop && (React.createElement(CConditionalPortal, { portal: portal },
6451
6546
  React.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible })))));
@@ -6454,6 +6549,7 @@ COffcanvas.propTypes = {
6454
6549
  backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),
6455
6550
  children: PropTypes.node,
6456
6551
  className: PropTypes.string,
6552
+ dark: PropTypes.bool,
6457
6553
  keyboard: PropTypes.bool,
6458
6554
  onHide: PropTypes.func,
6459
6555
  onShow: PropTypes.func,
@@ -6697,7 +6793,7 @@ var CPopover = function (_a) {
6697
6793
  typeof window !== 'undefined' &&
6698
6794
  createPortal(React.createElement(Transition$1, { in: _visible, mountOnEnter: true, nodeRef: popoverRef, onEnter: onShow, onExit: onHide, timeout: {
6699
6795
  enter: 0,
6700
- exit: 200,
6796
+ exit: popoverRef.current ? getTransitionDurationFromElement(popoverRef.current) + 50 : 200,
6701
6797
  }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('popover', 'bs-popover-auto', {
6702
6798
  fade: animation,
6703
6799
  show: state === 'entered',
@@ -7310,7 +7406,7 @@ var CTooltip = function (_a) {
7310
7406
  typeof window !== 'undefined' &&
7311
7407
  createPortal(React.createElement(Transition$1, { in: _visible, mountOnEnter: true, onEnter: onShow, onExit: onHide, timeout: {
7312
7408
  enter: 0,
7313
- exit: 200,
7409
+ exit: tooltipRef.current ? getTransitionDurationFromElement(tooltipRef.current) + 50 : 200,
7314
7410
  }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('tooltip', 'bs-tooltip-auto', {
7315
7411
  fade: animation,
7316
7412
  show: state === 'entered',
@@ -7342,7 +7438,7 @@ CTooltip.displayName = 'CTooltip';
7342
7438
  var CWidgetStatsA = forwardRef(function (_a, ref) {
7343
7439
  var _b;
7344
7440
  var action = _a.action, chart = _a.chart, className = _a.className, color = _a.color, title = _a.title, value = _a.value, rest = __rest(_a, ["action", "chart", "className", "color", "title", "value"]);
7345
- return (React.createElement(CCard, __assign({ className: classNames((_b = {}, _b["bg-".concat(color)] = color, _b['text-high-emphasis-inverse'] = color, _b), className) }, rest, { ref: ref }),
7441
+ return (React.createElement(CCard, __assign({ className: classNames((_b = {}, _b["bg-".concat(color)] = color, _b['text-white'] = color, _b), className) }, rest, { ref: ref }),
7346
7442
  React.createElement(CCardBody, { className: "pb-0 d-flex justify-content-between align-items-start" },
7347
7443
  React.createElement("div", null,
7348
7444
  value && React.createElement("div", { className: "fs-4 fw-semibold" }, value),
@@ -7362,12 +7458,12 @@ CWidgetStatsA.displayName = 'CWidgetStatsA';
7362
7458
 
7363
7459
  var CWidgetStatsB = forwardRef(function (_a, ref) {
7364
7460
  var className = _a.className, color = _a.color, inverse = _a.inverse, progress = _a.progress, text = _a.text, title = _a.title, value = _a.value, rest = __rest(_a, ["className", "color", "inverse", "progress", "text", "title", "value"]);
7365
- return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'high-emphasis-inverse' }), rest, { ref: ref }),
7461
+ return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'white' }), rest, { ref: ref }),
7366
7462
  React.createElement(CCardBody, null,
7367
7463
  value && React.createElement("div", { className: "fs-4 fw-semibold" }, value),
7368
7464
  title && React.createElement("div", null, title),
7369
7465
  React.createElement(CProgress, __assign({ className: "my-2", height: 4 }, (inverse && { white: true }), progress)),
7370
- text && (React.createElement("small", { className: inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis' }, text)))));
7466
+ text && (React.createElement("small", { className: inverse ? 'text-white text-opacity-75' : 'text-body-secondary' }, text)))));
7371
7467
  });
7372
7468
  CWidgetStatsB.propTypes = {
7373
7469
  className: PropTypes.string,
@@ -7382,11 +7478,11 @@ CWidgetStatsB.displayName = 'CWidgetCWidgetStatsB';
7382
7478
 
7383
7479
  var CWidgetStatsC = forwardRef(function (_a, ref) {
7384
7480
  var className = _a.className, color = _a.color, icon = _a.icon, inverse = _a.inverse, progress = _a.progress, title = _a.title, value = _a.value, rest = __rest(_a, ["className", "color", "icon", "inverse", "progress", "title", "value"]);
7385
- return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'high-emphasis-inverse' }), rest, { ref: ref }),
7481
+ return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'white' }), rest, { ref: ref }),
7386
7482
  React.createElement(CCardBody, null,
7387
- icon && (React.createElement("div", { className: "text-medium-emphasis".concat(inverse ? '-inverse' : '', " text-end mb-4") }, icon)),
7388
- value && (React.createElement("div", { className: "text-high-emphasis".concat(inverse ? '-inverse' : '', " fs-4 fw-semibold") }, value)),
7389
- title && (React.createElement("div", { className: inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis' }, title)),
7483
+ icon && React.createElement("div", { className: "text-end mb-4" }, icon),
7484
+ value && React.createElement("div", { className: "fs-4 fw-semibold" }, value),
7485
+ title && (React.createElement("div", { className: inverse ? 'text-white text-opacity-75' : 'text-body-secondary' }, title)),
7390
7486
  React.createElement(CProgress, __assign({ className: "mt-3 mb-0", height: 4 }, (inverse && { white: true }), progress)))));
7391
7487
  });
7392
7488
  CWidgetStatsC.propTypes = {
@@ -7415,7 +7511,7 @@ var CWidgetStatsD = forwardRef(function (_a, ref) {
7415
7511
  index % 2 !== 0 && React.createElement("div", { className: "vr" }),
7416
7512
  React.createElement(CCol, null,
7417
7513
  React.createElement("div", { className: "fs-5 fw-semibold" }, value.value),
7418
- React.createElement("div", { className: "text-uppercase text-medium-emphasis small" }, value.title))));
7514
+ React.createElement("div", { className: "text-uppercase text-body-secondary small" }, value.title))));
7419
7515
  }))));
7420
7516
  });
7421
7517
  CWidgetStatsD.propTypes = {
@@ -7431,7 +7527,7 @@ var CWidgetStatsE = forwardRef(function (_a, ref) {
7431
7527
  var chart = _a.chart, className = _a.className, title = _a.title, value = _a.value, rest = __rest(_a, ["chart", "className", "title", "value"]);
7432
7528
  return (React.createElement(CCard, __assign({ className: classNames(className) }, rest, { ref: ref }),
7433
7529
  React.createElement(CCardBody, { className: "text-center" },
7434
- title && (React.createElement("div", { className: "text-medium-emphasis small text-uppercase fw-semibold" }, title)),
7530
+ title && (React.createElement("div", { className: "text-body-secondary small text-uppercase fw-semibold" }, title)),
7435
7531
  value && React.createElement("div", { className: "fs-6 fw-semibold py-3" }, value),
7436
7532
  chart)));
7437
7533
  });
@@ -7451,7 +7547,7 @@ var CWidgetStatsF = forwardRef(function (_a, ref) {
7451
7547
  React.createElement("div", { className: "me-3 text-white bg-".concat(color, " ").concat(padding ? 'p-3' : 'p-4') }, icon),
7452
7548
  React.createElement("div", null,
7453
7549
  React.createElement("div", { className: "fs-6 fw-semibold text-".concat(color) }, value),
7454
- React.createElement("div", { className: "text-medium-emphasis text-uppercase fw-semibold small" }, title))),
7550
+ React.createElement("div", { className: "text-body-secondary text-uppercase fw-semibold small" }, title))),
7455
7551
  footer && React.createElement(CCardFooter, null, footer)));
7456
7552
  });
7457
7553
  CWidgetStatsF.propTypes = {