@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.js CHANGED
@@ -4359,14 +4359,103 @@ var createPopper = /*#__PURE__*/popperGenerator({
4359
4359
  defaultModifiers: defaultModifiers
4360
4360
  }); // eslint-disable-next-line import/no-unused-modules
4361
4361
 
4362
+ var getTransitionDurationFromElement = function (element) {
4363
+ if (!element) {
4364
+ return 0;
4365
+ }
4366
+ // Get transition-duration of the element
4367
+ var _a = window.getComputedStyle(element), transitionDuration = _a.transitionDuration, transitionDelay = _a.transitionDelay;
4368
+ var floatTransitionDuration = Number.parseFloat(transitionDuration);
4369
+ var floatTransitionDelay = Number.parseFloat(transitionDelay);
4370
+ // Return 0 if element or transition duration is not found
4371
+ if (!floatTransitionDuration && !floatTransitionDelay) {
4372
+ return 0;
4373
+ }
4374
+ // If multiple durations are defined, take the first
4375
+ transitionDuration = transitionDuration.split(',')[0];
4376
+ transitionDelay = transitionDelay.split(',')[0];
4377
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * 1000;
4378
+ };
4379
+
4380
+ var execute = function (callback) {
4381
+ if (typeof callback === 'function') {
4382
+ callback();
4383
+ }
4384
+ };
4385
+ var triggerTransitionEnd = function (element) {
4386
+ element.dispatchEvent(new Event('transitionend'));
4387
+ };
4388
+ var executeAfterTransition = function (callback, transitionElement, waitForTransition) {
4389
+ if (waitForTransition === void 0) { waitForTransition = true; }
4390
+ if (!waitForTransition) {
4391
+ execute(callback);
4392
+ return;
4393
+ }
4394
+ var durationPadding = 5;
4395
+ var emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
4396
+ var called = false;
4397
+ var handler = function (_a) {
4398
+ var target = _a.target;
4399
+ if (target !== transitionElement) {
4400
+ return;
4401
+ }
4402
+ called = true;
4403
+ transitionElement.removeEventListener('transitionend', handler);
4404
+ execute(callback);
4405
+ };
4406
+ transitionElement.addEventListener('transitionend', handler);
4407
+ setTimeout(function () {
4408
+ if (!called) {
4409
+ triggerTransitionEnd(transitionElement);
4410
+ }
4411
+ }, emulatedDuration);
4412
+ };
4413
+
4414
+ var isRTL = function (element) {
4415
+ if (typeof document !== 'undefined' && document.documentElement.dir === 'rtl') {
4416
+ return true;
4417
+ }
4418
+ if (element) {
4419
+ return element.closest('[dir="rtl"]') !== null;
4420
+ }
4421
+ return false;
4422
+ };
4423
+
4424
+ var getRTLPlacement = function (placement, element) {
4425
+ switch (placement) {
4426
+ case 'right': {
4427
+ return isRTL(element) ? 'left' : 'right';
4428
+ }
4429
+ case 'left': {
4430
+ return isRTL(element) ? 'right' : 'left';
4431
+ }
4432
+ default: {
4433
+ return placement;
4434
+ }
4435
+ }
4436
+ };
4437
+
4438
+ var isInViewport = function (element) {
4439
+ var rect = element.getBoundingClientRect();
4440
+ return (Math.floor(rect.top) >= 0 &&
4441
+ Math.floor(rect.left) >= 0 &&
4442
+ Math.floor(rect.bottom) <= (window.innerHeight || document.documentElement.clientHeight) &&
4443
+ Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth));
4444
+ };
4445
+
4362
4446
  var usePopper = function () {
4363
4447
  var _popper = React.useRef();
4448
+ var el = React.useRef();
4364
4449
  var initPopper = function (reference, popper, options) {
4365
4450
  _popper.current = createPopper(reference, popper, options);
4451
+ el.current = popper;
4366
4452
  };
4367
4453
  var destroyPopper = function () {
4368
- if (_popper.current) {
4369
- _popper.current.destroy();
4454
+ var popperInstance = _popper.current;
4455
+ if (popperInstance && el.current) {
4456
+ executeAfterTransition(function () {
4457
+ popperInstance.destroy();
4458
+ }, el.current);
4370
4459
  }
4371
4460
  _popper.current = undefined;
4372
4461
  };
@@ -4476,13 +4565,14 @@ CAccordionHeader.propTypes = {
4476
4565
  CAccordionHeader.displayName = 'CAccordionHeader';
4477
4566
 
4478
4567
  var CCloseButton = React.forwardRef(function (_a, ref) {
4479
- var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest(_a, ["className", "disabled", "white"]);
4568
+ var className = _a.className, dark = _a.dark, disabled = _a.disabled, white = _a.white, rest = __rest(_a, ["className", "dark", "disabled", "white"]);
4480
4569
  return (React.createElement("button", __assign({ type: "button", className: classNames('btn', 'btn-close', {
4481
4570
  'btn-close-white': white,
4482
- }, disabled, className), "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
4571
+ }, disabled, className), "aria-label": "Close", disabled: disabled }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: ref })));
4483
4572
  });
4484
4573
  CCloseButton.propTypes = {
4485
4574
  className: PropTypes.string,
4575
+ dark: PropTypes.bool,
4486
4576
  disabled: PropTypes.bool,
4487
4577
  white: PropTypes.bool,
4488
4578
  };
@@ -4709,7 +4799,7 @@ CBreadcrumbItem.displayName = 'CBreadcrumbItem';
4709
4799
  var CButton = React.forwardRef(function (_a, ref) {
4710
4800
  var _b;
4711
4801
  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"]);
4712
- 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));
4802
+ 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));
4713
4803
  });
4714
4804
  CButton.propTypes = {
4715
4805
  children: PropTypes.node,
@@ -4882,38 +4972,6 @@ CCardTitle.propTypes = {
4882
4972
  };
4883
4973
  CCardTitle.displayName = 'CCardTitle';
4884
4974
 
4885
- var isRTL = function (element) {
4886
- if (typeof document !== 'undefined' && document.documentElement.dir === 'rtl') {
4887
- return true;
4888
- }
4889
- if (element) {
4890
- return element.closest('[dir="rtl"]') !== null;
4891
- }
4892
- return false;
4893
- };
4894
-
4895
- var getRTLPlacement = function (placement, element) {
4896
- switch (placement) {
4897
- case 'right': {
4898
- return isRTL(element) ? 'left' : 'right';
4899
- }
4900
- case 'left': {
4901
- return isRTL(element) ? 'right' : 'left';
4902
- }
4903
- default: {
4904
- return placement;
4905
- }
4906
- }
4907
- };
4908
-
4909
- var isInViewport = function (element) {
4910
- var rect = element.getBoundingClientRect();
4911
- return (Math.floor(rect.top) >= 0 &&
4912
- Math.floor(rect.left) >= 0 &&
4913
- Math.floor(rect.bottom) <= (window.innerHeight || document.documentElement.clientHeight) &&
4914
- Math.floor(rect.right) <= (window.innerWidth || document.documentElement.clientWidth));
4915
- };
4916
-
4917
4975
  var CCarouselContext = React.createContext({});
4918
4976
  var CCarousel = React.forwardRef(function (_a, ref) {
4919
4977
  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"]);
@@ -5018,17 +5076,18 @@ var CCarousel = React.forwardRef(function (_a, ref) {
5018
5076
  setTouchPosition(touchDown);
5019
5077
  };
5020
5078
  return (React.createElement("div", __assign({ className: classNames('carousel slide', {
5021
- 'carousel-dark': dark,
5022
5079
  'carousel-fade': transition === 'crossfade',
5023
- }, className), onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5080
+ }, className) }, (dark && { 'data-coreui-theme': 'dark' }), { onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5024
5081
  React.createElement(CCarouselContext.Provider, { value: {
5025
5082
  setAnimating: setAnimating,
5026
5083
  setCustomInterval: setCustomInterval,
5027
5084
  } },
5028
- indicators && (React.createElement("ol", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5029
- return (React.createElement("li", { key: "indicator".concat(index), onClick: function () {
5085
+ indicators && (React.createElement("div", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5086
+ return (React.createElement("button", __assign({ key: "indicator".concat(index), onClick: function () {
5030
5087
  !animating && handleIndicatorClick(index);
5031
- }, className: active === index ? 'active' : '', "data-coreui-target": "" }));
5088
+ }, className: classNames({
5089
+ active: active === index
5090
+ }), "data-coreui-target": "" }, (active === index && { 'aria-current': true }), { "aria-label": "Slide ".concat(index + 1) })));
5032
5091
  }))),
5033
5092
  React.createElement("div", { className: "carousel-inner" }, React.Children.map(children, function (child, index) {
5034
5093
  if (React.isValidElement(child)) {
@@ -5161,6 +5220,18 @@ CConditionalPortal.propTypes = {
5161
5220
  };
5162
5221
  CConditionalPortal.displayName = 'CConditionalPortal';
5163
5222
 
5223
+ var getNextActiveElement = function (list, activeElement, shouldGetNext, isCycleAllowed) {
5224
+ var listLength = list.length;
5225
+ var index = list.indexOf(activeElement);
5226
+ if (index === -1) {
5227
+ return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
5228
+ }
5229
+ index += shouldGetNext ? 1 : -1;
5230
+ if (isCycleAllowed) {
5231
+ index = (index + listLength) % listLength;
5232
+ }
5233
+ return list[Math.max(0, Math.min(index, listLength - 1))];
5234
+ };
5164
5235
  var getPlacement = function (placement, direction, alignment, isRTL) {
5165
5236
  var _placement = placement;
5166
5237
  if (direction === 'dropup') {
@@ -5223,18 +5294,33 @@ var CDropdown = React.forwardRef(function (_a, ref) {
5223
5294
  }, [visible]);
5224
5295
  React.useEffect(function () {
5225
5296
  if (_visible && dropdownToggleRef.current && dropdownMenuRef.current) {
5297
+ dropdownToggleRef.current.focus();
5226
5298
  popper && initPopper(dropdownToggleRef.current, dropdownMenuRef.current, popperConfig);
5227
5299
  window.addEventListener('mouseup', handleMouseUp);
5228
5300
  window.addEventListener('keyup', handleKeyup);
5301
+ dropdownToggleRef.current.addEventListener('keydown', handleKeydown);
5302
+ dropdownMenuRef.current.addEventListener('keydown', handleKeydown);
5229
5303
  onShow && onShow();
5230
5304
  }
5231
5305
  return function () {
5232
5306
  popper && destroyPopper();
5233
5307
  window.removeEventListener('mouseup', handleMouseUp);
5234
5308
  window.removeEventListener('keyup', handleKeyup);
5309
+ dropdownToggleRef.current &&
5310
+ dropdownToggleRef.current.removeEventListener('keydown', handleKeydown);
5311
+ dropdownMenuRef.current &&
5312
+ dropdownMenuRef.current.removeEventListener('keydown', handleKeydown);
5235
5313
  onHide && onHide();
5236
5314
  };
5237
5315
  }, [_visible]);
5316
+ var handleKeydown = function (event) {
5317
+ if (_visible && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
5318
+ var target = event.target;
5319
+ event.preventDefault();
5320
+ var items = [].concat.apply([], Element.prototype.querySelectorAll.call(dropdownMenuRef.current, '.dropdown-item:not(.disabled):not(:disabled)'));
5321
+ getNextActiveElement(items, target, event.key === 'ArrowDown', true).focus();
5322
+ }
5323
+ };
5238
5324
  var handleKeyup = function (event) {
5239
5325
  if (autoClose === false) {
5240
5326
  return;
@@ -5262,7 +5348,6 @@ var CDropdown = React.forwardRef(function (_a, ref) {
5262
5348
  'dropup dropup-center': direction === 'dropup-center'
5263
5349
  },
5264
5350
  _b["".concat(direction)] = direction && direction !== 'center' && direction !== 'dropup-center',
5265
- _b.show = _visible,
5266
5351
  _b), className) }, rest, { ref: forkedRef }), children))));
5267
5352
  });
5268
5353
  var alignmentDirection = PropTypes.oneOf(['start', 'end']);
@@ -5356,9 +5441,8 @@ var CDropdownMenu = React.forwardRef(function (_a, ref) {
5356
5441
  var forkedRef = useForkedRef(ref, dropdownMenuRef);
5357
5442
  return (React.createElement(CConditionalPortal, { portal: portal !== null && portal !== void 0 ? portal : false },
5358
5443
  React.createElement(Component, __assign({ className: classNames('dropdown-menu', {
5359
- 'dropdown-menu-dark': dark,
5360
5444
  show: visible,
5361
- }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), rest), Component === 'ul'
5445
+ }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), (dark && { 'data-coreui-theme': 'dark' }), rest), Component === 'ul'
5362
5446
  ? React.Children.map(children, function (child, index) {
5363
5447
  if (React.isValidElement(child)) {
5364
5448
  return React.createElement("li", { key: index }, React.cloneElement(child));
@@ -5376,7 +5460,7 @@ CDropdownMenu.displayName = 'CDropdownMenu';
5376
5460
 
5377
5461
  var CDropdownToggle = function (_a) {
5378
5462
  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"]);
5379
- var _d = React.useContext(CDropdownContext), dropdownToggleRef = _d.dropdownToggleRef, variant = _d.variant, visible = _d.visible, setVisible = _d.setVisible;
5463
+ var _d = React.useContext(CDropdownContext), dropdownToggleRef = _d.dropdownToggleRef, visible = _d.visible, setVisible = _d.setVisible;
5380
5464
  var triggers = __assign(__assign({}, ((trigger === 'click' || trigger.includes('click')) && {
5381
5465
  onClick: function (event) {
5382
5466
  event.preventDefault();
@@ -5389,17 +5473,13 @@ var CDropdownToggle = function (_a) {
5389
5473
  var togglerProps = __assign({ className: classNames({
5390
5474
  'dropdown-toggle': caret,
5391
5475
  'dropdown-toggle-split': split,
5392
- 'nav-link': variant === 'nav-item',
5476
+ show: visible,
5393
5477
  }, className), 'aria-expanded': visible }, (!rest.disabled && __assign({}, triggers)));
5394
- // We use any because Toggler can be `a` as well as `button`.
5395
5478
  var Toggler = function () {
5396
5479
  if (custom && React.isValidElement(children)) {
5397
5480
  return (React.createElement(React.Fragment, null, React.cloneElement(children, __assign(__assign({ 'aria-expanded': visible }, (!rest.disabled && __assign({}, triggers))), { ref: dropdownToggleRef }))));
5398
5481
  }
5399
- if (variant === 'nav-item') {
5400
- return (React.createElement("a", __assign({ href: "#" }, togglerProps, { ref: dropdownToggleRef }), children));
5401
- }
5402
- return (React.createElement(CButton, __assign({ type: "button" }, togglerProps, { tabIndex: 0 }, rest, { ref: dropdownToggleRef }),
5482
+ return (React.createElement(CButton, __assign({}, togglerProps, { tabIndex: 0 }, rest, { ref: dropdownToggleRef }),
5403
5483
  children,
5404
5484
  split && React.createElement("span", { className: "visually-hidden" }, "Toggle Dropdown")));
5405
5485
  };
@@ -6019,12 +6099,13 @@ CModalDialog.displayName = 'CModalDialog';
6019
6099
 
6020
6100
  var CModalContext = React.createContext({});
6021
6101
  var CModal = React.forwardRef(function (_a, ref) {
6022
- 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"]);
6102
+ 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"]);
6103
+ var activeElementRef = React.useRef(null);
6023
6104
  var modalRef = React.useRef(null);
6024
6105
  var modalContentRef = React.useRef(null);
6025
6106
  var forkedRef = useForkedRef(ref, modalRef);
6026
- var _h = React.useState(visible), _visible = _h[0], setVisible = _h[1];
6027
- var _j = React.useState(false), staticBackdrop = _j[0], setStaticBackdrop = _j[1];
6107
+ var _j = React.useState(visible), _visible = _j[0], setVisible = _j[1];
6108
+ var _k = React.useState(false), staticBackdrop = _k[0], setStaticBackdrop = _k[1];
6028
6109
  var contextValues = {
6029
6110
  visible: _visible,
6030
6111
  setVisible: setVisible,
@@ -6033,10 +6114,17 @@ var CModal = React.forwardRef(function (_a, ref) {
6033
6114
  setVisible(visible);
6034
6115
  }, [visible]);
6035
6116
  React.useEffect(function () {
6036
- document.addEventListener('click', handleClickOutside);
6037
- document.addEventListener('keydown', handleKeyDown);
6117
+ var _a;
6118
+ if (_visible) {
6119
+ activeElementRef.current = document.activeElement;
6120
+ document.addEventListener('mouseup', handleClickOutside);
6121
+ document.addEventListener('keydown', handleKeyDown);
6122
+ }
6123
+ else {
6124
+ (_a = activeElementRef.current) === null || _a === void 0 ? void 0 : _a.focus();
6125
+ }
6038
6126
  return function () {
6039
- document.removeEventListener('click', handleClickOutside);
6127
+ document.removeEventListener('mouseup', handleClickOutside);
6040
6128
  document.removeEventListener('keydown', handleKeyDown);
6041
6129
  };
6042
6130
  }, [_visible]);
@@ -6061,7 +6149,7 @@ var CModal = React.forwardRef(function (_a, ref) {
6061
6149
  }
6062
6150
  setTimeout(function () {
6063
6151
  var _a;
6064
- (_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.focus();
6152
+ focus && ((_a = modalRef.current) === null || _a === void 0 ? void 0 : _a.focus());
6065
6153
  }, transition ? duration : 0);
6066
6154
  }
6067
6155
  else {
@@ -6093,13 +6181,15 @@ var CModal = React.forwardRef(function (_a, ref) {
6093
6181
  return (React.createElement(React.Fragment, null,
6094
6182
  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 },
6095
6183
  React.createElement(CModalContext.Provider, { value: contextValues },
6096
- React.createElement("div", { className: classNames('modal', {
6184
+ React.createElement("div", __assign({ className: classNames('modal', {
6097
6185
  'modal-static': staticBackdrop,
6098
6186
  fade: transition,
6099
6187
  show: state === 'entered',
6100
- }, className), tabIndex: -1, role: "dialog", style: __assign({}, (state !== 'exited' && { display: 'block' })), ref: forkedRef },
6188
+ }, className), tabIndex: -1 }, (_visible
6189
+ ? { 'aria-modal': true, role: 'dialog' }
6190
+ : { 'aria-hidden': 'true' }), { style: __assign({}, (state !== 'exited' && { display: 'block' })) }, rest, { ref: forkedRef }),
6101
6191
  React.createElement(CModalDialog, { alignment: alignment, fullscreen: fullscreen, scrollable: scrollable, size: size },
6102
- React.createElement(CModalContent, __assign({}, rest, { ref: modalContentRef }), children)))))); }),
6192
+ React.createElement(CModalContent, { ref: modalContentRef }, children)))))); }),
6103
6193
  backdrop && (React.createElement(CConditionalPortal, { portal: portal },
6104
6194
  React.createElement(CBackdrop, { visible: _visible })))));
6105
6195
  });
@@ -6109,6 +6199,7 @@ CModal.propTypes = {
6109
6199
  children: PropTypes.node,
6110
6200
  className: PropTypes.string,
6111
6201
  duration: PropTypes.number,
6202
+ focus: PropTypes.bool,
6112
6203
  fullscreen: PropTypes.oneOfType([
6113
6204
  PropTypes.bool,
6114
6205
  PropTypes.oneOf(['sm', 'md', 'lg', 'xl', 'xxl']),
@@ -6184,7 +6275,7 @@ CNav.propTypes = {
6184
6275
  className: PropTypes.string,
6185
6276
  component: PropTypes.elementType,
6186
6277
  layout: PropTypes.oneOf(['fill', 'justified']),
6187
- variant: PropTypes.oneOf(['tabs', 'pills']),
6278
+ variant: PropTypes.oneOf(['pills', 'tabs', 'underline']),
6188
6279
  };
6189
6280
  CNav.displayName = 'CNav';
6190
6281
 
@@ -6223,14 +6314,19 @@ CSidebarNav.propTypes = {
6223
6314
  };
6224
6315
  CSidebarNav.displayName = 'CSidebarNav';
6225
6316
 
6317
+ var isInVisibleGroup = function (el1, el2) {
6318
+ var array1 = el1.toString().split('.');
6319
+ var array2 = el2.toString().split('.');
6320
+ return array2.every(function (item, index) { return item === array1[index]; });
6321
+ };
6226
6322
  var CNavGroup = React.forwardRef(function (_a, ref) {
6227
6323
  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"]);
6228
6324
  var _b = React.useState(), height = _b[0], setHeight = _b[1];
6229
6325
  var navItemsRef = React.useRef(null);
6230
6326
  var _c = React.useContext(CNavContext), visibleGroup = _c.visibleGroup, setVisibleGroup = _c.setVisibleGroup;
6231
- var _d = React.useState(Boolean(visible || (idx && visibleGroup && visibleGroup.toString().startsWith(idx.toString())))), _visible = _d[0], setVisible = _d[1];
6327
+ var _d = React.useState(Boolean(visible || (idx && visibleGroup && isInVisibleGroup(visibleGroup, idx)))), _visible = _d[0], setVisible = _d[1];
6232
6328
  React.useEffect(function () {
6233
- setVisible(Boolean(idx && visibleGroup && visibleGroup.toString().startsWith(idx.toString())));
6329
+ setVisible(Boolean(idx && visibleGroup && isInVisibleGroup(visibleGroup, idx)));
6234
6330
  }, [visibleGroup]);
6235
6331
  var handleTogglerOnCLick = function (event) {
6236
6332
  event.preventDefault();
@@ -6333,9 +6429,8 @@ var CNavbar = React.forwardRef(function (_a, ref) {
6333
6429
  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"]);
6334
6430
  return (React.createElement(Component, __assign({ className: classNames('navbar', (_b = {},
6335
6431
  _b["bg-".concat(color)] = color,
6336
- _b["navbar-".concat(colorScheme)] = colorScheme,
6337
6432
  _b[typeof expand === 'boolean' ? 'navbar-expand' : "navbar-expand-".concat(expand)] = expand,
6338
- _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))));
6433
+ _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))));
6339
6434
  });
6340
6435
  CNavbar.propTypes = {
6341
6436
  children: PropTypes.node,
@@ -6406,7 +6501,7 @@ CNavbarToggler.propTypes = {
6406
6501
  CNavbarToggler.displayName = 'CNavbarToggler';
6407
6502
 
6408
6503
  var COffcanvas = React.forwardRef(function (_a, ref) {
6409
- 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"]);
6504
+ 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"]);
6410
6505
  var _h = React.useState(visible), _visible = _h[0], setVisible = _h[1];
6411
6506
  var offcanvasRef = React.useRef(null);
6412
6507
  var forkedRef = useForkedRef(ref, offcanvasRef);
@@ -6447,7 +6542,7 @@ var COffcanvas = React.forwardRef(function (_a, ref) {
6447
6542
  _a.showing = state === 'entering',
6448
6543
  _a.show = state === 'entered',
6449
6544
  _a['show hiding'] = state === 'exiting',
6450
- _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: forkedRef }), children)));
6545
+ _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: forkedRef }), children)));
6451
6546
  }),
6452
6547
  backdrop && (React.createElement(CConditionalPortal, { portal: portal },
6453
6548
  React.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible })))));
@@ -6456,6 +6551,7 @@ COffcanvas.propTypes = {
6456
6551
  backdrop: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['static'])]),
6457
6552
  children: PropTypes.node,
6458
6553
  className: PropTypes.string,
6554
+ dark: PropTypes.bool,
6459
6555
  keyboard: PropTypes.bool,
6460
6556
  onHide: PropTypes.func,
6461
6557
  onShow: PropTypes.func,
@@ -6699,7 +6795,7 @@ var CPopover = function (_a) {
6699
6795
  typeof window !== 'undefined' &&
6700
6796
  ReactDOM.createPortal(React.createElement(Transition$1, { in: _visible, mountOnEnter: true, nodeRef: popoverRef, onEnter: onShow, onExit: onHide, timeout: {
6701
6797
  enter: 0,
6702
- exit: 200,
6798
+ exit: popoverRef.current ? getTransitionDurationFromElement(popoverRef.current) + 50 : 200,
6703
6799
  }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('popover', 'bs-popover-auto', {
6704
6800
  fade: animation,
6705
6801
  show: state === 'entered',
@@ -7312,7 +7408,7 @@ var CTooltip = function (_a) {
7312
7408
  typeof window !== 'undefined' &&
7313
7409
  ReactDOM.createPortal(React.createElement(Transition$1, { in: _visible, mountOnEnter: true, onEnter: onShow, onExit: onHide, timeout: {
7314
7410
  enter: 0,
7315
- exit: 200,
7411
+ exit: tooltipRef.current ? getTransitionDurationFromElement(tooltipRef.current) + 50 : 200,
7316
7412
  }, unmountOnExit: true }, function (state) { return (React.createElement("div", __assign({ className: classNames('tooltip', 'bs-tooltip-auto', {
7317
7413
  fade: animation,
7318
7414
  show: state === 'entered',
@@ -7344,7 +7440,7 @@ CTooltip.displayName = 'CTooltip';
7344
7440
  var CWidgetStatsA = React.forwardRef(function (_a, ref) {
7345
7441
  var _b;
7346
7442
  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"]);
7347
- return (React.createElement(CCard, __assign({ className: classNames((_b = {}, _b["bg-".concat(color)] = color, _b['text-high-emphasis-inverse'] = color, _b), className) }, rest, { ref: ref }),
7443
+ return (React.createElement(CCard, __assign({ className: classNames((_b = {}, _b["bg-".concat(color)] = color, _b['text-white'] = color, _b), className) }, rest, { ref: ref }),
7348
7444
  React.createElement(CCardBody, { className: "pb-0 d-flex justify-content-between align-items-start" },
7349
7445
  React.createElement("div", null,
7350
7446
  value && React.createElement("div", { className: "fs-4 fw-semibold" }, value),
@@ -7364,12 +7460,12 @@ CWidgetStatsA.displayName = 'CWidgetStatsA';
7364
7460
 
7365
7461
  var CWidgetStatsB = React.forwardRef(function (_a, ref) {
7366
7462
  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"]);
7367
- return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'high-emphasis-inverse' }), rest, { ref: ref }),
7463
+ return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'white' }), rest, { ref: ref }),
7368
7464
  React.createElement(CCardBody, null,
7369
7465
  value && React.createElement("div", { className: "fs-4 fw-semibold" }, value),
7370
7466
  title && React.createElement("div", null, title),
7371
7467
  React.createElement(CProgress, __assign({ className: "my-2", height: 4 }, (inverse && { white: true }), progress)),
7372
- text && (React.createElement("small", { className: inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis' }, text)))));
7468
+ text && (React.createElement("small", { className: inverse ? 'text-white text-opacity-75' : 'text-body-secondary' }, text)))));
7373
7469
  });
7374
7470
  CWidgetStatsB.propTypes = {
7375
7471
  className: PropTypes.string,
@@ -7384,11 +7480,11 @@ CWidgetStatsB.displayName = 'CWidgetCWidgetStatsB';
7384
7480
 
7385
7481
  var CWidgetStatsC = React.forwardRef(function (_a, ref) {
7386
7482
  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"]);
7387
- return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'high-emphasis-inverse' }), rest, { ref: ref }),
7483
+ return (React.createElement(CCard, __assign({ className: className, color: color }, (inverse && { textColor: 'white' }), rest, { ref: ref }),
7388
7484
  React.createElement(CCardBody, null,
7389
- icon && (React.createElement("div", { className: "text-medium-emphasis".concat(inverse ? '-inverse' : '', " text-end mb-4") }, icon)),
7390
- value && (React.createElement("div", { className: "text-high-emphasis".concat(inverse ? '-inverse' : '', " fs-4 fw-semibold") }, value)),
7391
- title && (React.createElement("div", { className: inverse ? 'text-medium-emphasis-inverse' : 'text-medium-emphasis' }, title)),
7485
+ icon && React.createElement("div", { className: "text-end mb-4" }, icon),
7486
+ value && React.createElement("div", { className: "fs-4 fw-semibold" }, value),
7487
+ title && (React.createElement("div", { className: inverse ? 'text-white text-opacity-75' : 'text-body-secondary' }, title)),
7392
7488
  React.createElement(CProgress, __assign({ className: "mt-3 mb-0", height: 4 }, (inverse && { white: true }), progress)))));
7393
7489
  });
7394
7490
  CWidgetStatsC.propTypes = {
@@ -7417,7 +7513,7 @@ var CWidgetStatsD = React.forwardRef(function (_a, ref) {
7417
7513
  index % 2 !== 0 && React.createElement("div", { className: "vr" }),
7418
7514
  React.createElement(CCol, null,
7419
7515
  React.createElement("div", { className: "fs-5 fw-semibold" }, value.value),
7420
- React.createElement("div", { className: "text-uppercase text-medium-emphasis small" }, value.title))));
7516
+ React.createElement("div", { className: "text-uppercase text-body-secondary small" }, value.title))));
7421
7517
  }))));
7422
7518
  });
7423
7519
  CWidgetStatsD.propTypes = {
@@ -7433,7 +7529,7 @@ var CWidgetStatsE = React.forwardRef(function (_a, ref) {
7433
7529
  var chart = _a.chart, className = _a.className, title = _a.title, value = _a.value, rest = __rest(_a, ["chart", "className", "title", "value"]);
7434
7530
  return (React.createElement(CCard, __assign({ className: classNames(className) }, rest, { ref: ref }),
7435
7531
  React.createElement(CCardBody, { className: "text-center" },
7436
- title && (React.createElement("div", { className: "text-medium-emphasis small text-uppercase fw-semibold" }, title)),
7532
+ title && (React.createElement("div", { className: "text-body-secondary small text-uppercase fw-semibold" }, title)),
7437
7533
  value && React.createElement("div", { className: "fs-6 fw-semibold py-3" }, value),
7438
7534
  chart)));
7439
7535
  });
@@ -7453,7 +7549,7 @@ var CWidgetStatsF = React.forwardRef(function (_a, ref) {
7453
7549
  React.createElement("div", { className: "me-3 text-white bg-".concat(color, " ").concat(padding ? 'p-3' : 'p-4') }, icon),
7454
7550
  React.createElement("div", null,
7455
7551
  React.createElement("div", { className: "fs-6 fw-semibold text-".concat(color) }, value),
7456
- React.createElement("div", { className: "text-medium-emphasis text-uppercase fw-semibold small" }, title))),
7552
+ React.createElement("div", { className: "text-body-secondary text-uppercase fw-semibold small" }, title))),
7457
7553
  footer && React.createElement(CCardFooter, null, footer)));
7458
7554
  });
7459
7555
  CWidgetStatsF.propTypes = {