@coreui/react-pro 4.13.1 → 5.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/dist/components/calendar/CCalendar.d.ts +25 -7
  3. package/dist/components/calendar/utils.d.ts +12 -3
  4. package/dist/components/close-button/CCloseButton.d.ts +6 -0
  5. package/dist/components/date-range-picker/CDateRangePicker copy.d.ts +114 -0
  6. package/dist/components/multi-select/types.d.ts +2 -2
  7. package/dist/components/multi-select/utils.d.ts +2 -2
  8. package/dist/components/multi-select-new/CMultiSelect.d.ts +133 -0
  9. package/dist/components/multi-select-new/CMultiSelectNativeSelect.d.ts +7 -0
  10. package/dist/components/multi-select-new/CMultiSelectNew.d.ts +121 -0
  11. package/dist/components/multi-select-new/CMultiSelectOptions.d.ts +16 -0
  12. package/dist/components/multi-select-new/CMultiSelectSelection.d.ts +11 -0
  13. package/dist/components/multi-select-new/index.d.ts +2 -0
  14. package/dist/components/multi-select-new/types.d.ts +15 -0
  15. package/dist/components/multi-select-new/utils.d.ts +11 -0
  16. package/dist/components/nav/CNav.d.ts +1 -1
  17. package/dist/components/navbar/CNavbar.d.ts +1 -1
  18. package/dist/components/offcanvas/COffcanvas.d.ts +4 -0
  19. package/dist/components/picker/CPicker copy.d.ts +82 -0
  20. package/dist/components/picker copy/CPicker.d.ts +82 -0
  21. package/dist/components/smart-table/CSmartTableBody.d.ts +2 -1
  22. package/dist/components/smart-table/CSmartTableCleaner.d.ts +7 -0
  23. package/dist/components/smart-table/CSmartTableInterface.d.ts +1 -3
  24. package/dist/components/smart-table/types.d.ts +2 -2
  25. package/dist/components/smart-table/utils.d.ts +3 -1
  26. package/dist/hooks/index.d.ts +2 -1
  27. package/dist/index.es.js +523 -265
  28. package/dist/index.es.js.map +1 -1
  29. package/dist/index.js +523 -264
  30. package/dist/index.js.map +1 -1
  31. package/package.json +12 -12
  32. package/src/components/calendar/CCalendar.tsx +396 -193
  33. package/src/components/calendar/utils.ts +91 -4
  34. package/src/components/carousel/CCarousel.tsx +9 -5
  35. package/src/components/close-button/CCloseButton.tsx +9 -1
  36. package/src/components/date-range-picker/CDateRangePicker.tsx +65 -81
  37. package/src/components/dropdown/CDropdownMenu.tsx +1 -1
  38. package/src/components/multi-select/CMultiSelect.tsx +18 -10
  39. package/src/components/multi-select/CMultiSelectNativeSelect.tsx +1 -1
  40. package/src/components/multi-select/CMultiSelectOptions.tsx +1 -1
  41. package/src/components/multi-select/CMultiSelectSelection.tsx +4 -6
  42. package/src/components/multi-select/types.ts +2 -2
  43. package/src/components/multi-select/utils.ts +5 -5
  44. package/src/components/nav/CNav.tsx +2 -2
  45. package/src/components/navbar/CNavbar.tsx +2 -2
  46. package/src/components/offcanvas/COffcanvas.tsx +7 -0
  47. package/src/components/picker/CPicker.tsx +2 -11
  48. package/src/components/smart-table/CSmartTable.tsx +2 -1
  49. package/src/components/smart-table/CSmartTableBody.tsx +11 -5
  50. package/src/components/smart-table/CSmartTableInterface.tsx +1 -3
  51. package/src/components/smart-table/types.ts +2 -2
  52. package/src/components/smart-table/utils.ts +40 -5
  53. package/src/components/time-picker/CTimePicker.tsx +20 -37
  54. package/src/components/time-picker/utils.ts +5 -1
  55. package/src/hooks/index.ts +2 -1
package/dist/index.es.js CHANGED
@@ -2477,6 +2477,54 @@ CSSTransition.propTypes = process.env.NODE_ENV !== "production" ? _extends$1({},
2477
2477
  }) : {};
2478
2478
  var CSSTransition$1 = CSSTransition;
2479
2479
 
2480
+ var getStoredTheme = function (localStorageItemName) {
2481
+ return typeof window !== 'undefined' && localStorage.getItem(localStorageItemName);
2482
+ };
2483
+ var setStoredTheme = function (localStorageItemName, colorMode) {
2484
+ return localStorage.setItem(localStorageItemName, colorMode);
2485
+ };
2486
+ var getPreferredColorScheme = function (localStorageItemName) {
2487
+ if (typeof window === 'undefined') {
2488
+ return 'light';
2489
+ }
2490
+ var storedTheme = getStoredTheme(localStorageItemName);
2491
+ if (storedTheme) {
2492
+ return storedTheme;
2493
+ }
2494
+ return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
2495
+ };
2496
+ var setTheme = function (colorMode) {
2497
+ document.documentElement.dataset.coreuiTheme =
2498
+ colorMode === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches
2499
+ ? 'dark'
2500
+ : colorMode;
2501
+ var event = new Event('ColorSchemeChange');
2502
+ document.documentElement.dispatchEvent(event);
2503
+ };
2504
+ var useColorModes = function (localStorageItemName) {
2505
+ if (localStorageItemName === void 0) { localStorageItemName = 'coreui-react-color-scheme'; }
2506
+ var _a = useState(getPreferredColorScheme(localStorageItemName)), colorMode = _a[0], setColorMode = _a[1];
2507
+ useEffect(function () {
2508
+ if (colorMode) {
2509
+ setStoredTheme(localStorageItemName, colorMode);
2510
+ setTheme(colorMode);
2511
+ }
2512
+ }, [colorMode]);
2513
+ useEffect(function () {
2514
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', function () {
2515
+ var storedTheme = getStoredTheme(localStorageItemName);
2516
+ if (storedTheme !== 'light' && storedTheme !== 'dark' && colorMode) {
2517
+ setTheme(colorMode);
2518
+ }
2519
+ });
2520
+ });
2521
+ return {
2522
+ colorMode: colorMode,
2523
+ isColorModeSet: function () { return Boolean(getStoredTheme(localStorageItemName)); },
2524
+ setColorMode: setColorMode,
2525
+ };
2526
+ };
2527
+
2480
2528
  // code borrowed from https://github.com/reach/reach-ui
2481
2529
  // problem described https://github.com/facebook/react/issues/13029
2482
2530
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -4540,13 +4588,14 @@ CAccordionHeader.propTypes = {
4540
4588
  CAccordionHeader.displayName = 'CAccordionHeader';
4541
4589
 
4542
4590
  var CCloseButton = forwardRef(function (_a, ref) {
4543
- var className = _a.className, disabled = _a.disabled, white = _a.white, rest = __rest$1(_a, ["className", "disabled", "white"]);
4591
+ var className = _a.className, dark = _a.dark, disabled = _a.disabled, white = _a.white, rest = __rest$1(_a, ["className", "dark", "disabled", "white"]);
4544
4592
  return (React$1.createElement("button", __assign$1({ type: "button", className: classNames$1('btn', 'btn-close', {
4545
4593
  'btn-close-white': white,
4546
- }, disabled, className), "aria-label": "Close", disabled: disabled }, rest, { ref: ref })));
4594
+ }, disabled, className), "aria-label": "Close", disabled: disabled }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: ref })));
4547
4595
  });
4548
4596
  CCloseButton.propTypes = {
4549
4597
  className: PropTypes$1.string,
4598
+ dark: PropTypes$1.bool,
4550
4599
  disabled: PropTypes$1.bool,
4551
4600
  white: PropTypes$1.bool,
4552
4601
  };
@@ -5060,17 +5109,18 @@ var CCarousel = forwardRef(function (_a, ref) {
5060
5109
  setTouchPosition(touchDown);
5061
5110
  };
5062
5111
  return (React$1.createElement("div", __assign$1({ className: classNames$1('carousel slide', {
5063
- 'carousel-dark': dark,
5064
5112
  'carousel-fade': transition === 'crossfade',
5065
- }, className), onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5113
+ }, className) }, (dark && { 'data-coreui-theme': 'dark' }), { onMouseEnter: _pause, onMouseLeave: cycle }, (touch && { onTouchStart: handleTouchStart, onTouchMove: handleTouchMove }), rest, { ref: forkedRef }),
5066
5114
  React$1.createElement(CCarouselContext.Provider, { value: {
5067
5115
  setAnimating: setAnimating,
5068
5116
  setCustomInterval: setCustomInterval,
5069
5117
  } },
5070
- indicators && (React$1.createElement("ol", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5071
- return (React$1.createElement("li", { key: "indicator".concat(index), onClick: function () {
5118
+ indicators && (React$1.createElement("div", { className: "carousel-indicators" }, Array.from({ length: itemsNumber }, function (_, i) { return i; }).map(function (index) {
5119
+ return (React$1.createElement("button", __assign$1({ key: "indicator".concat(index), onClick: function () {
5072
5120
  !animating && handleIndicatorClick(index);
5073
- }, className: active === index ? 'active' : '', "data-coreui-target": "" }));
5121
+ }, className: classNames$1({
5122
+ active: active === index
5123
+ }), "data-coreui-target": "" }, (active === index && { 'aria-current': true }), { "aria-label": "Slide ".concat(index + 1) })));
5074
5124
  }))),
5075
5125
  React$1.createElement("div", { className: "carousel-inner" }, Children.map(children, function (child, index) {
5076
5126
  if (React$1.isValidElement(child)) {
@@ -8497,12 +8547,60 @@ lib.useDeviceSelectors = useDeviceSelectors;
8497
8547
  lib.useMobileOrientation = useMobileOrientation;
8498
8548
  lib.withOrientationChange = withOrientationChange;
8499
8549
 
8550
+ var convertIsoWeekToDate = function (isoWeek) {
8551
+ var _a = isoWeek.split(/w/i), year = _a[0], week = _a[1];
8552
+ // Get date for 4th of January for year
8553
+ var date = new Date(Number(year), 0, 4);
8554
+ // Get previous Monday, add 7 days for each week after first
8555
+ date.setDate(date.getDate() - (date.getDay() || 7) + 1 + (Number(week) - 1) * 7);
8556
+ return date;
8557
+ };
8558
+ var convertToDateObject = function (date, selectionType) {
8559
+ // if (date === null) {
8560
+ // return null
8561
+ // }
8562
+ if (date instanceof Date) {
8563
+ return date;
8564
+ }
8565
+ if (selectionType === 'week') {
8566
+ return convertIsoWeekToDate(date);
8567
+ }
8568
+ return new Date(Date.parse(date));
8569
+ };
8500
8570
  var createGroupsInArray = function (arr, numberOfGroups) {
8501
8571
  var perGroup = Math.ceil(arr.length / numberOfGroups);
8502
8572
  return Array.from({ length: numberOfGroups })
8503
8573
  .fill('')
8504
8574
  .map(function (_, i) { return arr.slice(i * perGroup, (i + 1) * perGroup); });
8505
8575
  };
8576
+ var getCalendarDate = function (calendarDate, order, view) {
8577
+ if (order !== 0 && view === 'days') {
8578
+ return new Date(Date.UTC(calendarDate.getFullYear(), calendarDate.getMonth() + order, 1));
8579
+ }
8580
+ if (order !== 0 && view === 'months') {
8581
+ return new Date(Date.UTC(calendarDate.getFullYear() + order, calendarDate.getMonth(), 1));
8582
+ }
8583
+ if (order !== 0 && view === 'years') {
8584
+ return new Date(Date.UTC(calendarDate.getFullYear() + (12 * order), calendarDate.getMonth(), 1));
8585
+ }
8586
+ return calendarDate;
8587
+ };
8588
+ var getDateBySelectionType = function (date, selectionType) {
8589
+ if (date === null) {
8590
+ return null;
8591
+ }
8592
+ if (selectionType === 'week') {
8593
+ return "".concat(date.getFullYear(), "W").concat(getWeekNumber(date));
8594
+ }
8595
+ if (selectionType === 'month') {
8596
+ var monthNumber = "0".concat(date.getMonth() + 1).slice(-2);
8597
+ return "".concat(date.getFullYear(), "-").concat(monthNumber);
8598
+ }
8599
+ if (selectionType === 'year') {
8600
+ return "".concat(date.getFullYear());
8601
+ }
8602
+ return date;
8603
+ };
8506
8604
  var getMonthsNames = function (locale) {
8507
8605
  var months = [];
8508
8606
  var d = new Date();
@@ -8562,6 +8660,11 @@ var getTrailingDays = function (year, month, leadingDays, monthDays) {
8562
8660
  }
8563
8661
  return dates;
8564
8662
  };
8663
+ var getWeekNumber = function (date) {
8664
+ var week1 = new Date(date.getFullYear(), 0, 4);
8665
+ return (1 +
8666
+ Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + ((week1.getDay() + 6) % 7)) / 7));
8667
+ };
8565
8668
  var getMonthDetails = function (year, month, firstDayOfWeek) {
8566
8669
  var daysPrevMonth = getLeadingDays(year, month, firstDayOfWeek);
8567
8670
  var daysThisMonth = getMonthDays(year, month);
@@ -8570,9 +8673,14 @@ var getMonthDetails = function (year, month, firstDayOfWeek) {
8570
8673
  var weeks = [];
8571
8674
  days.forEach(function (day, index) {
8572
8675
  if (index % 7 === 0 || weeks.length === 0) {
8573
- weeks.push([]);
8676
+ weeks.push({
8677
+ days: [],
8678
+ });
8679
+ }
8680
+ if ((index + 1) % 7 === 0) {
8681
+ weeks[weeks.length - 1].weekNumber = getWeekNumber(day.date);
8574
8682
  }
8575
- weeks[weeks.length - 1].push(day);
8683
+ weeks[weeks.length - 1].days.push(day);
8576
8684
  });
8577
8685
  return weeks;
8578
8686
  };
@@ -8617,15 +8725,6 @@ var isDateInRange = function (date, start, end) {
8617
8725
  var isDateSelected = function (date, start, end) {
8618
8726
  return (start && isSameDateAs(start, date)) || (end && isSameDateAs(end, date));
8619
8727
  };
8620
- var isEndDate = function (date, start, end) {
8621
- return start && end && isSameDateAs(end, date) && start < end;
8622
- };
8623
- var isLastDayOfMonth = function (date) {
8624
- var test = new Date(date.getTime());
8625
- var month = test.getMonth();
8626
- test.setDate(test.getDate() + 1);
8627
- return test.getMonth() !== month;
8628
- };
8629
8728
  var isSameDateAs = function (date, date2) {
8630
8729
  if (date instanceof Date && date2 instanceof Date) {
8631
8730
  return (date.getDate() === date2.getDate() &&
@@ -8637,9 +8736,6 @@ var isSameDateAs = function (date, date2) {
8637
8736
  }
8638
8737
  return false;
8639
8738
  };
8640
- var isStartDate = function (date, start, end) {
8641
- return start && end && isSameDateAs(start, date) && start < end;
8642
- };
8643
8739
  var isToday = function (date) {
8644
8740
  var today = new Date();
8645
8741
  return (date.getDate() === today.getDate() &&
@@ -8648,151 +8744,206 @@ var isToday = function (date) {
8648
8744
  };
8649
8745
 
8650
8746
  var Calendar = function (props) {
8651
- var addMonths = props.addMonths, calendarDate = props.calendarDate, dayFormat = props.dayFormat, disabledDates = props.disabledDates, endDate = props.endDate, firstDayOfWeek = props.firstDayOfWeek, hoverDate = props.hoverDate, locale = props.locale, maxDate = props.maxDate, minDate = props.minDate, onDayClick = props.onDayClick, onDayKeyDown = props.onDayKeyDown, onDayMouseEnter = props.onDayMouseEnter, onDayMouseLeave = props.onDayMouseLeave, onMonthClick = props.onMonthClick, onMonthKeyDown = props.onMonthKeyDown, onYearClick = props.onYearClick, onYearKeyDown = props.onYearKeyDown, selectAdjacementDays = props.selectAdjacementDays, selectEndDate = props.selectEndDate, showAdjacementDays = props.showAdjacementDays, startDate = props.startDate, view = props.view, weekdayFormat = props.weekdayFormat;
8652
- var _a = useState(calendarDate), date = _a[0], setDate = _a[1];
8653
- var _b = useState([]), listOfMonths = _b[0], setListOfMonths = _b[1];
8654
- useEffect(function () {
8655
- if (addMonths !== 0) {
8656
- setDate(new Date(calendarDate.getFullYear(), calendarDate.getMonth() + addMonths, 1));
8657
- return;
8658
- }
8659
- setDate(calendarDate);
8660
- }, [calendarDate]);
8747
+ var calendarDate = props.calendarDate, dayFormat = props.dayFormat, disabledDates = props.disabledDates, endDate = props.endDate, firstDayOfWeek = props.firstDayOfWeek, hoverDate = props.hoverDate, locale = props.locale, maxDate = props.maxDate, minDate = props.minDate, onCalendarClick = props.onCalendarClick, onCalendarKeyDown = props.onCalendarKeyDown, onCalendarMouseEnter = props.onCalendarMouseEnter, onCalendarMouseLeave = props.onCalendarMouseLeave, selectAdjacementDays = props.selectAdjacementDays, selectEndDate = props.selectEndDate, selectionType = props.selectionType, showWeekNumber = props.showWeekNumber, showAdjacementDays = props.showAdjacementDays, startDate = props.startDate, view = props.view, weekdayFormat = props.weekdayFormat, weekNumbersLabel = props.weekNumbersLabel;
8748
+ var _a = useState([]), listOfMonths = _a[0], setListOfMonths = _a[1];
8661
8749
  useEffect(function () {
8662
8750
  setListOfMonths(createGroupsInArray(getMonthsNames(locale), 4));
8663
8751
  }, []);
8664
- var monthDetails = getMonthDetails(date.getFullYear(), date.getMonth(), firstDayOfWeek);
8665
- var listOfYears = createGroupsInArray(getYears(date.getFullYear()), 4);
8666
- var weekDays = monthDetails[0];
8752
+ var monthDetails = getMonthDetails(calendarDate.getFullYear(), calendarDate.getMonth(), firstDayOfWeek);
8753
+ var listOfYears = createGroupsInArray(getYears(calendarDate.getFullYear()), 4);
8754
+ var weekDays = monthDetails[0].days;
8667
8755
  return (React$1.createElement("table", null,
8668
8756
  view === 'days' && (React$1.createElement("thead", null,
8669
- React$1.createElement("tr", null, weekDays.map(function (_a, idx) {
8670
- var date = _a.date;
8671
- return (React$1.createElement("th", { key: idx, className: "calendar-cell" },
8672
- React$1.createElement("div", { className: "calendar-header-cell-inner" }, typeof weekdayFormat === 'function'
8673
- ? weekdayFormat(date)
8674
- : (typeof weekdayFormat === 'string'
8675
- ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
8676
- : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat)))));
8677
- })))),
8757
+ React$1.createElement("tr", null,
8758
+ showWeekNumber && (React$1.createElement("th", { className: "calendar-cell" },
8759
+ React$1.createElement("div", { className: "calendar-header-cell-inner" }, weekNumbersLabel))),
8760
+ weekDays.map(function (_a, idx) {
8761
+ var date = _a.date;
8762
+ return (React$1.createElement("th", { key: idx, className: "calendar-cell" },
8763
+ React$1.createElement("div", { className: "calendar-header-cell-inner" }, typeof weekdayFormat === 'function'
8764
+ ? weekdayFormat(date)
8765
+ : typeof weekdayFormat === 'string'
8766
+ ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
8767
+ : date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayFormat))));
8768
+ })))),
8678
8769
  React$1.createElement("tbody", null,
8679
8770
  view === 'days' &&
8680
8771
  monthDetails.map(function (week, index) {
8681
- return (React$1.createElement("tr", { key: index }, week.map(function (_a, idx) {
8682
- var _b;
8683
- var date = _a.date, month = _a.month;
8684
- return month === 'current' || showAdjacementDays ? (React$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell', (_b = {
8685
- today: month === 'current' && isToday(date),
8686
- disabled: isDateDisabled(date, minDate, maxDate, disabledDates)
8687
- },
8688
- _b[month] = true,
8689
- _b.clickable = month !== 'current' && selectAdjacementDays,
8690
- _b.last = isLastDayOfMonth(date),
8691
- _b['range-hover'] = month === 'current' &&
8692
- (hoverDate && selectEndDate
8693
- ? isDateInRange(date, startDate, hoverDate)
8694
- : isDateInRange(date, hoverDate, endDate)),
8695
- _b.range = month === 'current' && isDateInRange(date, startDate, endDate),
8696
- _b.selected = isDateSelected(date, startDate, endDate),
8697
- _b.start = isStartDate(date, startDate, endDate),
8698
- _b.end = isEndDate(date, startDate, endDate),
8699
- _b)), key: idx, tabIndex: (month === 'current' || selectAdjacementDays) &&
8700
- !isDateDisabled(date, minDate, maxDate, disabledDates)
8701
- ? 0
8702
- : -1, title: date.toLocaleDateString(locale) }, ((month === 'current' || selectAdjacementDays) && {
8703
- onBlur: function () { return onDayMouseLeave(); },
8704
- onClick: function () { return onDayClick(date); },
8705
- onFocus: function () { return onDayMouseEnter(date); },
8706
- onKeyDown: function (event) { return onDayKeyDown(event, date); },
8707
- onMouseEnter: function () { return onDayMouseEnter(date); },
8708
- onMouseLeave: function () { return onDayMouseLeave(); },
8709
- }), (month !== 'current' &&
8710
- !selectAdjacementDays && {
8711
- onMouseEnter: function () { return onDayMouseLeave(); },
8712
- })),
8713
- React$1.createElement("div", { className: "calendar-cell-inner" }, typeof dayFormat === 'function'
8714
- ? dayFormat(date)
8715
- : date.toLocaleDateString(locale, { day: dayFormat })))) : (React$1.createElement("td", { key: idx }));
8716
- })));
8772
+ var date = convertToDateObject(week.weekNumber === 0
8773
+ ? "".concat(calendarDate.getFullYear(), "W53")
8774
+ : "".concat(calendarDate.getFullYear(), "W").concat(week.weekNumber), selectionType);
8775
+ var isDisabled = isDateDisabled(date, minDate, maxDate, disabledDates);
8776
+ return (React$1.createElement("tr", __assign$1({ className: classNames$1('calendar-row', {
8777
+ disabled: isDisabled,
8778
+ range: selectionType === 'week' && isDateInRange(date, startDate, endDate),
8779
+ 'range-hover': selectionType === 'week' && hoverDate && selectEndDate
8780
+ ? isDateInRange(date, startDate, hoverDate)
8781
+ : isDateInRange(date, hoverDate, endDate),
8782
+ selected: isDateSelected(date, startDate, endDate),
8783
+ }), key: index, tabIndex: selectionType === 'week' && !isDisabled ? 0 : -1 }, (selectionType === 'week' &&
8784
+ !isDisabled && {
8785
+ onBlur: function () { return onCalendarMouseLeave(); },
8786
+ onClick: function () { return onCalendarClick(date); },
8787
+ onFocus: function () { return onCalendarMouseEnter(date); },
8788
+ onKeyDown: function (event) { return onCalendarKeyDown(event, date); },
8789
+ onMouseEnter: function () { return onCalendarMouseEnter(date); },
8790
+ onMouseLeave: function () { return onCalendarMouseLeave(); },
8791
+ })),
8792
+ showWeekNumber && (React$1.createElement("th", { className: "calendar-cell-week-number" }, week.weekNumber === 0 ? 53 : week.weekNumber)),
8793
+ week.days.map(function (_a, idx) {
8794
+ var _b;
8795
+ var date = _a.date, month = _a.month;
8796
+ var isDisabled = isDateDisabled(date, minDate, maxDate, disabledDates);
8797
+ return month === 'current' || showAdjacementDays ? (React$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell', __assign$1(__assign$1({}, (selectionType === 'day' && {
8798
+ clickable: month !== 'current' && selectAdjacementDays,
8799
+ disabled: isDisabled,
8800
+ 'range-hover': month === 'current' &&
8801
+ (hoverDate && selectEndDate
8802
+ ? isDateInRange(date, startDate, hoverDate)
8803
+ : isDateInRange(date, hoverDate, endDate)),
8804
+ range: month === 'current' && isDateInRange(date, startDate, endDate),
8805
+ selected: isDateSelected(date, startDate, endDate),
8806
+ })), (_b = {}, _b[month] = true, _b.today = month === 'current' && isToday(date), _b))), key: idx, tabIndex: selectionType === 'day' &&
8807
+ (month === 'current' || selectAdjacementDays) &&
8808
+ !isDisabled
8809
+ ? 0
8810
+ : -1, title: date.toLocaleDateString(locale) }, (selectionType === 'day' &&
8811
+ (month === 'current' || selectAdjacementDays) && {
8812
+ onBlur: function () { return onCalendarMouseLeave(); },
8813
+ onClick: function () { return onCalendarClick(date); },
8814
+ onFocus: function () { return onCalendarMouseEnter(date); },
8815
+ onKeyDown: function (event) { return onCalendarKeyDown(event, date); },
8816
+ onMouseEnter: function () { return onCalendarMouseEnter(date); },
8817
+ onMouseLeave: function () { return onCalendarMouseLeave(); },
8818
+ }), (month !== 'current' &&
8819
+ !selectAdjacementDays && {
8820
+ onMouseEnter: function () { return onCalendarMouseLeave(); },
8821
+ })),
8822
+ React$1.createElement("div", { className: "calendar-cell-inner" }, typeof dayFormat === 'function'
8823
+ ? dayFormat(date)
8824
+ : date.toLocaleDateString(locale, { day: dayFormat })))) : (React$1.createElement("td", { key: idx }));
8825
+ })));
8717
8826
  }),
8718
8827
  view === 'months' &&
8719
8828
  listOfMonths.map(function (row, index) {
8720
8829
  return (React$1.createElement("tr", { key: index }, row.map(function (month, idx) {
8721
- return (React$1.createElement("td", { className: "calendar-cell month", key: idx, onClick: function () { return onMonthClick(index * 3 + idx - addMonths); }, onKeyDown: function (event) { return onMonthKeyDown(event, index * 3 + idx - addMonths); }, tabIndex: 0 },
8830
+ var monthNumber = index * 3 + idx;
8831
+ var date = new Date(Date.UTC(calendarDate.getFullYear(), monthNumber, 1));
8832
+ var isDisabled = isDateDisabled(date, minDate, maxDate, disabledDates);
8833
+ return (React$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell', {
8834
+ disabled: isDisabled,
8835
+ selected: isDateSelected(date, startDate, endDate),
8836
+ 'range-hover': selectionType === 'month' &&
8837
+ (hoverDate && selectEndDate
8838
+ ? isDateInRange(date, startDate, hoverDate)
8839
+ : isDateInRange(date, hoverDate, endDate)),
8840
+ range: isDateInRange(date, startDate, endDate),
8841
+ }), key: idx, tabIndex: !isDisabled ? 0 : -1 }, (!isDisabled && {
8842
+ onBlur: function () { return onCalendarMouseLeave(); },
8843
+ onClick: function () { return onCalendarClick(date); },
8844
+ onFocus: function () { return onCalendarMouseEnter(date); },
8845
+ onKeyDown: function (event) { return onCalendarKeyDown(event, date); },
8846
+ onMouseEnter: function () { return onCalendarMouseEnter(date); },
8847
+ onMouseLeave: function () { return onCalendarMouseLeave(); },
8848
+ })),
8722
8849
  React$1.createElement("div", { className: "calendar-cell-inner" }, month)));
8723
8850
  })));
8724
8851
  }),
8725
8852
  view === 'years' &&
8726
8853
  listOfYears.map(function (row, index) {
8727
8854
  return (React$1.createElement("tr", { key: index }, row.map(function (year, idx) {
8728
- return (React$1.createElement("td", { className: "calendar-cell year", key: idx, onClick: function () {
8729
- return onYearClick(new Date(year, date.getMonth() - addMonths, date.getDate()));
8730
- }, onKeyDown: function (event) {
8731
- return onYearKeyDown(event, new Date(year, date.getMonth() - addMonths, date.getDate()));
8732
- }, tabIndex: 0 },
8855
+ var date = new Date(Date.UTC(year, 0, 1));
8856
+ var isDisabled = isDateDisabled(date, minDate, maxDate, disabledDates);
8857
+ return (React$1.createElement("td", __assign$1({ className: classNames$1('calendar-cell year', {
8858
+ disabled: isDisabled,
8859
+ selected: isDateSelected(date, startDate, endDate),
8860
+ 'range-hover': selectionType === 'year' &&
8861
+ (hoverDate && selectEndDate
8862
+ ? isDateInRange(date, startDate, hoverDate)
8863
+ : isDateInRange(date, hoverDate, endDate)),
8864
+ range: isDateInRange(date, startDate, endDate),
8865
+ }), key: idx, tabIndex: !isDisabled ? 0 : -1 }, (!isDisabled && {
8866
+ onBlur: function () { return onCalendarMouseLeave(); },
8867
+ onClick: function () { return onCalendarClick(date); },
8868
+ onFocus: function () { return onCalendarMouseEnter(date); },
8869
+ onKeyDown: function (event) { return onCalendarKeyDown(event, date); },
8870
+ onMouseEnter: function () { return onCalendarMouseEnter(date); },
8871
+ onMouseLeave: function () { return onCalendarMouseLeave(); },
8872
+ })),
8733
8873
  React$1.createElement("div", { className: "calendar-cell-inner" }, new Date(year, 0, 1).toLocaleDateString(locale, { year: 'numeric' }))));
8734
8874
  })));
8735
8875
  }))));
8736
8876
  };
8737
8877
  var Navigation = function (props) {
8738
- var addMonths = props.addMonths, calendarDate = props.calendarDate, locale = props.locale, navigation = props.navigation, navNextDoubleIcon = props.navNextDoubleIcon, navNextIcon = props.navNextIcon, navPrevDoubleIcon = props.navPrevDoubleIcon, navPrevIcon = props.navPrevIcon, navYearFirst = props.navYearFirst, onMonthClick = props.onMonthClick, onNavigationClick = props.onNavigationClick, onYearClick = props.onYearClick, view = props.view;
8739
- var _a = useState(), date = _a[0], setDate = _a[1];
8740
- useEffect(function () {
8741
- if (addMonths !== 0) {
8742
- setDate(new Date(calendarDate.getFullYear(), calendarDate.getMonth() + addMonths, 1));
8743
- return;
8744
- }
8745
- setDate(calendarDate);
8746
- }, [calendarDate]);
8878
+ var calendarDate = props.calendarDate, locale = props.locale, navigation = props.navigation, navNextDoubleIcon = props.navNextDoubleIcon, navNextIcon = props.navNextIcon, navPrevDoubleIcon = props.navPrevDoubleIcon, navPrevIcon = props.navPrevIcon, navYearFirst = props.navYearFirst, onMonthClick = props.onMonthClick, onNavigationClick = props.onNavigationClick, onYearClick = props.onYearClick, view = props.view;
8747
8879
  return (React$1.createElement("div", { className: "calendar-nav" },
8748
8880
  navigation && (React$1.createElement("div", { className: "calendar-nav-prev" },
8749
8881
  React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('prev', true); } }, navPrevDoubleIcon !== null && navPrevDoubleIcon !== void 0 ? navPrevDoubleIcon : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-prev" }))),
8750
8882
  view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('prev'); } }, navPrevIcon !== null && navPrevIcon !== void 0 ? navPrevIcon : React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-prev" }))))),
8751
8883
  React$1.createElement("div", __assign$1({ className: "calendar-nav-date" }, (navYearFirst && { style: { display: 'flex', justifyContent: 'center' } })),
8752
- view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && onMonthClick(); } }, date && date.toLocaleDateString(locale, { month: 'long' }))),
8753
- React$1.createElement(CButton, __assign$1({ color: "transparent", size: "sm", onClick: function () { return navigation && onYearClick(); } }, (navYearFirst && { style: { order: '-1' } })), date && date.toLocaleDateString(locale, { year: 'numeric' }))),
8884
+ view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && onMonthClick(); } }, calendarDate && calendarDate.toLocaleDateString(locale, { month: 'long' }))),
8885
+ React$1.createElement(CButton, __assign$1({ color: "transparent", size: "sm", onClick: function () { return navigation && onYearClick(); } }, (navYearFirst && { style: { order: '-1' } })), calendarDate && calendarDate.toLocaleDateString(locale, { year: 'numeric' }))),
8754
8886
  navigation && (React$1.createElement("div", { className: "calendar-nav-next" },
8755
8887
  view === 'days' && (React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('next'); } }, navNextIcon !== null && navNextIcon !== void 0 ? navNextIcon : React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-next" }))),
8756
8888
  React$1.createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return onNavigationClick('next', true); } }, navNextDoubleIcon !== null && navNextDoubleIcon !== void 0 ? navNextDoubleIcon : (React$1.createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-next" })))))));
8757
8889
  };
8758
8890
  var CCalendar = forwardRef(function (_a, ref) {
8759
- var startDate = _a.startDate, endDate = _a.endDate, _b = _a.calendarDate, calendarDate = _b === void 0 ? startDate || endDate || null : _b, _c = _a.calendars, calendars = _c === void 0 ? 1 : _c, className = _a.className, _d = _a.dayFormat, dayFormat = _d === void 0 ? 'numeric' : _d, disabledDates = _a.disabledDates, _e = _a.firstDayOfWeek, firstDayOfWeek = _e === void 0 ? 1 : _e, _f = _a.locale, locale = _f === void 0 ? 'default' : _f, maxDate = _a.maxDate, minDate = _a.minDate, _g = _a.navigation, navigation = _g === void 0 ? true : _g, navNextIcon = _a.navNextIcon, navNextDoubleIcon = _a.navNextDoubleIcon, navPrevIcon = _a.navPrevIcon, navPrevDoubleIcon = _a.navPrevDoubleIcon, navYearFirst = _a.navYearFirst, range = _a.range, _h = _a.selectAdjacementDays, selectAdjacementDays = _h === void 0 ? false : _h, selectEndDate = _a.selectEndDate, _j = _a.showAdjacementDays, showAdjacementDays = _j === void 0 ? true : _j, _k = _a.weekdayFormat, weekdayFormat = _k === void 0 ? 2 : _k, onDayHover = _a.onDayHover, onCalendarDateChange = _a.onCalendarDateChange, onEndDateChange = _a.onEndDateChange, onStartDateChange = _a.onStartDateChange, onSelectEndChange = _a.onSelectEndChange, onViewChanged = _a.onViewChanged;
8891
+ var _b;
8892
+ var startDate = _a.startDate, endDate = _a.endDate, _c = _a.calendarDate, calendarDate = _c === void 0 ? startDate || endDate || null : _c, _d = _a.calendars, calendars = _d === void 0 ? 1 : _d, className = _a.className, _e = _a.dayFormat, dayFormat = _e === void 0 ? 'numeric' : _e, disabledDates = _a.disabledDates, _f = _a.firstDayOfWeek, firstDayOfWeek = _f === void 0 ? 1 : _f, _g = _a.locale, locale = _g === void 0 ? 'default' : _g, maxDate = _a.maxDate, minDate = _a.minDate, _h = _a.navigation, navigation = _h === void 0 ? true : _h, navNextIcon = _a.navNextIcon, navNextDoubleIcon = _a.navNextDoubleIcon, navPrevIcon = _a.navPrevIcon, navPrevDoubleIcon = _a.navPrevDoubleIcon, navYearFirst = _a.navYearFirst, range = _a.range, _j = _a.selectAdjacementDays, selectAdjacementDays = _j === void 0 ? false : _j, selectEndDate = _a.selectEndDate, _k = _a.selectionType, selectionType = _k === void 0 ? 'day' : _k, _l = _a.showAdjacementDays, showAdjacementDays = _l === void 0 ? true : _l, _m = _a.showWeekNumber, showWeekNumber = _m === void 0 ? false : _m, _o = _a.weekdayFormat, weekdayFormat = _o === void 0 ? 2 : _o, weekNumbersLabel = _a.weekNumbersLabel, onCalendarDateChange = _a.onCalendarDateChange, onDateHover = _a.onDateHover, onEndDateChange = _a.onEndDateChange, onStartDateChange = _a.onStartDateChange, onSelectEndChange = _a.onSelectEndChange, onViewChanged = _a.onViewChanged;
8893
+ var calendarRef = useRef(null);
8894
+ var forkedRef = useForkedRef(ref, calendarRef);
8760
8895
  var isInitialMount = useRef(true);
8761
- var _l = useState(null), _calendarDate = _l[0], setCalendarDate = _l[1];
8896
+ var _p = useState(null), _calendarDate = _p[0], setCalendarDate = _p[1];
8897
+ useEffect(function () {
8898
+ if (selectionType === 'day' || selectionType === 'week') {
8899
+ setView('days');
8900
+ return;
8901
+ }
8902
+ if (selectionType === 'month') {
8903
+ setView('months');
8904
+ return;
8905
+ }
8906
+ if (selectionType === 'year') {
8907
+ setView('years');
8908
+ return;
8909
+ }
8910
+ }, [selectionType]);
8762
8911
  useEffect(function () {
8763
8912
  if (calendarDate === null) {
8764
8913
  setCalendarDate(new Date());
8765
8914
  return;
8766
8915
  }
8767
8916
  if (calendarDate) {
8768
- var date = new Date(calendarDate);
8917
+ var date = convertToDateObject(calendarDate, selectionType);
8769
8918
  !isSameDateAs(_calendarDate, date) && setCalendarDate(date);
8770
8919
  }
8771
8920
  }, [calendarDate]);
8772
- var _m = useStateWithCallback(startDate ? new Date(startDate) : null, onStartDateChange, !isInitialMount.current), _startDate = _m[0], setStartDate = _m[1];
8921
+ var _q = useStateWithCallback(startDate ? convertToDateObject(startDate, selectionType) : null, function () {
8922
+ return onStartDateChange && onStartDateChange(getDateBySelectionType(_startDate, selectionType));
8923
+ }, !isInitialMount.current), _startDate = _q[0], setStartDate = _q[1];
8773
8924
  useEffect(function () {
8774
- var date = startDate ? new Date(startDate) : null;
8925
+ var date = startDate ? convertToDateObject(startDate, selectionType) : null;
8775
8926
  if (!isSameDateAs(date, _startDate)) {
8776
8927
  setStartDate(date);
8777
8928
  }
8778
8929
  }, [startDate]);
8779
- var _o = useStateWithCallback(endDate ? new Date(endDate) : null, onEndDateChange, !isInitialMount.current), _endDate = _o[0], setEndDate = _o[1];
8930
+ var _r = useStateWithCallback(endDate ? convertToDateObject(endDate, selectionType) : null, function () { return onEndDateChange && onEndDateChange(getDateBySelectionType(_endDate, selectionType)); }, !isInitialMount.current), _endDate = _r[0], setEndDate = _r[1];
8780
8931
  useEffect(function () {
8781
- var date = endDate ? new Date(endDate) : null;
8932
+ var date = endDate ? convertToDateObject(endDate, selectionType) : null;
8782
8933
  if (!isSameDateAs(date, _endDate)) {
8783
8934
  setEndDate(date);
8784
8935
  }
8785
8936
  }, [endDate]);
8786
- var _p = useState(null), _hoverDate = _p[0], setHoverDate = _p[1];
8787
- var _q = useState(maxDate ? new Date(maxDate) : null), _maxDate = _q[0], setMaxDate = _q[1];
8937
+ var _s = useState(null), _hoverDate = _s[0], setHoverDate = _s[1];
8938
+ var _t = useState(maxDate ? convertToDateObject(maxDate, selectionType) : null), _maxDate = _t[0], setMaxDate = _t[1];
8788
8939
  useEffect(function () {
8789
- maxDate && setMaxDate(new Date(maxDate));
8940
+ maxDate && setMaxDate(convertToDateObject(maxDate, selectionType));
8790
8941
  }, [maxDate]);
8791
- var _r = useState(minDate ? new Date(minDate) : null), _minDate = _r[0], setMinDate = _r[1];
8942
+ var _u = useState(minDate ? convertToDateObject(minDate, selectionType) : null), _minDate = _u[0], setMinDate = _u[1];
8792
8943
  useEffect(function () {
8793
- minDate && setMinDate(new Date(minDate));
8944
+ minDate && setMinDate(convertToDateObject(minDate, selectionType));
8794
8945
  }, [minDate]);
8795
- var _s = useStateWithCallback(selectEndDate, onSelectEndChange), _selectEndDate = _s[0], setSelectEndDate = _s[1];
8946
+ var _v = useStateWithCallback(selectEndDate, onSelectEndChange), _selectEndDate = _v[0], setSelectEndDate = _v[1];
8796
8947
  useEffect(function () {
8797
8948
  setSelectEndDate(selectEndDate);
8798
8949
  }, [selectEndDate]);
@@ -8802,7 +8953,7 @@ var CCalendar = forwardRef(function (_a, ref) {
8802
8953
  onSelectEndChange &&
8803
8954
  onSelectEndChange(_selectEndDate);
8804
8955
  }, [_selectEndDate]);
8805
- var _t = useStateWithCallback('days', onViewChanged), view = _t[0], setView = _t[1];
8956
+ var _w = useStateWithCallback('days', onViewChanged), view = _w[0], setView = _w[1];
8806
8957
  useEffect(function () {
8807
8958
  isInitialMount.current = false;
8808
8959
  }, []);
@@ -8820,12 +8971,24 @@ var CCalendar = forwardRef(function (_a, ref) {
8820
8971
  setCalendarDate(d);
8821
8972
  onCalendarDateChange && onCalendarDateChange(d);
8822
8973
  };
8823
- var handleDayClick = function (date, index) {
8974
+ var handleCalendarClick = function (date, index) {
8824
8975
  if (isDateDisabled(date, _minDate, _maxDate, disabledDates)) {
8825
8976
  return;
8826
8977
  }
8827
8978
  var _date = new Date(date);
8828
- setCalendarDate(index ? new Date(_date.setMonth(_date.getMonth() - index)) : _date);
8979
+ if (view === 'days') {
8980
+ setCalendarDate(index ? new Date(_date.setMonth(_date.getMonth() - index)) : _date);
8981
+ }
8982
+ if (view === 'months' && selectionType !== 'month') {
8983
+ setCalendarDate(index ? new Date(_date.setMonth(_date.getMonth() - index)) : _date);
8984
+ setView('days');
8985
+ return;
8986
+ }
8987
+ if (view === 'years' && selectionType !== 'year') {
8988
+ setCalendarDate(index ? new Date(_date.setFullYear(_date.getFullYear() - index)) : _date);
8989
+ setView('months');
8990
+ return;
8991
+ }
8829
8992
  if (range) {
8830
8993
  if (_selectEndDate) {
8831
8994
  setSelectEndDate(false);
@@ -8858,31 +9021,88 @@ var CCalendar = forwardRef(function (_a, ref) {
8858
9021
  }
8859
9022
  setStartDate(date);
8860
9023
  };
8861
- var handleDayKeyDown = function (event, date, index) {
9024
+ var handleCalendarKeyDown = function (event, date, index) {
8862
9025
  if (event.code === 'Space' || event.key === 'Enter') {
8863
9026
  event.preventDefault();
8864
- handleDayClick(date, index);
9027
+ handleCalendarClick(date, index);
9028
+ }
9029
+ if (event.key === 'ArrowRight' ||
9030
+ event.key === 'ArrowLeft' ||
9031
+ event.key === 'ArrowUp' ||
9032
+ event.key === 'ArrowDown') {
9033
+ event.preventDefault();
9034
+ if (maxDate &&
9035
+ date >= convertToDateObject(maxDate, selectionType) &&
9036
+ (event.key === 'ArrowRight' || event.key === 'ArrowDown')) {
9037
+ return;
9038
+ }
9039
+ if (minDate &&
9040
+ date <= convertToDateObject(minDate, selectionType) &&
9041
+ (event.key === 'ArrowLeft' || event.key === 'ArrowUp')) {
9042
+ return;
9043
+ }
9044
+ var element_1 = event.target;
9045
+ if (selectionType === 'week' && element_1.tabIndex === -1) {
9046
+ element_1 = element_1.closest('tr[tabindex="0"]');
9047
+ }
9048
+ var list_1 = [].concat.apply([], Element.prototype.querySelectorAll.call(calendarRef.current, 'td[tabindex="0"], tr[tabindex="0"]'));
9049
+ var index_1 = list_1.indexOf(element_1);
9050
+ var first = index_1 === 0;
9051
+ var last = index_1 === list_1.length - 1;
9052
+ var toBoundary = {
9053
+ start: index_1,
9054
+ end: list_1.length - (index_1 + 1),
9055
+ };
9056
+ var gap_1 = {
9057
+ ArrowRight: 1,
9058
+ ArrowLeft: -1,
9059
+ ArrowUp: selectionType === 'week' && view === 'days' ? -1 : view === 'days' ? -7 : -3,
9060
+ ArrowDown: selectionType === 'week' && view === 'days' ? 1 : view === 'days' ? 7 : 3,
9061
+ };
9062
+ if ((event.key === 'ArrowRight' && last) ||
9063
+ (event.key === 'ArrowDown' && toBoundary['end'] < gap_1['ArrowDown']) ||
9064
+ (event.key === 'ArrowLeft' && first) ||
9065
+ (event.key === 'ArrowUp' && toBoundary['start'] < Math.abs(gap_1['ArrowUp']))) {
9066
+ if (view === 'days') {
9067
+ setCalendarPage(0, event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1);
9068
+ }
9069
+ if (view === 'months') {
9070
+ setCalendarPage(event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 1 : -1);
9071
+ }
9072
+ if (view === 'years') {
9073
+ setCalendarPage(event.key === 'ArrowRight' || event.key === 'ArrowDown' ? 10 : -10);
9074
+ }
9075
+ setTimeout(function () {
9076
+ var _a;
9077
+ var _list = [].concat.apply([], Element.prototype.querySelectorAll.call((_a = element_1.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode, 'td[tabindex="0"], tr[tabindex="0"]'));
9078
+ if (_list.length && event.key === 'ArrowRight') {
9079
+ _list[0].focus();
9080
+ }
9081
+ if (_list.length && event.key === 'ArrowLeft') {
9082
+ _list[_list.length - 1].focus();
9083
+ }
9084
+ if (_list.length && event.key === 'ArrowDown') {
9085
+ _list[gap_1['ArrowDown'] - (list_1.length - index_1)].focus();
9086
+ }
9087
+ if (_list.length && event.key === 'ArrowUp') {
9088
+ _list[_list.length - (Math.abs(gap_1['ArrowUp']) + 1 - (index_1 + 1))].focus();
9089
+ }
9090
+ }, 1);
9091
+ return;
9092
+ }
9093
+ list_1[index_1 + gap_1[event.key]].focus();
8865
9094
  }
8866
9095
  };
8867
- var handleDayMouseEnter = function (date) {
9096
+ var handleCalendarMouseEnter = function (date) {
8868
9097
  if (isDateDisabled(date, _minDate, _maxDate, disabledDates)) {
8869
9098
  return;
8870
9099
  }
8871
9100
  setHoverDate(date);
8872
- onDayHover && onDayHover(date);
9101
+ date && onDateHover && onDateHover(getDateBySelectionType(date, selectionType));
8873
9102
  };
8874
- var handleDayMouseLeave = function () {
9103
+ var handleCalendarMouseLeave = function () {
8875
9104
  setHoverDate(null);
8876
- onDayHover && onDayHover(null);
8877
- };
8878
- var handleMonthClick = function (month) {
8879
- setCalendarPage(0, 0, month);
8880
- setView('days');
8881
- };
8882
- var handleMonthKeyDown = function (event, month) {
8883
- if (event.code === 'Space' || event.key === 'Enter') {
8884
- handleMonthClick(month);
8885
- }
9105
+ onDateHover && onDateHover(null);
8886
9106
  };
8887
9107
  var handleNavigationOnClick = function (direction, double) {
8888
9108
  if (double === void 0) { double = false; }
@@ -8911,19 +9131,16 @@ var CCalendar = forwardRef(function (_a, ref) {
8911
9131
  return;
8912
9132
  }
8913
9133
  };
8914
- var handleYearClick = function (date) {
8915
- setCalendarDate(date);
8916
- setView('months');
8917
- };
8918
- var handleYearKeyDown = function (event, date) {
8919
- if (event.code === 'Space' || event.key === 'Enter') {
8920
- handleYearClick(date);
8921
- }
8922
- };
8923
- return (React$1.createElement("div", { className: classNames$1('calendars', className) }, _calendarDate &&
8924
- Array.from({ length: calendars }, function (_, index) { return (React$1.createElement("div", { className: classNames$1('calendar', view), key: index, ref: ref },
8925
- React$1.createElement(Navigation, { addMonths: index, calendarDate: _calendarDate, locale: locale, navigation: navigation, navNextDoubleIcon: navNextDoubleIcon, navNextIcon: navNextIcon, navPrevDoubleIcon: navPrevDoubleIcon, navPrevIcon: navPrevIcon, navYearFirst: navYearFirst, onMonthClick: function () { return setView('months'); }, onNavigationClick: handleNavigationOnClick, onYearClick: function () { return setView('years'); }, view: view }),
8926
- React$1.createElement(Calendar, { addMonths: index, calendarDate: _calendarDate, dayFormat: dayFormat, disabledDates: disabledDates, endDate: _endDate, firstDayOfWeek: firstDayOfWeek, hoverDate: _hoverDate, locale: locale, maxDate: _maxDate, minDate: _minDate, onDayClick: function (date) { return handleDayClick(date, index); }, onDayKeyDown: function (event, date) { return handleDayKeyDown(event, date, index); }, onDayMouseEnter: handleDayMouseEnter, onDayMouseLeave: handleDayMouseLeave, onMonthClick: handleMonthClick, onMonthKeyDown: handleMonthKeyDown, onYearClick: handleYearClick, onYearKeyDown: handleYearKeyDown, selectEndDate: _selectEndDate, selectAdjacementDays: selectAdjacementDays, showAdjacementDays: showAdjacementDays, startDate: _startDate, view: view, weekdayFormat: weekdayFormat }))); })));
9134
+ return (React$1.createElement("div", { className: classNames$1('calendars', (_b = {},
9135
+ _b["select-".concat(selectionType)] = selectionType && view === 'days',
9136
+ _b['show-week-numbers'] = showWeekNumber,
9137
+ _b), className), ref: forkedRef }, _calendarDate &&
9138
+ Array.from({ length: calendars }, function (_, index) {
9139
+ var calendarDate = getCalendarDate(_calendarDate, index, view);
9140
+ return (React$1.createElement("div", { className: classNames$1('calendar', view), key: index },
9141
+ React$1.createElement(Navigation, { calendarDate: calendarDate, locale: locale, navigation: navigation, navNextDoubleIcon: navNextDoubleIcon, navNextIcon: navNextIcon, navPrevDoubleIcon: navPrevDoubleIcon, navPrevIcon: navPrevIcon, navYearFirst: navYearFirst, onMonthClick: function () { return setView('months'); }, onNavigationClick: handleNavigationOnClick, onYearClick: function () { return setView('years'); }, view: view }),
9142
+ React$1.createElement(Calendar, { calendarDate: calendarDate, dayFormat: dayFormat, disabledDates: disabledDates, endDate: _endDate, firstDayOfWeek: firstDayOfWeek, hoverDate: _hoverDate, locale: locale, maxDate: _maxDate, minDate: _minDate, onCalendarClick: function (date) { return handleCalendarClick(date, index); }, onCalendarKeyDown: function (event, date) { return handleCalendarKeyDown(event, date, index); }, onCalendarMouseEnter: handleCalendarMouseEnter, onCalendarMouseLeave: handleCalendarMouseLeave, order: index, selectAdjacementDays: selectAdjacementDays, selectEndDate: _selectEndDate, selectionType: selectionType, showAdjacementDays: showAdjacementDays, showWeekNumber: showWeekNumber, startDate: _startDate, view: view, weekdayFormat: weekdayFormat, weekNumbersLabel: weekNumbersLabel })));
9143
+ })));
8927
9144
  });
8928
9145
  CCalendar.propTypes = {
8929
9146
  className: PropTypes$1.string,
@@ -8948,14 +9165,17 @@ CCalendar.propTypes = {
8948
9165
  range: PropTypes$1.bool,
8949
9166
  selectAdjacementDays: PropTypes$1.bool,
8950
9167
  selectEndDate: PropTypes$1.bool,
9168
+ selectionType: PropTypes$1.oneOf(['day', 'week', 'month', 'year']),
8951
9169
  showAdjacementDays: PropTypes$1.bool,
9170
+ showWeekNumber: PropTypes$1.bool,
8952
9171
  startDate: PropTypes$1.oneOfType([PropTypes$1.instanceOf(Date), PropTypes$1.string]),
8953
9172
  weekdayFormat: PropTypes$1.oneOfType([
8954
9173
  PropTypes$1.func,
8955
9174
  PropTypes$1.number,
8956
9175
  PropTypes$1.oneOf(['long', 'narrow', 'short']),
8957
9176
  ]),
8958
- onDayHover: PropTypes$1.func,
9177
+ weekNumbersLabel: PropTypes$1.string,
9178
+ onDateHover: PropTypes$1.func,
8959
9179
  onCalendarDateChange: PropTypes$1.func,
8960
9180
  onEndDateChange: PropTypes$1.func,
8961
9181
  onSelectEndChange: PropTypes$1.func,
@@ -9108,7 +9328,7 @@ var CPicker = forwardRef(function (_a, ref) {
9108
9328
  return (React$1.createElement("div", { className: classNames$1('picker', className), ref: pickerForkedRef }, children));
9109
9329
  }
9110
9330
  default: {
9111
- return (React$1.createElement("div", { className: classNames$1('dropdown', 'picker', className, {
9331
+ return (React$1.createElement("div", { className: classNames$1(className, {
9112
9332
  show: _visible,
9113
9333
  }), onClick: function () { return !disabled && setVisible(true); }, ref: pickerForkedRef },
9114
9334
  toggler &&
@@ -9116,9 +9336,7 @@ var CPicker = forwardRef(function (_a, ref) {
9116
9336
  React$1.cloneElement(toggler, {
9117
9337
  ref: togglerRef,
9118
9338
  }),
9119
- React$1.createElement("div", { className: classNames$1('dropdown-menu', {
9120
- show: _visible,
9121
- }, dropdownClassNames), ref: dropdownRef },
9339
+ React$1.createElement("div", { className: dropdownClassNames, ref: dropdownRef },
9122
9340
  children,
9123
9341
  footer && footerContent)));
9124
9342
  }
@@ -9187,7 +9405,11 @@ var convert12hTo24h = function (abbr, hour) {
9187
9405
  };
9188
9406
  var convert24hTo12h = function (hour) { return hour % 12 || 12; };
9189
9407
  var convertTimeToDate = function (time) {
9190
- return time ? (time instanceof Date ? new Date(time) : new Date("1970-01-01 ".concat(time))) : null;
9408
+ return time
9409
+ ? time instanceof Date
9410
+ ? time
9411
+ : new Date("1970-01-01 ".concat(time))
9412
+ : null;
9191
9413
  };
9192
9414
  var getAmPm = function (date, locale) {
9193
9415
  if (date.toLocaleTimeString(locale).includes('AM')) {
@@ -9331,37 +9553,39 @@ var CTimePicker = forwardRef(function (_a, ref) {
9331
9553
  setDate(new Date(_date));
9332
9554
  onTimeChange && onTimeChange(_date.toTimeString(), _date.toLocaleTimeString(), _date);
9333
9555
  };
9334
- var InputGroup = function () {
9335
- var _a;
9336
- return (React$1.createElement("div", { className: classNames$1('input-group', 'picker-input-group', (_a = {},
9337
- _a["input-group-".concat(size)] = size,
9338
- _a)) },
9339
- React$1.createElement("input", { autoComplete: "off", className: "form-control", disabled: disabled, onChange: function (event) {
9340
- return isValidTime(event.target.value) && setDate(convertTimeToDate(event.target.value));
9341
- }, placeholder: placeholder, readOnly: inputReadOnly, required: required, ref: inputRef }),
9342
- (indicator || cleaner) && (React$1.createElement("span", { className: "input-group-text" },
9343
- indicator && (React$1.createElement("span", { className: "picker-input-group-indicator" }, typeof indicator === 'boolean' ? (React$1.createElement("span", { className: "picker-input-group-icon time-picker-input-icon" })) : (indicator))),
9344
- cleaner && date && (React$1.createElement("span", { className: "picker-input-group-cleaner", role: "button", onClick: function (event) { return handleClear(event); } }, typeof cleaner === 'boolean' ? (React$1.createElement("span", { className: "picker-input-group-icon time-picker-cleaner-icon" })) : (cleaner)))))));
9345
- };
9556
+ var InputGroup = function () { return (React$1.createElement("div", { className: "time-picker-input-group" },
9557
+ React$1.createElement("input", { autoComplete: "off", className: "time-picker-input",
9558
+ // delay={true}
9559
+ disabled: disabled, onChange: function (event) {
9560
+ return isValidTime(event.target.value) && setDate(convertTimeToDate(event.target.value));
9561
+ }, placeholder: placeholder, readOnly: inputReadOnly, required: required, ref: inputRef }),
9562
+ indicator &&
9563
+ (typeof indicator === 'boolean' ? React$1.createElement("div", { className: "time-picker-indicator" }) : indicator),
9564
+ cleaner &&
9565
+ date &&
9566
+ (typeof cleaner === 'boolean' ? (React$1.createElement("div", { className: "time-picker-cleaner", onClick: function (event) { return handleClear(event); } })) : (React$1.isValidElement(cleaner) &&
9567
+ React$1.cloneElement(cleaner, {
9568
+ onClick: function (event) { return handleClear(event); },
9569
+ }))))); };
9346
9570
  var TimePickerSelect = function () {
9347
9571
  return (React$1.createElement(React$1.Fragment, null,
9348
9572
  React$1.createElement("span", { className: "time-picker-inline-icon" }),
9349
- React$1.createElement("select", { className: "form-select", disabled: disabled, onChange: function (event) {
9573
+ React$1.createElement("select", { className: "time-picker-inline-select", disabled: disabled, onChange: function (event) {
9350
9574
  return handleTimeChange('hours', event.target.value);
9351
9575
  }, value: getSelectedHour(date, locale) }, localizedTimePartials &&
9352
9576
  localizedTimePartials.listOfHours.map(function (option, index) { return (React$1.createElement("option", { value: option.value.toString(), key: index }, option.label)); })),
9353
9577
  React$1.createElement(React$1.Fragment, null, ":"),
9354
- React$1.createElement("select", { className: "form-select", disabled: disabled, onChange: function (event) {
9578
+ React$1.createElement("select", { className: "time-picker-inline-select", disabled: disabled, onChange: function (event) {
9355
9579
  return handleTimeChange('minutes', event.target.value);
9356
9580
  }, value: getSelectedMinutes(date) }, localizedTimePartials &&
9357
9581
  localizedTimePartials.listOfMinutes.map(function (option, index) { return (React$1.createElement("option", { value: option.value.toString(), key: index }, option.label)); })),
9358
9582
  seconds && (React$1.createElement(React$1.Fragment, null,
9359
9583
  React$1.createElement(React$1.Fragment, null, ":"),
9360
- React$1.createElement("select", { className: "form-select", disabled: disabled, onChange: function (event) {
9584
+ React$1.createElement("select", { className: "time-picker-inline-select", disabled: disabled, onChange: function (event) {
9361
9585
  return handleTimeChange('seconds', event.target.value);
9362
9586
  }, value: getSelectedSeconds(date) }, localizedTimePartials &&
9363
9587
  localizedTimePartials.listOfSeconds.map(function (option, index) { return (React$1.createElement("option", { value: option.value.toString(), key: index }, option.label)); })))),
9364
- localizedTimePartials && localizedTimePartials.hour12 && (React$1.createElement("select", { className: "form-select", disabled: disabled, onChange: function (event) {
9588
+ localizedTimePartials && localizedTimePartials.hour12 && (React$1.createElement("select", { className: "time-picker-inline-select", disabled: disabled, onChange: function (event) {
9365
9589
  return handleTimeChange('toggle', event.target.value);
9366
9590
  }, value: _ampm },
9367
9591
  React$1.createElement("option", { value: "am" }, "AM"),
@@ -9381,7 +9605,7 @@ var CTimePicker = forwardRef(function (_a, ref) {
9381
9605
  _b.disabled = disabled,
9382
9606
  _b['is-invalid'] = isValid === false ? true : false,
9383
9607
  _b['is-valid'] = isValid,
9384
- _b), className), container: container, disabled: disabled, dropdownClassNames: "time-picker-dropdown", footer: footer, footerContent: React$1.createElement("div", { className: "picker-footer" },
9608
+ _b), className), container: container, disabled: disabled, dropdownClassNames: "time-picker-dropdown", footer: footer, footerContent: React$1.createElement("div", { className: "time-picker-footer" },
9385
9609
  cancelButton && (React$1.createElement(CButton, { color: cancelButtonColor, size: cancelButtonSize, variant: cancelButtonVariant, onClick: function () {
9386
9610
  initialDate && setDate(new Date(initialDate));
9387
9611
  setVisible(false);
@@ -9439,42 +9663,42 @@ var getLocalDateFromString = function (string, locale, time) {
9439
9663
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
9440
9664
  var CDateRangePicker = forwardRef(function (_a, ref) {
9441
9665
  var _b;
9442
- var _c = _a.calendars, calendars = _c === void 0 ? 2 : _c, calendarDate = _a.calendarDate, _d = _a.cancelButton, cancelButton = _d === void 0 ? 'Cancel' : _d, _e = _a.cancelButtonColor, cancelButtonColor = _e === void 0 ? 'primary' : _e, _f = _a.cancelButtonSize, cancelButtonSize = _f === void 0 ? 'sm' : _f, _g = _a.cancelButtonVariant, cancelButtonVariant = _g === void 0 ? 'ghost' : _g, className = _a.className, _h = _a.cleaner, cleaner = _h === void 0 ? true : _h, _j = _a.closeOnSelect, closeOnSelect = _j === void 0 ? true : _j, _k = _a.confirmButton, confirmButton = _k === void 0 ? 'OK' : _k, _l = _a.confirmButtonColor, confirmButtonColor = _l === void 0 ? 'primary' : _l, _m = _a.confirmButtonSize, confirmButtonSize = _m === void 0 ? 'sm' : _m, confirmButtonVariant = _a.confirmButtonVariant, _o = _a.indicator, indicator = _o === void 0 ? true : _o, dayFormat = _a.dayFormat, disabled = _a.disabled, disabledDates = _a.disabledDates, endDate = _a.endDate, feedback = _a.feedback, feedbackInvalid = _a.feedbackInvalid, feedbackValid = _a.feedbackValid, firstDayOfWeek = _a.firstDayOfWeek, format$1 = _a.format, footer = _a.footer, id = _a.id, inputReadOnly = _a.inputReadOnly, invalid = _a.invalid, label = _a.label, _p = _a.locale, locale = _p === void 0 ? 'default' : _p, maxDate = _a.maxDate, minDate = _a.minDate, navigation = _a.navigation, navYearFirst = _a.navYearFirst, onEndDateChange = _a.onEndDateChange, onHide = _a.onHide, onStartDateChange = _a.onStartDateChange, onShow = _a.onShow, _q = _a.placeholder, placeholder = _q === void 0 ? ['Start date', 'End date'] : _q, _r = _a.range, range = _r === void 0 ? true : _r, ranges = _a.ranges, _s = _a.rangesButtonsColor, rangesButtonsColor = _s === void 0 ? 'secondary' : _s, rangesButtonsSize = _a.rangesButtonsSize, _t = _a.rangesButtonsVariant, rangesButtonsVariant = _t === void 0 ? 'ghost' : _t, required = _a.required, _u = _a.separator, separator = _u === void 0 ? true : _u, selectAdjacementDays = _a.selectAdjacementDays, showAdjacementDays = _a.showAdjacementDays, size = _a.size, startDate = _a.startDate, text = _a.text, timepicker = _a.timepicker, toggler = _a.toggler, _v = _a.todayButton, todayButton = _v === void 0 ? 'Today' : _v, _w = _a.todayButtonColor, todayButtonColor = _w === void 0 ? 'primary' : _w, _x = _a.todayButtonSize, todayButtonSize = _x === void 0 ? 'sm' : _x, todayButtonVariant = _a.todayButtonVariant, tooltipFeedback = _a.tooltipFeedback, valid = _a.valid, visible = _a.visible, weekdayFormat = _a.weekdayFormat, rest = __rest$1(_a, ["calendars", "calendarDate", "cancelButton", "cancelButtonColor", "cancelButtonSize", "cancelButtonVariant", "className", "cleaner", "closeOnSelect", "confirmButton", "confirmButtonColor", "confirmButtonSize", "confirmButtonVariant", "indicator", "dayFormat", "disabled", "disabledDates", "endDate", "feedback", "feedbackInvalid", "feedbackValid", "firstDayOfWeek", "format", "footer", "id", "inputReadOnly", "invalid", "label", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "onEndDateChange", "onHide", "onStartDateChange", "onShow", "placeholder", "range", "ranges", "rangesButtonsColor", "rangesButtonsSize", "rangesButtonsVariant", "required", "separator", "selectAdjacementDays", "showAdjacementDays", "size", "startDate", "text", "timepicker", "toggler", "todayButton", "todayButtonColor", "todayButtonSize", "todayButtonVariant", "tooltipFeedback", "valid", "visible", "weekdayFormat"]);
9666
+ var _c = _a.calendars, calendars = _c === void 0 ? 2 : _c, calendarDate = _a.calendarDate, _d = _a.cancelButton, cancelButton = _d === void 0 ? 'Cancel' : _d, _e = _a.cancelButtonColor, cancelButtonColor = _e === void 0 ? 'primary' : _e, _f = _a.cancelButtonSize, cancelButtonSize = _f === void 0 ? 'sm' : _f, _g = _a.cancelButtonVariant, cancelButtonVariant = _g === void 0 ? 'ghost' : _g, className = _a.className, _h = _a.cleaner, cleaner = _h === void 0 ? true : _h, _j = _a.closeOnSelect, closeOnSelect = _j === void 0 ? true : _j, _k = _a.confirmButton, confirmButton = _k === void 0 ? 'OK' : _k, _l = _a.confirmButtonColor, confirmButtonColor = _l === void 0 ? 'primary' : _l, _m = _a.confirmButtonSize, confirmButtonSize = _m === void 0 ? 'sm' : _m, confirmButtonVariant = _a.confirmButtonVariant, _o = _a.indicator, indicator = _o === void 0 ? true : _o, dayFormat = _a.dayFormat, disabled = _a.disabled, disabledDates = _a.disabledDates, endDate = _a.endDate, feedback = _a.feedback, feedbackInvalid = _a.feedbackInvalid, feedbackValid = _a.feedbackValid, firstDayOfWeek = _a.firstDayOfWeek, format$1 = _a.format, footer = _a.footer, id = _a.id, inputReadOnly = _a.inputReadOnly, invalid = _a.invalid, label = _a.label, _p = _a.locale, locale = _p === void 0 ? 'default' : _p, maxDate = _a.maxDate, minDate = _a.minDate, navigation = _a.navigation, navYearFirst = _a.navYearFirst, onEndDateChange = _a.onEndDateChange, onHide = _a.onHide, onStartDateChange = _a.onStartDateChange, onShow = _a.onShow, _q = _a.placeholder, placeholder = _q === void 0 ? ['Start date', 'End date'] : _q, _r = _a.range, range = _r === void 0 ? true : _r, ranges = _a.ranges, _s = _a.rangesButtonsColor, rangesButtonsColor = _s === void 0 ? 'secondary' : _s, rangesButtonsSize = _a.rangesButtonsSize, _t = _a.rangesButtonsVariant, rangesButtonsVariant = _t === void 0 ? 'ghost' : _t, required = _a.required, _u = _a.separator, separator = _u === void 0 ? true : _u, selectAdjacementDays = _a.selectAdjacementDays, _v = _a.selectionType, selectionType = _v === void 0 ? 'day' : _v, showAdjacementDays = _a.showAdjacementDays, showWeekNumber = _a.showWeekNumber, size = _a.size, startDate = _a.startDate, text = _a.text, timepicker = _a.timepicker, toggler = _a.toggler, _w = _a.todayButton, todayButton = _w === void 0 ? 'Today' : _w, _x = _a.todayButtonColor, todayButtonColor = _x === void 0 ? 'primary' : _x, _y = _a.todayButtonSize, todayButtonSize = _y === void 0 ? 'sm' : _y, todayButtonVariant = _a.todayButtonVariant, tooltipFeedback = _a.tooltipFeedback, valid = _a.valid, visible = _a.visible, weekdayFormat = _a.weekdayFormat, rest = __rest$1(_a, ["calendars", "calendarDate", "cancelButton", "cancelButtonColor", "cancelButtonSize", "cancelButtonVariant", "className", "cleaner", "closeOnSelect", "confirmButton", "confirmButtonColor", "confirmButtonSize", "confirmButtonVariant", "indicator", "dayFormat", "disabled", "disabledDates", "endDate", "feedback", "feedbackInvalid", "feedbackValid", "firstDayOfWeek", "format", "footer", "id", "inputReadOnly", "invalid", "label", "locale", "maxDate", "minDate", "navigation", "navYearFirst", "onEndDateChange", "onHide", "onStartDateChange", "onShow", "placeholder", "range", "ranges", "rangesButtonsColor", "rangesButtonsSize", "rangesButtonsVariant", "required", "separator", "selectAdjacementDays", "selectionType", "showAdjacementDays", "showWeekNumber", "size", "startDate", "text", "timepicker", "toggler", "todayButton", "todayButtonColor", "todayButtonSize", "todayButtonVariant", "tooltipFeedback", "valid", "visible", "weekdayFormat"]);
9443
9667
  var inputEndRef = useRef(null);
9444
9668
  var inputStartRef = useRef(null);
9445
9669
  var formRef = useRef();
9446
- var _y = useState(calendarDate ? new Date(calendarDate) : new Date()), _calendarDate = _y[0], setCalendarDate = _y[1];
9447
- var _z = useState(endDate ? new Date(endDate) : null), _endDate = _z[0], setEndDate = _z[1];
9448
- var _0 = useState(maxDate ? new Date(maxDate) : null), _maxDate = _0[0], setMaxDate = _0[1];
9449
- var _1 = useState(minDate ? new Date(minDate) : null), _minDate = _1[0], setMinDate = _1[1];
9450
- var _2 = useState(startDate ? new Date(startDate) : null), _startDate = _2[0], setStartDate = _2[1];
9451
- var _3 = useState(visible), _visible = _3[0], setVisible = _3[1];
9452
- var _4 = useState(startDate ? new Date(startDate) : null), initialStartDate = _4[0], setInitialStartDate = _4[1];
9453
- var _5 = useState(endDate ? new Date(endDate) : null), initialEndDate = _5[0], setInitialEndDate = _5[1];
9454
- var _6 = useState(null), inputStartHoverValue = _6[0], setInputStartHoverValue = _6[1];
9455
- var _7 = useState(null), inputEndHoverValue = _7[0], setInputEndHoverValue = _7[1];
9456
- var _8 = useState(valid !== null && valid !== void 0 ? valid : (invalid === true ? false : undefined)), isValid = _8[0], setIsValid = _8[1];
9457
- var _9 = useState(false), selectEndDate = _9[0], setSelectEndDate = _9[1];
9670
+ var _z = useState(calendarDate !== null && calendarDate !== void 0 ? calendarDate : null), _calendarDate = _z[0], setCalendarDate = _z[1];
9671
+ var _0 = useState(endDate !== null && endDate !== void 0 ? endDate : null), _endDate = _0[0], setEndDate = _0[1];
9672
+ var _1 = useState(maxDate !== null && maxDate !== void 0 ? maxDate : null), _maxDate = _1[0], setMaxDate = _1[1];
9673
+ var _2 = useState(minDate !== null && minDate !== void 0 ? minDate : null), _minDate = _2[0], setMinDate = _2[1];
9674
+ var _3 = useState(startDate !== null && startDate !== void 0 ? startDate : null), _startDate = _3[0], setStartDate = _3[1];
9675
+ var _4 = useState(visible), _visible = _4[0], setVisible = _4[1];
9676
+ var _5 = useState(startDate !== null && startDate !== void 0 ? startDate : null), initialStartDate = _5[0], setInitialStartDate = _5[1];
9677
+ var _6 = useState(endDate !== null && endDate !== void 0 ? endDate : null), initialEndDate = _6[0], setInitialEndDate = _6[1];
9678
+ var _7 = useState(null), inputStartHoverValue = _7[0], setInputStartHoverValue = _7[1];
9679
+ var _8 = useState(null), inputEndHoverValue = _8[0], setInputEndHoverValue = _8[1];
9680
+ var _9 = useState(valid !== null && valid !== void 0 ? valid : (invalid === true ? false : undefined)), isValid = _9[0], setIsValid = _9[1];
9681
+ var _10 = useState(false), selectEndDate = _10[0], setSelectEndDate = _10[1];
9458
9682
  useEffect(function () {
9459
9683
  setIsValid(valid !== null && valid !== void 0 ? valid : (invalid === true ? false : undefined));
9460
9684
  }, [valid, invalid]);
9461
9685
  useEffect(function () {
9462
9686
  if (startDate) {
9463
- setStartDate(new Date(startDate));
9464
- setCalendarDate(new Date(startDate));
9687
+ setStartDate(startDate);
9688
+ setCalendarDate(startDate);
9465
9689
  }
9466
9690
  }, [startDate]);
9467
9691
  useEffect(function () {
9468
9692
  if (endDate) {
9469
- setEndDate(new Date(endDate));
9470
- setCalendarDate(new Date(endDate));
9693
+ setEndDate(endDate);
9694
+ setCalendarDate(endDate);
9471
9695
  }
9472
9696
  }, [endDate]);
9473
9697
  useEffect(function () {
9474
- maxDate && setMaxDate(new Date(maxDate));
9698
+ maxDate && setMaxDate(maxDate);
9475
9699
  }, [maxDate]);
9476
9700
  useEffect(function () {
9477
- minDate && setMinDate(new Date(minDate));
9701
+ minDate && setMinDate(minDate);
9478
9702
  }, [minDate]);
9479
9703
  useEffect(function () {
9480
9704
  if (inputStartHoverValue) {
@@ -9504,11 +9728,15 @@ var CDateRangePicker = forwardRef(function (_a, ref) {
9504
9728
  }
9505
9729
  }, [formRef, _startDate, _endDate]);
9506
9730
  var formatDate = function (date) {
9507
- return format$1
9508
- ? format(date, format$1)
9509
- : timepicker
9510
- ? date.toLocaleString(locale)
9511
- : date.toLocaleDateString(locale);
9731
+ if (selectionType !== 'day') {
9732
+ return date;
9733
+ }
9734
+ var _date = new Date(date);
9735
+ return format$1 ?
9736
+ format(_date, format$1) :
9737
+ timepicker ?
9738
+ _date.toLocaleString(locale) :
9739
+ _date.toLocaleDateString(locale);
9512
9740
  };
9513
9741
  var setInputValue = function (el, date) {
9514
9742
  if (!el) {
@@ -9520,14 +9748,9 @@ var CDateRangePicker = forwardRef(function (_a, ref) {
9520
9748
  }
9521
9749
  el.value = '';
9522
9750
  };
9523
- var handleDayHover = function (date) {
9751
+ var handleDateHover = function (date) {
9524
9752
  selectEndDate ? setInputEndHoverValue(date) : setInputStartHoverValue(date);
9525
9753
  };
9526
- var handleCalendarDateChange = function (date, difference) {
9527
- difference
9528
- ? setCalendarDate(new Date(date.getFullYear(), date.getMonth() - difference, 1))
9529
- : setCalendarDate(date);
9530
- };
9531
9754
  var handleClear = function (event) {
9532
9755
  event.stopPropagation();
9533
9756
  setStartDate(null);
@@ -9564,42 +9787,45 @@ var CDateRangePicker = forwardRef(function (_a, ref) {
9564
9787
  setVisible(false);
9565
9788
  }
9566
9789
  };
9567
- var InputGroup = function () {
9568
- var _a;
9569
- return (React$1.createElement("div", { className: classNames$1('input-group', 'picker-input-group', (_a = {},
9570
- _a["input-group-".concat(size)] = size,
9571
- _a)) },
9572
- React$1.createElement("input", __assign$1({ autoComplete: "off", className: classNames$1('form-control date-picker-input', {
9573
- hover: inputStartHoverValue,
9574
- }), disabled: disabled }, (id && { name: range ? "".concat(id, "-start-date") : "".concat(id, "-date") }), { placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder, readOnly: inputReadOnly || typeof format$1 === 'string', required: required, onChange: function (event) {
9575
- var date = getLocalDateFromString(event.target.value, locale, timepicker);
9576
- if (date instanceof Date && date.getTime()) {
9577
- setCalendarDate(date);
9578
- setStartDate(date);
9579
- }
9580
- }, onClick: function () { return setSelectEndDate(false); }, ref: inputStartRef })),
9581
- range && separator !== false && (React$1.createElement("span", { className: "input-group-text" },
9582
- React$1.createElement("span", { className: "picker-input-group-icon date-picker-arrow-icon" }))),
9583
- range && (React$1.createElement("input", __assign$1({ autoComplete: "off", className: classNames$1('form-control date-picker-input', {
9584
- hover: inputEndHoverValue,
9585
- }), disabled: disabled }, (id && { name: "".concat(id, "-end-date") }), { placeholder: placeholder[1], readOnly: inputReadOnly || typeof format$1 === 'string', required: required, onChange: function (event) {
9586
- var date = getLocalDateFromString(event.target.value, locale, timepicker);
9587
- if (date instanceof Date && date.getTime()) {
9588
- setCalendarDate(date);
9589
- setEndDate(date);
9590
- }
9591
- }, onClick: function () { return setSelectEndDate(true); }, ref: inputEndRef }))),
9592
- (indicator || cleaner) && (React$1.createElement("span", { className: "input-group-text" },
9593
- indicator && (React$1.createElement("span", { className: "picker-input-group-indicator" }, typeof indicator === 'boolean' ? (React$1.createElement("span", { className: "picker-input-group-icon date-picker-input-icon" })) : (indicator))),
9594
- cleaner && (_startDate || _endDate) && (React$1.createElement("span", { className: "picker-input-group-cleaner", role: "button", onClick: function (event) { return handleClear(event); } }, typeof cleaner === 'boolean' ? (React$1.createElement("span", { className: "picker-input-group-icon date-picker-cleaner-icon" })) : (cleaner)))))));
9595
- };
9790
+ var InputGroup = function () { return (React$1.createElement("div", { className: "date-picker-input-group" },
9791
+ React$1.createElement("input", __assign$1({ autoComplete: "off", className: classNames$1('date-picker-input', {
9792
+ hover: inputStartHoverValue,
9793
+ }),
9794
+ // delay={true} TODO
9795
+ disabled: disabled }, (id && { name: range ? "".concat(id, "-start-date") : "".concat(id, "-date") }), { placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder, readOnly: inputReadOnly || typeof format$1 === 'string', required: required, onChange: function (event) {
9796
+ var date = getLocalDateFromString(event.target.value, locale, timepicker);
9797
+ if (date instanceof Date && date.getTime()) {
9798
+ setCalendarDate(date);
9799
+ setStartDate(date);
9800
+ }
9801
+ }, onClick: function () { return setSelectEndDate(false); }, ref: inputStartRef })),
9802
+ range && separator !== false && React$1.createElement("div", { className: "date-picker-separator" }),
9803
+ range && (React$1.createElement("input", __assign$1({ autoComplete: "off", className: classNames$1('date-picker-input', {
9804
+ hover: inputEndHoverValue,
9805
+ }),
9806
+ // delay={true} TODO
9807
+ disabled: disabled }, (id && { name: "".concat(id, "-end-date") }), { placeholder: placeholder[1], readOnly: inputReadOnly || typeof format$1 === 'string', required: required, onChange: function (event) {
9808
+ var date = getLocalDateFromString(event.target.value, locale, timepicker);
9809
+ if (date instanceof Date && date.getTime()) {
9810
+ setCalendarDate(date);
9811
+ setEndDate(date);
9812
+ }
9813
+ }, onClick: function () { return setSelectEndDate(true); }, ref: inputEndRef }))),
9814
+ indicator &&
9815
+ (typeof indicator === 'boolean' ? React$1.createElement("div", { className: "date-picker-indicator" }) : indicator),
9816
+ cleaner &&
9817
+ (_startDate || _endDate) &&
9818
+ (typeof cleaner === 'boolean' ? (React$1.createElement("div", { className: "date-picker-cleaner", onClick: function (event) { return handleClear(event); } })) : (React$1.isValidElement(cleaner) &&
9819
+ React$1.cloneElement(cleaner, {
9820
+ onClick: function (event) { return handleClear(event); },
9821
+ }))))); };
9596
9822
  return (React$1.createElement(CFormControlWrapper, { describedby: rest['aria-describedby'], feedback: feedback, feedbackInvalid: feedbackInvalid, feedbackValid: feedbackValid, id: id, invalid: isValid === false ? true : false, label: label, text: text, tooltipFeedback: tooltipFeedback, valid: isValid },
9597
9823
  React$1.createElement(CPicker, __assign$1({ className: classNames$1('date-picker', (_b = {},
9598
9824
  _b["date-picker-".concat(size)] = size,
9599
9825
  _b.disabled = disabled,
9600
9826
  _b['is-invalid'] = isValid === false ? true : false,
9601
9827
  _b['is-valid'] = isValid,
9602
- _b), className), disabled: disabled, footer: footer || timepicker, footerContent: React$1.createElement("div", { className: "picker-footer" },
9828
+ _b), className), disabled: disabled, dropdownClassNames: "date-picker-dropdown", footer: footer || timepicker, footerContent: React$1.createElement("div", { className: "date-picker-footer" },
9603
9829
  todayButton && (React$1.createElement(CButton, { className: "me-auto", color: todayButtonColor, size: todayButtonSize, variant: todayButtonVariant, onClick: function () {
9604
9830
  var date = new Date();
9605
9831
  handleStartDateChange(date);
@@ -9627,10 +9853,10 @@ var CDateRangePicker = forwardRef(function (_a, ref) {
9627
9853
  handleStartDateChange(ranges[key][0]);
9628
9854
  handleEndDateChange(ranges[key][1]);
9629
9855
  }, size: rangesButtonsSize, variant: rangesButtonsVariant }, key)); }))),
9630
- React$1.createElement(CCalendar, { calendarDate: _calendarDate, calendars: isMobile_1 ? 1 : calendars, className: "date-picker-calendars", dayFormat: dayFormat, disabledDates: disabledDates, endDate: _endDate, firstDayOfWeek: firstDayOfWeek, locale: locale, maxDate: _maxDate, minDate: _minDate, navigation: navigation, navYearFirst: navYearFirst, range: range, selectAdjacementDays: selectAdjacementDays, selectEndDate: selectEndDate, showAdjacementDays: showAdjacementDays, startDate: _startDate, onDayHover: function (date) { return handleDayHover(date); }, onCalendarDateChange: function (date) { return handleCalendarDateChange(date); }, onStartDateChange: function (date) { return handleStartDateChange(date); }, onEndDateChange: function (date) { return handleEndDateChange(date); }, onSelectEndChange: function (value) { return setSelectEndDate(value); }, weekdayFormat: weekdayFormat }),
9856
+ React$1.createElement(CCalendar, { calendarDate: _calendarDate, calendars: isMobile_1 ? 1 : calendars, className: "date-picker-calendars", dayFormat: dayFormat, disabledDates: disabledDates, endDate: _endDate, firstDayOfWeek: firstDayOfWeek, locale: locale, maxDate: _maxDate, minDate: _minDate, navigation: navigation, navYearFirst: navYearFirst, range: range, selectAdjacementDays: selectAdjacementDays, selectEndDate: selectEndDate, selectionType: selectionType, showAdjacementDays: showAdjacementDays, showWeekNumber: showWeekNumber, startDate: _startDate, onDateHover: function (date) { return handleDateHover(date); }, onCalendarDateChange: function (date) { return setCalendarDate(date); }, onStartDateChange: function (date) { return handleStartDateChange(date); }, onEndDateChange: function (date) { return handleEndDateChange(date); }, onSelectEndChange: function (value) { return setSelectEndDate(value); }, weekdayFormat: weekdayFormat }),
9631
9857
  timepicker && (React$1.createElement("div", { className: "date-picker-timepickers" }, isMobile_1 || (range && calendars === 1) ? (React$1.createElement(React$1.Fragment, null,
9632
- React$1.createElement(CTimePicker, { container: "inline", disabled: _startDate === null ? true : false, locale: locale, onTimeChange: function (_, __, date) { return date && handleStartDateChange(date); }, time: _startDate, variant: "select" }),
9633
- React$1.createElement(CTimePicker, { container: "inline", disabled: _endDate === null ? true : false, locale: locale, onTimeChange: function (_, __, date) { return date && handleEndDateChange(date); }, time: _endDate, variant: "select" }))) : (Array.from({ length: calendars }).map(function (_, index) { return (React$1.createElement(CTimePicker, { container: "inline", disabled: index === 0
9858
+ React$1.createElement(CTimePicker, { container: "inline", disabled: _startDate === null ? true : false, locale: locale, onTimeChange: function (_, __, date) { return date && handleStartDateChange(date); }, time: _startDate && new Date(_startDate), variant: "select" }),
9859
+ React$1.createElement(CTimePicker, { container: "inline", disabled: _endDate === null ? true : false, locale: locale, onTimeChange: function (_, __, date) { return date && handleEndDateChange(date); }, time: _endDate && new Date(_endDate), variant: "select" }))) : (Array.from({ length: calendars }).map(function (_, index) { return (React$1.createElement(CTimePicker, { container: "inline", disabled: index === 0
9634
9860
  ? _startDate === null
9635
9861
  ? true
9636
9862
  : false
@@ -9640,7 +9866,9 @@ var CDateRangePicker = forwardRef(function (_a, ref) {
9640
9866
  return index === 0
9641
9867
  ? date && handleStartDateChange(date)
9642
9868
  : date && handleEndDateChange(date);
9643
- }, time: index === 0 ? _startDate : _endDate, variant: "select" })); }))))))));
9869
+ }, time: index === 0
9870
+ ? _startDate && new Date(_startDate)
9871
+ : _endDate && new Date(_endDate), variant: "select" })); }))))))));
9644
9872
  });
9645
9873
  CDateRangePicker.displayName = 'CDateRangePicker';
9646
9874
  CDateRangePicker.propTypes = __assign$1(__assign$1(__assign$1(__assign$1({}, CCalendar.propTypes), CFormControlWrapper.propTypes), CPicker.propTypes), { cancelButton: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.node]), cancelButtonColor: (_a = CButton.propTypes) === null || _a === void 0 ? void 0 : _a.color, cancelButtonSize: (_b = CButton.propTypes) === null || _b === void 0 ? void 0 : _b.size, cancelButtonVariant: (_c = CButton.propTypes) === null || _c === void 0 ? void 0 : _c.variant, calendars: PropTypes$1.number, className: PropTypes$1.string, cleaner: PropTypes$1.bool, closeOnSelect: PropTypes$1.bool, confirmButton: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.node]), confirmButtonColor: (_d = CButton.propTypes) === null || _d === void 0 ? void 0 : _d.color, confirmButtonSize: (_e = CButton.propTypes) === null || _e === void 0 ? void 0 : _e.size, confirmButtonVariant: (_f = CButton.propTypes) === null || _f === void 0 ? void 0 : _f.variant, id: PropTypes$1.string, indicator: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.node]), inputReadOnly: PropTypes$1.bool, placeholder: PropTypes$1.oneOfType([
@@ -9850,9 +10078,8 @@ var CDropdownMenu = forwardRef(function (_a, ref) {
9850
10078
  var forkedRef = useForkedRef(ref, dropdownMenuRef);
9851
10079
  return (React$1.createElement(CConditionalPortal, { portal: portal !== null && portal !== void 0 ? portal : false },
9852
10080
  React$1.createElement(Component, __assign$1({ className: classNames$1('dropdown-menu', {
9853
- 'dropdown-menu-dark': dark,
9854
10081
  show: visible,
9855
- }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), rest), Component === 'ul'
10082
+ }, alignment && alignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), (dark && { 'data-coreui-theme': 'dark' }), rest), Component === 'ul'
9856
10083
  ? React$1.Children.map(children, function (child, index) {
9857
10084
  if (React$1.isValidElement(child)) {
9858
10085
  return React$1.createElement("li", { key: index }, React$1.cloneElement(child));
@@ -10695,7 +10922,7 @@ CModalTitle.displayName = 'CModalTitle';
10695
10922
  var createNativeOptions = function (options) {
10696
10923
  return options &&
10697
10924
  options.map(function (option, index) {
10698
- return option.options ? (React$1.createElement("optgroup", { label: option.label, key: index }, createNativeOptions(option.options))) : (React$1.createElement("option", { value: option.value, key: index, disabled: option.disabled }, option.text));
10925
+ return option.options ? (React$1.createElement("optgroup", { label: option.label, key: index }, createNativeOptions(option.options))) : (React$1.createElement("option", { value: option.value, key: index, disabled: option.disabled }, option.label));
10699
10926
  });
10700
10927
  };
10701
10928
  var CMultiSelectNativeSelect = forwardRef(function (_a, ref) {
@@ -10785,8 +11012,8 @@ CVirtualScroller.propTypes = {
10785
11012
  };
10786
11013
  CVirtualScroller.displayName = 'CVirtualScroller';
10787
11014
 
10788
- var createOption = function (text, options) {
10789
- var value = text.toLowerCase().replace(/\s/g, '-');
11015
+ var createOption = function (label, options) {
11016
+ var value = label.toLowerCase().replace(/\s/g, '-');
10790
11017
  var uniqueValue = value;
10791
11018
  var i = 1;
10792
11019
  while (options.some(function (option) { return String(option.value) === uniqueValue; })) {
@@ -10796,7 +11023,7 @@ var createOption = function (text, options) {
10796
11023
  return [
10797
11024
  {
10798
11025
  value: uniqueValue,
10799
- text: text,
11026
+ label: label,
10800
11027
  custom: true,
10801
11028
  },
10802
11029
  ];
@@ -10808,9 +11035,9 @@ var filterOptionsList = function (search, _options) {
10808
11035
  var option = _options_1[_i];
10809
11036
  var options = option.options &&
10810
11037
  option.options.filter(function (option) {
10811
- return option.text && option.text.toLowerCase().includes(search.toLowerCase());
11038
+ return option.lable && option.label.toLowerCase().includes(search.toLowerCase());
10812
11039
  });
10813
- if ((option.text && option.text.toLowerCase().includes(search.toLowerCase())) ||
11040
+ if ((option.lable && option.label.toLowerCase().includes(search.toLowerCase())) ||
10814
11041
  (options && options.length > 0)) {
10815
11042
  optionsList.push(Object.assign({}, option, options && options.length > 0 && { options: options }));
10816
11043
  }
@@ -10912,7 +11139,7 @@ var CMultiSelectOptions = forwardRef(function (_a, ref) {
10912
11139
  'form-multi-select-option-with-checkbox': optionsStyle === 'checkbox',
10913
11140
  'form-multi-selected': selected.some(function (_option) { return _option.value === option.value; }),
10914
11141
  disabled: option.disabled,
10915
- }), key: index, onClick: function () { return handleOptionOnClick && handleOptionOnClick(option); }, onKeyDown: function (event) { return handleKeyDown(event, option); }, tabIndex: 0 }, optionsTemplate ? optionsTemplate(option) : option.text)) : (React$1.createElement("div", { className: "form-multi-select-optgroup-label", key: index }, optionsGroupsTemplate ? optionsGroupsTemplate(option) : option.label));
11142
+ }), key: index, onClick: function () { return handleOptionOnClick && handleOptionOnClick(option); }, onKeyDown: function (event) { return handleKeyDown(event, option); }, tabIndex: 0 }, optionsTemplate ? optionsTemplate(option) : option.label)) : (React$1.createElement("div", { className: "form-multi-select-optgroup-label", key: index }, optionsGroupsTemplate ? optionsGroupsTemplate(option) : option.label));
10916
11143
  })) : (React$1.createElement("div", { className: "form-multi-select-options-empty" }, searchNoResultsLabel));
10917
11144
  };
10918
11145
  return (React$1.createElement(React$1.Fragment, null,
@@ -10951,19 +11178,18 @@ var CMultiSelectSelection = forwardRef(function (_a, ref) {
10951
11178
  selected.map(function (option, index) {
10952
11179
  if (selectionType === 'tags') {
10953
11180
  return (React$1.createElement("span", { className: "form-multi-select-tag", key: index },
10954
- option.text,
10955
- !option.disabled && (React$1.createElement("button", { className: "form-multi-select-tag-delete", "aria-label": "Close", onClick: function () { return onRemove && onRemove(option); } },
10956
- React$1.createElement("span", { "aria-hidden": "true" }, "\u00D7")))));
11181
+ option.label,
11182
+ !option.disabled && (React$1.createElement("button", { className: "form-multi-select-tag-delete", "aria-label": "Close", onClick: function () { return onRemove && onRemove(option); } }))));
10957
11183
  }
10958
11184
  return;
10959
11185
  }),
10960
11186
  multiple &&
10961
11187
  selectionType === 'text' &&
10962
11188
  selected.map(function (option, index) { return (React$1.createElement("span", { key: index },
10963
- option.text,
11189
+ option.label,
10964
11190
  index === selected.length - 1 ? '' : ',',
10965
11191
  "\u00A0")); }),
10966
- !multiple && !search && selected.map(function (option) { return option.text; })[0],
11192
+ !multiple && !search && selected.map(function (option) { return option.label; })[0],
10967
11193
  children));
10968
11194
  });
10969
11195
  CMultiSelectSelection.propTypes = {
@@ -11000,7 +11226,7 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11000
11226
  var flattenedOptions = useMemo(function () { return flattenOptionsArray(options); }, [JSON.stringify(options)]);
11001
11227
  var userOption = useMemo(function () {
11002
11228
  if (allowCreateOptions &&
11003
- filteredOptions.some(function (option) { return option.text && option.text.toLowerCase() === searchValue.toLowerCase(); })) {
11229
+ filteredOptions.some(function (option) { return option.label && option.label.toLowerCase() === searchValue.toLowerCase(); })) {
11004
11230
  return false;
11005
11231
  }
11006
11232
  return searchRef.current && createOption(String(searchValue), flattenedOptions);
@@ -11083,7 +11309,7 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11083
11309
  }
11084
11310
  if (!userOption) {
11085
11311
  setSelected(__spreadArray(__spreadArray([], selected, true), [
11086
- filteredOptions.find(function (option) { return String(option.text).toLowerCase() === searchValue.toLowerCase(); }),
11312
+ filteredOptions.find(function (option) { return String(option.label).toLowerCase() === searchValue.toLowerCase(); }),
11087
11313
  ], false));
11088
11314
  }
11089
11315
  setSearchValue('');
@@ -11134,14 +11360,11 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11134
11360
  setSelected(selected.filter(function (option) { return option.disabled; }));
11135
11361
  };
11136
11362
  return (React$1.createElement(CFormControlWrapper, { describedby: rest['aria-describedby'], feedback: feedback, feedbackInvalid: feedbackInvalid, feedbackValid: feedbackValid, id: id, invalid: invalid, label: label, text: text, tooltipFeedback: tooltipFeedback, valid: valid },
11137
- React$1.createElement(CMultiSelectNativeSelect, { className: 'form-multi-select', id: id, multiple: multiple, options: selected, required: required, value: multiple
11363
+ React$1.createElement(CMultiSelectNativeSelect, { id: id, multiple: multiple, options: selected, required: required, value: multiple
11138
11364
  ? selected.map(function (option) { return option.value.toString(); })
11139
11365
  : selected.map(function (option) { return option.value; })[0], onChange: function () { return onChange && onChange(selected); }, ref: nativeSelectRef }),
11140
- React$1.createElement("div", { className: classNames$1('form-multi-select', (_b = {
11141
- 'form-multi-select-with-cleaner': cleaner
11142
- },
11366
+ React$1.createElement("div", { className: classNames$1('form-multi-select', (_b = {},
11143
11367
  _b["form-multi-select-".concat(size)] = size,
11144
- _b['form-multi-select-selection-tags'] = multiple && selectionType === 'tags',
11145
11368
  _b.disabled = disabled,
11146
11369
  _b['is-invalid'] = invalid,
11147
11370
  _b['is-valid'] = valid,
@@ -11152,10 +11375,16 @@ var CMultiSelect = forwardRef(function (_a, ref) {
11152
11375
  selectionType === 'counter' && {
11153
11376
  placeholder: "".concat(selected.length, " ").concat(selectionTypeCounterText),
11154
11377
  }), (selected.length > 0 &&
11155
- !multiple && { placeholder: selected.map(function (option) { return option.text; })[0] }), (multiple &&
11378
+ !multiple && { placeholder: selected.map(function (option) { return option.label; })[0] }), (multiple &&
11156
11379
  selected.length > 0 &&
11157
11380
  selectionType !== 'counter' && { size: searchValue.length + 2 }), { ref: searchRef })))),
11158
- !disabled && cleaner && selected.length > 0 && (React$1.createElement("button", { type: "button", className: "form-multi-select-selection-cleaner", onClick: function () { return handleDeselectAll(); } }))),
11381
+ React$1.createElement("div", { className: "form-multi-select-buttons" },
11382
+ !disabled && cleaner && selected.length > 0 && (React$1.createElement("button", { type: "button", className: "form-multi-select-cleaner", onClick: function () { return handleDeselectAll(); } })),
11383
+ React$1.createElement("button", { type: "button", className: "form-multi-select-indicator", onClick: function (event) {
11384
+ event.preventDefault();
11385
+ event.stopPropagation();
11386
+ setVisible(!_visible);
11387
+ } }))),
11159
11388
  React$1.createElement("div", { className: "form-multi-select-dropdown", role: "menu", ref: dropdownRef },
11160
11389
  multiple && selectAll && (React$1.createElement("button", { type: "button", className: "form-multi-select-all", onClick: function () { return handleSelectAll(); } }, selectAllLabel)),
11161
11390
  React$1.createElement(CMultiSelectOptions, { handleOptionOnClick: function (option) { return !disabled && handleOptionOnClick(option); }, loading: loading, options: filteredOptions.length === 0 && allowCreateOptions
@@ -11178,7 +11407,7 @@ CNav.propTypes = {
11178
11407
  className: PropTypes$1.string,
11179
11408
  component: PropTypes$1.elementType,
11180
11409
  layout: PropTypes$1.oneOf(['fill', 'justified']),
11181
- variant: PropTypes$1.oneOf(['tabs', 'pills', 'underline']),
11410
+ variant: PropTypes$1.oneOf(['pills', 'tabs', 'underline']),
11182
11411
  };
11183
11412
  CNav.displayName = 'CNav';
11184
11413
 
@@ -11332,9 +11561,8 @@ var CNavbar = forwardRef(function (_a, ref) {
11332
11561
  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$1(_a, ["children", "className", "color", "colorScheme", "component", "container", "expand", "placement"]);
11333
11562
  return (React$1.createElement(Component, __assign$1({ className: classNames$1('navbar', (_b = {},
11334
11563
  _b["bg-".concat(color)] = color,
11335
- _b["navbar-".concat(colorScheme)] = colorScheme,
11336
11564
  _b[typeof expand === 'boolean' ? 'navbar-expand' : "navbar-expand-".concat(expand)] = expand,
11337
- _b), placement, className) }, rest, { ref: ref }), container ? (React$1.createElement("div", { className: typeof container === 'string' ? "container-".concat(container) : 'container' }, children)) : (React$1.createElement(React$1.Fragment, null, children))));
11565
+ _b), placement, className) }, (colorScheme && { 'data-coreui-theme': colorScheme }), rest, { ref: ref }), container ? (React$1.createElement("div", { className: typeof container === 'string' ? "container-".concat(container) : 'container' }, children)) : (React$1.createElement(React$1.Fragment, null, children))));
11338
11566
  });
11339
11567
  CNavbar.propTypes = {
11340
11568
  children: PropTypes$1.node,
@@ -11405,7 +11633,7 @@ CNavbarToggler.propTypes = {
11405
11633
  CNavbarToggler.displayName = 'CNavbarToggler';
11406
11634
 
11407
11635
  var COffcanvas = forwardRef(function (_a, ref) {
11408
- 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$1(_a, ["children", "backdrop", "className", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
11636
+ 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$1(_a, ["children", "backdrop", "className", "dark", "keyboard", "onHide", "onShow", "placement", "portal", "responsive", "scroll", "visible"]);
11409
11637
  var _h = useState(visible), _visible = _h[0], setVisible = _h[1];
11410
11638
  var offcanvasRef = useRef(null);
11411
11639
  var forkedRef = useForkedRef(ref, offcanvasRef);
@@ -11446,7 +11674,7 @@ var COffcanvas = forwardRef(function (_a, ref) {
11446
11674
  _a.showing = state === 'entering',
11447
11675
  _a.show = state === 'entered',
11448
11676
  _a['show hiding'] = state === 'exiting',
11449
- _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, rest, { ref: forkedRef }), children)));
11677
+ _a), className), role: "dialog", tabIndex: -1, onKeyDown: handleKeyDown }, (dark && { 'data-coreui-theme': 'dark' }), rest, { ref: forkedRef }), children)));
11450
11678
  }),
11451
11679
  backdrop && (React$1.createElement(CConditionalPortal, { portal: portal },
11452
11680
  React$1.createElement(CBackdrop, { className: "offcanvas-backdrop", onClick: handleBackdropDismiss, visible: _visible })))));
@@ -11455,6 +11683,7 @@ COffcanvas.propTypes = {
11455
11683
  backdrop: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.oneOf(['static'])]),
11456
11684
  children: PropTypes$1.node,
11457
11685
  className: PropTypes$1.string,
11686
+ dark: PropTypes$1.bool,
11458
11687
  keyboard: PropTypes$1.bool,
11459
11688
  onHide: PropTypes$1.func,
11460
11689
  onShow: PropTypes$1.func,
@@ -13415,7 +13644,7 @@ var getClickedColumnName = function (target, columnNames) {
13415
13644
  var closest = target.closest('tr');
13416
13645
  var children = closest ? Array.from(closest.children) : [];
13417
13646
  var clickedCell = children.filter(function (child) { return child.contains(target); })[0];
13418
- return columnNames[children.indexOf(clickedCell)];
13647
+ return columnNames[children.indexOf(clickedCell) - 1];
13419
13648
  };
13420
13649
  var getColumnKey = function (column) {
13421
13650
  return typeof column === 'object' ? column.key : column;
@@ -13427,6 +13656,12 @@ var getColumnLabel = function (column) {
13427
13656
  : pretifyName(column.key)
13428
13657
  : pretifyName(column);
13429
13658
  };
13659
+ var getColumnName = function (column) {
13660
+ if (typeof column === 'object') {
13661
+ return column.key;
13662
+ }
13663
+ return column;
13664
+ };
13430
13665
  var getColumnNames = function (columns, items) {
13431
13666
  if (columns) {
13432
13667
  var _columns = [];
@@ -13535,10 +13770,32 @@ var getColumnSorterState = function (key, sorterState) {
13535
13770
  var getColumnValues = function (items, key) {
13536
13771
  return items.map(function (item) { return item[key]; });
13537
13772
  };
13538
- var getTableDataCellProps = function (item, colName) {
13539
- var props = item._cellProps && __assign$1(__assign$1({}, (item._cellProps['all'] && __assign$1({}, item._cellProps['all']))), (item._cellProps[colName] && __assign$1({}, item._cellProps[colName])));
13773
+ var getTableDataCellProps = function (column, item, colName) {
13774
+ var props = {};
13775
+ if (typeof column === 'object' && column._colProps) {
13776
+ Object.assign(props, column._colProps);
13777
+ }
13778
+ if (item._cellProps && item._cellProps['all']) {
13779
+ Object.assign(props, item._cellProps['all']);
13780
+ }
13781
+ if (item._cellProps && item._cellProps[colName]) {
13782
+ Object.assign(props, item._cellProps[colName]);
13783
+ }
13540
13784
  return props;
13541
13785
  };
13786
+ var getTableDataCellStyles = function (column, item, colName) {
13787
+ var styles = {};
13788
+ if (typeof column === 'object' && column._colStyle) {
13789
+ Object.assign(styles, column._colStyle);
13790
+ }
13791
+ if (item._cellStyle && item._cellStyle['all']) {
13792
+ Object.assign(styles, item._cellStyle['all']);
13793
+ }
13794
+ if (item._cellStyle && item._cellStyle[colName]) {
13795
+ Object.assign(styles, item._cellStyle[colName]);
13796
+ }
13797
+ return styles;
13798
+ };
13542
13799
  var getTableHeaderCellProps = function (column) {
13543
13800
  if (typeof column === 'object' && column._props) {
13544
13801
  return column._props;
@@ -13596,8 +13853,8 @@ var sortItems = function (columnSorter, items, itemsDataColumns, sorterState) {
13596
13853
  };
13597
13854
 
13598
13855
  var CSmartTableBody = forwardRef(function (_a, ref) {
13599
- var clickableRows = _a.clickableRows, columnNames = _a.columnNames, currentItems = _a.currentItems, firstItemOnActivePageIndex = _a.firstItemOnActivePageIndex, noItemsLabel = _a.noItemsLabel, onRowChecked = _a.onRowChecked, onRowClick = _a.onRowClick, scopedColumns = _a.scopedColumns, selectable = _a.selectable, selected = _a.selected, rest = __rest$1(_a, ["clickableRows", "columnNames", "currentItems", "firstItemOnActivePageIndex", "noItemsLabel", "onRowChecked", "onRowClick", "scopedColumns", "selectable", "selected"]);
13600
- var colspan = selectable ? columnNames.length + 1 : columnNames.length;
13856
+ var clickableRows = _a.clickableRows, columnNames = _a.columnNames, columns = _a.columns, currentItems = _a.currentItems, firstItemOnActivePageIndex = _a.firstItemOnActivePageIndex, noItemsLabel = _a.noItemsLabel, onRowChecked = _a.onRowChecked, onRowClick = _a.onRowClick, scopedColumns = _a.scopedColumns, selectable = _a.selectable, selected = _a.selected, rest = __rest$1(_a, ["clickableRows", "columnNames", "columns", "currentItems", "firstItemOnActivePageIndex", "noItemsLabel", "onRowChecked", "onRowClick", "scopedColumns", "selectable", "selected"]);
13857
+ var colspan = selectable ? columns.length + 1 : columns.length;
13601
13858
  return (React$1.createElement(CTableBody, __assign$1({}, (clickableRows && {
13602
13859
  style: { cursor: 'pointer' },
13603
13860
  }), rest, { ref: ref }), currentItems.length > 0 ? (currentItems.map(function (item, trIndex) {
@@ -13615,13 +13872,14 @@ var CSmartTableBody = forwardRef(function (_a, ref) {
13615
13872
  delete _item['_selected'];
13616
13873
  onRowChecked && onRowChecked(_item, event.target.checked);
13617
13874
  } }))),
13618
- columnNames.map(function (colName, index) {
13875
+ columns.map(function (column, index) {
13876
+ var colName = getColumnName(column);
13619
13877
  return ((scopedColumns &&
13620
13878
  scopedColumns[colName] &&
13621
13879
  React$1.cloneElement(scopedColumns[colName](item, trIndex + firstItemOnActivePageIndex), {
13622
13880
  key: index,
13623
13881
  })) ||
13624
- (item[colName] !== undefined && (React$1.createElement(CTableDataCell, __assign$1({}, getTableDataCellProps(item, colName), { key: index }), item[colName]))));
13882
+ (item[colName] !== undefined && (React$1.createElement(CTableDataCell, __assign$1({}, getTableDataCellProps(column, item, colName), { style: getTableDataCellStyles(column, item, colName), key: index }), item[colName]))));
13625
13883
  })),
13626
13884
  scopedColumns && scopedColumns.details && (React$1.createElement(React$1.Fragment, null,
13627
13885
  React$1.createElement(CTableRow, null,
@@ -13953,9 +14211,9 @@ var CSmartTable = forwardRef(function (_a, ref) {
13953
14211
  header && (React$1.createElement(CSmartTableHead, __assign$1({}, tableHeadProps, { columnFilter: columnFilter, columnFilterState: columnFilterState, columns: columns !== null && columns !== void 0 ? columns : columnNames, columnSorter: columnSorter, items: _items, selectable: selectable, selectAll: selectAll, selectedAll: selectedAll, sorterState: sorterState, sortingIcon: sortingIcon, sortingIconAscending: sortingIconAscending, sortingIconDescending: sortingIconDescending, handleFilterOnChange: function (key, event) {
13954
14212
  return handleColumnFilterChange(key, event, 'change');
13955
14213
  }, handleFilterOnInput: function (key, event) { return handleColumnFilterChange(key, event, 'input'); }, handleOnCustomFilterChange: function (key, event) { return handleColumnFilterChange(key, event); }, handleSelectAllChecked: function () { return handleSelectAllChecked(); }, handleSort: function (key, index) { return handleSorterChange(key, index); } }))),
13956
- React$1.createElement(CSmartTableBody, __assign$1({ clickableRows: clickableRows, currentItems: currentItems, firstItemOnActivePageIndex: firstItemOnActivePageIndex, noItemsLabel: noItemsLabel, onRowClick: function (item, index, columnName, event) {
14214
+ React$1.createElement(CSmartTableBody, __assign$1({ clickableRows: clickableRows, columnNames: columnNames, columns: columns !== null && columns !== void 0 ? columns : columnNames, currentItems: currentItems, firstItemOnActivePageIndex: firstItemOnActivePageIndex, noItemsLabel: noItemsLabel, onRowClick: function (item, index, columnName, event) {
13957
14215
  return clickableRows && onRowClick && onRowClick(item, index, columnName, event);
13958
- }, onRowChecked: function (item, value) { return handleRowChecked(item, value); }, columnNames: columnNames, scopedColumns: scopedColumns, selectable: selectable, selected: _selected }, tableBodyProps)),
14216
+ }, onRowChecked: function (item, value) { return handleRowChecked(item, value); }, scopedColumns: scopedColumns, selectable: selectable, selected: _selected }, tableBodyProps)),
13959
14217
  typeof footer === 'boolean' && footer && (React$1.createElement(CSmartTableHead, __assign$1({ component: CTableFoot }, tableFootProps, { columnFilter: false, columnSorter: false, columns: columns !== null && columns !== void 0 ? columns : columnNames, items: _items, handleSelectAllChecked: function () { return handleSelectAllChecked(); }, selectable: selectable, selectAll: selectAll, selectedAll: selectedAll, showGroups: false }))),
13960
14218
  Array.isArray(footer) && (React$1.createElement(CTableFoot, __assign$1({}, tableFootProps),
13961
14219
  React$1.createElement(CTableRow, null, footer.map(function (item, index) { return (React$1.createElement(CTableDataCell, __assign$1({}, (typeof item === 'object' && item._props && __assign$1({}, item._props)), { key: index }), typeof item === 'object' ? item.label : item)); }))))),
@@ -14557,5 +14815,5 @@ CWidgetStatsF.propTypes = {
14557
14815
  };
14558
14816
  CWidgetStatsF.displayName = 'CWidgetStatsF';
14559
14817
 
14560
- export { CAccordion, CAccordionBody, CAccordionButton, CAccordionHeader, CAccordionItem, CAlert, CAlertHeading, CAlertLink, CAvatar, CBackdrop, CBadge, CBreadcrumb, CBreadcrumbItem, CButton, CButtonGroup, CButtonToolbar, CCallout, CCard, CCardBody, CCardFooter, CCardGroup, CCardHeader, CCardImage, CCardImageOverlay, CCardLink, CCardSubtitle, CCardText, CCardTitle, CCarousel, CCarouselCaption, CCarouselItem, CCloseButton, CCol, CCollapse, CConditionalPortal, CContainer, CDatePicker, CDateRangePicker, CDropdown, CDropdownDivider, CDropdownHeader, CDropdownItem, CDropdownItemPlain, CDropdownMenu, CDropdownToggle, CElementCover, CFooter, CForm, CFormCheck, CFormControlValidation, CFormControlWrapper, CFormFeedback, CFormFloating, CFormInput, CFormLabel, CFormRange, CFormSelect, CFormSwitch, CFormText, CFormTextarea, CHeader, CHeaderBrand, CHeaderDivider, CHeaderNav, CHeaderText, CHeaderToggler, CImage, CInputGroup, CInputGroupText, CLink, CListGroup, CListGroupItem, CLoadingButton, CModal, CModalBody, CModalContent, CModalDialog, CModalFooter, CModalHeader, CModalTitle, CMultiSelect, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle, CPagination, CPaginationItem, CPlaceholder, CPopover, CProgress, CProgressBar, CProgressStacked, CRow, CSidebar, CSidebarBrand, CSidebarFooter, CSidebarHeader, CSidebarNav, CSidebarToggler, CSmartPagination, CSmartTable, CSpinner, CTabContent, CTabPane, CTable, CTableBody, CTableCaption, CTableDataCell, CTableFoot, CTableHead, CTableHeaderCell, CTableRow, CTimePicker, CToast, CToastBody, CToastClose, CToastHeader, CToaster, CTooltip, CVirtualScroller, CWidgetStatsA, CWidgetStatsB, CWidgetStatsC, CWidgetStatsD, CWidgetStatsE, CWidgetStatsF, useForkedRef, usePopper, useStateWithCallback };
14818
+ export { CAccordion, CAccordionBody, CAccordionButton, CAccordionHeader, CAccordionItem, CAlert, CAlertHeading, CAlertLink, CAvatar, CBackdrop, CBadge, CBreadcrumb, CBreadcrumbItem, CButton, CButtonGroup, CButtonToolbar, CCallout, CCard, CCardBody, CCardFooter, CCardGroup, CCardHeader, CCardImage, CCardImageOverlay, CCardLink, CCardSubtitle, CCardText, CCardTitle, CCarousel, CCarouselCaption, CCarouselItem, CCloseButton, CCol, CCollapse, CConditionalPortal, CContainer, CDatePicker, CDateRangePicker, CDropdown, CDropdownDivider, CDropdownHeader, CDropdownItem, CDropdownItemPlain, CDropdownMenu, CDropdownToggle, CElementCover, CFooter, CForm, CFormCheck, CFormControlValidation, CFormControlWrapper, CFormFeedback, CFormFloating, CFormInput, CFormLabel, CFormRange, CFormSelect, CFormSwitch, CFormText, CFormTextarea, CHeader, CHeaderBrand, CHeaderDivider, CHeaderNav, CHeaderText, CHeaderToggler, CImage, CInputGroup, CInputGroupText, CLink, CListGroup, CListGroupItem, CLoadingButton, CModal, CModalBody, CModalContent, CModalDialog, CModalFooter, CModalHeader, CModalTitle, CMultiSelect, CNav, CNavGroup, CNavGroupItems, CNavItem, CNavLink, CNavTitle, CNavbar, CNavbarBrand, CNavbarNav, CNavbarText, CNavbarToggler, COffcanvas, COffcanvasBody, COffcanvasHeader, COffcanvasTitle, CPagination, CPaginationItem, CPlaceholder, CPopover, CProgress, CProgressBar, CProgressStacked, CRow, CSidebar, CSidebarBrand, CSidebarFooter, CSidebarHeader, CSidebarNav, CSidebarToggler, CSmartPagination, CSmartTable, CSpinner, CTabContent, CTabPane, CTable, CTableBody, CTableCaption, CTableDataCell, CTableFoot, CTableHead, CTableHeaderCell, CTableRow, CTimePicker, CToast, CToastBody, CToastClose, CToastHeader, CToaster, CTooltip, CVirtualScroller, CWidgetStatsA, CWidgetStatsB, CWidgetStatsC, CWidgetStatsD, CWidgetStatsE, CWidgetStatsF, useColorModes, useForkedRef, usePopper, useStateWithCallback };
14561
14819
  //# sourceMappingURL=index.es.js.map