@stenajs-webui/calendar 15.0.0-alpha.4 → 15.0.0-alpha.8

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 (37) hide show
  1. package/dist/components/calendar/CalendarMonth.d.ts +3 -3
  2. package/dist/components/calendar/CalendarWeek.d.ts +3 -3
  3. package/dist/components/calendar/DisabledDayWrapper.d.ts +7 -0
  4. package/dist/components/calendar-types/date-range-calendar/DateRangeCalendar.d.ts +4 -12
  5. package/dist/components/calendar-types/date-range-calendar/DateRangeCalendar.stories.d.ts +1 -0
  6. package/dist/components/calendar-types/date-range-calendar/hooks/UseDateRangeSelection.d.ts +1 -1
  7. package/dist/components/calendar-types/date-range-exclusion-calendar/DateRangeExclusionCalendar.d.ts +2 -3
  8. package/dist/components/calendar-types/date-range-exclusion-calendar/UseDateRangeExclusionSelection.d.ts +1 -1
  9. package/dist/components/input-types/date-input/DateInput.d.ts +2 -1
  10. package/dist/components/input-types/date-input/DateInput.stories.d.ts +2 -0
  11. package/dist/components/input-types/date-range-dual-text-input/DateRangeDualTextInput.d.ts +4 -3
  12. package/dist/components/input-types/date-range-dual-text-input/DateRangeDualTextInput.stories.d.ts +2 -1
  13. package/dist/components/input-types/date-range-input/DateRangeInput.d.ts +6 -7
  14. package/dist/components/input-types/date-range-input/DateRangeInput.stories.d.ts +2 -1
  15. package/dist/components/input-types/date-range-input/hooks/UseDateRangeInput.d.ts +3 -2
  16. package/dist/components/input-types/date-text-input/DateTextInput.d.ts +2 -1
  17. package/dist/components/input-types/date-time-input/DateTimeInput.d.ts +2 -1
  18. package/dist/components/input-types/date-time-input/DateTimeInput.stories.d.ts +1 -0
  19. package/dist/config/DefaultMaxDate.d.ts +1 -0
  20. package/dist/features/date-range/hooks/UseDateRangeOnClickDayHandler.d.ts +2 -5
  21. package/dist/features/dual-text-input/DualTextInput.d.ts +4 -0
  22. package/dist/index.d.ts +3 -1
  23. package/dist/index.es.js +148 -153
  24. package/dist/index.es.js.map +1 -1
  25. package/dist/index.js +152 -154
  26. package/dist/index.js.map +1 -1
  27. package/dist/types/CalendarTypes.d.ts +21 -1
  28. package/dist/types/DateRange.d.ts +16 -0
  29. package/dist/util/calendar/StateModifier.d.ts +1 -0
  30. package/dist/util/date/DateMinMaxValidator.d.ts +1 -0
  31. package/dist/util/date/__tests__/DateMinMaxValidator.test.d.ts +1 -0
  32. package/dist/util/date-range/DateRangeTransformer.d.ts +3 -0
  33. package/dist/util/date-range/DateRangeValidator.d.ts +4 -0
  34. package/dist/util/date-range/__tests__/DateRangeValidator.test.d.ts +1 -0
  35. package/package.json +7 -7
  36. package/dist/components/calendar-types/date-range-calendar/util/IntervalSwitcher.d.ts +0 -4
  37. package/dist/util/calendar/CalendarIntervalValidator.d.ts +0 -11
package/dist/index.js CHANGED
@@ -14,14 +14,14 @@ var faAngleDoubleLeft = require('@fortawesome/free-solid-svg-icons/faAngleDouble
14
14
  var faAngleDoubleRight = require('@fortawesome/free-solid-svg-icons/faAngleDoubleRight');
15
15
  var faCaretLeft = require('@fortawesome/free-solid-svg-icons/faCaretLeft');
16
16
  var faCaretRight = require('@fortawesome/free-solid-svg-icons/faCaretRight');
17
- var faCalendarAlt = require('@fortawesome/free-solid-svg-icons/faCalendarAlt');
17
+ var faCalendarAlt = require('@fortawesome/free-regular-svg-icons/faCalendarAlt');
18
18
  var forms = require('@stenajs-webui/forms');
19
19
  var tooltip = require('@stenajs-webui/tooltip');
20
+ var faCalendarAlt$1 = require('@fortawesome/free-solid-svg-icons/faCalendarAlt');
20
21
  var theme = require('@stenajs-webui/theme');
21
22
  var faLongArrowAltRight = require('@fortawesome/free-solid-svg-icons/faLongArrowAltRight');
22
23
  var faClock = require('@fortawesome/free-solid-svg-icons/faClock');
23
24
  var faClock$1 = require('@fortawesome/free-regular-svg-icons/faClock');
24
- var faCalendarAlt$1 = require('@fortawesome/free-regular-svg-icons/faCalendarAlt');
25
25
  var faAngleDown = require('@fortawesome/free-solid-svg-icons/faAngleDown');
26
26
 
27
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -176,11 +176,13 @@ var addDayStateHighlights = function (calendarState, date, highlights) {
176
176
  calendarState[monthString] &&
177
177
  calendarState[monthString][weekNumber] &&
178
178
  calendarState[monthString][weekNumber][dayInMonth];
179
- var newHighlights = dayState && dayState.highlights
180
- ? __spreadArray(__spreadArray([], dayState.highlights, true), highlights, true) : highlights;
181
179
  return __assign(__assign({}, calendarState), (_a = {}, _a[monthString] = __assign(__assign({}, (calendarState && calendarState[monthString])), (_b = {}, _b[weekNumber] = __assign(__assign({}, (calendarState &&
182
180
  calendarState[monthString] &&
183
- calendarState[monthString][weekNumber])), (_c = {}, _c[dayInMonth] = __assign(__assign({}, dayState), { highlights: newHighlights }), _c)), _b)), _a));
181
+ calendarState[monthString][weekNumber])), (_c = {}, _c[dayInMonth] = addDayStateHighlightsOnSingleDay(dayState, highlights), _c)), _b)), _a));
182
+ };
183
+ var addDayStateHighlightsOnSingleDay = function (dayState, highlights) {
184
+ var _a;
185
+ return __assign(__assign({}, dayState), { highlights: __spreadArray(__spreadArray([], ((_a = dayState === null || dayState === void 0 ? void 0 : dayState.highlights) !== null && _a !== void 0 ? _a : []), true), highlights, true) });
184
186
  };
185
187
  var addWeekStateHighlights = function (calendarState, week, highlights) {
186
188
  var _a, _b;
@@ -428,6 +430,26 @@ var defaultCalendarTheme = {
428
430
  };
429
431
  var extranetCalendarTheme = __assign(__assign({}, defaultCalendarTheme), { width: "37px", height: "37px" });
430
432
 
433
+ var isDateInMinMaxRange = function (date, min, max) {
434
+ if (min && dateFns.isBefore(date, min)) {
435
+ return dateFns.isSameDay(date, min);
436
+ }
437
+ if (max && dateFns.isAfter(date, max)) {
438
+ return dateFns.isSameDay(date, max);
439
+ }
440
+ return true;
441
+ };
442
+
443
+ var DisabledDayWrapper = function DisabledDayWrapper(_a) {
444
+ var DayComponent = _a.dayComponent, minDate = _a.minDate, maxDate = _a.maxDate, dayState = _a.dayState, day = _a.day, props = __rest(_a, ["dayComponent", "minDate", "maxDate", "dayState", "day"]);
445
+ var activeDayState = React.useMemo(function () {
446
+ return !isDateInMinMaxRange(day.date, minDate, maxDate)
447
+ ? addDayStateHighlightsOnSingleDay(dayState, ["disabled"])
448
+ : dayState;
449
+ }, [day.date, dayState, maxDate, minDate]);
450
+ return React__namespace.createElement(DayComponent, __assign({ day: day }, props, { dayState: activeDayState }));
451
+ };
452
+
431
453
  var WeekNumberCell = function (_a) {
432
454
  var onClickWeek = _a.onClickWeek, theme = _a.theme, week = _a.week, background = _a.background, backgroundColor = _a.backgroundColor, prefix = _a.prefix;
433
455
  var content = (React__namespace.createElement(core.Box, { width: theme.width, height: theme.height, justifyContent: "center", alignItems: "center" },
@@ -442,10 +464,10 @@ var WeekNumberCell = function (_a) {
442
464
  };
443
465
 
444
466
  function CalendarWeek(_a) {
445
- var week = _a.week, month = _a.month, DayComponent = _a.dayComponent, statePerWeekDay = _a.statePerWeekDay, userDataPerWeekDay = _a.userDataPerWeekDay, onClickWeek = _a.onClickWeek, onClickDay = _a.onClickDay, theme = _a.theme, renderWeekNumber = _a.renderWeekNumber, extraDayContent = _a.extraDayContent, defaultHighlights = _a.defaultHighlights;
467
+ var week = _a.week, month = _a.month, dayComponent = _a.dayComponent, statePerWeekDay = _a.statePerWeekDay, userDataPerWeekDay = _a.userDataPerWeekDay, minDate = _a.minDate, maxDate = _a.maxDate, onClickWeek = _a.onClickWeek, onClickDay = _a.onClickDay, theme = _a.theme, renderWeekNumber = _a.renderWeekNumber, extraDayContent = _a.extraDayContent, defaultHighlights = _a.defaultHighlights;
446
468
  return (React__namespace.createElement("tr", { key: week.weekNumber },
447
469
  theme.WeekNumber.show && (React__namespace.createElement("td", null, renderWeekNumber ? (renderWeekNumber(week, theme, onClickWeek)) : (React__namespace.createElement(WeekNumberCell, { week: week, onClickWeek: onClickWeek, theme: theme })))),
448
- week.days.map(function (day) { return (React__namespace.createElement(DayComponent, { key: day.dateString, day: day, week: week, month: month, dayState: statePerWeekDay && statePerWeekDay[day.dayOfMonth], userData: userDataPerWeekDay && userDataPerWeekDay[day.dayOfMonth], onClickDay: onClickDay, theme: theme, extraDayContent: extraDayContent, defaultHighlights: defaultHighlights })); })));
470
+ week.days.map(function (day) { return (React__namespace.createElement(DisabledDayWrapper, { dayComponent: dayComponent, key: day.dateString, day: day, week: week, month: month, dayState: statePerWeekDay && statePerWeekDay[day.dayOfMonth], userData: userDataPerWeekDay && userDataPerWeekDay[day.dayOfMonth], onClickDay: onClickDay, theme: theme, extraDayContent: extraDayContent, defaultHighlights: defaultHighlights, minDate: minDate, maxDate: maxDate })); })));
449
471
  }
450
472
 
451
473
  var WeekDayCell = function (_a) {
@@ -460,7 +482,7 @@ var WeekDayCell = function (_a) {
460
482
  return content;
461
483
  };
462
484
 
463
- var CalendarDay = function (_a) {
485
+ var CalendarDay = function CalendarDay(_a) {
464
486
  var day = _a.day, week = _a.week, month = _a.month, dayState = _a.dayState, userData = _a.userData, onClickDay = _a.onClickDay, theme = _a.theme, ExtraDayContent = _a.extraDayContent, defaultHighlights = _a.defaultHighlights;
465
487
  var content = (React__namespace.createElement(core.Box, { width: "100%", height: "100%", justifyContent: "center", alignItems: "center" },
466
488
  React__namespace.createElement(core.Text, __assign({}, (theme.CalendarDay.textProps &&
@@ -482,7 +504,7 @@ var isClickable = function (defaultHighlights, dayState) {
482
504
  };
483
505
 
484
506
  function CalendarMonth(_a) {
485
- var month = _a.month, _b = _a.dayComponent, dayComponent = _b === void 0 ? CalendarDay : _b, statePerWeek = _a.statePerWeek, userDataPerWeek = _a.userDataPerWeek, onClickDay = _a.onClickDay, onClickWeek = _a.onClickWeek, onClickWeekDay = _a.onClickWeekDay, onClickMonth = _a.onClickMonth, onClickYear = _a.onClickYear, renderWeekNumber = _a.renderWeekNumber, renderWeekDay = _a.renderWeekDay, headerLeftContent = _a.headerLeftContent, headerRightContent = _a.headerRightContent, _c = _a.theme, theme = _c === void 0 ? defaultCalendarTheme : _c, extraDayContent = _a.extraDayContent, defaultHighlights = _a.defaultHighlights;
507
+ var month = _a.month, _b = _a.dayComponent, dayComponent = _b === void 0 ? CalendarDay : _b, statePerWeek = _a.statePerWeek, userDataPerWeek = _a.userDataPerWeek, minDate = _a.minDate, maxDate = _a.maxDate, onClickDay = _a.onClickDay, onClickWeek = _a.onClickWeek, onClickWeekDay = _a.onClickWeekDay, onClickMonth = _a.onClickMonth, onClickYear = _a.onClickYear, renderWeekNumber = _a.renderWeekNumber, renderWeekDay = _a.renderWeekDay, headerLeftContent = _a.headerLeftContent, headerRightContent = _a.headerRightContent, _c = _a.theme, theme = _c === void 0 ? defaultCalendarTheme : _c, extraDayContent = _a.extraDayContent, defaultHighlights = _a.defaultHighlights;
486
508
  var showWeekNumber = theme.WeekNumber.show;
487
509
  return (React__namespace.createElement(React__namespace.Fragment, null,
488
510
  React__namespace.createElement(core.Box, { alignItems: "stretch" },
@@ -500,7 +522,7 @@ function CalendarMonth(_a) {
500
522
  React__namespace.createElement(core.Box, { width: theme.width, height: theme.height, justifyContent: "center", alignItems: "center" },
501
523
  React__namespace.createElement(core.Text, { size: "small", color: theme.CalendarMonth.headerTextColor }, "W")))),
502
524
  month.weeks[0].days.map(function (day) { return (React__namespace.createElement("td", { key: day.name }, renderWeekDay ? (renderWeekDay(day.name, theme, onClickWeekDay)) : (React__namespace.createElement(WeekDayCell, { day: day, onClickWeekDay: onClickWeekDay, theme: theme })))); })),
503
- month.weeks.map(function (week) { return (React__namespace.createElement(CalendarWeek, { key: week.weekNumber, month: month, week: week, dayComponent: dayComponent, statePerWeekDay: statePerWeek && statePerWeek[week.weekNumber], userDataPerWeekDay: userDataPerWeek && userDataPerWeek[week.weekNumber], onClickDay: onClickDay, onClickWeek: onClickWeek, theme: theme, renderWeekNumber: renderWeekNumber, extraDayContent: extraDayContent, defaultHighlights: defaultHighlights })); }))))));
525
+ month.weeks.map(function (week) { return (React__namespace.createElement(CalendarWeek, { key: week.weekNumber, month: month, week: week, dayComponent: dayComponent, statePerWeekDay: statePerWeek && statePerWeek[week.weekNumber], userDataPerWeekDay: userDataPerWeek && userDataPerWeek[week.weekNumber], onClickDay: onClickDay, onClickWeek: onClickWeek, theme: theme, renderWeekNumber: renderWeekNumber, extraDayContent: extraDayContent, defaultHighlights: defaultHighlights, minDate: minDate, maxDate: maxDate })); }))))));
504
526
  }
505
527
 
506
528
  function styleInject(css, ref) {
@@ -535,11 +557,13 @@ var styles$1 = {"calendar":"Calendar-module_calendar__Ztvgm"};
535
557
  styleInject(css_248z$1);
536
558
 
537
559
  function CalendarPanel(_a) {
538
- var monthRows = _a.monthRows, _b = _a.dayComponent, dayComponent = _b === void 0 ? CalendarDay : _b, userDataPerMonth = _a.userDataPerMonth, statePerMonth = _a.statePerMonth, onClickDay = _a.onClickDay, onClickWeekDay = _a.onClickWeekDay, onClickWeek = _a.onClickWeek, onClickMonth = _a.onClickMonth, onClickYear = _a.onClickYear, renderWeekDay = _a.renderWeekDay, renderWeekNumber = _a.renderWeekNumber, headerLeftContent = _a.headerLeftContent, headerRightContent = _a.headerRightContent, extraDayContent = _a.extraDayContent, defaultHighlights = _a.defaultHighlights, _c = _a.theme, theme = _c === void 0 ? defaultCalendarTheme : _c;
560
+ var monthRows = _a.monthRows, _b = _a.dayComponent, dayComponent = _b === void 0 ? CalendarDay : _b, userDataPerMonth = _a.userDataPerMonth, statePerMonth = _a.statePerMonth, minDate = _a.minDate, maxDate = _a.maxDate, onClickDay = _a.onClickDay, onClickWeekDay = _a.onClickWeekDay, onClickWeek = _a.onClickWeek, onClickMonth = _a.onClickMonth, onClickYear = _a.onClickYear, renderWeekDay = _a.renderWeekDay, renderWeekNumber = _a.renderWeekNumber, headerLeftContent = _a.headerLeftContent, headerRightContent = _a.headerRightContent, extraDayContent = _a.extraDayContent, defaultHighlights = _a.defaultHighlights, _c = _a.theme, theme = _c === void 0 ? defaultCalendarTheme : _c;
561
+ var minDateObj = React.useMemo(function () { return (minDate ? dateFns.parse(minDate, "yyyy-MM-dd", new Date()) : undefined); }, [minDate]);
562
+ var maxDateObj = React.useMemo(function () { return (maxDate ? dateFns.parse(maxDate, "yyyy-MM-dd", new Date()) : undefined); }, [maxDate]);
539
563
  return (React__namespace.createElement("div", { className: styles$1.calendar }, monthRows.map(function (monthRow, rowIndex) { return (React__namespace.createElement(core.Spacing, { key: rowIndex },
540
564
  React__namespace.createElement(core.Row, null, monthRow.map(function (month, index) { return (React__namespace.createElement(React__namespace.Fragment, { key: month.name },
541
565
  index > 0 && React__namespace.createElement(core.Space, null),
542
- React__namespace.createElement(CalendarMonth, { month: month, dayComponent: dayComponent, userDataPerWeek: userDataPerMonth && userDataPerMonth[month.monthString], statePerWeek: statePerMonth && statePerMonth[month.monthString], onClickDay: onClickDay, onClickWeekDay: onClickWeekDay, onClickWeek: onClickWeek, onClickMonth: onClickMonth, onClickYear: onClickYear, theme: theme, renderWeekNumber: renderWeekNumber, renderWeekDay: renderWeekDay, headerLeftContent: headerLeftContent, headerRightContent: headerRightContent, extraDayContent: extraDayContent, defaultHighlights: defaultHighlights }))); })))); })));
566
+ React__namespace.createElement(CalendarMonth, { month: month, dayComponent: dayComponent, userDataPerWeek: userDataPerMonth && userDataPerMonth[month.monthString], statePerWeek: statePerMonth && statePerMonth[month.monthString], onClickDay: onClickDay, onClickWeekDay: onClickWeekDay, onClickWeek: onClickWeek, onClickMonth: onClickMonth, onClickYear: onClickYear, theme: theme, renderWeekNumber: renderWeekNumber, renderWeekDay: renderWeekDay, headerLeftContent: headerLeftContent, headerRightContent: headerRightContent, extraDayContent: extraDayContent, defaultHighlights: defaultHighlights, minDate: minDateObj, maxDate: maxDateObj }))); })))); })));
543
567
  }
544
568
  function Calendar(props) {
545
569
  var initialDate = getInitialDate(props.year, props.month, props.date);
@@ -796,97 +820,65 @@ var fallbackIfNoPlacement = function (monthSwitcherPlacement, numMonths) {
796
820
  return monthSwitcherPlacement || (numMonths || 1) > 1 ? "below" : "header";
797
821
  };
798
822
 
799
- var transformDateIntervalToDateStringInterval = function (interval) { return ({
800
- startDate: interval.startDate && dateFns.format(interval.startDate, DateFormats.fullDate),
801
- endDate: interval.endDate && dateFns.format(interval.endDate, DateFormats.fullDate),
823
+ var dateRangeToStrings = function (dateRange) { return ({
824
+ startDate: dateRange.startDate
825
+ ? dateFns.format(dateRange.startDate, "yyyy-MM-dd")
826
+ : undefined,
827
+ endDate: dateRange.endDate
828
+ ? dateFns.format(dateRange.endDate, "yyyy-MM-dd")
829
+ : undefined,
802
830
  }); };
803
- var transformDateStringIntervalToDateInterval = function (interval) {
831
+ var stringsToDateRange = function (_a) {
832
+ var startDate = _a.startDate, endDate = _a.endDate;
804
833
  var now = new Date();
805
834
  return {
806
- startDate: (interval.startDate &&
807
- dateFns.parse(interval.startDate, DateFormats.fullDate, now)) ||
808
- undefined,
809
- endDate: (interval.endDate &&
810
- dateFns.parse(interval.endDate, DateFormats.fullDate, now)) ||
811
- undefined,
835
+ startDate: startDate ? dateFns.parse(startDate, "yyyy-MM-dd", now) : undefined,
836
+ endDate: endDate ? dateFns.parse(endDate, "yyyy-MM-dd", now) : undefined,
812
837
  };
838
+ };
839
+
840
+ var isDateRangeInvalid = function (_a) {
841
+ var startDate = _a.startDate, endDate = _a.endDate;
842
+ return Boolean(startDate &&
843
+ endDate &&
844
+ !dateFns.isSameDay(startDate, endDate) &&
845
+ dateFns.isAfter(startDate, endDate));
813
846
  };
814
- var ensureStartIsFirst = function (interval) {
815
- if (interval.startDate &&
816
- interval.endDate &&
817
- dateFns.isAfter(interval.startDate, interval.endDate)) {
847
+ var toggleDatesIfEndIsEarlierThanStart = function (dateRange) {
848
+ if (isDateRangeInvalid(dateRange)) {
818
849
  return {
819
- startDate: interval.endDate,
820
- endDate: interval.startDate,
850
+ startDate: dateRange.endDate,
851
+ endDate: dateRange.startDate,
821
852
  };
822
853
  }
823
- return interval;
854
+ return dateRange;
855
+ };
856
+ var toggleDateStringsIfEndIsEarlierThanStart = function (dateRange) {
857
+ if (dateRange.startDate && dateRange.endDate) {
858
+ return dateRangeToStrings(toggleDatesIfEndIsEarlierThanStart(stringsToDateRange(dateRange)));
859
+ }
860
+ return dateRange;
824
861
  };
825
862
 
826
- var useDateRangeOnClickDayHandler = function (startDate, setStartDate, endDate, setEndDate, focusedInput, setFocusedInput, onChange) {
863
+ var useDateRangeOnClickDayHandler = function (value, onValueChange, focusedInput, setFocusedInput) {
827
864
  return React.useCallback(function (day) {
828
- if (focusedInput === "startDate") {
829
- if (endDate && dateFns.isAfter(day.date, endDate)) {
830
- setStartDate(endDate);
831
- setEndDate(day.date);
832
- if (onChange) {
833
- onChange({ startDate: endDate, endDate: day.date });
834
- }
835
- }
836
- else {
837
- setStartDate(day.date);
838
- setFocusedInput("endDate");
839
- if (onChange) {
840
- onChange(ensureStartIsFirst({
841
- startDate: day.date,
842
- endDate: endDate,
843
- }));
844
- }
845
- }
846
- }
847
- else if (focusedInput === "endDate") {
848
- if (startDate && dateFns.isAfter(startDate, day.date)) {
849
- setStartDate(day.date);
850
- setEndDate(startDate);
851
- if (onChange) {
852
- onChange({ startDate: day.date, endDate: startDate });
853
- }
854
- }
855
- else {
856
- setEndDate(day.date);
857
- setFocusedInput("startDate");
858
- if (onChange) {
859
- onChange(ensureStartIsFirst({
860
- startDate: startDate,
861
- endDate: day.date,
862
- }));
863
- }
864
- }
865
+ var dateRange = {
866
+ startDate: focusedInput === "startDate" ? day.date : value === null || value === void 0 ? void 0 : value.startDate,
867
+ endDate: focusedInput === "endDate" ? day.date : value === null || value === void 0 ? void 0 : value.endDate,
868
+ };
869
+ if (!isDateRangeInvalid(dateRange)) {
870
+ setFocusedInput(focusedInput === "startDate" ? "endDate" : "startDate");
865
871
  }
872
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(toggleDatesIfEndIsEarlierThanStart(dateRange));
866
873
  }, [
867
874
  focusedInput,
868
- endDate,
869
- startDate,
870
- setStartDate,
871
- setEndDate,
872
- onChange,
875
+ onValueChange,
873
876
  setFocusedInput,
877
+ value === null || value === void 0 ? void 0 : value.endDate,
878
+ value === null || value === void 0 ? void 0 : value.startDate,
874
879
  ]);
875
880
  };
876
881
 
877
- var toggleDatesIfEndIsEarlierThanStart = function (startDate, endDate) {
878
- if (startDate && endDate && dateFns.isAfter(startDate, endDate)) {
879
- return {
880
- startDate: endDate,
881
- endDate: startDate,
882
- };
883
- }
884
- return {
885
- startDate: startDate,
886
- endDate: endDate,
887
- };
888
- };
889
-
890
882
  var useInternalPanelState = function (onChangePanel) {
891
883
  var _a = React.useState("calendar"), currentPanel = _a[0], _setCurrentPanel = _a[1];
892
884
  var setCurrentPanel = React.useCallback(function (currentPanel) {
@@ -900,14 +892,13 @@ var useInternalPanelState = function (onChangePanel) {
900
892
  };
901
893
 
902
894
  var useDateRangeSelection = function (_a) {
903
- var focusedInput = _a.focusedInput, endDate = _a.endDate, startDate = _a.startDate, setStartDate = _a.setStartDate, setEndDate = _a.setEndDate, onChange = _a.onChange, setFocusedInput = _a.setFocusedInput, statePerMonth = _a.statePerMonth, onChangePanel = _a.onChangePanel;
895
+ var focusedInput = _a.focusedInput, value = _a.value, onValueChange = _a.onValueChange, setFocusedInput = _a.setFocusedInput, statePerMonth = _a.statePerMonth, onChangePanel = _a.onChangePanel;
904
896
  var _b = useInternalPanelState(onChangePanel), currentPanel = _b.currentPanel, setCurrentPanel = _b.setCurrentPanel;
905
897
  var _c = React.useState(function () { return new Date(); }), dateInFocus = _c[0], setDateInFocus = _c[1];
906
- var onClickDay = useDateRangeOnClickDayHandler(startDate, setStartDate, endDate, setEndDate, focusedInput, setFocusedInput, onChange);
907
- var dates = React.useMemo(function () { return toggleDatesIfEndIsEarlierThanStart(startDate, endDate); }, [startDate, endDate]);
898
+ var onClickDay = useDateRangeOnClickDayHandler(value, onValueChange, focusedInput, setFocusedInput);
908
899
  var statePerMonthWithSelection = React.useMemo(function () {
909
- return buildDayStateForDateRange(statePerMonth, dates.startDate, dates.endDate);
910
- }, [statePerMonth, dates]);
900
+ return buildDayStateForDateRange(statePerMonth, value === null || value === void 0 ? void 0 : value.startDate, value === null || value === void 0 ? void 0 : value.endDate);
901
+ }, [statePerMonth, value === null || value === void 0 ? void 0 : value.endDate, value === null || value === void 0 ? void 0 : value.startDate]);
911
902
  return {
912
903
  onClickDay: onClickDay,
913
904
  statePerMonth: statePerMonthWithSelection,
@@ -1080,46 +1071,46 @@ var listContainsDate = function (list, date) {
1080
1071
  };
1081
1072
 
1082
1073
  var useDateRangeExclusionSelection = function (_a) {
1083
- var onChange = _a.onChange, value = _a.value, statePerMonth = _a.statePerMonth, onChangePanel = _a.onChangePanel;
1084
- var _b = React.useState(), startDate = _b[0], setStartDate = _b[1];
1085
- var _c = React.useState(), endDate = _c[0], setEndDate = _c[1];
1086
- var _d = React.useState("startDate"), focusedInput = _d[0], setFocusedInput = _d[1];
1087
- var _e = useInternalPanelState(onChangePanel), currentPanel = _e.currentPanel, setCurrentPanel = _e.setCurrentPanel;
1088
- var _f = React.useState(function () { var _a; return (_a = (focusedInput && (value === null || value === void 0 ? void 0 : value[focusedInput]))) !== null && _a !== void 0 ? _a : new Date(); }), dateInFocus = _f[0], setDateInFocus = _f[1];
1074
+ var value = _a.value, onValueChange = _a.onValueChange, statePerMonth = _a.statePerMonth, onChangePanel = _a.onChangePanel;
1075
+ var _b = React.useState(), dateRange = _b[0], setDateRange = _b[1];
1076
+ var _c = React.useState("startDate"), focusedInput = _c[0], setFocusedInput = _c[1];
1077
+ var _d = useInternalPanelState(onChangePanel), currentPanel = _d.currentPanel, setCurrentPanel = _d.setCurrentPanel;
1078
+ var _e = React.useState(function () { var _a; return (_a = (focusedInput && (value === null || value === void 0 ? void 0 : value[focusedInput]))) !== null && _a !== void 0 ? _a : new Date(); }), dateInFocus = _e[0], setDateInFocus = _e[1];
1089
1079
  var onChangeHandler = React.useCallback(function (value) {
1080
+ setDateRange(value);
1090
1081
  var startDate = value.startDate, endDate = value.endDate;
1091
- if (onChange) {
1082
+ if (onValueChange) {
1092
1083
  if (startDate && endDate) {
1093
1084
  var dates = dateFns.eachDayOfInterval({ start: startDate, end: endDate });
1094
- onChange(dates);
1085
+ onValueChange(dates);
1095
1086
  }
1096
1087
  else if (startDate) {
1097
- onChange([startDate]);
1088
+ onValueChange([startDate]);
1098
1089
  }
1099
1090
  else if (endDate) {
1100
- onChange([endDate]);
1091
+ onValueChange([endDate]);
1101
1092
  }
1102
1093
  }
1103
- }, [onChange]);
1104
- var onClickDayRange = useDateRangeOnClickDayHandler(startDate, setStartDate, endDate, setEndDate, focusedInput, setFocusedInput, onChangeHandler);
1094
+ }, [onValueChange]);
1095
+ var onClickDayRange = useDateRangeOnClickDayHandler(dateRange, onChangeHandler, focusedInput, setFocusedInput);
1105
1096
  var onClickDay = React.useCallback(function (day, userData, ev) {
1106
- if (onChange) {
1097
+ if (onValueChange) {
1107
1098
  if (ev.ctrlKey || ev.metaKey) {
1108
1099
  if (!value) {
1109
- onChange([day.date]);
1100
+ onValueChange([day.date]);
1110
1101
  }
1111
1102
  else if (listContainsDate(value, day.date)) {
1112
- onChange(removeDateIfExist(value, day.date));
1103
+ onValueChange(removeDateIfExist(value, day.date));
1113
1104
  }
1114
1105
  else {
1115
- onChange(__spreadArray(__spreadArray([], value, true), [day.date], false));
1106
+ onValueChange(__spreadArray(__spreadArray([], value, true), [day.date], false));
1116
1107
  }
1117
1108
  }
1118
1109
  else {
1119
1110
  onClickDayRange(day, userData, ev);
1120
1111
  }
1121
1112
  }
1122
- }, [onChange, onClickDayRange, value]);
1113
+ }, [onValueChange, onClickDayRange, value]);
1123
1114
  var statePerMonthWithSelectedDate = React.useMemo(function () {
1124
1115
  return addHighlighting(statePerMonth, value);
1125
1116
  }, [statePerMonth, value]);
@@ -1186,16 +1177,18 @@ var useDateInput = function (onChange, onClose, openOnMount) {
1186
1177
  };
1187
1178
  };
1188
1179
 
1180
+ var defaultMaxDate = "2999-12-31";
1181
+
1189
1182
  var DateInput = function (_a) {
1190
- var _b = _a.displayFormat, displayFormat = _b === void 0 ? DateFormats.fullDate : _b, _c = _a.placeholder, placeholder = _c === void 0 ? "Enter date" : _c, value = _a.value, _d = _a.zIndex, zIndex = _d === void 0 ? 100 : _d, _e = _a.calendarTheme, calendarTheme = _e === void 0 ? defaultCalendarTheme : _e, calendarProps = _a.calendarProps, openOnMount = _a.openOnMount, onClose = _a.onClose, onChange = _a.onChange, portalTarget = _a.portalTarget, variant = _a.variant, width = _a.width;
1191
- var _f = useDateInput(onChange, onClose, openOnMount), hideCalendar = _f.hideCalendar, showingCalendar = _f.showingCalendar, onSelectDate = _f.onSelectDate, showCalendar = _f.showCalendar;
1192
- var _g = useCalendarPopoverUpdater(), tippyRef = _g.tippyRef, onChangePanel = _g.onChangePanel;
1183
+ var _b = _a.displayFormat, displayFormat = _b === void 0 ? DateFormats.fullDate : _b, _c = _a.placeholder, placeholder = _c === void 0 ? "Enter date" : _c, value = _a.value, _d = _a.zIndex, zIndex = _d === void 0 ? 100 : _d, _e = _a.calendarTheme, calendarTheme = _e === void 0 ? defaultCalendarTheme : _e, calendarProps = _a.calendarProps, openOnMount = _a.openOnMount, onClose = _a.onClose, onChange = _a.onChange, portalTarget = _a.portalTarget, variant = _a.variant, width = _a.width, minDate = _a.minDate, _f = _a.maxDate, maxDate = _f === void 0 ? defaultMaxDate : _f;
1184
+ var _g = useDateInput(onChange, onClose, openOnMount), hideCalendar = _g.hideCalendar, showingCalendar = _g.showingCalendar, onSelectDate = _g.onSelectDate, showCalendar = _g.showCalendar;
1185
+ var _h = useCalendarPopoverUpdater(), tippyRef = _h.tippyRef, onChangePanel = _h.onChangePanel;
1193
1186
  return (React__namespace.createElement(core.Box, { width: width },
1194
- React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, visible: showingCalendar, onClickOutside: hideCalendar, placement: defaultPopoverPlacement, zIndex: zIndex, appendTo: portalTarget !== null && portalTarget !== void 0 ? portalTarget : "parent", tippyRef: tippyRef, content: React__namespace.createElement(SingleDateCalendar, __assign({}, calendarProps, { onChange: onSelectDate, value: value, theme: calendarTheme, onChangePanel: onChangePanel })) },
1195
- React__namespace.createElement(forms.TextInput, { iconLeft: faCalendarAlt.faCalendarAlt, onFocus: showCalendar, onClickLeft: showCalendar, value: value ? dateFns.format(value, displayFormat) : "", placeholder: placeholder, size: 9, autoFocus: openOnMount, variant: variant }))));
1187
+ React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, visible: showingCalendar, onClickOutside: hideCalendar, placement: defaultPopoverPlacement, zIndex: zIndex, appendTo: portalTarget !== null && portalTarget !== void 0 ? portalTarget : "parent", tippyRef: tippyRef, content: React__namespace.createElement(SingleDateCalendar, __assign({}, calendarProps, { onChange: onSelectDate, value: value, theme: calendarTheme, onChangePanel: onChangePanel, minDate: minDate, maxDate: maxDate })) },
1188
+ React__namespace.createElement(forms.TextInput, { type: "date", iconRight: faCalendarAlt.faCalendarAlt, onFocus: showCalendar, onClickRight: showCalendar, value: value ? dateFns.format(value, displayFormat) : "", placeholder: placeholder, size: 9, autoFocus: openOnMount, variant: variant, min: minDate, max: maxDate }))));
1196
1189
  };
1197
1190
 
1198
- var useDateRangeInput = function (value, onChange) {
1191
+ var useDateRangeInput = function (value, onValueChange) {
1199
1192
  var startDateInputRef = React.useRef(null);
1200
1193
  var endDateInputRef = React.useRef(null);
1201
1194
  var _a = React.useState(false), showingCalendar = _a[0], setShowingCalendar = _a[1];
@@ -1215,11 +1208,11 @@ var useDateRangeInput = function (value, onChange) {
1215
1208
  }, [setShowingCalendar]);
1216
1209
  var onClickDay = React.useCallback(function (day) {
1217
1210
  if (focusedInput === "startDate") {
1218
- onChange({
1211
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange({
1219
1212
  startDate: day.date,
1220
- endDate: value.endDate,
1213
+ endDate: value === null || value === void 0 ? void 0 : value.endDate,
1221
1214
  });
1222
- if (!value.endDate) {
1215
+ if (!(value === null || value === void 0 ? void 0 : value.endDate)) {
1223
1216
  setFocusedInput("endDate");
1224
1217
  endDateInputRef.current && endDateInputRef.current.focus();
1225
1218
  }
@@ -1228,11 +1221,11 @@ var useDateRangeInput = function (value, onChange) {
1228
1221
  }
1229
1222
  }
1230
1223
  else if (focusedInput === "endDate") {
1231
- onChange({
1232
- startDate: value.startDate,
1224
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange({
1225
+ startDate: value === null || value === void 0 ? void 0 : value.startDate,
1233
1226
  endDate: day.date,
1234
1227
  });
1235
- if (!value.startDate) {
1228
+ if (!(value === null || value === void 0 ? void 0 : value.startDate)) {
1236
1229
  setFocusedInput("startDate");
1237
1230
  startDateInputRef.current && startDateInputRef.current.focus();
1238
1231
  }
@@ -1240,12 +1233,12 @@ var useDateRangeInput = function (value, onChange) {
1240
1233
  setTimeout(hideCalendar, 150);
1241
1234
  }
1242
1235
  }
1243
- }, [focusedInput, onChange, setFocusedInput, hideCalendar, value]);
1236
+ }, [focusedInput, onValueChange, setFocusedInput, hideCalendar, value]);
1244
1237
  var startDateIsAfterEnd = React.useMemo(function () {
1245
- return value.startDate &&
1246
- value.endDate &&
1238
+ return (value === null || value === void 0 ? void 0 : value.startDate) &&
1239
+ (value === null || value === void 0 ? void 0 : value.endDate) &&
1247
1240
  dateFns.isAfter(value.startDate, value.endDate);
1248
- }, [value.startDate, value.endDate]);
1241
+ }, [value === null || value === void 0 ? void 0 : value.startDate, value === null || value === void 0 ? void 0 : value.endDate]);
1249
1242
  return {
1250
1243
  showingCalendar: showingCalendar,
1251
1244
  hideCalendar: hideCalendar,
@@ -1264,24 +1257,26 @@ var useDateRangeInput = function (value, onChange) {
1264
1257
  * @deprecated Please use DateRangeDualTextInput instead.
1265
1258
  */
1266
1259
  var DateRangeInput = function (_a) {
1267
- var _b = _a.displayFormat, displayFormat = _b === void 0 ? DateFormats.fullDate : _b, _c = _a.placeholderStartDate, placeholderStartDate = _c === void 0 ? "Start date" : _c, _d = _a.placeholderEndDate, placeholderEndDate = _d === void 0 ? "End date" : _d, portalTarget = _a.portalTarget, value = _a.value, onChange = _a.onChange, _e = _a.zIndex, zIndex = _e === void 0 ? 100 : _e, width = _a.width, _f = _a.calendarTheme, calendarTheme = _f === void 0 ? defaultCalendarTheme : _f, calendarProps = _a.calendarProps;
1268
- var _g = React.useState(function () { var _a; return (_a = (focusedInput && value[focusedInput])) !== null && _a !== void 0 ? _a : new Date(); }), dateInFocus = _g[0], setDateInFocus = _g[1];
1269
- var _h = React.useState("calendar"), currentPanel = _h[0], setCurrentPanel = _h[1];
1270
- var _j = useDateRangeInput(value, onChange), hideCalendar = _j.hideCalendar, showCalendarEndDate = _j.showCalendarEndDate, showCalendarStartDate = _j.showCalendarStartDate, showingCalendar = _j.showingCalendar, focusedInput = _j.focusedInput, startDateInputRef = _j.startDateInputRef, endDateInputRef = _j.endDateInputRef, onClickDay = _j.onClickDay, startDateIsAfterEnd = _j.startDateIsAfterEnd;
1271
- var statePerMonth = React.useMemo(function () { return buildDayStateForDateRange(undefined, value.startDate, value.endDate); }, [value]);
1272
- return (React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, visible: showingCalendar, zIndex: zIndex, placement: defaultPopoverPlacement, appendTo: portalTarget !== null && portalTarget !== void 0 ? portalTarget : "parent", onClickOutside: hideCalendar, content: React__namespace.createElement(CalendarWithMonthSwitcher, __assign({}, calendarProps, { dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, statePerMonth: statePerMonth, theme: calendarTheme, onClickDay: onClickDay, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel })) },
1260
+ var _b = _a.displayFormat, displayFormat = _b === void 0 ? DateFormats.fullDate : _b, _c = _a.placeholderStartDate, placeholderStartDate = _c === void 0 ? "Start date" : _c, _d = _a.placeholderEndDate, placeholderEndDate = _d === void 0 ? "End date" : _d, portalTarget = _a.portalTarget, value = _a.value, onValueChange = _a.onValueChange, _e = _a.zIndex, zIndex = _e === void 0 ? 100 : _e, width = _a.width, _f = _a.calendarTheme, calendarTheme = _f === void 0 ? defaultCalendarTheme : _f, calendarProps = _a.calendarProps, minDate = _a.minDate, _g = _a.maxDate, maxDate = _g === void 0 ? defaultMaxDate : _g;
1261
+ var _h = React.useState(function () { var _a; return (_a = (focusedInput && (value === null || value === void 0 ? void 0 : value[focusedInput]))) !== null && _a !== void 0 ? _a : new Date(); }), dateInFocus = _h[0], setDateInFocus = _h[1];
1262
+ var _j = React.useState("calendar"), currentPanel = _j[0], setCurrentPanel = _j[1];
1263
+ var _k = useDateRangeInput(value, onValueChange), hideCalendar = _k.hideCalendar, showCalendarEndDate = _k.showCalendarEndDate, showCalendarStartDate = _k.showCalendarStartDate, showingCalendar = _k.showingCalendar, focusedInput = _k.focusedInput, startDateInputRef = _k.startDateInputRef, endDateInputRef = _k.endDateInputRef, onClickDay = _k.onClickDay, startDateIsAfterEnd = _k.startDateIsAfterEnd;
1264
+ var statePerMonth = React.useMemo(function () {
1265
+ return buildDayStateForDateRange(undefined, value === null || value === void 0 ? void 0 : value.startDate, value === null || value === void 0 ? void 0 : value.endDate);
1266
+ }, [value]);
1267
+ return (React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, visible: showingCalendar, zIndex: zIndex, placement: defaultPopoverPlacement, appendTo: portalTarget !== null && portalTarget !== void 0 ? portalTarget : "parent", onClickOutside: hideCalendar, content: React__namespace.createElement(CalendarWithMonthSwitcher, __assign({}, calendarProps, { dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, statePerMonth: statePerMonth, theme: calendarTheme, onClickDay: onClickDay, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel, minDate: minDate, maxDate: maxDate })) },
1273
1268
  React__namespace.createElement(core.Row, { alignItems: "center" },
1274
- React__namespace.createElement(forms.TextInput, { iconLeft: faCalendarAlt.faCalendarAlt, onFocus: showCalendarStartDate, value: value.startDate ? dateFns.format(value.startDate, displayFormat) : "", placeholder: placeholderStartDate, width: width, inputRef: startDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }),
1269
+ React__namespace.createElement(forms.TextInput, { iconLeft: faCalendarAlt$1.faCalendarAlt, onFocus: showCalendarStartDate, value: (value === null || value === void 0 ? void 0 : value.startDate) ? dateFns.format(value.startDate, displayFormat) : "", placeholder: placeholderStartDate, width: width, inputRef: startDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }),
1275
1270
  React__namespace.createElement(core.Space, null),
1276
1271
  React__namespace.createElement(elements.Icon, { icon: faLongArrowAltRight.faLongArrowAltRight, color: theme.cssColor("--lhds-color-ui-500"), size: 14 }),
1277
1272
  React__namespace.createElement(core.Space, null),
1278
- React__namespace.createElement(forms.TextInput, { iconLeft: faCalendarAlt.faCalendarAlt, onFocus: showCalendarEndDate, value: value.endDate ? dateFns.format(value.endDate, displayFormat) : "", placeholder: placeholderEndDate, width: width, inputRef: endDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }))));
1273
+ React__namespace.createElement(forms.TextInput, { iconLeft: faCalendarAlt$1.faCalendarAlt, onFocus: showCalendarEndDate, value: (value === null || value === void 0 ? void 0 : value.endDate) ? dateFns.format(value.endDate, displayFormat) : "", placeholder: placeholderEndDate, width: width, inputRef: endDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }))));
1279
1274
  };
1280
1275
 
1281
1276
  var DateTextInput = function (_a) {
1282
- var calendarProps = _a.calendarProps, _b = _a.closeOnCalendarSelectDate, closeOnCalendarSelectDate = _b === void 0 ? true : _b, _c = _a.dateFormat, dateFormat = _c === void 0 ? DateFormats.fullDate : _c; _a.disableCalender; var onValueChange = _a.onValueChange, _e = _a.placeholder, placeholder = _e === void 0 ? "yyyy-mm-dd" : _e, portalTarget = _a.portalTarget, value = _a.value, _f = _a.width, width = _f === void 0 ? "130px" : _f, _g = _a.zIndex, zIndex = _g === void 0 ? 100 : _g, _h = _a.calendarTheme, calendarTheme = _h === void 0 ? defaultCalendarTheme : _h, _j = _a.hideCalenderIcon, hideCalenderIcon = _j === void 0 ? false : _j, props = __rest(_a, ["calendarProps", "closeOnCalendarSelectDate", "dateFormat", "disableCalender", "onValueChange", "placeholder", "portalTarget", "value", "width", "zIndex", "calendarTheme", "hideCalenderIcon"]);
1283
- var _k = React.useState(false), open = _k[0], setOpen = _k[1];
1284
- var _l = useCalendarPopoverUpdater(), tippyRef = _l.tippyRef, onChangePanel = _l.onChangePanel;
1277
+ var calendarProps = _a.calendarProps, _b = _a.closeOnCalendarSelectDate, closeOnCalendarSelectDate = _b === void 0 ? true : _b, _c = _a.dateFormat, dateFormat = _c === void 0 ? DateFormats.fullDate : _c; _a.disableCalender; var onValueChange = _a.onValueChange, _e = _a.placeholder, placeholder = _e === void 0 ? "yyyy-mm-dd" : _e, portalTarget = _a.portalTarget, value = _a.value, _f = _a.width, width = _f === void 0 ? "130px" : _f, _g = _a.zIndex, zIndex = _g === void 0 ? 100 : _g, _h = _a.calendarTheme, calendarTheme = _h === void 0 ? defaultCalendarTheme : _h, _j = _a.hideCalenderIcon, hideCalenderIcon = _j === void 0 ? false : _j, minDate = _a.minDate, _k = _a.maxDate, maxDate = _k === void 0 ? defaultMaxDate : _k, props = __rest(_a, ["calendarProps", "closeOnCalendarSelectDate", "dateFormat", "disableCalender", "onValueChange", "placeholder", "portalTarget", "value", "width", "zIndex", "calendarTheme", "hideCalenderIcon", "minDate", "maxDate"]);
1278
+ var _l = React.useState(false), open = _l[0], setOpen = _l[1];
1279
+ var _m = useCalendarPopoverUpdater(), tippyRef = _m.tippyRef, onChangePanel = _m.onChangePanel;
1285
1280
  var toggleCalendar = React.useCallback(function () {
1286
1281
  setOpen(!open);
1287
1282
  }, [setOpen, open]);
@@ -1308,9 +1303,9 @@ var DateTextInput = function (_a) {
1308
1303
  return (React__namespace.createElement(core.Box, { width: width },
1309
1304
  React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, visible: open, zIndex: zIndex, appendTo: portalTarget !== null && portalTarget !== void 0 ? portalTarget : "parent", placement: defaultPopoverPlacement, onClickOutside: hideCalendar, tippyRef: tippyRef, content: React__namespace.createElement(SingleDateCalendar, __assign({}, calendarProps, { onChange: onCalendarSelectDate, onChangePanel: onChangePanel, value: value && dateIsValid
1310
1305
  ? dateFns.parse(value, dateFormat, new Date())
1311
- : undefined, theme: calendarTheme })) },
1306
+ : undefined, minDate: minDate, maxDate: maxDate, theme: calendarTheme })) },
1312
1307
  React__namespace.createElement(forms.TextInput, __assign({}, props, { variant: invalid ? "error" : "standard", disableContentPaddingRight: true, contentRight: !hideCalenderIcon ? (React__namespace.createElement(core.Row, { alignItems: "center", indent: 0.5 },
1313
- React__namespace.createElement(elements.FlatButton, { size: "small", leftIcon: faCalendarAlt.faCalendarAlt, onClick: toggleCalendar }))) : undefined, onValueChange: onValueChangeHandler, placeholder: placeholder, value: value || "", size: 10 })))));
1308
+ React__namespace.createElement(elements.FlatButton, { size: "small", leftIcon: faCalendarAlt$1.faCalendarAlt, onClick: toggleCalendar }))) : undefined, onValueChange: onValueChangeHandler, placeholder: placeholder, value: value || "", min: minDate, max: maxDate, size: 10 })))));
1314
1309
  };
1315
1310
 
1316
1311
  var formatHours = function (hours) {
@@ -1448,7 +1443,7 @@ var TimeTextInput = function (_a) {
1448
1443
  };
1449
1444
 
1450
1445
  var DualTextInput = function (_a) {
1451
- var autoFocusLeft = _a.autoFocusLeft, autoFocusRight = _a.autoFocusRight, onEsc = _a.onEsc, onEnter = _a.onEnter, onValueChangeLeft = _a.onValueChangeLeft, onValueChangeRight = _a.onValueChangeRight, separatorIcon = _a.separatorIcon, placeholderLeft = _a.placeholderLeft, placeholderRight = _a.placeholderRight, typeLeft = _a.typeLeft, typeRight = _a.typeRight, onChangeLeft = _a.onChangeLeft, onChangeRight = _a.onChangeRight, valueLeft = _a.valueLeft, valueRight = _a.valueRight, onClickLeft = _a.onClickLeft, onClickRight = _a.onClickRight, onClickCalendar = _a.onClickCalendar, onClickArrowDown = _a.onClickArrowDown, onBlurLeft = _a.onBlurLeft, onBlurRight = _a.onBlurRight, onFocusLeft = _a.onFocusLeft, onFocusRight = _a.onFocusRight, inputRefLeft = _a.inputRefLeft, inputRefRight = _a.inputRefRight, variant = _a.variant, variantLeft = _a.variantLeft, variantRight = _a.variantRight, onBlur = _a.onBlur, showPresets = _a.showPresets, widthLeft = _a.widthLeft, widthRight = _a.widthRight;
1446
+ var autoFocusLeft = _a.autoFocusLeft, autoFocusRight = _a.autoFocusRight, onEsc = _a.onEsc, onEnter = _a.onEnter, onValueChangeLeft = _a.onValueChangeLeft, onValueChangeRight = _a.onValueChangeRight, separatorIcon = _a.separatorIcon, placeholderLeft = _a.placeholderLeft, placeholderRight = _a.placeholderRight, typeLeft = _a.typeLeft, typeRight = _a.typeRight, onChangeLeft = _a.onChangeLeft, onChangeRight = _a.onChangeRight, valueLeft = _a.valueLeft, valueRight = _a.valueRight, minLeft = _a.minLeft, maxLeft = _a.maxLeft, minRight = _a.minRight, maxRight = _a.maxRight, onClickLeft = _a.onClickLeft, onClickRight = _a.onClickRight, onClickCalendar = _a.onClickCalendar, onClickArrowDown = _a.onClickArrowDown, onBlurLeft = _a.onBlurLeft, onBlurRight = _a.onBlurRight, onFocusLeft = _a.onFocusLeft, onFocusRight = _a.onFocusRight, inputRefLeft = _a.inputRefLeft, inputRefRight = _a.inputRefRight, variant = _a.variant, variantLeft = _a.variantLeft, variantRight = _a.variantRight, onBlur = _a.onBlur, showPresets = _a.showPresets, widthLeft = _a.widthLeft, widthRight = _a.widthRight;
1452
1447
  var focusCounter = React.useRef(0);
1453
1448
  var tryTriggerOnBlur = React.useMemo(function () {
1454
1449
  return lodash.debounce(function (focusCounter) {
@@ -1488,18 +1483,18 @@ var DualTextInput = function (_a) {
1488
1483
  return (React__namespace.createElement(core.Box, null,
1489
1484
  React__namespace.createElement(forms.TextInputBox, { disableContentPaddingRight: true, variant: variant, contentRight: React__namespace.createElement(core.Row, { alignItems: "center" },
1490
1485
  React__namespace.createElement(core.Indent, { num: 0.5 },
1491
- React__namespace.createElement(elements.FlatButton, { leftIcon: faCalendarAlt$1.faCalendarAlt, onClick: onClickCalendar, size: "small" })),
1486
+ React__namespace.createElement(elements.FlatButton, { leftIcon: faCalendarAlt.faCalendarAlt, onClick: onClickCalendar, size: "small" })),
1492
1487
  showPresets ? (React__namespace.createElement(React__namespace.Fragment, null,
1493
1488
  React__namespace.createElement(core.Row, { height: "22px" },
1494
1489
  React__namespace.createElement(core.SeparatorLine, { vertical: true })),
1495
1490
  React__namespace.createElement(core.Indent, { num: 0.5 },
1496
1491
  React__namespace.createElement(elements.FlatButton, { leftIcon: faAngleDown.faAngleDown, onClick: onClickArrowDown, size: "small" })))) : null) },
1497
1492
  React__namespace.createElement(core.Box, { width: widthLeft },
1498
- React__namespace.createElement(forms.TextInput, { onEsc: onEsc, onEnter: onEnter, onClick: onClickLeft, hideBorder: true, placeholder: placeholderLeft, value: valueLeft, onValueChange: onValueChangeLeft, onChange: onChangeLeft, onBlur: blurLeftHandler, onFocus: focusLeftHandler, inputRef: inputRefLeft, variant: variantLeft, type: typeLeft, autoFocus: autoFocusLeft })),
1493
+ React__namespace.createElement(forms.TextInput, { onEsc: onEsc, onEnter: onEnter, onClick: onClickLeft, hideBorder: true, placeholder: placeholderLeft, value: valueLeft, onValueChange: onValueChangeLeft, onChange: onChangeLeft, onBlur: blurLeftHandler, onFocus: focusLeftHandler, inputRef: inputRefLeft, variant: variantLeft, type: typeLeft, autoFocus: autoFocusLeft, min: minLeft, max: maxLeft })),
1499
1494
  React__namespace.createElement(core.Row, { indent: 0.5, alignItems: "center", justifyContent: "center" },
1500
1495
  React__namespace.createElement(elements.Icon, { icon: separatorIcon, size: 12, color: theme.cssColor("--lhds-color-ui-500") })),
1501
1496
  React__namespace.createElement(core.Box, { width: widthRight },
1502
- React__namespace.createElement(forms.TextInput, { onEsc: onEsc, onEnter: onEnter, onClick: onClickRight, hideBorder: true, placeholder: placeholderRight, value: valueRight, onValueChange: onValueChangeRight, onChange: onChangeRight, onBlur: blurRightHandler, onFocus: focusRightHandler, inputRef: inputRefRight, variant: variantRight, type: typeRight, autoFocus: autoFocusRight })))));
1497
+ React__namespace.createElement(forms.TextInput, { onEsc: onEsc, onEnter: onEnter, onClick: onClickRight, hideBorder: true, placeholder: placeholderRight, value: valueRight, onValueChange: onValueChangeRight, onChange: onChangeRight, onBlur: blurRightHandler, onFocus: focusRightHandler, inputRef: inputRefRight, variant: variantRight, type: typeRight, autoFocus: autoFocusRight, min: minRight, max: maxRight })))));
1503
1498
  };
1504
1499
 
1505
1500
  var transformTimeStringToNumber = function (time) {
@@ -1804,13 +1799,13 @@ var useUserInputHandlers$1 = function (onChangeDate, dateInputRef, showCalendar,
1804
1799
  };
1805
1800
 
1806
1801
  var DateTimeInput = function (_a) {
1807
- var value = _a.value, onValueChange = _a.onValueChange, onEnter = _a.onEnter, onEsc = _a.onEsc, onBlur = _a.onBlur, autoFocus = _a.autoFocus;
1802
+ var value = _a.value, onValueChange = _a.onValueChange, onEnter = _a.onEnter, onEsc = _a.onEsc, onBlur = _a.onBlur, autoFocus = _a.autoFocus, minDate = _a.minDate, _b = _a.maxDate, maxDate = _b === void 0 ? defaultMaxDate : _b;
1808
1803
  var dateInputRef = React.useRef(null);
1809
1804
  var timeInputRef = React.useRef(null);
1810
1805
  var states = useInputStates$1(value);
1811
1806
  var setCurrentPanel = states.setCurrentPanel, currentPanel = states.currentPanel, isCalendarVisible = states.isCalendarVisible, dateInFocus = states.dateInFocus, setDateInFocus = states.setDateInFocus, isTimePickerVisible = states.isTimePickerVisible, hideTimePicker = states.hideTimePicker, localTime = states.localTime, localDate = states.localDate;
1812
- var _b = useDateRangeHandlers$1(value, onValueChange, states, dateInputRef), showCalendar = _b.showCalendar, hideCalendar = _b.hideCalendar, inputLeftChangeHandler = _b.inputLeftChangeHandler, inputRightChangeHandler = _b.inputRightChangeHandler, onChangeTime = _b.onChangeTime, onChangeDate = _b.onChangeDate;
1813
- var _c = useUserInputHandlers$1(onChangeDate, dateInputRef, showCalendar, hideCalendar, states), onKeyDownHandler = _c.onKeyDownHandler, onFocusRight = _c.onFocusRight, onFocusLeft = _c.onFocusLeft, onClickDay = _c.onClickDay, onClickCalendarButton = _c.onClickCalendarButton, onClickArrowButton = _c.onClickArrowButton;
1807
+ var _c = useDateRangeHandlers$1(value, onValueChange, states, dateInputRef), showCalendar = _c.showCalendar, hideCalendar = _c.hideCalendar, inputLeftChangeHandler = _c.inputLeftChangeHandler, inputRightChangeHandler = _c.inputRightChangeHandler, onChangeTime = _c.onChangeTime, onChangeDate = _c.onChangeDate;
1808
+ var _d = useUserInputHandlers$1(onChangeDate, dateInputRef, showCalendar, hideCalendar, states), onKeyDownHandler = _d.onKeyDownHandler, onFocusRight = _d.onFocusRight, onFocusLeft = _d.onFocusLeft, onClickDay = _d.onClickDay, onClickCalendarButton = _d.onClickCalendarButton, onClickArrowButton = _d.onClickArrowButton;
1814
1809
  useDateRangeEffects$1(value, setDateInFocus, dateInputRef);
1815
1810
  var statePerMonth = React.useMemo(function () {
1816
1811
  var dateToHighlight = value || localDate;
@@ -1830,13 +1825,13 @@ var DateTimeInput = function (_a) {
1830
1825
  var delayedIsCalendarVisible = core.useDelayedFalse(isCalendarVisible, 300);
1831
1826
  var delayedIsTimePickerVisible = core.useDelayedFalse(isTimePickerVisible, 300);
1832
1827
  return (React__namespace.createElement(core.Box, { onKeyDown: onKeyDownHandler },
1833
- React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, visible: isCalendarVisible || isTimePickerVisible, onClickOutside: hideAll, content: (delayedIsCalendarVisible || delayedIsTimePickerVisible) && (React__namespace.createElement(core.Column, null, delayedIsCalendarVisible ? (React__namespace.createElement(CalendarWithMonthSwitcher, { statePerMonth: statePerMonth, onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel })) : delayedIsTimePickerVisible ? (React__namespace.createElement(core.Column, null,
1828
+ React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, visible: isCalendarVisible || isTimePickerVisible, onClickOutside: hideAll, content: (delayedIsCalendarVisible || delayedIsTimePickerVisible) && (React__namespace.createElement(core.Column, null, delayedIsCalendarVisible ? (React__namespace.createElement(CalendarWithMonthSwitcher, { statePerMonth: statePerMonth, onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel, minDate: minDate, maxDate: maxDate })) : delayedIsTimePickerVisible ? (React__namespace.createElement(core.Column, null,
1834
1829
  React__namespace.createElement(core.Column, { overflow: "hidden", height: "250px" },
1835
1830
  React__namespace.createElement(TimePicker, { value: timeValue !== null && timeValue !== void 0 ? timeValue : "", onValueChange: onChangeTime })),
1836
1831
  React__namespace.createElement(core.Space, null),
1837
1832
  React__namespace.createElement(core.Row, { justifyContent: "flex-end" },
1838
1833
  React__namespace.createElement(elements.PrimaryButton, { label: "Done", onClick: hideTimePicker })))) : null)) },
1839
- React__namespace.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: faClock$1.faClock, typeLeft: "date", typeRight: "time", placeholderLeft: "yyyy-mm-dd", placeholderRight: "hh:mm", onChangeLeft: inputLeftChangeHandler, onChangeRight: inputRightChangeHandler, onClickArrowDown: onClickArrowButton, onClickCalendar: onClickCalendarButton, onFocusLeft: onFocusLeft, onFocusRight: onFocusRight, onClickLeft: onFocusLeft, onClickRight: onFocusRight, inputRefLeft: dateInputRef, inputRefRight: timeInputRef, valueRight: timeValue !== null && timeValue !== void 0 ? timeValue : "", widthLeft: "104px", widthRight: "64px" }))));
1834
+ React__namespace.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: faClock$1.faClock, typeLeft: "date", typeRight: "time", placeholderLeft: "yyyy-mm-dd", placeholderRight: "hh:mm", onChangeLeft: inputLeftChangeHandler, onChangeRight: inputRightChangeHandler, onClickArrowDown: onClickArrowButton, onClickCalendar: onClickCalendarButton, onFocusLeft: onFocusLeft, onFocusRight: onFocusRight, onClickLeft: onFocusLeft, onClickRight: onFocusRight, inputRefLeft: dateInputRef, inputRefRight: timeInputRef, valueRight: timeValue !== null && timeValue !== void 0 ? timeValue : "", widthLeft: "104px", widthRight: "64px", minLeft: minDate, maxLeft: maxDate }))));
1840
1835
  };
1841
1836
 
1842
1837
  var useDateRangeEffects = function (startDate, endDate, setDateInFocus, startDateInputRef, endDateInputRef) {
@@ -2087,14 +2082,14 @@ var useUserInputHandlers = function (startDate, endDate, onValueChange, startDat
2087
2082
  };
2088
2083
 
2089
2084
  var DateRangeDualTextInput = function (_a) {
2090
- var value = _a.value, onValueChange = _a.onValueChange, autoFocus = _a.autoFocus, onBlur = _a.onBlur, onEnter = _a.onEnter, onEsc = _a.onEsc, calendarProps = _a.calendarProps;
2091
- var _b = value || {}, startDate = _b.startDate, endDate = _b.endDate;
2085
+ var value = _a.value, onValueChange = _a.onValueChange, autoFocus = _a.autoFocus, onBlur = _a.onBlur, onEnter = _a.onEnter, onEsc = _a.onEsc, minDate = _a.minDate, _b = _a.maxDate, maxDate = _b === void 0 ? defaultMaxDate : _b, calendarProps = _a.calendarProps;
2086
+ var _c = value || {}, startDate = _c.startDate, endDate = _c.endDate;
2092
2087
  var startDateInputRef = React.useRef(null);
2093
2088
  var endDateInputRef = React.useRef(null);
2094
2089
  var states = useInputStates(startDate, endDate);
2095
2090
  var dateInFocus = states.dateInFocus, setDateInFocus = states.setDateInFocus, isCalendarVisible = states.isCalendarVisible, currentPanel = states.currentPanel, setCurrentPanel = states.setCurrentPanel;
2096
- var _c = useDateRangeHandlers(startDate, endDate, onValueChange, states), showCalendar = _c.showCalendar, hideCalendar = _c.hideCalendar, inputLeftChangeHandler = _c.inputLeftChangeHandler, inputRightChangeHandler = _c.inputRightChangeHandler;
2097
- var _d = useUserInputHandlers(startDate, endDate, onValueChange, startDateInputRef, endDateInputRef, showCalendar, hideCalendar, states), onKeyDownHandler = _d.onKeyDownHandler, onFocusRight = _d.onFocusRight, onFocusLeft = _d.onFocusLeft, onClickDay = _d.onClickDay, onClickCalendarButton = _d.onClickCalendarButton, onClickArrowButton = _d.onClickArrowButton;
2091
+ var _d = useDateRangeHandlers(startDate, endDate, onValueChange, states), showCalendar = _d.showCalendar, hideCalendar = _d.hideCalendar, inputLeftChangeHandler = _d.inputLeftChangeHandler, inputRightChangeHandler = _d.inputRightChangeHandler;
2092
+ var _e = useUserInputHandlers(startDate, endDate, onValueChange, startDateInputRef, endDateInputRef, showCalendar, hideCalendar, states), onKeyDownHandler = _e.onKeyDownHandler, onFocusRight = _e.onFocusRight, onFocusLeft = _e.onFocusLeft, onClickDay = _e.onClickDay, onClickCalendarButton = _e.onClickCalendarButton, onClickArrowButton = _e.onClickArrowButton;
2098
2093
  useDateRangeEffects(startDate, endDate, setDateInFocus, startDateInputRef, endDateInputRef);
2099
2094
  var startDateIsAfterEnd = React.useMemo(function () { return startDate && endDate && dateFns.isAfter(startDate, endDate); }, [startDate, endDate]);
2100
2095
  var statePerMonth = React.useMemo(function () {
@@ -2102,8 +2097,8 @@ var DateRangeDualTextInput = function (_a) {
2102
2097
  }, [calendarProps === null || calendarProps === void 0 ? void 0 : calendarProps.statePerMonth, startDate, endDate, dateInFocus]);
2103
2098
  var delayedIsCalendarVisible = core.useDelayedFalse(isCalendarVisible, 300);
2104
2099
  return (React__namespace.createElement(core.Box, { onKeyDown: onKeyDownHandler },
2105
- React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, onClickOutside: hideCalendar, visible: isCalendarVisible, content: delayedIsCalendarVisible && (React__namespace.createElement(CalendarWithMonthSwitcher, __assign({ onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel }, calendarProps, { statePerMonth: statePerMonth }))) },
2106
- React__namespace.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: elements.stenaArrowRight, typeLeft: "date", typeRight: "date", placeholderLeft: "Start date", placeholderRight: "End date", onChangeLeft: inputLeftChangeHandler, onChangeRight: inputRightChangeHandler, onClickArrowDown: onClickArrowButton, onClickCalendar: onClickCalendarButton, onFocusLeft: onFocusLeft, onFocusRight: onFocusRight, onClickLeft: onFocusLeft, onClickRight: onFocusRight, inputRefLeft: startDateInputRef, inputRefRight: endDateInputRef, variant: startDateIsAfterEnd ? "error" : undefined, widthLeft: "104px", widthRight: "104px" }))));
2100
+ React__namespace.createElement(tooltip.Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, onClickOutside: hideCalendar, visible: isCalendarVisible, content: delayedIsCalendarVisible && (React__namespace.createElement(CalendarWithMonthSwitcher, __assign({ onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel, minDate: minDate, maxDate: maxDate }, calendarProps, { statePerMonth: statePerMonth }))) },
2101
+ React__namespace.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: elements.stenaArrowRight, typeLeft: "date", typeRight: "date", placeholderLeft: "Start date", placeholderRight: "End date", onChangeLeft: inputLeftChangeHandler, onChangeRight: inputRightChangeHandler, onClickArrowDown: onClickArrowButton, onClickCalendar: onClickCalendarButton, onFocusLeft: onFocusLeft, onFocusRight: onFocusRight, onClickLeft: onFocusLeft, onClickRight: onFocusRight, inputRefLeft: startDateInputRef, inputRefRight: endDateInputRef, variant: startDateIsAfterEnd ? "error" : undefined, widthLeft: "104px", widthRight: "104px", minLeft: minDate, maxLeft: maxDate, minRight: minDate, maxRight: maxDate }))));
2107
2102
  };
2108
2103
 
2109
2104
  exports.Calendar = Calendar;
@@ -2125,6 +2120,7 @@ exports.WeekDayCell = WeekDayCell;
2125
2120
  exports.WeekNumberCell = WeekNumberCell;
2126
2121
  exports.YearPicker = YearPicker;
2127
2122
  exports.addDayStateHighlights = addDayStateHighlights;
2123
+ exports.addDayStateHighlightsOnSingleDay = addDayStateHighlightsOnSingleDay;
2128
2124
  exports.addWeekRangeHighlights = addWeekRangeHighlights;
2129
2125
  exports.addWeekStateHighlights = addWeekStateHighlights;
2130
2126
  exports.buildDayStateForDateRange = buildDayStateForDateRange;
@@ -2132,12 +2128,12 @@ exports.buildDayStateForRange = buildDayStateForRange;
2132
2128
  exports.buildDayStateForSingleMonth = buildDayStateForSingleMonth;
2133
2129
  exports.calculateOverflowingMonth = calculateOverflowingMonth;
2134
2130
  exports.createDay = createDay;
2131
+ exports.dateRangeToStrings = dateRangeToStrings;
2135
2132
  exports.dayHasHighlight = dayHasHighlight;
2136
2133
  exports.dayHighlightSelect = dayHighlightSelect;
2137
2134
  exports.defaultCalendarTheme = defaultCalendarTheme;
2138
2135
  exports.defaultTextPropsProvider = defaultTextPropsProvider;
2139
2136
  exports.defaultWrapperStyleProvider = defaultWrapperStyleProvider;
2140
- exports.ensureStartIsFirst = ensureStartIsFirst;
2141
2137
  exports.extranetCalendarTheme = extranetCalendarTheme;
2142
2138
  exports.getDaysForWeekForDate = getDaysForWeekForDate;
2143
2139
  exports.getMonthInYear = getMonthInYear;
@@ -2145,10 +2141,12 @@ exports.getMonthsInYear = getMonthsInYear;
2145
2141
  exports.getStartDateOfISOWeek = getStartDateOfISOWeek;
2146
2142
  exports.getWeekForDate = getWeekForDate;
2147
2143
  exports.getWeeksForMonth = getWeeksForMonth;
2144
+ exports.isDateRangeInvalid = isDateRangeInvalid;
2148
2145
  exports.setDayStateValue = setDayStateValue;
2149
2146
  exports.setDayStateValueFunction = setDayStateValueFunction;
2150
- exports.transformDateIntervalToDateStringInterval = transformDateIntervalToDateStringInterval;
2151
- exports.transformDateStringIntervalToDateInterval = transformDateStringIntervalToDateInterval;
2147
+ exports.stringsToDateRange = stringsToDateRange;
2148
+ exports.toggleDateStringsIfEndIsEarlierThanStart = toggleDateStringsIfEndIsEarlierThanStart;
2149
+ exports.toggleDatesIfEndIsEarlierThanStart = toggleDatesIfEndIsEarlierThanStart;
2152
2150
  exports.useDateRangeCalendarState = useDateRangeCalendarState;
2153
2151
  exports.useDateRangeExclusionSelection = useDateRangeExclusionSelection;
2154
2152
  exports.useDateRangeSelection = useDateRangeSelection;