@coreui/react-pro 4.2.0-beta.0 → 4.2.0-beta.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 (35) hide show
  1. package/README.md +1 -1
  2. package/dist/components/calendar/CCalendar.d.ts +27 -10
  3. package/dist/components/calendar/CCalendar.utils.d.ts +2 -1
  4. package/dist/components/daterangepicker/CDateRangePicker.d.ts +26 -11
  5. package/dist/components/picker/CPicker.d.ts +50 -9
  6. package/dist/components/timepicker/CTimePicker.d.ts +9 -13
  7. package/dist/components/timepicker/CTimePicker.utils.d.ts +13 -0
  8. package/dist/index.es.js +243 -206
  9. package/dist/index.es.js.map +1 -1
  10. package/dist/index.js +243 -206
  11. package/dist/index.js.map +1 -1
  12. package/dist/utils/calendar.d.ts +21 -0
  13. package/dist/utils/time.d.ts +17 -0
  14. package/package.json +3 -2
  15. package/src/components/accordion/__tests__/__snapshots__/CAccordionButton.spec.tsx.snap +2 -0
  16. package/src/components/accordion/__tests__/__snapshots__/CAccordionHeader.spec.tsx.snap +2 -0
  17. package/src/components/calendar/CCalendar.tsx +104 -58
  18. package/src/components/calendar/__tests__/CCalendar.spec.tsx +9 -0
  19. package/src/components/calendar/__tests__/__snapshots__/CCalendar.spec.tsx.snap +573 -0
  20. package/src/components/datepicker/CDatePicker.tsx +1 -0
  21. package/src/components/datepicker/__tests__/CDatePicker.spec.tsx +9 -0
  22. package/src/components/datepicker/__tests__/__snapshots__/CDatePicker.spec.tsx.snap +617 -0
  23. package/src/components/daterangepicker/CDateRangePicker.tsx +152 -91
  24. package/src/components/daterangepicker/__tests__/CDateRangePicker.spec.tsx +9 -0
  25. package/src/components/daterangepicker/__tests__/__snapshots__/CDateRangePicker.spec.tsx.snap +1201 -0
  26. package/src/components/dropdown/CDropdownMenu.tsx +5 -3
  27. package/src/components/picker/CPicker.tsx +99 -34
  28. package/src/components/picker/__tests__/CPicker.spec.tsx +9 -0
  29. package/src/components/picker/__tests__/__snapshots__/CPicker.spec.tsx.snap +23 -0
  30. package/src/components/timepicker/CTimePicker.tsx +66 -87
  31. package/src/components/timepicker/CTimePickerRollCol.tsx +7 -1
  32. package/src/components/timepicker/__tests__/CTimePicker.spec.tsx +9 -0
  33. package/src/{components/calendar/CCalendar.utils.ts → utils/calendar.ts} +11 -1
  34. package/src/utils/time.ts +58 -0
  35. package/src/components/timepicker/CTimePicker.utils.ts +0 -27
package/dist/index.js CHANGED
@@ -2860,10 +2860,6 @@ CButtonToolbar.propTypes = {
2860
2860
  };
2861
2861
  CButtonToolbar.displayName = 'CButtonToolbar';
2862
2862
 
2863
- var convertToLocalDate = function (d, locale, options) {
2864
- if (options === void 0) { options = {}; }
2865
- return d.toLocaleDateString(locale, options);
2866
- };
2867
2863
  var createGroupsInArray = function (arr, numberOfGroups) {
2868
2864
  var perGroup = Math.ceil(arr.length / numberOfGroups);
2869
2865
  return new Array(numberOfGroups)
@@ -2943,7 +2939,7 @@ var getMonthDetails = function (year, month, firstDayOfWeek) {
2943
2939
  });
2944
2940
  return weeks;
2945
2941
  };
2946
- var isDisabled = function (date, min, max, dates) {
2942
+ var isDateDisabled = function (date, min, max, dates) {
2947
2943
  var disabled;
2948
2944
  if (dates) {
2949
2945
  dates.forEach(function (_date) {
@@ -2996,14 +2992,20 @@ var isToday = function (date) {
2996
2992
  date.getMonth() == today.getMonth() &&
2997
2993
  date.getFullYear() == today.getFullYear());
2998
2994
  };
2995
+ var isValidDate = function (date) {
2996
+ var d = new Date(date);
2997
+ return d instanceof Date && d.getTime();
2998
+ };
2999
2999
 
3000
3000
  var CCalendar = React$1.forwardRef(function (_a, ref) {
3001
- var calendarDate = _a.calendarDate, disabledDates = _a.disabledDates, endDate = _a.endDate, _b = _a.firstDayOfWeek, firstDayOfWeek = _b === void 0 ? 1 : _b, _c = _a.locale, locale = _c === void 0 ? navigator.language : _c, maxDate = _a.maxDate, minDate = _a.minDate, _d = _a.navigation, navigation = _d === void 0 ? true : _d, nextIcon = _a.nextIcon, nextDoubleIcon = _a.nextDoubleIcon, prevIcon = _a.prevIcon, prevDoubleIcon = _a.prevDoubleIcon, range = _a.range, selectEndDate = _a.selectEndDate, startDate = _a.startDate, _e = _a.weekdayLength, weekdayLength = _e === void 0 ? 2 : _e, onCalendarDateChange = _a.onCalendarDateChange, onStartDateChange = _a.onStartDateChange, onEndDateChange = _a.onEndDateChange, onCalendarCellHover = _a.onCalendarCellHover;
3001
+ var calendarDate = _a.calendarDate, disabledDates = _a.disabledDates, endDate = _a.endDate, _b = _a.firstDayOfWeek, firstDayOfWeek = _b === void 0 ? 1 : _b, _c = _a.locale, locale = _c === void 0 ? 'default' : _c, maxDate = _a.maxDate, minDate = _a.minDate, _d = _a.navigation, navigation = _d === void 0 ? true : _d, navNextIcon = _a.navNextIcon, navNextDoubleIcon = _a.navNextDoubleIcon, navPrevIcon = _a.navPrevIcon, navPrevDoubleIcon = _a.navPrevDoubleIcon, range = _a.range, selectEndDate = _a.selectEndDate, startDate = _a.startDate, _e = _a.weekdayFormat, weekdayFormat = _e === void 0 ? 2 : _e, onCalendarDateChange = _a.onCalendarDateChange, onStartDateChange = _a.onStartDateChange, onEndDateChange = _a.onEndDateChange, onCalendarCellHover = _a.onCalendarCellHover, onViewChanged = _a.onViewChanged;
3002
3002
  var _f = React$1.useState(calendarDate ? new Date(calendarDate) : new Date()), _calendarDate = _f[0], setCalendarDate = _f[1];
3003
3003
  var _g = React$1.useState(startDate ? new Date(startDate) : null), _startDate = _g[0], setStartDate = _g[1];
3004
3004
  var _h = React$1.useState(endDate ? new Date(endDate) : null), _endDate = _h[0], setEndDate = _h[1];
3005
3005
  var _j = React$1.useState(selectEndDate), _selectEndDate = _j[0], setSelectEndDate = _j[1];
3006
3006
  var _k = React$1.useState('days'), view = _k[0], setView = _k[1];
3007
+ var _maxDate = maxDate ? new Date(maxDate) : null;
3008
+ var _minDate = minDate ? new Date(minDate) : null;
3007
3009
  React$1.useEffect(function () {
3008
3010
  if (calendarDate) {
3009
3011
  var d = new Date(calendarDate);
@@ -3051,6 +3053,9 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3051
3053
  React$1.useEffect(function () {
3052
3054
  setSelectEndDate(selectEndDate);
3053
3055
  }, [selectEndDate]);
3056
+ React$1.useEffect(function () {
3057
+ onViewChanged && onViewChanged(view);
3058
+ }, [view]);
3054
3059
  var setCalendarPage = function (years, months, setMonth) {
3055
3060
  if (months === void 0) { months = 0; }
3056
3061
  var year = _calendarDate.getFullYear();
@@ -3063,7 +3068,7 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3063
3068
  onCalendarDateChange && onCalendarDateChange(d);
3064
3069
  };
3065
3070
  var handleCellOnClick = function (date) {
3066
- if (isDisabled(date, minDate, maxDate, disabledDates)) {
3071
+ if (isDateDisabled(date, _minDate, _maxDate, disabledDates)) {
3067
3072
  return;
3068
3073
  }
3069
3074
  if (range) {
@@ -3087,7 +3092,7 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3087
3092
  }
3088
3093
  };
3089
3094
  var handleCellMouseEnter = function (date) {
3090
- if (isDisabled(date, minDate, maxDate, disabledDates)) {
3095
+ if (isDateDisabled(date, _minDate, _maxDate, disabledDates)) {
3091
3096
  return;
3092
3097
  }
3093
3098
  onCalendarCellHover && onCalendarCellHover(date);
@@ -3099,7 +3104,7 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3099
3104
  if (double === void 0) { double = false; }
3100
3105
  if (direction === 'prev') {
3101
3106
  if (double) {
3102
- setCalendarPage(view !== 'days' ? -10 : -1);
3107
+ setCalendarPage(view === 'years' ? -10 : -1);
3103
3108
  return;
3104
3109
  }
3105
3110
  if (view !== 'days') {
@@ -3111,7 +3116,7 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3111
3116
  }
3112
3117
  if (direction === 'next') {
3113
3118
  if (double) {
3114
- setCalendarPage(view !== 'days' ? 10 : 1);
3119
+ setCalendarPage(view === 'years' ? 10 : 1);
3115
3120
  return;
3116
3121
  }
3117
3122
  if (view !== 'days') {
@@ -3132,7 +3137,11 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3132
3137
  React__default$1["default"].createElement("tr", null, weekDays.map(function (_a, idx) {
3133
3138
  var date = _a.date;
3134
3139
  return (React__default$1["default"].createElement("th", { key: idx, className: "calendar-cell" },
3135
- React__default$1["default"].createElement("div", { className: "calendar-header-cell-inner" }, date.toLocaleDateString(locale, { weekday: 'long' }).slice(0, weekdayLength))));
3140
+ React__default$1["default"].createElement("div", { className: "calendar-header-cell-inner" }, typeof weekdayFormat === 'string'
3141
+ ? date.toLocaleDateString(locale, { weekday: weekdayFormat })
3142
+ : date
3143
+ .toLocaleDateString(locale, { weekday: 'long' })
3144
+ .slice(0, weekdayFormat))));
3136
3145
  })))),
3137
3146
  React__default$1["default"].createElement("tbody", { onMouseLeave: function () { return handleCellMouseLeave(); } },
3138
3147
  view === 'days' &&
@@ -3141,7 +3150,7 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3141
3150
  var date = _a.date, month = _a.month;
3142
3151
  return (React__default$1["default"].createElement("td", { className: classNames$1('calendar-cell', {
3143
3152
  today: isToday(date),
3144
- disabled: isDisabled(date, minDate, maxDate, disabledDates),
3153
+ disabled: isDateDisabled(date, _minDate, _maxDate, disabledDates),
3145
3154
  next: month === 'next',
3146
3155
  previous: month === 'previous',
3147
3156
  last: isLastDayOfMonth(date),
@@ -3177,16 +3186,16 @@ var CCalendar = React$1.forwardRef(function (_a, ref) {
3177
3186
  var Navigation = function () {
3178
3187
  return (React__default$1["default"].createElement("div", { className: "calendar-nav" },
3179
3188
  navigation && (React__default$1["default"].createElement("div", { className: "calendar-nav-prev" },
3180
- React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev', true); } }, prevDoubleIcon ? (prevDoubleIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-prev" }))),
3181
- React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev'); } }, prevIcon ? (prevIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-prev" }))))),
3189
+ React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev', true); } }, navPrevDoubleIcon ? (navPrevDoubleIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-prev" }))),
3190
+ view === 'days' && (React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('prev'); } }, navPrevIcon ? (navPrevIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-prev" })))))),
3182
3191
  React__default$1["default"].createElement("div", { className: "calendar-nav-date" },
3183
3192
  view === 'days' && (React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && setView('months'); } }, _calendarDate.toLocaleDateString(locale, { month: 'long' }))),
3184
3193
  React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return navigation && setView('years'); } }, _calendarDate.toLocaleDateString(locale, { year: 'numeric' }))),
3185
3194
  navigation && (React__default$1["default"].createElement("div", { className: "calendar-nav-next" },
3186
- React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next'); } }, nextIcon ? (nextIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-next" }))),
3187
- React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next', true); } }, nextDoubleIcon ? (nextDoubleIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-next" })))))));
3195
+ view === 'days' && (React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next'); } }, navNextIcon ? (navNextIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-next" })))),
3196
+ React__default$1["default"].createElement(CButton, { color: "transparent", size: "sm", onClick: function () { return handleNavigationOnClick('next', true); } }, navNextDoubleIcon ? (navNextDoubleIcon) : (React__default$1["default"].createElement("span", { className: "calendar-nav-icon calendar-nav-icon-double-next" })))))));
3188
3197
  };
3189
- return (React__default$1["default"].createElement("div", { className: "calendar", ref: ref },
3198
+ return (React__default$1["default"].createElement("div", { className: classNames$1('calendar', view), ref: ref },
3190
3199
  React__default$1["default"].createElement(Navigation, null),
3191
3200
  React__default$1["default"].createElement(Calendar, null)));
3192
3201
  });
@@ -3197,21 +3206,25 @@ CCalendar.propTypes = {
3197
3206
  endDate: PropTypes$1.oneOfType([PropTypes$1.instanceOf(Date), PropTypes$1.string]),
3198
3207
  firstDayOfWeek: PropTypes$1.number,
3199
3208
  locale: PropTypes$1.string,
3200
- maxDate: PropTypes$1.instanceOf(Date),
3201
- minDate: PropTypes$1.instanceOf(Date),
3209
+ maxDate: PropTypes$1.oneOfType([PropTypes$1.instanceOf(Date), PropTypes$1.string]),
3210
+ minDate: PropTypes$1.oneOfType([PropTypes$1.instanceOf(Date), PropTypes$1.string]),
3202
3211
  navigation: PropTypes$1.bool,
3203
- nextIcon: PropTypes$1.node,
3204
- nextDoubleIcon: PropTypes$1.node,
3205
- prevIcon: PropTypes$1.node,
3206
- prevDoubleIcon: PropTypes$1.node,
3212
+ navNextIcon: PropTypes$1.node,
3213
+ navNextDoubleIcon: PropTypes$1.node,
3214
+ navPrevIcon: PropTypes$1.node,
3215
+ navPrevDoubleIcon: PropTypes$1.node,
3207
3216
  range: PropTypes$1.bool,
3208
3217
  selectEndDate: PropTypes$1.bool,
3209
3218
  startDate: PropTypes$1.oneOfType([PropTypes$1.instanceOf(Date), PropTypes$1.string]),
3210
- weekdayLength: PropTypes$1.number,
3219
+ weekdayFormat: PropTypes$1.oneOfType([
3220
+ PropTypes$1.number,
3221
+ PropTypes$1.oneOf(['long', 'narrow', 'short']),
3222
+ ]),
3211
3223
  onCalendarCellHover: PropTypes$1.func,
3212
3224
  onCalendarDateChange: PropTypes$1.func,
3213
3225
  onStartDateChange: PropTypes$1.func,
3214
3226
  onEndDateChange: PropTypes$1.func,
3227
+ onViewChanged: PropTypes$1.func,
3215
3228
  };
3216
3229
  CCalendar.displayName = 'CCalendar';
3217
3230
 
@@ -4682,6 +4695,55 @@ lib.useDeviceSelectors = useDeviceSelectors;
4682
4695
  lib.useMobileOrientation = useMobileOrientation;
4683
4696
  lib.withOrientationChange = withOrientationChange;
4684
4697
 
4698
+ var CFormInput = React$1.forwardRef(function (_a, ref) {
4699
+ var _b;
4700
+ var children = _a.children, className = _a.className, invalid = _a.invalid, plainText = _a.plainText, size = _a.size, _c = _a.type, type = _c === void 0 ? 'text' : _c, valid = _a.valid, rest = __rest$1(_a, ["children", "className", "invalid", "plainText", "size", "type", "valid"]);
4701
+ var _className = classNames$1(plainText ? 'form-control-plaintext' : 'form-control', (_b = {},
4702
+ _b["form-control-".concat(size)] = size,
4703
+ _b['form-control-color'] = type === 'color',
4704
+ _b['is-invalid'] = invalid,
4705
+ _b['is-valid'] = valid,
4706
+ _b), className);
4707
+ return (React__default$1["default"].createElement("input", __assign$1({ type: type, className: _className }, rest, { ref: ref }), children));
4708
+ });
4709
+ CFormInput.propTypes = {
4710
+ children: PropTypes$1.node,
4711
+ className: PropTypes$1.string,
4712
+ invalid: PropTypes$1.bool,
4713
+ plainText: PropTypes$1.bool,
4714
+ size: PropTypes$1.oneOf(['sm', 'lg']),
4715
+ type: PropTypes$1.oneOfType([PropTypes$1.oneOf(['color', 'file', 'text']), PropTypes$1.string]),
4716
+ valid: PropTypes$1.bool,
4717
+ };
4718
+ CFormInput.displayName = 'CFormInput';
4719
+
4720
+ var CInputGroup = React$1.forwardRef(function (_a, ref) {
4721
+ var _b;
4722
+ var children = _a.children, className = _a.className, size = _a.size, rest = __rest$1(_a, ["children", "className", "size"]);
4723
+ var _className = classNames$1('input-group', (_b = {},
4724
+ _b["input-group-".concat(size)] = size,
4725
+ _b), className);
4726
+ return (React__default$1["default"].createElement("div", __assign$1({ className: _className }, rest, { ref: ref }), children));
4727
+ });
4728
+ CInputGroup.propTypes = {
4729
+ children: PropTypes$1.node,
4730
+ className: PropTypes$1.string,
4731
+ size: PropTypes$1.oneOf(['sm', 'lg']),
4732
+ };
4733
+ CInputGroup.displayName = 'CInputGroup';
4734
+
4735
+ var CInputGroupText = React$1.forwardRef(function (_a, ref) {
4736
+ var children = _a.children, className = _a.className, _b = _a.component, Component = _b === void 0 ? 'span' : _b, rest = __rest$1(_a, ["children", "className", "component"]);
4737
+ var _className = classNames$1('input-group-text', className);
4738
+ return (React__default$1["default"].createElement(Component, __assign$1({ className: _className }, rest, { ref: ref }), children));
4739
+ });
4740
+ CInputGroupText.propTypes = {
4741
+ children: PropTypes$1.node,
4742
+ className: PropTypes$1.string,
4743
+ component: PropTypes$1.elementType,
4744
+ };
4745
+ CInputGroupText.displayName = 'CInputGroupText';
4746
+
4685
4747
  var ManagerReferenceNodeContext = React__namespace.createContext();
4686
4748
  var ManagerReferenceNodeSetterContext = React__namespace.createContext();
4687
4749
  function Manager(_ref) {
@@ -5061,6 +5123,10 @@ function getContainingBlock(element) {
5061
5123
 
5062
5124
  var currentNode = getParentNode(element);
5063
5125
 
5126
+ if (isShadowRoot(currentNode)) {
5127
+ currentNode = currentNode.host;
5128
+ }
5129
+
5064
5130
  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
5065
5131
  var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that
5066
5132
  // create a containing block.
@@ -5293,7 +5359,7 @@ function mapToStyles(_ref2) {
5293
5359
 
5294
5360
  if (placement === top || (placement === left || placement === right) && variation === end) {
5295
5361
  sideY = bottom;
5296
- var offsetY = isFixed && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
5362
+ var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
5297
5363
  offsetParent[heightProp];
5298
5364
  y -= offsetY - popperRect.height;
5299
5365
  y *= gpuAcceleration ? 1 : -1;
@@ -5301,7 +5367,7 @@ function mapToStyles(_ref2) {
5301
5367
 
5302
5368
  if (placement === left || (placement === top || placement === bottom) && variation === end) {
5303
5369
  sideX = right;
5304
- var offsetX = isFixed && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
5370
+ var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
5305
5371
  offsetParent[widthProp];
5306
5372
  x -= offsetX - popperRect.width;
5307
5373
  x *= gpuAcceleration ? 1 : -1;
@@ -7189,11 +7255,10 @@ var CDropdownMenu = function (_a) {
7189
7255
  };
7190
7256
  }, [visible]);
7191
7257
  var handleKeyup = function (event) {
7192
- var _a;
7193
7258
  if (autoClose === false) {
7194
7259
  return;
7195
7260
  }
7196
- if (!((_a = dropdownMenuRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {
7261
+ if (event.key === 'Escape') {
7197
7262
  setVisible(false);
7198
7263
  }
7199
7264
  };
@@ -7306,18 +7371,19 @@ CDropdownToggle.propTypes = {
7306
7371
  };
7307
7372
  CDropdownToggle.displayName = 'CDropdownToggle';
7308
7373
 
7374
+ var _a$1, _b$1, _c$1, _d, _e, _f;
7309
7375
  var CPicker = React$1.forwardRef(function (_a, ref) {
7310
- var children = _a.children, _b = _a.cancelButtonText, cancelButtonText = _b === void 0 ? 'Cancel' : _b, className = _a.className, _c = _a.container, container = _c === void 0 ? 'dropdown' : _c, disabled = _a.disabled, footer = _a.footer, _d = _a.okButtonText, okButtonText = _d === void 0 ? 'OK' : _d, onCancelClick = _a.onCancelClick, onOkClick = _a.onOkClick, onHide = _a.onHide, onShow = _a.onShow, Toggler = _a.toggler, visible = _a.visible, rest = __rest$1(_a, ["children", "cancelButtonText", "className", "container", "disabled", "footer", "okButtonText", "onCancelClick", "onOkClick", "onHide", "onShow", "toggler", "visible"]);
7311
- var _e = React$1.useState(visible), _visible = _e[0], setVisible = _e[1];
7376
+ var children = _a.children, _b = _a.cancelButton, cancelButton = _b === void 0 ? 'Cancel' : _b, _c = _a.cancelButtonColor, cancelButtonColor = _c === void 0 ? 'primary' : _c, _d = _a.cancelButtonSize, cancelButtonSize = _d === void 0 ? 'sm' : _d, _e = _a.cancelButtonVariant, cancelButtonVariant = _e === void 0 ? 'ghost' : _e, _f = _a.confirmButton, confirmButton = _f === void 0 ? 'OK' : _f, _g = _a.confirmButtonColor, confirmButtonColor = _g === void 0 ? 'primary' : _g, _h = _a.confirmButtonSize, confirmButtonSize = _h === void 0 ? 'sm' : _h, confirmButtonVariant = _a.confirmButtonVariant, className = _a.className, _j = _a.container, container = _j === void 0 ? 'dropdown' : _j, disabled = _a.disabled, footer = _a.footer, onCancel = _a.onCancel, onConfirm = _a.onConfirm, onHide = _a.onHide, onShow = _a.onShow, Toggler = _a.toggler, visible = _a.visible, rest = __rest$1(_a, ["children", "cancelButton", "cancelButtonColor", "cancelButtonSize", "cancelButtonVariant", "confirmButton", "confirmButtonColor", "confirmButtonSize", "confirmButtonVariant", "className", "container", "disabled", "footer", "onCancel", "onConfirm", "onHide", "onShow", "toggler", "visible"]);
7377
+ var _k = React$1.useState(visible), _visible = _k[0], setVisible = _k[1];
7312
7378
  React$1.useEffect(function () {
7313
7379
  setVisible(visible);
7314
7380
  }, [visible]);
7315
7381
  var Footer = function () { return (React__default$1["default"].createElement(React__default$1["default"].Fragment, null,
7316
- React__default$1["default"].createElement(CButton, { color: "primary", size: "sm", variant: "ghost", onClick: function () { return onCancelClick && onCancelClick(); } }, cancelButtonText),
7317
- React__default$1["default"].createElement(CButton, { color: "primary", size: "sm", onClick: function () {
7318
- onOkClick && onOkClick();
7382
+ cancelButton && (React__default$1["default"].createElement(CButton, { color: cancelButtonColor, size: cancelButtonSize, variant: cancelButtonVariant, onClick: function () { return onCancel && onCancel(); } }, cancelButton)),
7383
+ confirmButton && (React__default$1["default"].createElement(CButton, { color: confirmButtonColor, size: confirmButtonSize, variant: confirmButtonVariant, onClick: function () {
7384
+ onConfirm && onConfirm();
7319
7385
  setVisible(false);
7320
- } }, okButtonText))); };
7386
+ } }, confirmButton)))); };
7321
7387
  var _className = classNames$1('picker', className);
7322
7388
  switch (container) {
7323
7389
  case 'inline':
@@ -7337,29 +7403,7 @@ var CPicker = React$1.forwardRef(function (_a, ref) {
7337
7403
  }
7338
7404
  });
7339
7405
  CPicker.displayName = 'CPicker';
7340
- CPicker.propTypes = __assign$1(__assign$1({}, CDropdown.propTypes), { container: PropTypes$1.oneOf(['dropdown', 'inline']), disabled: PropTypes$1.bool, onCancelClick: PropTypes$1.func, onOkClick: PropTypes$1.func });
7341
-
7342
- var CFormInput = React$1.forwardRef(function (_a, ref) {
7343
- var _b;
7344
- var children = _a.children, className = _a.className, invalid = _a.invalid, plainText = _a.plainText, size = _a.size, _c = _a.type, type = _c === void 0 ? 'text' : _c, valid = _a.valid, rest = __rest$1(_a, ["children", "className", "invalid", "plainText", "size", "type", "valid"]);
7345
- var _className = classNames$1(plainText ? 'form-control-plaintext' : 'form-control', (_b = {},
7346
- _b["form-control-".concat(size)] = size,
7347
- _b['form-control-color'] = type === 'color',
7348
- _b['is-invalid'] = invalid,
7349
- _b['is-valid'] = valid,
7350
- _b), className);
7351
- return (React__default$1["default"].createElement("input", __assign$1({ type: type, className: _className }, rest, { ref: ref }), children));
7352
- });
7353
- CFormInput.propTypes = {
7354
- children: PropTypes$1.node,
7355
- className: PropTypes$1.string,
7356
- invalid: PropTypes$1.bool,
7357
- plainText: PropTypes$1.bool,
7358
- size: PropTypes$1.oneOf(['sm', 'lg']),
7359
- type: PropTypes$1.oneOfType([PropTypes$1.oneOf(['color', 'file', 'text']), PropTypes$1.string]),
7360
- valid: PropTypes$1.bool,
7361
- };
7362
- CFormInput.displayName = 'CFormInput';
7406
+ CPicker.propTypes = __assign$1({ cancelButton: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.node]), cancelButtonColor: (_a$1 = CButton.propTypes) === null || _a$1 === void 0 ? void 0 : _a$1.color, cancelButtonSize: (_b$1 = CButton.propTypes) === null || _b$1 === void 0 ? void 0 : _b$1.size, cancelButtonVariant: (_c$1 = CButton.propTypes) === null || _c$1 === void 0 ? void 0 : _c$1.variant, 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, children: PropTypes$1.node, className: PropTypes$1.string, container: PropTypes$1.oneOf(['dropdown', 'inline']), disabled: PropTypes$1.bool, footer: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.node]), onCancel: PropTypes$1.func, onConfirm: PropTypes$1.func, toggler: PropTypes$1.node }, CDropdown.propTypes);
7363
7407
 
7364
7408
  var CFormSelect = React$1.forwardRef(function (_a, ref) {
7365
7409
  var _b;
@@ -7387,43 +7431,21 @@ CFormSelect.propTypes = {
7387
7431
  };
7388
7432
  CFormSelect.displayName = 'CFormSelect';
7389
7433
 
7390
- var CInputGroup = React$1.forwardRef(function (_a, ref) {
7391
- var _b;
7392
- var children = _a.children, className = _a.className, size = _a.size, rest = __rest$1(_a, ["children", "className", "size"]);
7393
- var _className = classNames$1('input-group', (_b = {},
7394
- _b["input-group-".concat(size)] = size,
7395
- _b), className);
7396
- return (React__default$1["default"].createElement("div", __assign$1({ className: _className }, rest, { ref: ref }), children));
7397
- });
7398
- CInputGroup.propTypes = {
7399
- children: PropTypes$1.node,
7400
- className: PropTypes$1.string,
7401
- size: PropTypes$1.oneOf(['sm', 'lg']),
7402
- };
7403
- CInputGroup.displayName = 'CInputGroup';
7404
-
7405
- var CInputGroupText = React$1.forwardRef(function (_a, ref) {
7406
- var children = _a.children, className = _a.className, _b = _a.component, Component = _b === void 0 ? 'span' : _b, rest = __rest$1(_a, ["children", "className", "component"]);
7407
- var _className = classNames$1('input-group-text', className);
7408
- return (React__default$1["default"].createElement(Component, __assign$1({ className: _className }, rest, { ref: ref }), children));
7409
- });
7410
- CInputGroupText.propTypes = {
7411
- children: PropTypes$1.node,
7412
- className: PropTypes$1.string,
7413
- component: PropTypes$1.elementType,
7414
- };
7415
- CInputGroupText.displayName = 'CInputGroupText';
7416
-
7417
7434
  var CTimePickerRollCol = React$1.forwardRef(function (_a, ref) {
7418
7435
  var elements = _a.elements, onClick = _a.onClick, selected = _a.selected;
7436
+ var init = React$1.useRef(true);
7419
7437
  var colRef = React$1.useRef(null);
7420
7438
  var forkedRef = useForkedRef(ref, colRef);
7421
7439
  React$1.useEffect(function () {
7422
7440
  var _a, _b;
7423
7441
  var nodeEl = (_a = colRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('.selected');
7424
7442
  if (nodeEl && nodeEl instanceof HTMLElement) {
7425
- (_b = colRef.current) === null || _b === void 0 ? void 0 : _b.scrollTo({ top: nodeEl.offsetTop, behavior: 'smooth' });
7443
+ (_b = colRef.current) === null || _b === void 0 ? void 0 : _b.scrollTo({
7444
+ top: nodeEl.offsetTop,
7445
+ behavior: init.current ? 'auto' : 'smooth',
7446
+ });
7426
7447
  }
7448
+ init.current = false;
7427
7449
  }, [selected]);
7428
7450
  return (React__default$1["default"].createElement("div", { className: "time-picker-roll-col", ref: forkedRef }, elements.map(function (element, index) {
7429
7451
  return (React__default$1["default"].createElement("div", { className: classNames$1('time-picker-roll-cell', {
@@ -7451,6 +7473,9 @@ var convert12hTo24h = function (abbr, hour) {
7451
7473
  return hour + 12;
7452
7474
  };
7453
7475
  var convert24hTo12h = function (hour) { return hour % 12 || 12; };
7476
+ var convertTimeToDate = function (time) {
7477
+ return time ? (time instanceof Date ? new Date(time) : new Date("1970-01-01 ".concat(time))) : null;
7478
+ };
7454
7479
  var getAmPm = function (date, locale) {
7455
7480
  if (date.toLocaleTimeString(locale).includes('AM')) {
7456
7481
  return 'am';
@@ -7460,47 +7485,51 @@ var getAmPm = function (date, locale) {
7460
7485
  }
7461
7486
  return date.getHours() >= 12 ? 'pm' : 'am';
7462
7487
  };
7488
+ var getListOfHours = function (locale) {
7489
+ return Array.from({ length: isAmPm(locale) ? 12 : 24 }, function (_, i) {
7490
+ return {
7491
+ value: isAmPm(locale) ? i + 1 : i,
7492
+ label: (isAmPm(locale) ? i + 1 : i).toLocaleString(locale),
7493
+ };
7494
+ });
7495
+ };
7496
+ var getMinutesOrSeconds = function (locale) {
7497
+ return Array.from({ length: 60 }, function (_, i) {
7498
+ return {
7499
+ value: i,
7500
+ label: i.toLocaleString(locale).padStart(2, (0).toLocaleString(locale)),
7501
+ };
7502
+ });
7503
+ };
7504
+ var getSelectedHour = function (date, locale) {
7505
+ return date ? (isAmPm(locale) ? convert24hTo12h(date.getHours()) : date.getHours()) : '';
7506
+ };
7507
+ var getSelectedMinutes = function (date) { return (date ? date.getMinutes() : ''); };
7508
+ var getSelectedSeconds = function (date) { return (date ? date.getSeconds() : ''); };
7463
7509
  var isAmPm = function (locale) {
7464
7510
  return ['am', 'AM', 'pm', 'PM'].some(function (el) { return new Date().toLocaleString(locale).includes(el); });
7465
7511
  };
7512
+ var isValidTime = function (time) {
7513
+ var d = new Date("1970-01-01 ".concat(time));
7514
+ return d instanceof Date && d.getTime();
7515
+ };
7466
7516
 
7467
7517
  var CTimePicker = React$1.forwardRef(function (_a, ref) {
7468
7518
  var _b;
7469
- var className = _a.className, _c = _a.cleaner, cleaner = _c === void 0 ? true : _c, cleanerIcon = _a.cleanerIcon, _d = _a.container, container = _d === void 0 ? 'dropdown' : _d, defaultIcon = _a.defaultIcon, disabled = _a.disabled, _e = _a.footer, footer = _e === void 0 ? true : _e, inputReadOnly = _a.inputReadOnly, _f = _a.locale, locale = _f === void 0 ? navigator.language : _f, onChange = _a.onChange, _g = _a.placeholder, placeholder = _g === void 0 ? 'Select time' : _g, size = _a.size, value = _a.value, _h = _a.variant, variant = _h === void 0 ? 'roll' : _h, rest = __rest$1(_a, ["className", "cleaner", "cleanerIcon", "container", "defaultIcon", "disabled", "footer", "inputReadOnly", "locale", "onChange", "placeholder", "size", "value", "variant"]);
7519
+ var className = _a.className, _c = _a.cleaner, cleaner = _c === void 0 ? true : _c, _d = _a.container, container = _d === void 0 ? 'dropdown' : _d, disabled = _a.disabled, _e = _a.footer, footer = _e === void 0 ? true : _e, _f = _a.indicator, indicator = _f === void 0 ? true : _f, inputReadOnly = _a.inputReadOnly, _g = _a.locale, locale = _g === void 0 ? 'default' : _g, onTimeChange = _a.onTimeChange, onHide = _a.onHide, onShow = _a.onShow, _h = _a.placeholder, placeholder = _h === void 0 ? 'Select time' : _h, size = _a.size, time = _a.time, _j = _a.variant, variant = _j === void 0 ? 'roll' : _j, rest = __rest$1(_a, ["className", "cleaner", "container", "disabled", "footer", "indicator", "inputReadOnly", "locale", "onTimeChange", "onHide", "onShow", "placeholder", "size", "time", "variant"]);
7470
7520
  var inputRef = React$1.useRef(null);
7471
- var _j = React$1.useState(value ? (value instanceof Date ? new Date(value) : new Date("1970-01-01 ".concat(value))) : null), date = _j[0], setDate = _j[1];
7472
- var _k = React$1.useState(date ? getAmPm(new Date(date), locale) : 'am'), _ampm = _k[0], setAmPm = _k[1];
7521
+ var _k = React$1.useState(convertTimeToDate(time)), date = _k[0], setDate = _k[1];
7522
+ var _l = React$1.useState(null), initialDate = _l[0], setInitialDate = _l[1];
7523
+ var _m = React$1.useState(date ? getAmPm(new Date(date), locale) : 'am'), _ampm = _m[0], setAmPm = _m[1];
7473
7524
  React$1.useEffect(function () {
7474
- setDate(value ? (value instanceof Date ? new Date(value) : new Date("1970-01-01 ".concat(value))) : null);
7475
- }, [value]);
7525
+ setDate(convertTimeToDate(time));
7526
+ }, [time]);
7476
7527
  React$1.useEffect(function () {
7477
7528
  if (inputRef.current) {
7478
7529
  inputRef.current.value = date ? date.toLocaleTimeString(locale) : '';
7479
7530
  }
7531
+ date && setAmPm(getAmPm(new Date(date), locale));
7480
7532
  }, [date]);
7481
- var getHours = function (locale) {
7482
- return Array.from(new Array(isAmPm(locale) ? 12 : 24), function (_, i) {
7483
- return {
7484
- value: isAmPm(locale) ? i + 1 : i,
7485
- label: (isAmPm(locale) ? i + 1 : i).toLocaleString(locale),
7486
- };
7487
- });
7488
- };
7489
- var getMinutesOrSeconds = function (locale) {
7490
- return Array.from(new Array(60), function (_, i) {
7491
- return {
7492
- value: i,
7493
- label: i.toLocaleString(locale).padStart(2, (0).toLocaleString(locale)),
7494
- };
7495
- });
7496
- };
7497
- var selectedHour = date
7498
- ? isAmPm(locale)
7499
- ? convert24hTo12h(date.getHours())
7500
- : date.getHours()
7501
- : null;
7502
- var selectedMinutes = date ? date.getMinutes() : null;
7503
- var selectedSeconds = date ? date.getSeconds() : null;
7504
7533
  var handleClear = function (event) {
7505
7534
  event.stopPropagation();
7506
7535
  setDate(null);
@@ -7509,11 +7538,9 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
7509
7538
  var _date = date || new Date('1970-01-01');
7510
7539
  if (set === 'toggle') {
7511
7540
  if (value === 'am') {
7512
- setAmPm('am');
7513
7541
  _date.setHours(_date.getHours() - 12);
7514
7542
  }
7515
7543
  if (value === 'pm') {
7516
- setAmPm('pm');
7517
7544
  _date.setHours(_date.getHours() + 12);
7518
7545
  }
7519
7546
  }
@@ -7532,42 +7559,44 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
7532
7559
  _date.setSeconds(parseInt(value));
7533
7560
  }
7534
7561
  setDate(new Date(_date));
7535
- onChange && onChange(_date.toTimeString(), _date.toLocaleTimeString(), _date);
7562
+ onTimeChange && onTimeChange(_date.toTimeString(), _date.toLocaleTimeString(), _date);
7536
7563
  };
7537
7564
  var InputGroup = function () { return (React__default$1["default"].createElement(CInputGroup, { className: "picker-input-group", size: size },
7538
- React__default$1["default"].createElement(CFormInput, { disabled: disabled, placeholder: placeholder, readOnly: inputReadOnly, ref: inputRef }),
7539
- (defaultIcon !== false || cleaner) && (React__default$1["default"].createElement(CInputGroupText, null,
7540
- defaultIcon !== false && (React__default$1["default"].createElement("span", { className: "picker-input-group-indicator" }, defaultIcon ? (defaultIcon) : (React__default$1["default"].createElement("span", { className: "picker-input-group-icon time-picker-input-icon" })))),
7541
- cleaner && date && (React__default$1["default"].createElement("span", { className: "picker-input-group-cleaner", role: "button", onClick: function (event) { return handleClear(event); } }, cleanerIcon ? (cleanerIcon) : (React__default$1["default"].createElement("span", { className: "picker-input-group-icon time-picker-cleaner-icon" })))))))); };
7565
+ React__default$1["default"].createElement(CFormInput, { disabled: disabled, onChange: function (event) {
7566
+ return isValidTime(event.target.value) && setDate(convertTimeToDate(event.target.value));
7567
+ }, placeholder: placeholder, readOnly: inputReadOnly, ref: inputRef }),
7568
+ (indicator || cleaner) && (React__default$1["default"].createElement(CInputGroupText, null,
7569
+ indicator && (React__default$1["default"].createElement("span", { className: "picker-input-group-indicator" }, typeof indicator === 'boolean' ? (React__default$1["default"].createElement("span", { className: "picker-input-group-icon time-picker-input-icon" })) : (indicator))),
7570
+ cleaner && date && (React__default$1["default"].createElement("span", { className: "picker-input-group-cleaner", onClick: function (event) { return handleClear(event); }, role: "button" }, typeof cleaner === 'boolean' ? (React__default$1["default"].createElement("span", { className: "picker-input-group-icon time-picker-cleaner-icon" })) : (cleaner))))))); };
7542
7571
  var TimePickerSelect = function () {
7543
7572
  return (React__default$1["default"].createElement(React__default$1["default"].Fragment, null,
7544
7573
  React__default$1["default"].createElement("span", { className: "time-picker-inline-icon" }),
7545
- React__default$1["default"].createElement(CFormSelect, { disabled: disabled, options: getHours(locale).map(function (option) {
7574
+ React__default$1["default"].createElement(CFormSelect, { disabled: disabled, options: getListOfHours(locale).map(function (option) {
7546
7575
  return {
7547
7576
  value: option.value.toString(),
7548
7577
  label: option.label,
7549
7578
  };
7550
7579
  }), onChange: function (event) {
7551
7580
  return handleTimeChange('hours', event.target.value);
7552
- }, value: selectedHour ? selectedHour : '0' }),
7553
- React__default$1["default"].createElement("span", { className: "px-1" }, ":"),
7554
- React__default$1["default"].createElement(CFormSelect, { disabled: disabled, options: Array.from(new Array(60), function (_, i) {
7581
+ }, value: getSelectedHour(date, locale) }),
7582
+ React__default$1["default"].createElement(React__default$1["default"].Fragment, null, ":"),
7583
+ React__default$1["default"].createElement(CFormSelect, { disabled: disabled, options: Array.from({ length: 60 }, function (_, i) {
7555
7584
  return {
7556
7585
  value: i.toString(),
7557
7586
  label: i.toLocaleString(locale).padStart(2, (0).toLocaleString(locale)),
7558
7587
  };
7559
7588
  }), onChange: function (event) {
7560
7589
  return handleTimeChange('minutes', event.target.value);
7561
- }, value: selectedMinutes ? selectedMinutes : '0' }),
7562
- React__default$1["default"].createElement("span", { className: "px-1" }, ":"),
7563
- React__default$1["default"].createElement(CFormSelect, { disabled: disabled, options: Array.from(new Array(60), function (_, i) {
7590
+ }, value: getSelectedMinutes(date) }),
7591
+ React__default$1["default"].createElement(React__default$1["default"].Fragment, null, ":"),
7592
+ React__default$1["default"].createElement(CFormSelect, { disabled: disabled, options: Array.from({ length: 60 }, function (_, i) {
7564
7593
  return {
7565
7594
  value: i.toString(),
7566
7595
  label: i.toLocaleString(locale).padStart(2, (0).toLocaleString(locale)),
7567
7596
  };
7568
7597
  }), onChange: function (event) {
7569
7598
  return handleTimeChange('seconds', event.target.value);
7570
- }, value: selectedSeconds ? selectedSeconds : '0' }),
7599
+ }, value: getSelectedSeconds(date) }),
7571
7600
  isAmPm(locale) && (React__default$1["default"].createElement(CFormSelect, { disabled: disabled, options: [
7572
7601
  { value: 'am', label: 'AM' },
7573
7602
  { value: 'pm', label: 'PM' },
@@ -7576,39 +7605,39 @@ var CTimePicker = React$1.forwardRef(function (_a, ref) {
7576
7605
  }, value: _ampm }))));
7577
7606
  };
7578
7607
  var TimePickerRoll = function () { return (React__default$1["default"].createElement(React__default$1["default"].Fragment, null,
7579
- React__default$1["default"].createElement(CTimePickerRollCol, { elements: getHours(locale), onClick: function (index) { return handleTimeChange('hours', index.toString()); }, selected: selectedHour }),
7580
- React__default$1["default"].createElement(CTimePickerRollCol, { elements: getMinutesOrSeconds(locale), selected: selectedMinutes, onClick: function (index) { return handleTimeChange('minutes', index.toString()); } }),
7581
- React__default$1["default"].createElement(CTimePickerRollCol, { elements: getMinutesOrSeconds(locale), selected: selectedSeconds, onClick: function (index) { return handleTimeChange('seconds', index.toString()); } }),
7608
+ React__default$1["default"].createElement(CTimePickerRollCol, { elements: getListOfHours(locale), onClick: function (index) { return handleTimeChange('hours', index.toString()); }, selected: getSelectedHour(date, locale) }),
7609
+ React__default$1["default"].createElement(CTimePickerRollCol, { elements: getMinutesOrSeconds(locale), onClick: function (index) { return handleTimeChange('minutes', index.toString()); }, selected: getSelectedMinutes(date) }),
7610
+ React__default$1["default"].createElement(CTimePickerRollCol, { elements: getMinutesOrSeconds(locale), onClick: function (index) { return handleTimeChange('seconds', index.toString()); }, selected: getSelectedSeconds(date) }),
7582
7611
  isAmPm(locale) && (React__default$1["default"].createElement(CTimePickerRollCol, { elements: [
7583
7612
  { value: 'am', label: 'AM' },
7584
7613
  { value: 'pm', label: 'PM' },
7585
- ], selected: _ampm, onClick: function (value) { return handleTimeChange('toggle', value); } })))); };
7614
+ ], onClick: function (value) { return handleTimeChange('toggle', value); }, selected: _ampm })))); };
7586
7615
  var _className = classNames$1('time-picker', className);
7587
- return (React__default$1["default"].createElement(CPicker, __assign$1({ className: _className, container: container, disabled: disabled, footer: footer, onCancelClick: function () {
7588
- setDate(value
7589
- ? value instanceof Date
7590
- ? new Date(value)
7591
- : new Date("1970-01-01 ".concat(value))
7592
- : new Date());
7616
+ return (React__default$1["default"].createElement(CPicker, __assign$1({ className: _className, container: container, disabled: disabled, footer: footer, onCancel: function () { return initialDate && setDate(new Date(initialDate)); }, onHide: function () { return onHide && onHide(); }, onShow: function () {
7617
+ date && setInitialDate(new Date(date));
7618
+ onShow && onShow();
7593
7619
  }, toggler: InputGroup() }, rest, { ref: ref }),
7594
7620
  React__default$1["default"].createElement("div", { className: classNames$1('time-picker-body', (_b = {},
7595
7621
  _b['time-picker-roll'] = variant === 'roll',
7596
7622
  _b)) }, variant === 'select' ? React__default$1["default"].createElement(TimePickerSelect, null) : TimePickerRoll())));
7597
7623
  });
7598
- CTimePicker.propTypes = __assign$1(__assign$1({}, CPicker.propTypes), { className: PropTypes$1.string, locale: PropTypes$1.string, onChange: PropTypes$1.func, value: PropTypes$1.oneOfType([PropTypes$1.instanceOf(Date), PropTypes$1.string]), variant: PropTypes$1.oneOf(['roll', 'select']) });
7624
+ CTimePicker.propTypes = __assign$1(__assign$1({}, CPicker.propTypes), { className: PropTypes$1.string, locale: PropTypes$1.string, onTimeChange: PropTypes$1.func, time: PropTypes$1.oneOfType([PropTypes$1.instanceOf(Date), PropTypes$1.string]), variant: PropTypes$1.oneOf(['roll', 'select']) });
7599
7625
  CTimePicker.displayName = 'CTimePicker';
7600
7626
 
7627
+ var _a, _b, _c;
7601
7628
  var CDateRangePicker = React$1.forwardRef(function (_a, ref) {
7602
- var _b = _a.calendars, calendars = _b === void 0 ? 2 : _b, className = _a.className, _c = _a.cleaner, cleaner = _c === void 0 ? true : _c, cleanerIcon = _a.cleanerIcon, calendarDate = _a.calendarDate, disabled = _a.disabled, disabledDates = _a.disabledDates, endDate = _a.endDate, defaultIcon = _a.defaultIcon, infixIcon = _a.infixIcon, inputReadOnly = _a.inputReadOnly, _d = _a.locale, locale = _d === void 0 ? navigator.language : _d, maxDate = _a.maxDate, minDate = _a.minDate, onEndDateChange = _a.onEndDateChange, onHide = _a.onHide, onStartDateChange = _a.onStartDateChange, onShow = _a.onShow, _e = _a.placeholder, placeholder = _e === void 0 ? ['Start date', 'End date'] : _e, _f = _a.range, range = _f === void 0 ? true : _f, ranges = _a.ranges, size = _a.size, startDate = _a.startDate, timepicker = _a.timepicker, toggler = _a.toggler, visible = _a.visible, rest = __rest$1(_a, ["calendars", "className", "cleaner", "cleanerIcon", "calendarDate", "disabled", "disabledDates", "endDate", "defaultIcon", "infixIcon", "inputReadOnly", "locale", "maxDate", "minDate", "onEndDateChange", "onHide", "onStartDateChange", "onShow", "placeholder", "range", "ranges", "size", "startDate", "timepicker", "toggler", "visible"]);
7629
+ var _b = _a.calendars, calendars = _b === void 0 ? 2 : _b, className = _a.className, _c = _a.cleaner, cleaner = _c === void 0 ? true : _c, calendarDate = _a.calendarDate, _d = _a.indicator, indicator = _d === void 0 ? true : _d, disabled = _a.disabled, disabledDates = _a.disabledDates, endDate = _a.endDate, firstDayOfWeek = _a.firstDayOfWeek, footer = _a.footer, inputReadOnly = _a.inputReadOnly, _e = _a.locale, locale = _e === void 0 ? 'default' : _e, maxDate = _a.maxDate, minDate = _a.minDate, navigation = _a.navigation, onEndDateChange = _a.onEndDateChange, onHide = _a.onHide, onStartDateChange = _a.onStartDateChange, onShow = _a.onShow, _f = _a.placeholder, placeholder = _f === void 0 ? ['Start date', 'End date'] : _f, _g = _a.range, range = _g === void 0 ? true : _g, ranges = _a.ranges, _h = _a.rangesButtonsColor, rangesButtonsColor = _h === void 0 ? 'secondary' : _h, rangesButtonsSize = _a.rangesButtonsSize, _j = _a.rangesButtonsVariant, rangesButtonsVariant = _j === void 0 ? 'ghost' : _j, _k = _a.separator, separator = _k === void 0 ? true : _k, size = _a.size, startDate = _a.startDate, timepicker = _a.timepicker, toggler = _a.toggler, visible = _a.visible, rest = __rest$1(_a, ["calendars", "className", "cleaner", "calendarDate", "indicator", "disabled", "disabledDates", "endDate", "firstDayOfWeek", "footer", "inputReadOnly", "locale", "maxDate", "minDate", "navigation", "onEndDateChange", "onHide", "onStartDateChange", "onShow", "placeholder", "range", "ranges", "rangesButtonsColor", "rangesButtonsSize", "rangesButtonsVariant", "separator", "size", "startDate", "timepicker", "toggler", "visible"]);
7630
+ var _l = React$1.useState(visible), _visible = _l[0], setVisible = _l[1];
7603
7631
  var inputStartRef = React$1.useRef(null);
7604
7632
  var inputEndRef = React$1.useRef(null);
7605
- var _g = React$1.useState(visible), _visible = _g[0], setVisible = _g[1];
7606
- var _h = React$1.useState(startDate ? new Date(startDate) : null), _startDate = _h[0], setStartDate = _h[1];
7607
- var _j = React$1.useState(endDate ? new Date(endDate) : null), _endDate = _j[0], setEndDate = _j[1];
7608
- var _k = React$1.useState(null), inputHoverValue = _k[0], setInputHoverValue = _k[1];
7609
- var _l = React$1.useState(null), inputToHoverValue = _l[0], setInputToHoverValue = _l[1];
7610
- var _m = React$1.useState(false), selectEndDate = _m[0], setSelectEndDate = _m[1];
7611
- var _o = React$1.useState(calendarDate ? new Date(calendarDate) : new Date()), _calendarDate = _o[0], setCalendarDate = _o[1];
7633
+ var _m = React$1.useState(null), inputStartHoverValue = _m[0], setInputStartHoverValue = _m[1];
7634
+ var _o = React$1.useState(null), inputEndHoverValue = _o[0], setInputEndHoverValue = _o[1];
7635
+ var _p = React$1.useState(calendarDate ? new Date(calendarDate) : new Date()), _calendarDate = _p[0], setCalendarDate = _p[1];
7636
+ var _q = React$1.useState(startDate ? new Date(startDate) : null), _startDate = _q[0], setStartDate = _q[1];
7637
+ var _r = React$1.useState(endDate ? new Date(endDate) : null), _endDate = _r[0], setEndDate = _r[1];
7638
+ var _s = React$1.useState(startDate ? new Date(startDate) : null), initialStartDate = _s[0], setInitialStartDate = _s[1];
7639
+ var _t = React$1.useState(endDate ? new Date(endDate) : null), initialEndDate = _t[0], setInitialEndDate = _t[1];
7640
+ var _u = React$1.useState(false), selectEndDate = _u[0], setSelectEndDate = _u[1];
7612
7641
  React$1.useEffect(function () {
7613
7642
  startDate && setCalendarDate(new Date(startDate));
7614
7643
  }, [startDate]);
@@ -7616,39 +7645,32 @@ var CDateRangePicker = React$1.forwardRef(function (_a, ref) {
7616
7645
  endDate && setCalendarDate(new Date(endDate));
7617
7646
  }, [endDate]);
7618
7647
  React$1.useEffect(function () {
7619
- _visible && onShow && onShow();
7620
- !_visible && onHide && onHide();
7621
- }, [_visible]);
7622
- React$1.useEffect(function () {
7623
- if (inputStartRef.current) {
7624
- if (inputHoverValue) {
7625
- inputStartRef.current.value = convertToLocalDate(inputHoverValue, locale);
7626
- return;
7627
- }
7628
- if (_startDate) {
7629
- inputStartRef.current.value = timepicker
7630
- ? _startDate.toLocaleString(locale)
7631
- : _startDate.toLocaleDateString(locale);
7632
- return;
7633
- }
7634
- inputStartRef.current.value = '';
7648
+ if (inputStartHoverValue) {
7649
+ setInputValue(inputStartRef.current, inputStartHoverValue, timepicker);
7650
+ return;
7635
7651
  }
7636
- }, [inputHoverValue, _startDate]);
7652
+ setInputValue(inputStartRef.current, _startDate, timepicker);
7653
+ }, [inputStartHoverValue, _startDate]);
7637
7654
  React$1.useEffect(function () {
7638
- if (inputEndRef.current) {
7639
- if (inputToHoverValue) {
7640
- inputEndRef.current.value = convertToLocalDate(inputToHoverValue, locale);
7641
- return;
7642
- }
7643
- if (_endDate) {
7644
- inputEndRef.current.value = timepicker
7645
- ? _endDate.toLocaleString(locale)
7646
- : _endDate.toLocaleDateString(locale);
7647
- return;
7648
- }
7649
- inputEndRef.current.value = '';
7655
+ if (inputEndHoverValue) {
7656
+ setInputValue(inputEndRef.current, inputEndHoverValue, timepicker);
7657
+ return;
7658
+ }
7659
+ setInputValue(inputEndRef.current, _endDate, timepicker);
7660
+ }, [inputEndHoverValue, _endDate]);
7661
+ var setInputValue = function (el, date, timepicker) {
7662
+ if (!el) {
7663
+ return;
7650
7664
  }
7651
- }, [inputToHoverValue, _endDate]);
7665
+ if (date) {
7666
+ el.value = timepicker ? date.toLocaleString(locale) : date.toLocaleDateString(locale);
7667
+ return;
7668
+ }
7669
+ el.value = '';
7670
+ };
7671
+ var handleCalendarCellHover = function (date) {
7672
+ selectEndDate ? setInputEndHoverValue(date) : setInputStartHoverValue(date);
7673
+ };
7652
7674
  var handleCalendarDateChange = function (date, difference) {
7653
7675
  difference
7654
7676
  ? setCalendarDate(new Date(date.getFullYear(), date.getMonth() - difference, 1))
@@ -7658,65 +7680,80 @@ var CDateRangePicker = React$1.forwardRef(function (_a, ref) {
7658
7680
  setStartDate(date);
7659
7681
  range && setSelectEndDate(true);
7660
7682
  onStartDateChange && onStartDateChange(date);
7661
- setInputHoverValue(null);
7683
+ setInputStartHoverValue(null);
7662
7684
  };
7663
7685
  var handleEndDateChange = function (date) {
7664
7686
  setEndDate(date);
7665
7687
  setSelectEndDate(false);
7666
7688
  onEndDateChange && onEndDateChange(date);
7667
- setInputToHoverValue(null);
7668
- if (timepicker !== true) {
7689
+ setInputEndHoverValue(null);
7690
+ if (timepicker !== true && footer !== true) {
7669
7691
  _startDate !== null && setVisible(false);
7670
7692
  }
7671
7693
  };
7672
- var handleCalendarCellHover = function (date) {
7673
- selectEndDate ? setInputToHoverValue(date) : setInputHoverValue(date);
7674
- };
7675
7694
  var handleClear = function (event) {
7676
7695
  event.stopPropagation();
7677
- setStartDate(null);
7678
- setEndDate(null);
7679
- setInputHoverValue(null);
7680
- setInputToHoverValue(null);
7696
+ setStartDate(initialStartDate);
7697
+ setEndDate(initialEndDate);
7698
+ setInputStartHoverValue(null);
7699
+ setInputEndHoverValue(null);
7681
7700
  };
7682
7701
  var _className = classNames$1('date-picker', className);
7683
7702
  var InputGroup = function () { return (React__default$1["default"].createElement(CInputGroup, { className: "picker-input-group", size: size },
7684
7703
  React__default$1["default"].createElement(CFormInput, { className: classNames$1({
7685
- hover: inputHoverValue,
7686
- }), disabled: disabled, placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder, readOnly: inputReadOnly, onClick: function () { return setSelectEndDate(false); }, ref: inputStartRef }),
7687
- range && infixIcon !== false && (React__default$1["default"].createElement(CInputGroupText, null, infixIcon ? (infixIcon) : (React__default$1["default"].createElement("span", { className: "picker-input-group-icon date-picker-arrow-icon" })))),
7704
+ hover: inputStartHoverValue,
7705
+ }), disabled: disabled, placeholder: Array.isArray(placeholder) ? placeholder[0] : placeholder, readOnly: inputReadOnly, onChange: function (event) {
7706
+ if (isValidDate(event.target.value)) {
7707
+ setCalendarDate(new Date(event.target.value));
7708
+ setStartDate(new Date(event.target.value));
7709
+ }
7710
+ }, onClick: function () { return setSelectEndDate(false); }, ref: inputStartRef }),
7711
+ range && separator !== false && (React__default$1["default"].createElement(CInputGroupText, null, typeof separator === 'boolean' ? (React__default$1["default"].createElement("span", { className: "picker-input-group-icon date-picker-arrow-icon" })) : (separator))),
7688
7712
  range && (React__default$1["default"].createElement(CFormInput, { className: classNames$1({
7689
- hover: inputToHoverValue,
7690
- }), disabled: disabled, placeholder: placeholder[1], readOnly: inputReadOnly, onClick: function () { return setSelectEndDate(true); }, ref: inputEndRef })),
7691
- (defaultIcon !== false || cleaner) && (React__default$1["default"].createElement(CInputGroupText, null,
7692
- defaultIcon !== false && (React__default$1["default"].createElement("span", { className: "picker-input-group-indicator" }, defaultIcon ? (defaultIcon) : (React__default$1["default"].createElement("span", { className: "picker-input-group-icon date-picker-input-icon" })))),
7693
- cleaner && _startDate && (React__default$1["default"].createElement("span", { className: "picker-input-group-cleaner", role: "button", onClick: function (event) { return handleClear(event); } }, cleanerIcon ? (cleanerIcon) : (React__default$1["default"].createElement("span", { className: "picker-input-group-icon date-picker-cleaner-icon" })))))))); };
7694
- return (React__default$1["default"].createElement(CPicker, __assign$1({ className: _className, disabled: disabled, footer: timepicker, toggler: toggler ? toggler : InputGroup(), onCancelClick: function () {
7695
- handleStartDateChange(startDate ? new Date(startDate) : null);
7696
- handleEndDateChange(endDate ? new Date(endDate) : null);
7713
+ hover: inputEndHoverValue,
7714
+ }), disabled: disabled, placeholder: placeholder[1], readOnly: inputReadOnly, onChange: function (event) {
7715
+ if (isValidDate(event.target.value)) {
7716
+ setCalendarDate(new Date(event.target.value));
7717
+ setEndDate(new Date(event.target.value));
7718
+ }
7719
+ }, onClick: function () { return setSelectEndDate(true); }, ref: inputEndRef })),
7720
+ (indicator || cleaner) && (React__default$1["default"].createElement(CInputGroupText, null,
7721
+ indicator && (React__default$1["default"].createElement("span", { className: "picker-input-group-indicator" }, typeof indicator === 'boolean' ? (React__default$1["default"].createElement("span", { className: "picker-input-group-icon date-picker-input-icon" })) : (indicator))),
7722
+ cleaner && _startDate && (React__default$1["default"].createElement("span", { className: "picker-input-group-cleaner", role: "button", onClick: function (event) { return handleClear(event); } }, typeof cleaner === 'boolean' ? (React__default$1["default"].createElement("span", { className: "picker-input-group-icon date-picker-cleaner-icon" })) : (cleaner))))))); };
7723
+ return (React__default$1["default"].createElement(CPicker, __assign$1({ className: _className, disabled: disabled, footer: footer || timepicker, toggler: toggler ? toggler : InputGroup(), onCancel: function () {
7724
+ handleStartDateChange(initialStartDate);
7725
+ handleEndDateChange(initialEndDate);
7726
+ }, onHide: function () {
7727
+ setInputStartHoverValue(null);
7728
+ setInputEndHoverValue(null);
7729
+ onHide && onHide();
7730
+ }, onShow: function () {
7731
+ setInitialStartDate(_startDate);
7732
+ setInitialEndDate(_endDate);
7733
+ onShow && onShow();
7697
7734
  }, visible: _visible }, rest, { ref: ref }),
7698
7735
  React__default$1["default"].createElement("div", { className: "date-picker-body" },
7699
- ranges && (React__default$1["default"].createElement("div", { className: "date-picker-ranges" }, Object.keys(ranges).map(function (key, index) { return (React__default$1["default"].createElement(CButton, { color: "secondary", key: index, onClick: function () {
7736
+ ranges && (React__default$1["default"].createElement("div", { className: "date-picker-ranges" }, Object.keys(ranges).map(function (key, index) { return (React__default$1["default"].createElement(CButton, { color: rangesButtonsColor, key: index, onClick: function () {
7700
7737
  setStartDate(ranges[key][0]);
7701
7738
  setEndDate(ranges[key][1]);
7702
- }, variant: "ghost" }, key)); }))),
7739
+ }, size: rangesButtonsSize, variant: rangesButtonsVariant }, key)); }))),
7703
7740
  React__default$1["default"].createElement("div", { className: "date-picker-calendars" }, __spreadArray([], Array(isMobile_1 ? 1 : calendars), true).map(function (_, index) { return (React__default$1["default"].createElement("div", { className: "date-picker-calendar", key: index },
7704
- React__default$1["default"].createElement(CCalendar, { calendarDate: new Date(_calendarDate.getFullYear(), _calendarDate.getMonth() + index, 1), disabledDates: disabledDates, endDate: _endDate, locale: locale, maxDate: maxDate, minDate: minDate, range: range, selectEndDate: selectEndDate, startDate: _startDate, onCalendarCellHover: function (date) { return handleCalendarCellHover(date); }, onCalendarDateChange: function (date) { return handleCalendarDateChange(date, index); }, onStartDateChange: function (date) { return handleStartDateChange(date); }, onEndDateChange: function (date) { return handleEndDateChange(date); } }),
7741
+ React__default$1["default"].createElement(CCalendar, { calendarDate: new Date(_calendarDate.getFullYear(), _calendarDate.getMonth() + index, 1), disabledDates: disabledDates, endDate: _endDate, firstDayOfWeek: firstDayOfWeek, locale: locale, maxDate: maxDate, minDate: minDate, navigation: navigation, range: range, selectEndDate: selectEndDate, startDate: _startDate, onCalendarCellHover: function (date) { return handleCalendarCellHover(date); }, onCalendarDateChange: function (date) { return handleCalendarDateChange(date, index); }, onStartDateChange: function (date) { return handleStartDateChange(date); }, onEndDateChange: function (date) { return handleEndDateChange(date); } }),
7705
7742
  !isMobile_1 && timepicker && (index === 0 || calendars - index === 1) && (React__default$1["default"].createElement(CTimePicker, { container: "inline", disabled: index === 0
7706
7743
  ? _startDate === null
7707
7744
  ? true
7708
7745
  : false
7709
7746
  : _endDate === null
7710
7747
  ? true
7711
- : false, locale: locale, onChange: function (_, __, date) {
7748
+ : false, locale: locale, onTimeChange: function (_, __, date) {
7712
7749
  return index === 0 ? handleStartDateChange(date) : handleEndDateChange(date);
7713
- }, value: index === 0 ? _startDate : _endDate, variant: "select" })),
7750
+ }, time: index === 0 ? _startDate : _endDate, variant: "select" })),
7714
7751
  isMobile_1 && timepicker && (React__default$1["default"].createElement(React__default$1["default"].Fragment, null,
7715
- React__default$1["default"].createElement(CTimePicker, { container: "inline", disabled: _startDate === null ? true : false, locale: locale, onChange: function (_, __, date) { return handleStartDateChange(date); }, value: _startDate, variant: "select" }),
7716
- React__default$1["default"].createElement(CTimePicker, { container: "inline", disabled: _endDate === null ? true : false, locale: locale, onChange: function (_, __, date) { return handleEndDateChange(date); }, value: _endDate, variant: "select" }))))); })))));
7752
+ React__default$1["default"].createElement(CTimePicker, { container: "inline", disabled: _startDate === null ? true : false, locale: locale, onTimeChange: function (_, __, date) { return handleStartDateChange(date); }, time: _startDate, variant: "select" }),
7753
+ React__default$1["default"].createElement(CTimePicker, { container: "inline", disabled: _endDate === null ? true : false, locale: locale, onTimeChange: function (_, __, date) { return handleEndDateChange(date); }, time: _endDate, variant: "select" }))))); })))));
7717
7754
  });
7718
7755
  CDateRangePicker.displayName = 'CDateRangePicker';
7719
- CDateRangePicker.propTypes = __assign$1(__assign$1(__assign$1({}, CCalendar.propTypes), CPicker.propTypes), { calendars: PropTypes$1.number, inputReadOnly: PropTypes$1.bool, placeholder: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.arrayOf(PropTypes$1.any)]), range: PropTypes$1.bool, ranges: PropTypes$1.object, timepicker: PropTypes$1.bool });
7756
+ CDateRangePicker.propTypes = __assign$1(__assign$1(__assign$1({}, CCalendar.propTypes), CPicker.propTypes), { calendars: PropTypes$1.number, className: PropTypes$1.string, cleaner: PropTypes$1.bool, indicator: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.node]), inputReadOnly: PropTypes$1.bool, placeholder: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.arrayOf(PropTypes$1.any)]), range: PropTypes$1.bool, ranges: PropTypes$1.object, rangesButtonsColor: (_a = CButton.propTypes) === null || _a === void 0 ? void 0 : _a.color, rangesButtonsSize: (_b = CButton.propTypes) === null || _b === void 0 ? void 0 : _b.size, rangesButtonsVariant: (_c = CButton.propTypes) === null || _c === void 0 ? void 0 : _c.variant, separator: PropTypes$1.oneOfType([PropTypes$1.bool, PropTypes$1.node]), size: PropTypes$1.oneOf(['sm', 'lg']), timepicker: PropTypes$1.bool });
7720
7757
 
7721
7758
  var CDatePicker = React$1.forwardRef(function (_a, ref) {
7722
7759
  var date = _a.date, onDateChange = _a.onDateChange, _b = _a.placeholder, placeholder = _b === void 0 ? 'Select date' : _b, rest = __rest$1(_a, ["date", "onDateChange", "placeholder"]);