@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.
- package/dist/components/calendar/CalendarMonth.d.ts +3 -3
- package/dist/components/calendar/CalendarWeek.d.ts +3 -3
- package/dist/components/calendar/DisabledDayWrapper.d.ts +7 -0
- package/dist/components/calendar-types/date-range-calendar/DateRangeCalendar.d.ts +4 -12
- package/dist/components/calendar-types/date-range-calendar/DateRangeCalendar.stories.d.ts +1 -0
- package/dist/components/calendar-types/date-range-calendar/hooks/UseDateRangeSelection.d.ts +1 -1
- package/dist/components/calendar-types/date-range-exclusion-calendar/DateRangeExclusionCalendar.d.ts +2 -3
- package/dist/components/calendar-types/date-range-exclusion-calendar/UseDateRangeExclusionSelection.d.ts +1 -1
- package/dist/components/input-types/date-input/DateInput.d.ts +2 -1
- package/dist/components/input-types/date-input/DateInput.stories.d.ts +2 -0
- package/dist/components/input-types/date-range-dual-text-input/DateRangeDualTextInput.d.ts +4 -3
- package/dist/components/input-types/date-range-dual-text-input/DateRangeDualTextInput.stories.d.ts +2 -1
- package/dist/components/input-types/date-range-input/DateRangeInput.d.ts +6 -7
- package/dist/components/input-types/date-range-input/DateRangeInput.stories.d.ts +2 -1
- package/dist/components/input-types/date-range-input/hooks/UseDateRangeInput.d.ts +3 -2
- package/dist/components/input-types/date-text-input/DateTextInput.d.ts +2 -1
- package/dist/components/input-types/date-time-input/DateTimeInput.d.ts +2 -1
- package/dist/components/input-types/date-time-input/DateTimeInput.stories.d.ts +1 -0
- package/dist/config/DefaultMaxDate.d.ts +1 -0
- package/dist/features/date-range/hooks/UseDateRangeOnClickDayHandler.d.ts +2 -5
- package/dist/features/dual-text-input/DualTextInput.d.ts +4 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.es.js +148 -153
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +152 -154
- package/dist/index.js.map +1 -1
- package/dist/types/CalendarTypes.d.ts +21 -1
- package/dist/types/DateRange.d.ts +16 -0
- package/dist/util/calendar/StateModifier.d.ts +1 -0
- package/dist/util/date/DateMinMaxValidator.d.ts +1 -0
- package/dist/util/date/__tests__/DateMinMaxValidator.test.d.ts +1 -0
- package/dist/util/date-range/DateRangeTransformer.d.ts +3 -0
- package/dist/util/date-range/DateRangeValidator.d.ts +4 -0
- package/dist/util/date-range/__tests__/DateRangeValidator.test.d.ts +1 -0
- package/package.json +7 -7
- package/dist/components/calendar-types/date-range-calendar/util/IntervalSwitcher.d.ts +0 -4
- package/dist/util/calendar/CalendarIntervalValidator.d.ts +0 -11
package/dist/index.es.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { useMemo, useCallback, useState, useEffect, useRef } from 'react';
|
|
3
3
|
import { FlatButton, PrimaryButton, Icon, stenaArrowRight } from '@stenajs-webui/elements';
|
|
4
4
|
import { Box, Text, Clickable, Row, Space, Spacing, Indent, Column, SeparatorLine, parseIntElseUndefined, useBoolean, useDelayedFalse } from '@stenajs-webui/core';
|
|
5
|
-
import { isAfter, eachDayOfInterval, isSameDay, endOfMonth, startOfMonth, min, addDays, max, subDays, format, getISOWeek, getDate, startOfISOWeek, addWeeks, getMonth, getYear, getISODay, addHours, addMonths, addYears, subMonths, subYears,
|
|
5
|
+
import { isAfter, eachDayOfInterval, isSameDay, endOfMonth, startOfMonth, min, addDays, max, subDays, format, getISOWeek, getDate, startOfISOWeek, addWeeks, getMonth, getYear, getISODay, addHours, isBefore, parse, addMonths, addYears, subMonths, subYears, isValid } from 'date-fns';
|
|
6
6
|
import { last, chunk, range, debounce } from 'lodash';
|
|
7
7
|
import styled from '@emotion/styled';
|
|
8
8
|
import { faAngleLeft } from '@fortawesome/free-solid-svg-icons/faAngleLeft';
|
|
@@ -11,14 +11,14 @@ import { faAngleDoubleLeft } from '@fortawesome/free-solid-svg-icons/faAngleDoub
|
|
|
11
11
|
import { faAngleDoubleRight } from '@fortawesome/free-solid-svg-icons/faAngleDoubleRight';
|
|
12
12
|
import { faCaretLeft } from '@fortawesome/free-solid-svg-icons/faCaretLeft';
|
|
13
13
|
import { faCaretRight } from '@fortawesome/free-solid-svg-icons/faCaretRight';
|
|
14
|
-
import { faCalendarAlt } from '@fortawesome/free-
|
|
14
|
+
import { faCalendarAlt } from '@fortawesome/free-regular-svg-icons/faCalendarAlt';
|
|
15
15
|
import { TextInput, TextInputBox } from '@stenajs-webui/forms';
|
|
16
16
|
import { useTippyInstance, Popover } from '@stenajs-webui/tooltip';
|
|
17
|
+
import { faCalendarAlt as faCalendarAlt$1 } from '@fortawesome/free-solid-svg-icons/faCalendarAlt';
|
|
17
18
|
import { cssColor } from '@stenajs-webui/theme';
|
|
18
19
|
import { faLongArrowAltRight } from '@fortawesome/free-solid-svg-icons/faLongArrowAltRight';
|
|
19
20
|
import { faClock } from '@fortawesome/free-solid-svg-icons/faClock';
|
|
20
21
|
import { faClock as faClock$1 } from '@fortawesome/free-regular-svg-icons/faClock';
|
|
21
|
-
import { faCalendarAlt as faCalendarAlt$1 } from '@fortawesome/free-regular-svg-icons/faCalendarAlt';
|
|
22
22
|
import { faAngleDown } from '@fortawesome/free-solid-svg-icons/faAngleDown';
|
|
23
23
|
|
|
24
24
|
/*! *****************************************************************************
|
|
@@ -150,11 +150,13 @@ var addDayStateHighlights = function (calendarState, date, highlights) {
|
|
|
150
150
|
calendarState[monthString] &&
|
|
151
151
|
calendarState[monthString][weekNumber] &&
|
|
152
152
|
calendarState[monthString][weekNumber][dayInMonth];
|
|
153
|
-
var newHighlights = dayState && dayState.highlights
|
|
154
|
-
? __spreadArray(__spreadArray([], dayState.highlights, true), highlights, true) : highlights;
|
|
155
153
|
return __assign(__assign({}, calendarState), (_a = {}, _a[monthString] = __assign(__assign({}, (calendarState && calendarState[monthString])), (_b = {}, _b[weekNumber] = __assign(__assign({}, (calendarState &&
|
|
156
154
|
calendarState[monthString] &&
|
|
157
|
-
calendarState[monthString][weekNumber])), (_c = {}, _c[dayInMonth] =
|
|
155
|
+
calendarState[monthString][weekNumber])), (_c = {}, _c[dayInMonth] = addDayStateHighlightsOnSingleDay(dayState, highlights), _c)), _b)), _a));
|
|
156
|
+
};
|
|
157
|
+
var addDayStateHighlightsOnSingleDay = function (dayState, highlights) {
|
|
158
|
+
var _a;
|
|
159
|
+
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) });
|
|
158
160
|
};
|
|
159
161
|
var addWeekStateHighlights = function (calendarState, week, highlights) {
|
|
160
162
|
var _a, _b;
|
|
@@ -402,6 +404,26 @@ var defaultCalendarTheme = {
|
|
|
402
404
|
};
|
|
403
405
|
var extranetCalendarTheme = __assign(__assign({}, defaultCalendarTheme), { width: "37px", height: "37px" });
|
|
404
406
|
|
|
407
|
+
var isDateInMinMaxRange = function (date, min, max) {
|
|
408
|
+
if (min && isBefore(date, min)) {
|
|
409
|
+
return isSameDay(date, min);
|
|
410
|
+
}
|
|
411
|
+
if (max && isAfter(date, max)) {
|
|
412
|
+
return isSameDay(date, max);
|
|
413
|
+
}
|
|
414
|
+
return true;
|
|
415
|
+
};
|
|
416
|
+
|
|
417
|
+
var DisabledDayWrapper = function DisabledDayWrapper(_a) {
|
|
418
|
+
var DayComponent = _a.dayComponent, minDate = _a.minDate, maxDate = _a.maxDate, dayState = _a.dayState, day = _a.day, props = __rest(_a, ["dayComponent", "minDate", "maxDate", "dayState", "day"]);
|
|
419
|
+
var activeDayState = useMemo(function () {
|
|
420
|
+
return !isDateInMinMaxRange(day.date, minDate, maxDate)
|
|
421
|
+
? addDayStateHighlightsOnSingleDay(dayState, ["disabled"])
|
|
422
|
+
: dayState;
|
|
423
|
+
}, [day.date, dayState, maxDate, minDate]);
|
|
424
|
+
return React.createElement(DayComponent, __assign({ day: day }, props, { dayState: activeDayState }));
|
|
425
|
+
};
|
|
426
|
+
|
|
405
427
|
var WeekNumberCell = function (_a) {
|
|
406
428
|
var onClickWeek = _a.onClickWeek, theme = _a.theme, week = _a.week, background = _a.background, backgroundColor = _a.backgroundColor, prefix = _a.prefix;
|
|
407
429
|
var content = (React.createElement(Box, { width: theme.width, height: theme.height, justifyContent: "center", alignItems: "center" },
|
|
@@ -416,10 +438,10 @@ var WeekNumberCell = function (_a) {
|
|
|
416
438
|
};
|
|
417
439
|
|
|
418
440
|
function CalendarWeek(_a) {
|
|
419
|
-
var week = _a.week, month = _a.month,
|
|
441
|
+
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;
|
|
420
442
|
return (React.createElement("tr", { key: week.weekNumber },
|
|
421
443
|
theme.WeekNumber.show && (React.createElement("td", null, renderWeekNumber ? (renderWeekNumber(week, theme, onClickWeek)) : (React.createElement(WeekNumberCell, { week: week, onClickWeek: onClickWeek, theme: theme })))),
|
|
422
|
-
week.days.map(function (day) { return (React.createElement(
|
|
444
|
+
week.days.map(function (day) { return (React.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 })); })));
|
|
423
445
|
}
|
|
424
446
|
|
|
425
447
|
var WeekDayCell = function (_a) {
|
|
@@ -434,7 +456,7 @@ var WeekDayCell = function (_a) {
|
|
|
434
456
|
return content;
|
|
435
457
|
};
|
|
436
458
|
|
|
437
|
-
var CalendarDay = function (_a) {
|
|
459
|
+
var CalendarDay = function CalendarDay(_a) {
|
|
438
460
|
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;
|
|
439
461
|
var content = (React.createElement(Box, { width: "100%", height: "100%", justifyContent: "center", alignItems: "center" },
|
|
440
462
|
React.createElement(Text, __assign({}, (theme.CalendarDay.textProps &&
|
|
@@ -456,7 +478,7 @@ var isClickable = function (defaultHighlights, dayState) {
|
|
|
456
478
|
};
|
|
457
479
|
|
|
458
480
|
function CalendarMonth(_a) {
|
|
459
|
-
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;
|
|
481
|
+
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;
|
|
460
482
|
var showWeekNumber = theme.WeekNumber.show;
|
|
461
483
|
return (React.createElement(React.Fragment, null,
|
|
462
484
|
React.createElement(Box, { alignItems: "stretch" },
|
|
@@ -474,7 +496,7 @@ function CalendarMonth(_a) {
|
|
|
474
496
|
React.createElement(Box, { width: theme.width, height: theme.height, justifyContent: "center", alignItems: "center" },
|
|
475
497
|
React.createElement(Text, { size: "small", color: theme.CalendarMonth.headerTextColor }, "W")))),
|
|
476
498
|
month.weeks[0].days.map(function (day) { return (React.createElement("td", { key: day.name }, renderWeekDay ? (renderWeekDay(day.name, theme, onClickWeekDay)) : (React.createElement(WeekDayCell, { day: day, onClickWeekDay: onClickWeekDay, theme: theme })))); })),
|
|
477
|
-
month.weeks.map(function (week) { return (React.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 })); }))))));
|
|
499
|
+
month.weeks.map(function (week) { return (React.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 })); }))))));
|
|
478
500
|
}
|
|
479
501
|
|
|
480
502
|
function styleInject(css, ref) {
|
|
@@ -509,11 +531,13 @@ var styles$1 = {"calendar":"Calendar-module_calendar__Ztvgm"};
|
|
|
509
531
|
styleInject(css_248z$1);
|
|
510
532
|
|
|
511
533
|
function CalendarPanel(_a) {
|
|
512
|
-
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;
|
|
534
|
+
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;
|
|
535
|
+
var minDateObj = useMemo(function () { return (minDate ? parse(minDate, "yyyy-MM-dd", new Date()) : undefined); }, [minDate]);
|
|
536
|
+
var maxDateObj = useMemo(function () { return (maxDate ? parse(maxDate, "yyyy-MM-dd", new Date()) : undefined); }, [maxDate]);
|
|
513
537
|
return (React.createElement("div", { className: styles$1.calendar }, monthRows.map(function (monthRow, rowIndex) { return (React.createElement(Spacing, { key: rowIndex },
|
|
514
538
|
React.createElement(Row, null, monthRow.map(function (month, index) { return (React.createElement(React.Fragment, { key: month.name },
|
|
515
539
|
index > 0 && React.createElement(Space, null),
|
|
516
|
-
React.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 }))); })))); })));
|
|
540
|
+
React.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 }))); })))); })));
|
|
517
541
|
}
|
|
518
542
|
function Calendar(props) {
|
|
519
543
|
var initialDate = getInitialDate(props.year, props.month, props.date);
|
|
@@ -770,97 +794,65 @@ var fallbackIfNoPlacement = function (monthSwitcherPlacement, numMonths) {
|
|
|
770
794
|
return monthSwitcherPlacement || (numMonths || 1) > 1 ? "below" : "header";
|
|
771
795
|
};
|
|
772
796
|
|
|
773
|
-
var
|
|
774
|
-
startDate:
|
|
775
|
-
|
|
797
|
+
var dateRangeToStrings = function (dateRange) { return ({
|
|
798
|
+
startDate: dateRange.startDate
|
|
799
|
+
? format(dateRange.startDate, "yyyy-MM-dd")
|
|
800
|
+
: undefined,
|
|
801
|
+
endDate: dateRange.endDate
|
|
802
|
+
? format(dateRange.endDate, "yyyy-MM-dd")
|
|
803
|
+
: undefined,
|
|
776
804
|
}); };
|
|
777
|
-
var
|
|
805
|
+
var stringsToDateRange = function (_a) {
|
|
806
|
+
var startDate = _a.startDate, endDate = _a.endDate;
|
|
778
807
|
var now = new Date();
|
|
779
808
|
return {
|
|
780
|
-
startDate: (
|
|
781
|
-
|
|
782
|
-
undefined,
|
|
783
|
-
endDate: (interval.endDate &&
|
|
784
|
-
parse(interval.endDate, DateFormats.fullDate, now)) ||
|
|
785
|
-
undefined,
|
|
809
|
+
startDate: startDate ? parse(startDate, "yyyy-MM-dd", now) : undefined,
|
|
810
|
+
endDate: endDate ? parse(endDate, "yyyy-MM-dd", now) : undefined,
|
|
786
811
|
};
|
|
812
|
+
};
|
|
813
|
+
|
|
814
|
+
var isDateRangeInvalid = function (_a) {
|
|
815
|
+
var startDate = _a.startDate, endDate = _a.endDate;
|
|
816
|
+
return Boolean(startDate &&
|
|
817
|
+
endDate &&
|
|
818
|
+
!isSameDay(startDate, endDate) &&
|
|
819
|
+
isAfter(startDate, endDate));
|
|
787
820
|
};
|
|
788
|
-
var
|
|
789
|
-
if (
|
|
790
|
-
interval.endDate &&
|
|
791
|
-
isAfter(interval.startDate, interval.endDate)) {
|
|
821
|
+
var toggleDatesIfEndIsEarlierThanStart = function (dateRange) {
|
|
822
|
+
if (isDateRangeInvalid(dateRange)) {
|
|
792
823
|
return {
|
|
793
|
-
startDate:
|
|
794
|
-
endDate:
|
|
824
|
+
startDate: dateRange.endDate,
|
|
825
|
+
endDate: dateRange.startDate,
|
|
795
826
|
};
|
|
796
827
|
}
|
|
797
|
-
return
|
|
828
|
+
return dateRange;
|
|
829
|
+
};
|
|
830
|
+
var toggleDateStringsIfEndIsEarlierThanStart = function (dateRange) {
|
|
831
|
+
if (dateRange.startDate && dateRange.endDate) {
|
|
832
|
+
return dateRangeToStrings(toggleDatesIfEndIsEarlierThanStart(stringsToDateRange(dateRange)));
|
|
833
|
+
}
|
|
834
|
+
return dateRange;
|
|
798
835
|
};
|
|
799
836
|
|
|
800
|
-
var useDateRangeOnClickDayHandler = function (
|
|
837
|
+
var useDateRangeOnClickDayHandler = function (value, onValueChange, focusedInput, setFocusedInput) {
|
|
801
838
|
return useCallback(function (day) {
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
else {
|
|
811
|
-
setStartDate(day.date);
|
|
812
|
-
setFocusedInput("endDate");
|
|
813
|
-
if (onChange) {
|
|
814
|
-
onChange(ensureStartIsFirst({
|
|
815
|
-
startDate: day.date,
|
|
816
|
-
endDate: endDate,
|
|
817
|
-
}));
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
}
|
|
821
|
-
else if (focusedInput === "endDate") {
|
|
822
|
-
if (startDate && isAfter(startDate, day.date)) {
|
|
823
|
-
setStartDate(day.date);
|
|
824
|
-
setEndDate(startDate);
|
|
825
|
-
if (onChange) {
|
|
826
|
-
onChange({ startDate: day.date, endDate: startDate });
|
|
827
|
-
}
|
|
828
|
-
}
|
|
829
|
-
else {
|
|
830
|
-
setEndDate(day.date);
|
|
831
|
-
setFocusedInput("startDate");
|
|
832
|
-
if (onChange) {
|
|
833
|
-
onChange(ensureStartIsFirst({
|
|
834
|
-
startDate: startDate,
|
|
835
|
-
endDate: day.date,
|
|
836
|
-
}));
|
|
837
|
-
}
|
|
838
|
-
}
|
|
839
|
+
var dateRange = {
|
|
840
|
+
startDate: focusedInput === "startDate" ? day.date : value === null || value === void 0 ? void 0 : value.startDate,
|
|
841
|
+
endDate: focusedInput === "endDate" ? day.date : value === null || value === void 0 ? void 0 : value.endDate,
|
|
842
|
+
};
|
|
843
|
+
if (!isDateRangeInvalid(dateRange)) {
|
|
844
|
+
setFocusedInput(focusedInput === "startDate" ? "endDate" : "startDate");
|
|
839
845
|
}
|
|
846
|
+
onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(toggleDatesIfEndIsEarlierThanStart(dateRange));
|
|
840
847
|
}, [
|
|
841
848
|
focusedInput,
|
|
842
|
-
|
|
843
|
-
startDate,
|
|
844
|
-
setStartDate,
|
|
845
|
-
setEndDate,
|
|
846
|
-
onChange,
|
|
849
|
+
onValueChange,
|
|
847
850
|
setFocusedInput,
|
|
851
|
+
value === null || value === void 0 ? void 0 : value.endDate,
|
|
852
|
+
value === null || value === void 0 ? void 0 : value.startDate,
|
|
848
853
|
]);
|
|
849
854
|
};
|
|
850
855
|
|
|
851
|
-
var toggleDatesIfEndIsEarlierThanStart = function (startDate, endDate) {
|
|
852
|
-
if (startDate && endDate && isAfter(startDate, endDate)) {
|
|
853
|
-
return {
|
|
854
|
-
startDate: endDate,
|
|
855
|
-
endDate: startDate,
|
|
856
|
-
};
|
|
857
|
-
}
|
|
858
|
-
return {
|
|
859
|
-
startDate: startDate,
|
|
860
|
-
endDate: endDate,
|
|
861
|
-
};
|
|
862
|
-
};
|
|
863
|
-
|
|
864
856
|
var useInternalPanelState = function (onChangePanel) {
|
|
865
857
|
var _a = useState("calendar"), currentPanel = _a[0], _setCurrentPanel = _a[1];
|
|
866
858
|
var setCurrentPanel = useCallback(function (currentPanel) {
|
|
@@ -874,14 +866,13 @@ var useInternalPanelState = function (onChangePanel) {
|
|
|
874
866
|
};
|
|
875
867
|
|
|
876
868
|
var useDateRangeSelection = function (_a) {
|
|
877
|
-
var focusedInput = _a.focusedInput,
|
|
869
|
+
var focusedInput = _a.focusedInput, value = _a.value, onValueChange = _a.onValueChange, setFocusedInput = _a.setFocusedInput, statePerMonth = _a.statePerMonth, onChangePanel = _a.onChangePanel;
|
|
878
870
|
var _b = useInternalPanelState(onChangePanel), currentPanel = _b.currentPanel, setCurrentPanel = _b.setCurrentPanel;
|
|
879
871
|
var _c = useState(function () { return new Date(); }), dateInFocus = _c[0], setDateInFocus = _c[1];
|
|
880
|
-
var onClickDay = useDateRangeOnClickDayHandler(
|
|
881
|
-
var dates = useMemo(function () { return toggleDatesIfEndIsEarlierThanStart(startDate, endDate); }, [startDate, endDate]);
|
|
872
|
+
var onClickDay = useDateRangeOnClickDayHandler(value, onValueChange, focusedInput, setFocusedInput);
|
|
882
873
|
var statePerMonthWithSelection = useMemo(function () {
|
|
883
|
-
return buildDayStateForDateRange(statePerMonth,
|
|
884
|
-
}, [statePerMonth,
|
|
874
|
+
return buildDayStateForDateRange(statePerMonth, value === null || value === void 0 ? void 0 : value.startDate, value === null || value === void 0 ? void 0 : value.endDate);
|
|
875
|
+
}, [statePerMonth, value === null || value === void 0 ? void 0 : value.endDate, value === null || value === void 0 ? void 0 : value.startDate]);
|
|
885
876
|
return {
|
|
886
877
|
onClickDay: onClickDay,
|
|
887
878
|
statePerMonth: statePerMonthWithSelection,
|
|
@@ -1054,46 +1045,46 @@ var listContainsDate = function (list, date) {
|
|
|
1054
1045
|
};
|
|
1055
1046
|
|
|
1056
1047
|
var useDateRangeExclusionSelection = function (_a) {
|
|
1057
|
-
var
|
|
1058
|
-
var _b = useState(),
|
|
1059
|
-
var _c = useState(),
|
|
1060
|
-
var _d =
|
|
1061
|
-
var _e =
|
|
1062
|
-
var _f = 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];
|
|
1048
|
+
var value = _a.value, onValueChange = _a.onValueChange, statePerMonth = _a.statePerMonth, onChangePanel = _a.onChangePanel;
|
|
1049
|
+
var _b = useState(), dateRange = _b[0], setDateRange = _b[1];
|
|
1050
|
+
var _c = useState("startDate"), focusedInput = _c[0], setFocusedInput = _c[1];
|
|
1051
|
+
var _d = useInternalPanelState(onChangePanel), currentPanel = _d.currentPanel, setCurrentPanel = _d.setCurrentPanel;
|
|
1052
|
+
var _e = 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];
|
|
1063
1053
|
var onChangeHandler = useCallback(function (value) {
|
|
1054
|
+
setDateRange(value);
|
|
1064
1055
|
var startDate = value.startDate, endDate = value.endDate;
|
|
1065
|
-
if (
|
|
1056
|
+
if (onValueChange) {
|
|
1066
1057
|
if (startDate && endDate) {
|
|
1067
1058
|
var dates = eachDayOfInterval({ start: startDate, end: endDate });
|
|
1068
|
-
|
|
1059
|
+
onValueChange(dates);
|
|
1069
1060
|
}
|
|
1070
1061
|
else if (startDate) {
|
|
1071
|
-
|
|
1062
|
+
onValueChange([startDate]);
|
|
1072
1063
|
}
|
|
1073
1064
|
else if (endDate) {
|
|
1074
|
-
|
|
1065
|
+
onValueChange([endDate]);
|
|
1075
1066
|
}
|
|
1076
1067
|
}
|
|
1077
|
-
}, [
|
|
1078
|
-
var onClickDayRange = useDateRangeOnClickDayHandler(
|
|
1068
|
+
}, [onValueChange]);
|
|
1069
|
+
var onClickDayRange = useDateRangeOnClickDayHandler(dateRange, onChangeHandler, focusedInput, setFocusedInput);
|
|
1079
1070
|
var onClickDay = useCallback(function (day, userData, ev) {
|
|
1080
|
-
if (
|
|
1071
|
+
if (onValueChange) {
|
|
1081
1072
|
if (ev.ctrlKey || ev.metaKey) {
|
|
1082
1073
|
if (!value) {
|
|
1083
|
-
|
|
1074
|
+
onValueChange([day.date]);
|
|
1084
1075
|
}
|
|
1085
1076
|
else if (listContainsDate(value, day.date)) {
|
|
1086
|
-
|
|
1077
|
+
onValueChange(removeDateIfExist(value, day.date));
|
|
1087
1078
|
}
|
|
1088
1079
|
else {
|
|
1089
|
-
|
|
1080
|
+
onValueChange(__spreadArray(__spreadArray([], value, true), [day.date], false));
|
|
1090
1081
|
}
|
|
1091
1082
|
}
|
|
1092
1083
|
else {
|
|
1093
1084
|
onClickDayRange(day, userData, ev);
|
|
1094
1085
|
}
|
|
1095
1086
|
}
|
|
1096
|
-
}, [
|
|
1087
|
+
}, [onValueChange, onClickDayRange, value]);
|
|
1097
1088
|
var statePerMonthWithSelectedDate = useMemo(function () {
|
|
1098
1089
|
return addHighlighting(statePerMonth, value);
|
|
1099
1090
|
}, [statePerMonth, value]);
|
|
@@ -1160,16 +1151,18 @@ var useDateInput = function (onChange, onClose, openOnMount) {
|
|
|
1160
1151
|
};
|
|
1161
1152
|
};
|
|
1162
1153
|
|
|
1154
|
+
var defaultMaxDate = "2999-12-31";
|
|
1155
|
+
|
|
1163
1156
|
var DateInput = function (_a) {
|
|
1164
|
-
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;
|
|
1165
|
-
var
|
|
1166
|
-
var
|
|
1157
|
+
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;
|
|
1158
|
+
var _g = useDateInput(onChange, onClose, openOnMount), hideCalendar = _g.hideCalendar, showingCalendar = _g.showingCalendar, onSelectDate = _g.onSelectDate, showCalendar = _g.showCalendar;
|
|
1159
|
+
var _h = useCalendarPopoverUpdater(), tippyRef = _h.tippyRef, onChangePanel = _h.onChangePanel;
|
|
1167
1160
|
return (React.createElement(Box, { width: width },
|
|
1168
|
-
React.createElement(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.createElement(SingleDateCalendar, __assign({}, calendarProps, { onChange: onSelectDate, value: value, theme: calendarTheme, onChangePanel: onChangePanel })) },
|
|
1169
|
-
React.createElement(TextInput, {
|
|
1161
|
+
React.createElement(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.createElement(SingleDateCalendar, __assign({}, calendarProps, { onChange: onSelectDate, value: value, theme: calendarTheme, onChangePanel: onChangePanel, minDate: minDate, maxDate: maxDate })) },
|
|
1162
|
+
React.createElement(TextInput, { type: "date", iconRight: faCalendarAlt, onFocus: showCalendar, onClickRight: showCalendar, value: value ? format(value, displayFormat) : "", placeholder: placeholder, size: 9, autoFocus: openOnMount, variant: variant, min: minDate, max: maxDate }))));
|
|
1170
1163
|
};
|
|
1171
1164
|
|
|
1172
|
-
var useDateRangeInput = function (value,
|
|
1165
|
+
var useDateRangeInput = function (value, onValueChange) {
|
|
1173
1166
|
var startDateInputRef = useRef(null);
|
|
1174
1167
|
var endDateInputRef = useRef(null);
|
|
1175
1168
|
var _a = useState(false), showingCalendar = _a[0], setShowingCalendar = _a[1];
|
|
@@ -1189,11 +1182,11 @@ var useDateRangeInput = function (value, onChange) {
|
|
|
1189
1182
|
}, [setShowingCalendar]);
|
|
1190
1183
|
var onClickDay = useCallback(function (day) {
|
|
1191
1184
|
if (focusedInput === "startDate") {
|
|
1192
|
-
|
|
1185
|
+
onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange({
|
|
1193
1186
|
startDate: day.date,
|
|
1194
|
-
endDate: value.endDate,
|
|
1187
|
+
endDate: value === null || value === void 0 ? void 0 : value.endDate,
|
|
1195
1188
|
});
|
|
1196
|
-
if (!value.endDate) {
|
|
1189
|
+
if (!(value === null || value === void 0 ? void 0 : value.endDate)) {
|
|
1197
1190
|
setFocusedInput("endDate");
|
|
1198
1191
|
endDateInputRef.current && endDateInputRef.current.focus();
|
|
1199
1192
|
}
|
|
@@ -1202,11 +1195,11 @@ var useDateRangeInput = function (value, onChange) {
|
|
|
1202
1195
|
}
|
|
1203
1196
|
}
|
|
1204
1197
|
else if (focusedInput === "endDate") {
|
|
1205
|
-
|
|
1206
|
-
startDate: value.startDate,
|
|
1198
|
+
onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange({
|
|
1199
|
+
startDate: value === null || value === void 0 ? void 0 : value.startDate,
|
|
1207
1200
|
endDate: day.date,
|
|
1208
1201
|
});
|
|
1209
|
-
if (!value.startDate) {
|
|
1202
|
+
if (!(value === null || value === void 0 ? void 0 : value.startDate)) {
|
|
1210
1203
|
setFocusedInput("startDate");
|
|
1211
1204
|
startDateInputRef.current && startDateInputRef.current.focus();
|
|
1212
1205
|
}
|
|
@@ -1214,12 +1207,12 @@ var useDateRangeInput = function (value, onChange) {
|
|
|
1214
1207
|
setTimeout(hideCalendar, 150);
|
|
1215
1208
|
}
|
|
1216
1209
|
}
|
|
1217
|
-
}, [focusedInput,
|
|
1210
|
+
}, [focusedInput, onValueChange, setFocusedInput, hideCalendar, value]);
|
|
1218
1211
|
var startDateIsAfterEnd = useMemo(function () {
|
|
1219
|
-
return value.startDate &&
|
|
1220
|
-
value.endDate &&
|
|
1212
|
+
return (value === null || value === void 0 ? void 0 : value.startDate) &&
|
|
1213
|
+
(value === null || value === void 0 ? void 0 : value.endDate) &&
|
|
1221
1214
|
isAfter(value.startDate, value.endDate);
|
|
1222
|
-
}, [value.startDate, value.endDate]);
|
|
1215
|
+
}, [value === null || value === void 0 ? void 0 : value.startDate, value === null || value === void 0 ? void 0 : value.endDate]);
|
|
1223
1216
|
return {
|
|
1224
1217
|
showingCalendar: showingCalendar,
|
|
1225
1218
|
hideCalendar: hideCalendar,
|
|
@@ -1238,24 +1231,26 @@ var useDateRangeInput = function (value, onChange) {
|
|
|
1238
1231
|
* @deprecated Please use DateRangeDualTextInput instead.
|
|
1239
1232
|
*/
|
|
1240
1233
|
var DateRangeInput = function (_a) {
|
|
1241
|
-
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,
|
|
1242
|
-
var
|
|
1243
|
-
var
|
|
1244
|
-
var
|
|
1245
|
-
var statePerMonth = useMemo(function () {
|
|
1246
|
-
|
|
1234
|
+
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;
|
|
1235
|
+
var _h = 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];
|
|
1236
|
+
var _j = useState("calendar"), currentPanel = _j[0], setCurrentPanel = _j[1];
|
|
1237
|
+
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;
|
|
1238
|
+
var statePerMonth = useMemo(function () {
|
|
1239
|
+
return buildDayStateForDateRange(undefined, value === null || value === void 0 ? void 0 : value.startDate, value === null || value === void 0 ? void 0 : value.endDate);
|
|
1240
|
+
}, [value]);
|
|
1241
|
+
return (React.createElement(Popover, { arrow: false, lazy: true, visible: showingCalendar, zIndex: zIndex, placement: defaultPopoverPlacement, appendTo: portalTarget !== null && portalTarget !== void 0 ? portalTarget : "parent", onClickOutside: hideCalendar, content: React.createElement(CalendarWithMonthSwitcher, __assign({}, calendarProps, { dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, statePerMonth: statePerMonth, theme: calendarTheme, onClickDay: onClickDay, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel, minDate: minDate, maxDate: maxDate })) },
|
|
1247
1242
|
React.createElement(Row, { alignItems: "center" },
|
|
1248
|
-
React.createElement(TextInput, { iconLeft: faCalendarAlt, onFocus: showCalendarStartDate, value: value.startDate ? format(value.startDate, displayFormat) : "", placeholder: placeholderStartDate, width: width, inputRef: startDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }),
|
|
1243
|
+
React.createElement(TextInput, { iconLeft: faCalendarAlt$1, onFocus: showCalendarStartDate, value: (value === null || value === void 0 ? void 0 : value.startDate) ? format(value.startDate, displayFormat) : "", placeholder: placeholderStartDate, width: width, inputRef: startDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }),
|
|
1249
1244
|
React.createElement(Space, null),
|
|
1250
1245
|
React.createElement(Icon, { icon: faLongArrowAltRight, color: cssColor("--lhds-color-ui-500"), size: 14 }),
|
|
1251
1246
|
React.createElement(Space, null),
|
|
1252
|
-
React.createElement(TextInput, { iconLeft: faCalendarAlt, onFocus: showCalendarEndDate, value: value.endDate ? format(value.endDate, displayFormat) : "", placeholder: placeholderEndDate, width: width, inputRef: endDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }))));
|
|
1247
|
+
React.createElement(TextInput, { iconLeft: faCalendarAlt$1, onFocus: showCalendarEndDate, value: (value === null || value === void 0 ? void 0 : value.endDate) ? format(value.endDate, displayFormat) : "", placeholder: placeholderEndDate, width: width, inputRef: endDateInputRef, size: 9, variant: startDateIsAfterEnd ? "error" : undefined }))));
|
|
1253
1248
|
};
|
|
1254
1249
|
|
|
1255
1250
|
var DateTextInput = function (_a) {
|
|
1256
|
-
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"]);
|
|
1257
|
-
var
|
|
1258
|
-
var
|
|
1251
|
+
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"]);
|
|
1252
|
+
var _l = useState(false), open = _l[0], setOpen = _l[1];
|
|
1253
|
+
var _m = useCalendarPopoverUpdater(), tippyRef = _m.tippyRef, onChangePanel = _m.onChangePanel;
|
|
1259
1254
|
var toggleCalendar = useCallback(function () {
|
|
1260
1255
|
setOpen(!open);
|
|
1261
1256
|
}, [setOpen, open]);
|
|
@@ -1282,9 +1277,9 @@ var DateTextInput = function (_a) {
|
|
|
1282
1277
|
return (React.createElement(Box, { width: width },
|
|
1283
1278
|
React.createElement(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.createElement(SingleDateCalendar, __assign({}, calendarProps, { onChange: onCalendarSelectDate, onChangePanel: onChangePanel, value: value && dateIsValid
|
|
1284
1279
|
? parse(value, dateFormat, new Date())
|
|
1285
|
-
: undefined, theme: calendarTheme })) },
|
|
1280
|
+
: undefined, minDate: minDate, maxDate: maxDate, theme: calendarTheme })) },
|
|
1286
1281
|
React.createElement(TextInput, __assign({}, props, { variant: invalid ? "error" : "standard", disableContentPaddingRight: true, contentRight: !hideCalenderIcon ? (React.createElement(Row, { alignItems: "center", indent: 0.5 },
|
|
1287
|
-
React.createElement(FlatButton, { size: "small", leftIcon: faCalendarAlt, onClick: toggleCalendar }))) : undefined, onValueChange: onValueChangeHandler, placeholder: placeholder, value: value || "", size: 10 })))));
|
|
1282
|
+
React.createElement(FlatButton, { size: "small", leftIcon: faCalendarAlt$1, onClick: toggleCalendar }))) : undefined, onValueChange: onValueChangeHandler, placeholder: placeholder, value: value || "", min: minDate, max: maxDate, size: 10 })))));
|
|
1288
1283
|
};
|
|
1289
1284
|
|
|
1290
1285
|
var formatHours = function (hours) {
|
|
@@ -1422,7 +1417,7 @@ var TimeTextInput = function (_a) {
|
|
|
1422
1417
|
};
|
|
1423
1418
|
|
|
1424
1419
|
var DualTextInput = function (_a) {
|
|
1425
|
-
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;
|
|
1420
|
+
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;
|
|
1426
1421
|
var focusCounter = useRef(0);
|
|
1427
1422
|
var tryTriggerOnBlur = useMemo(function () {
|
|
1428
1423
|
return debounce(function (focusCounter) {
|
|
@@ -1462,18 +1457,18 @@ var DualTextInput = function (_a) {
|
|
|
1462
1457
|
return (React.createElement(Box, null,
|
|
1463
1458
|
React.createElement(TextInputBox, { disableContentPaddingRight: true, variant: variant, contentRight: React.createElement(Row, { alignItems: "center" },
|
|
1464
1459
|
React.createElement(Indent, { num: 0.5 },
|
|
1465
|
-
React.createElement(FlatButton, { leftIcon: faCalendarAlt
|
|
1460
|
+
React.createElement(FlatButton, { leftIcon: faCalendarAlt, onClick: onClickCalendar, size: "small" })),
|
|
1466
1461
|
showPresets ? (React.createElement(React.Fragment, null,
|
|
1467
1462
|
React.createElement(Row, { height: "22px" },
|
|
1468
1463
|
React.createElement(SeparatorLine, { vertical: true })),
|
|
1469
1464
|
React.createElement(Indent, { num: 0.5 },
|
|
1470
1465
|
React.createElement(FlatButton, { leftIcon: faAngleDown, onClick: onClickArrowDown, size: "small" })))) : null) },
|
|
1471
1466
|
React.createElement(Box, { width: widthLeft },
|
|
1472
|
-
React.createElement(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 })),
|
|
1467
|
+
React.createElement(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 })),
|
|
1473
1468
|
React.createElement(Row, { indent: 0.5, alignItems: "center", justifyContent: "center" },
|
|
1474
1469
|
React.createElement(Icon, { icon: separatorIcon, size: 12, color: cssColor("--lhds-color-ui-500") })),
|
|
1475
1470
|
React.createElement(Box, { width: widthRight },
|
|
1476
|
-
React.createElement(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 })))));
|
|
1471
|
+
React.createElement(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 })))));
|
|
1477
1472
|
};
|
|
1478
1473
|
|
|
1479
1474
|
var transformTimeStringToNumber = function (time) {
|
|
@@ -1778,13 +1773,13 @@ var useUserInputHandlers$1 = function (onChangeDate, dateInputRef, showCalendar,
|
|
|
1778
1773
|
};
|
|
1779
1774
|
|
|
1780
1775
|
var DateTimeInput = function (_a) {
|
|
1781
|
-
var value = _a.value, onValueChange = _a.onValueChange, onEnter = _a.onEnter, onEsc = _a.onEsc, onBlur = _a.onBlur, autoFocus = _a.autoFocus;
|
|
1776
|
+
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;
|
|
1782
1777
|
var dateInputRef = useRef(null);
|
|
1783
1778
|
var timeInputRef = useRef(null);
|
|
1784
1779
|
var states = useInputStates$1(value);
|
|
1785
1780
|
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;
|
|
1786
|
-
var
|
|
1787
|
-
var
|
|
1781
|
+
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;
|
|
1782
|
+
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;
|
|
1788
1783
|
useDateRangeEffects$1(value, setDateInFocus, dateInputRef);
|
|
1789
1784
|
var statePerMonth = useMemo(function () {
|
|
1790
1785
|
var dateToHighlight = value || localDate;
|
|
@@ -1804,13 +1799,13 @@ var DateTimeInput = function (_a) {
|
|
|
1804
1799
|
var delayedIsCalendarVisible = useDelayedFalse(isCalendarVisible, 300);
|
|
1805
1800
|
var delayedIsTimePickerVisible = useDelayedFalse(isTimePickerVisible, 300);
|
|
1806
1801
|
return (React.createElement(Box, { onKeyDown: onKeyDownHandler },
|
|
1807
|
-
React.createElement(Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, visible: isCalendarVisible || isTimePickerVisible, onClickOutside: hideAll, content: (delayedIsCalendarVisible || delayedIsTimePickerVisible) && (React.createElement(Column, null, delayedIsCalendarVisible ? (React.createElement(CalendarWithMonthSwitcher, { statePerMonth: statePerMonth, onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel })) : delayedIsTimePickerVisible ? (React.createElement(Column, null,
|
|
1802
|
+
React.createElement(Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, visible: isCalendarVisible || isTimePickerVisible, onClickOutside: hideAll, content: (delayedIsCalendarVisible || delayedIsTimePickerVisible) && (React.createElement(Column, null, delayedIsCalendarVisible ? (React.createElement(CalendarWithMonthSwitcher, { statePerMonth: statePerMonth, onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel, minDate: minDate, maxDate: maxDate })) : delayedIsTimePickerVisible ? (React.createElement(Column, null,
|
|
1808
1803
|
React.createElement(Column, { overflow: "hidden", height: "250px" },
|
|
1809
1804
|
React.createElement(TimePicker, { value: timeValue !== null && timeValue !== void 0 ? timeValue : "", onValueChange: onChangeTime })),
|
|
1810
1805
|
React.createElement(Space, null),
|
|
1811
1806
|
React.createElement(Row, { justifyContent: "flex-end" },
|
|
1812
1807
|
React.createElement(PrimaryButton, { label: "Done", onClick: hideTimePicker })))) : null)) },
|
|
1813
|
-
React.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: faClock$1, 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" }))));
|
|
1808
|
+
React.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: faClock$1, 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 }))));
|
|
1814
1809
|
};
|
|
1815
1810
|
|
|
1816
1811
|
var useDateRangeEffects = function (startDate, endDate, setDateInFocus, startDateInputRef, endDateInputRef) {
|
|
@@ -2061,14 +2056,14 @@ var useUserInputHandlers = function (startDate, endDate, onValueChange, startDat
|
|
|
2061
2056
|
};
|
|
2062
2057
|
|
|
2063
2058
|
var DateRangeDualTextInput = function (_a) {
|
|
2064
|
-
var value = _a.value, onValueChange = _a.onValueChange, autoFocus = _a.autoFocus, onBlur = _a.onBlur, onEnter = _a.onEnter, onEsc = _a.onEsc, calendarProps = _a.calendarProps;
|
|
2065
|
-
var
|
|
2059
|
+
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;
|
|
2060
|
+
var _c = value || {}, startDate = _c.startDate, endDate = _c.endDate;
|
|
2066
2061
|
var startDateInputRef = useRef(null);
|
|
2067
2062
|
var endDateInputRef = useRef(null);
|
|
2068
2063
|
var states = useInputStates(startDate, endDate);
|
|
2069
2064
|
var dateInFocus = states.dateInFocus, setDateInFocus = states.setDateInFocus, isCalendarVisible = states.isCalendarVisible, currentPanel = states.currentPanel, setCurrentPanel = states.setCurrentPanel;
|
|
2070
|
-
var
|
|
2071
|
-
var
|
|
2065
|
+
var _d = useDateRangeHandlers(startDate, endDate, onValueChange, states), showCalendar = _d.showCalendar, hideCalendar = _d.hideCalendar, inputLeftChangeHandler = _d.inputLeftChangeHandler, inputRightChangeHandler = _d.inputRightChangeHandler;
|
|
2066
|
+
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;
|
|
2072
2067
|
useDateRangeEffects(startDate, endDate, setDateInFocus, startDateInputRef, endDateInputRef);
|
|
2073
2068
|
var startDateIsAfterEnd = useMemo(function () { return startDate && endDate && isAfter(startDate, endDate); }, [startDate, endDate]);
|
|
2074
2069
|
var statePerMonth = useMemo(function () {
|
|
@@ -2076,9 +2071,9 @@ var DateRangeDualTextInput = function (_a) {
|
|
|
2076
2071
|
}, [calendarProps === null || calendarProps === void 0 ? void 0 : calendarProps.statePerMonth, startDate, endDate, dateInFocus]);
|
|
2077
2072
|
var delayedIsCalendarVisible = useDelayedFalse(isCalendarVisible, 300);
|
|
2078
2073
|
return (React.createElement(Box, { onKeyDown: onKeyDownHandler },
|
|
2079
|
-
React.createElement(Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, onClickOutside: hideCalendar, visible: isCalendarVisible, content: delayedIsCalendarVisible && (React.createElement(CalendarWithMonthSwitcher, __assign({ onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel }, calendarProps, { statePerMonth: statePerMonth }))) },
|
|
2080
|
-
React.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: 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" }))));
|
|
2074
|
+
React.createElement(Popover, { arrow: false, lazy: true, placement: defaultPopoverPlacement, onClickOutside: hideCalendar, visible: isCalendarVisible, content: delayedIsCalendarVisible && (React.createElement(CalendarWithMonthSwitcher, __assign({ onClickDay: onClickDay, dateInFocus: dateInFocus, setDateInFocus: setDateInFocus, currentPanel: currentPanel, setCurrentPanel: setCurrentPanel, minDate: minDate, maxDate: maxDate }, calendarProps, { statePerMonth: statePerMonth }))) },
|
|
2075
|
+
React.createElement(DualTextInput, { autoFocusLeft: autoFocus, onEsc: onEsc, onEnter: onEnter, onBlur: onBlur, separatorIcon: 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 }))));
|
|
2081
2076
|
};
|
|
2082
2077
|
|
|
2083
|
-
export { Calendar, CalendarDay, DateInput, DateRangeCalendar, DateRangeDualTextInput, DateRangeExclusionCalendar, DateRangeInput, DateTextInput, DateTimeInput, Month, MonthPicker, MultiDateCalendar, PresetPicker, SingleDateCalendar, SingleWeekCalendar, TimeTextInput, WeekDay, WeekDayCell, WeekNumberCell, YearPicker, addDayStateHighlights, addWeekRangeHighlights, addWeekStateHighlights, buildDayStateForDateRange, buildDayStateForRange, buildDayStateForSingleMonth, calculateOverflowingMonth, createDay, dayHasHighlight, dayHighlightSelect, defaultCalendarTheme, defaultTextPropsProvider, defaultWrapperStyleProvider,
|
|
2078
|
+
export { Calendar, CalendarDay, DateInput, DateRangeCalendar, DateRangeDualTextInput, DateRangeExclusionCalendar, DateRangeInput, DateTextInput, DateTimeInput, Month, MonthPicker, MultiDateCalendar, PresetPicker, SingleDateCalendar, SingleWeekCalendar, TimeTextInput, WeekDay, WeekDayCell, WeekNumberCell, YearPicker, addDayStateHighlights, addDayStateHighlightsOnSingleDay, addWeekRangeHighlights, addWeekStateHighlights, buildDayStateForDateRange, buildDayStateForRange, buildDayStateForSingleMonth, calculateOverflowingMonth, createDay, dateRangeToStrings, dayHasHighlight, dayHighlightSelect, defaultCalendarTheme, defaultTextPropsProvider, defaultWrapperStyleProvider, extranetCalendarTheme, getDaysForWeekForDate, getMonthInYear, getMonthsInYear, getStartDateOfISOWeek, getWeekForDate, getWeeksForMonth, isDateRangeInvalid, setDayStateValue, setDayStateValueFunction, stringsToDateRange, toggleDateStringsIfEndIsEarlierThanStart, toggleDatesIfEndIsEarlierThanStart, useDateRangeCalendarState, useDateRangeExclusionSelection, useDateRangeSelection, useMultiDateSelection, useSingleDateSelection, useSingleWeekSelection };
|
|
2084
2079
|
//# sourceMappingURL=index.es.js.map
|