@caratlogic/design-system 0.1.7 → 0.1.9
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/layouts/AppShell/DashboardShell.d.ts.map +1 -1
- package/dist/components/molecules/DateInput/DateInput.accessibility.d.ts +4 -0
- package/dist/components/molecules/DateInput/DateInput.accessibility.d.ts.map +1 -0
- package/dist/components/molecules/DateInput/DateInput.d.ts +5 -1
- package/dist/components/molecules/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/molecules/DateInput/DateInput.hooks.d.ts +3 -0
- package/dist/components/molecules/DateInput/DateInput.hooks.d.ts.map +1 -0
- package/dist/components/molecules/DateInput/DateInput.types.d.ts +23 -0
- package/dist/components/molecules/DateInput/DateInput.types.d.ts.map +1 -1
- package/dist/components/molecules/DateInput/DateInput.utils.d.ts +14 -0
- package/dist/components/molecules/DateInput/DateInput.utils.d.ts.map +1 -1
- package/dist/components/molecules/Sidebar/Sidebar.parts.d.ts.map +1 -1
- package/dist/index.cjs.js +293 -64
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +293 -64
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -12089,18 +12089,18 @@ function requireMoment () {
|
|
|
12089
12089
|
var momentExports = requireMoment();
|
|
12090
12090
|
var moment = /*@__PURE__*/getDefaultExportFromCjs(momentExports);
|
|
12091
12091
|
|
|
12092
|
-
const DATE_FORMAT = 'DD-MM-YYYY';
|
|
12092
|
+
const DATE_FORMAT$1 = 'DD-MM-YYYY';
|
|
12093
12093
|
/**
|
|
12094
12094
|
* Canonical default thumbnail used wherever a gem/diamond/inventory item has
|
|
12095
12095
|
* no image of its own — single source of truth (mirrors the gem inventory grid).
|
|
12096
12096
|
*/
|
|
12097
12097
|
const DEFAULT_INVENTORY_THUMBNAIL = '/default%20thumbnail.png';
|
|
12098
12098
|
|
|
12099
|
-
const formatDate$
|
|
12099
|
+
const formatDate$2 = (iso) => {
|
|
12100
12100
|
if (!iso)
|
|
12101
12101
|
return '-';
|
|
12102
12102
|
try {
|
|
12103
|
-
return moment(iso).format(DATE_FORMAT);
|
|
12103
|
+
return moment(iso).format(DATE_FORMAT$1);
|
|
12104
12104
|
}
|
|
12105
12105
|
catch {
|
|
12106
12106
|
return iso;
|
|
@@ -12113,7 +12113,7 @@ const InfoCard = ({ info, title, refundToWallet, onRefundChange, }) => {
|
|
|
12113
12113
|
if (React__default.isValidElement(info))
|
|
12114
12114
|
return jsx("div", { className: "mt-3", children: info });
|
|
12115
12115
|
const i = info;
|
|
12116
|
-
return (jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxs("div", { className: "flex flex-col gap-1", children: [jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsx("div", { children: formatDate$
|
|
12116
|
+
return (jsx("div", { className: "mt-1 rounded-lg border bg-muted p-3 shadow-sm", children: jsxs("div", { className: "flex flex-col gap-1", children: [jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Date" }), jsx("div", { children: formatDate$2(i.invoiceDate) })] }), jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Total" }), jsx("div", { className: "font-medium text-foreground", children: formatCurrencyWithTenantSymbol(i.totalAmount) })] }), i.paidAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Paid" }), jsx("div", { className: "font-medium text-primary", children: formatCurrencyWithTenantSymbol(i.paidAmount) })] })), i.outstandingAmount !== undefined && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 text-sm text-muted-foreground", children: "Outstanding" }), jsx("div", { className: "font-medium text-muted-foreground", children: formatCurrencyWithTenantSymbol(i.outstandingAmount) })] })), title === 'Cancel Invoice' &&
|
|
12117
12117
|
!React__default.isValidElement(info) &&
|
|
12118
12118
|
(i?.paidAmount ?? 0) > 0 && (jsxs("div", { className: "flex items-start gap-3", children: [jsx("div", { className: "w-36 whitespace-nowrap text-sm text-muted-foreground", children: "Refund to Wallet" }), jsx(Checkbox, { checked: !!refundToWallet, onCheckedChange: (v) => onRefundChange?.(Boolean(v)), className: "bg-card" })] })), (i.customerName || i.email) && (jsxs("div", { className: "mt-1 rounded bg-card p-2", children: [i.customerName && (jsx("div", { className: "text-sm font-medium", children: i.customerName })), i.email && (jsx("div", { className: "text-sm text-muted-foreground", children: i.email }))] }))] }) }));
|
|
12119
12119
|
};
|
|
@@ -22575,7 +22575,7 @@ function parseDate(value, dateFormat, locale, strictParsing, refDate) {
|
|
|
22575
22575
|
var parsedDate = parse(value, format_1, refDate, {
|
|
22576
22576
|
locale: localeObject});
|
|
22577
22577
|
if (isValid(parsedDate) &&
|
|
22578
|
-
(!strictParsing || value === formatDate(parsedDate, format_1, locale))) {
|
|
22578
|
+
(!strictParsing || value === formatDate$1(parsedDate, format_1, locale))) {
|
|
22579
22579
|
return parsedDate;
|
|
22580
22580
|
}
|
|
22581
22581
|
}
|
|
@@ -22603,7 +22603,7 @@ function isValid(date, minDate) {
|
|
|
22603
22603
|
* @param locale - The locale.
|
|
22604
22604
|
* @returns - The formatted date.
|
|
22605
22605
|
*/
|
|
22606
|
-
function formatDate(date, formatStr, locale) {
|
|
22606
|
+
function formatDate$1(date, formatStr, locale) {
|
|
22607
22607
|
if (locale === "en") {
|
|
22608
22608
|
return format(date, formatStr, {
|
|
22609
22609
|
useAdditionalWeekYearTokens: true,
|
|
@@ -22633,7 +22633,7 @@ function safeDateFormat(date, _a) {
|
|
|
22633
22633
|
var formatStr = (Array.isArray(dateFormat) && dateFormat.length > 0
|
|
22634
22634
|
? dateFormat[0]
|
|
22635
22635
|
: dateFormat); // Cast to string because it's impossible to get `string | string[] | undefined` here and typescript doesn't know that
|
|
22636
|
-
return (date && formatDate(date, formatStr, locale)) || "";
|
|
22636
|
+
return (date && formatDate$1(date, formatStr, locale)) || "";
|
|
22637
22637
|
}
|
|
22638
22638
|
/**
|
|
22639
22639
|
* Used as a delimiter to separate two dates when formatting a date range
|
|
@@ -22707,7 +22707,7 @@ function getWeek(date) {
|
|
|
22707
22707
|
* @returns - The day of the week code.
|
|
22708
22708
|
*/
|
|
22709
22709
|
function getDayOfWeekCode(day, locale) {
|
|
22710
|
-
return formatDate(day, "ddd", locale);
|
|
22710
|
+
return formatDate$1(day, "ddd", locale);
|
|
22711
22711
|
}
|
|
22712
22712
|
// *** Start of ***
|
|
22713
22713
|
/**
|
|
@@ -22930,7 +22930,7 @@ function getLocaleObject(localeSpec) {
|
|
|
22930
22930
|
* @returns - The formatted weekday.
|
|
22931
22931
|
*/
|
|
22932
22932
|
function getFormattedWeekdayInLocale(date, formatFunc, locale) {
|
|
22933
|
-
return formatFunc(formatDate(date, "EEEE", locale));
|
|
22933
|
+
return formatFunc(formatDate$1(date, "EEEE", locale));
|
|
22934
22934
|
}
|
|
22935
22935
|
/**
|
|
22936
22936
|
* Gets the minimum weekday in a given locale.
|
|
@@ -22940,7 +22940,7 @@ function getFormattedWeekdayInLocale(date, formatFunc, locale) {
|
|
|
22940
22940
|
* @returns - The minimum weekday.
|
|
22941
22941
|
*/
|
|
22942
22942
|
function getWeekdayMinInLocale(date, locale) {
|
|
22943
|
-
return formatDate(date, "EEEEEE", locale);
|
|
22943
|
+
return formatDate$1(date, "EEEEEE", locale);
|
|
22944
22944
|
}
|
|
22945
22945
|
/**
|
|
22946
22946
|
* Gets the short weekday in a given locale.
|
|
@@ -22950,7 +22950,7 @@ function getWeekdayMinInLocale(date, locale) {
|
|
|
22950
22950
|
* @returns - The short weekday.
|
|
22951
22951
|
*/
|
|
22952
22952
|
function getWeekdayShortInLocale(date, locale) {
|
|
22953
|
-
return formatDate(date, "EEE", locale);
|
|
22953
|
+
return formatDate$1(date, "EEE", locale);
|
|
22954
22954
|
}
|
|
22955
22955
|
/**
|
|
22956
22956
|
* Gets the month in a given locale.
|
|
@@ -22960,7 +22960,7 @@ function getWeekdayShortInLocale(date, locale) {
|
|
|
22960
22960
|
* @returns - The month.
|
|
22961
22961
|
*/
|
|
22962
22962
|
function getMonthInLocale(month, locale) {
|
|
22963
|
-
return formatDate(setMonth(newDate(), month), "LLLL", locale);
|
|
22963
|
+
return formatDate$1(setMonth(newDate(), month), "LLLL", locale);
|
|
22964
22964
|
}
|
|
22965
22965
|
/**
|
|
22966
22966
|
* Gets the short month in a given locale.
|
|
@@ -22970,7 +22970,7 @@ function getMonthInLocale(month, locale) {
|
|
|
22970
22970
|
* @returns - The short month.
|
|
22971
22971
|
*/
|
|
22972
22972
|
function getMonthShortInLocale(month, locale) {
|
|
22973
|
-
return formatDate(setMonth(newDate(), month), "LLL", locale);
|
|
22973
|
+
return formatDate$1(setMonth(newDate(), month), "LLL", locale);
|
|
22974
22974
|
}
|
|
22975
22975
|
/**
|
|
22976
22976
|
* Gets the short quarter in a given locale.
|
|
@@ -22980,7 +22980,7 @@ function getMonthShortInLocale(month, locale) {
|
|
|
22980
22980
|
* @returns - The short quarter.
|
|
22981
22981
|
*/
|
|
22982
22982
|
function getQuarterShortInLocale(quarter, locale) {
|
|
22983
|
-
return formatDate(setQuarter(newDate(), quarter), "QQQ", locale);
|
|
22983
|
+
return formatDate$1(setQuarter(newDate(), quarter), "QQQ", locale);
|
|
22984
22984
|
}
|
|
22985
22985
|
/**
|
|
22986
22986
|
* Checks if a day is disabled.
|
|
@@ -23310,7 +23310,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
|
|
|
23310
23310
|
for (var i = 0, len = highlightDates.length; i < len; i++) {
|
|
23311
23311
|
var obj = highlightDates[i];
|
|
23312
23312
|
if (isDate(obj)) {
|
|
23313
|
-
var key = formatDate(obj, "MM.dd.yyyy");
|
|
23313
|
+
var key = formatDate$1(obj, "MM.dd.yyyy");
|
|
23314
23314
|
var classNamesArr = dateClasses.get(key) || [];
|
|
23315
23315
|
if (!classNamesArr.includes(defaultClassName)) {
|
|
23316
23316
|
classNamesArr.push(defaultClassName);
|
|
@@ -23325,7 +23325,7 @@ function getHighLightDaysMap(highlightDates, defaultClassName) {
|
|
|
23325
23325
|
for (var k = 0, len_1 = arrOfDates.length; k < len_1; k++) {
|
|
23326
23326
|
var dateK = arrOfDates[k];
|
|
23327
23327
|
if (dateK) {
|
|
23328
|
-
var key = formatDate(dateK, "MM.dd.yyyy");
|
|
23328
|
+
var key = formatDate$1(dateK, "MM.dd.yyyy");
|
|
23329
23329
|
var classNamesArr = dateClasses.get(key) || [];
|
|
23330
23330
|
if (!classNamesArr.includes(className)) {
|
|
23331
23331
|
classNamesArr.push(className);
|
|
@@ -23365,7 +23365,7 @@ function getHolidaysMap(holidayDates, defaultClassName) {
|
|
|
23365
23365
|
if (!isDate(dateObj)) {
|
|
23366
23366
|
return;
|
|
23367
23367
|
}
|
|
23368
|
-
var key = formatDate(dateObj, "MM.dd.yyyy");
|
|
23368
|
+
var key = formatDate$1(dateObj, "MM.dd.yyyy");
|
|
23369
23369
|
var classNamesObj = dateClasses.get(key) || {
|
|
23370
23370
|
className: "",
|
|
23371
23371
|
holidayNames: [],
|
|
@@ -23739,7 +23739,7 @@ var Day = /** @class */ (function (_super) {
|
|
|
23739
23739
|
return false;
|
|
23740
23740
|
}
|
|
23741
23741
|
// Looking for className in the Map of {'day string, 'className'}
|
|
23742
|
-
var dayStr = formatDate(day, "MM.dd.yyyy");
|
|
23742
|
+
var dayStr = formatDate$1(day, "MM.dd.yyyy");
|
|
23743
23743
|
return highlightDates.get(dayStr);
|
|
23744
23744
|
};
|
|
23745
23745
|
// Function to return the array containing className associated to the date
|
|
@@ -23750,7 +23750,7 @@ var Day = /** @class */ (function (_super) {
|
|
|
23750
23750
|
// For type consistency no other reasons
|
|
23751
23751
|
return [undefined];
|
|
23752
23752
|
}
|
|
23753
|
-
var dayStr = formatDate(day, "MM.dd.yyyy");
|
|
23753
|
+
var dayStr = formatDate$1(day, "MM.dd.yyyy");
|
|
23754
23754
|
// Looking for className in the Map of {day string: {className, holidayName}}
|
|
23755
23755
|
if (holidays.has(dayStr)) {
|
|
23756
23756
|
return [(_a = holidays.get(dayStr)) === null || _a === void 0 ? void 0 : _a.className];
|
|
@@ -23891,12 +23891,12 @@ var Day = /** @class */ (function (_super) {
|
|
|
23891
23891
|
var prefix = _this.isDisabled() || _this.isExcluded()
|
|
23892
23892
|
? ariaLabelPrefixWhenDisabled
|
|
23893
23893
|
: ariaLabelPrefixWhenEnabled;
|
|
23894
|
-
return "".concat(prefix, " ").concat(formatDate(day, "PPPP", _this.props.locale));
|
|
23894
|
+
return "".concat(prefix, " ").concat(formatDate$1(day, "PPPP", _this.props.locale));
|
|
23895
23895
|
};
|
|
23896
23896
|
// A function to return the holiday's name as title's content
|
|
23897
23897
|
_this.getTitle = function () {
|
|
23898
23898
|
var _a = _this.props, day = _a.day, _b = _a.holidays, holidays = _b === void 0 ? new Map() : _b, excludeDates = _a.excludeDates;
|
|
23899
|
-
var compareDt = formatDate(day, "MM.dd.yyyy");
|
|
23899
|
+
var compareDt = formatDate$1(day, "MM.dd.yyyy");
|
|
23900
23900
|
var titles = [];
|
|
23901
23901
|
if (holidays.has(compareDt)) {
|
|
23902
23902
|
titles.push.apply(titles, holidays.get(compareDt).holidayNames);
|
|
@@ -24822,7 +24822,7 @@ var Month = /** @class */ (function (_super) {
|
|
|
24822
24822
|
var prefix = _this.isDisabled(labelDate) || _this.isExcluded(labelDate)
|
|
24823
24823
|
? disabledDayAriaLabelPrefix
|
|
24824
24824
|
: chooseDayAriaLabelPrefix;
|
|
24825
|
-
return "".concat(prefix, " ").concat(formatDate(labelDate, "MMMM yyyy", locale));
|
|
24825
|
+
return "".concat(prefix, " ").concat(formatDate$1(labelDate, "MMMM yyyy", locale));
|
|
24826
24826
|
};
|
|
24827
24827
|
_this.getQuarterClassNames = function (q) {
|
|
24828
24828
|
var _a = _this.props, day = _a.day, startDate = _a.startDate, endDate = _a.endDate, minDate = _a.minDate, maxDate = _a.maxDate, excludeDates = _a.excludeDates, includeDates = _a.includeDates, filterDate = _a.filterDate, preSelection = _a.preSelection, disabledKeyboardNavigation = _a.disabledKeyboardNavigation, disabled = _a.disabled;
|
|
@@ -24924,7 +24924,7 @@ var Month = /** @class */ (function (_super) {
|
|
|
24924
24924
|
: "";
|
|
24925
24925
|
// Format aria-label, return empty string if date is invalid
|
|
24926
24926
|
var formattedAriaLabel = isValid(day)
|
|
24927
|
-
? "".concat(formattedAriaLabelPrefix).concat(formatDate(day, "MMMM, yyyy", this.props.locale))
|
|
24927
|
+
? "".concat(formattedAriaLabelPrefix).concat(formatDate$1(day, "MMMM, yyyy", this.props.locale))
|
|
24928
24928
|
: "";
|
|
24929
24929
|
var shouldUseListboxRole = showMonthYearPicker || showQuarterYearPicker;
|
|
24930
24930
|
if (shouldUseListboxRole) {
|
|
@@ -25067,7 +25067,7 @@ var MonthYearDropdownOptions = /** @class */ (function (_super) {
|
|
|
25067
25067
|
? "react-datepicker__month-year-option--selected_month-year"
|
|
25068
25068
|
: "react-datepicker__month-year-option", key: monthYearPoint, onClick: _this.onChange.bind(_this, monthYearPoint), "aria-selected": isSameMonthYear ? "true" : undefined },
|
|
25069
25069
|
isSameMonthYear ? (React__default.createElement("span", { className: "react-datepicker__month-year-option--selected" }, "\u2713")) : (""),
|
|
25070
|
-
formatDate(monthYear, _this.props.dateFormat, _this.props.locale)));
|
|
25070
|
+
formatDate$1(monthYear, _this.props.dateFormat, _this.props.locale)));
|
|
25071
25071
|
});
|
|
25072
25072
|
};
|
|
25073
25073
|
_this.onChange = function (monthYear) { return _this.props.onChange(monthYear); };
|
|
@@ -25102,7 +25102,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
|
|
|
25102
25102
|
var options = [];
|
|
25103
25103
|
while (!isAfter$1(currDate, lastDate)) {
|
|
25104
25104
|
var timePoint = getTime(currDate);
|
|
25105
|
-
options.push(React__default.createElement("option", { key: timePoint, value: timePoint }, formatDate(currDate, _this.props.dateFormat, _this.props.locale)));
|
|
25105
|
+
options.push(React__default.createElement("option", { key: timePoint, value: timePoint }, formatDate$1(currDate, _this.props.dateFormat, _this.props.locale)));
|
|
25106
25106
|
currDate = addMonths(currDate, 1);
|
|
25107
25107
|
}
|
|
25108
25108
|
return options;
|
|
@@ -25112,7 +25112,7 @@ var MonthYearDropdown = /** @class */ (function (_super) {
|
|
|
25112
25112
|
};
|
|
25113
25113
|
_this.renderSelectMode = function () { return (React__default.createElement("select", { value: getTime(getStartOfMonth(_this.props.date)), className: "react-datepicker__month-year-select", onChange: _this.onSelectChange }, _this.renderSelectOptions())); };
|
|
25114
25114
|
_this.renderReadView = function (visible) {
|
|
25115
|
-
var yearMonth = formatDate(_this.props.date, _this.props.dateFormat, _this.props.locale);
|
|
25115
|
+
var yearMonth = formatDate$1(_this.props.date, _this.props.dateFormat, _this.props.locale);
|
|
25116
25116
|
return (React__default.createElement("div", { key: "read", style: { visibility: visible ? "visible" : "hidden" }, className: "react-datepicker__month-year-read-view", onClick: _this.toggleDropdown },
|
|
25117
25117
|
React__default.createElement("span", { className: "react-datepicker__month-year-read-view--down-arrow" }),
|
|
25118
25118
|
React__default.createElement("span", { className: "react-datepicker__month-year-read-view--selected-month-year" }, yearMonth)));
|
|
@@ -25281,7 +25281,7 @@ var Time = /** @class */ (function (_super) {
|
|
|
25281
25281
|
}
|
|
25282
25282
|
}, onKeyDown: function (event) {
|
|
25283
25283
|
_this.handleOnKeyDown(event, time);
|
|
25284
|
-
}, tabIndex: time === timeToFocus ? 0 : -1, role: "option", "aria-selected": _this.isSelectedTime(time) ? "true" : undefined, "aria-disabled": _this.isDisabledTime(time) ? "true" : undefined }, formatDate(time, format, _this.props.locale)));
|
|
25284
|
+
}, tabIndex: time === timeToFocus ? 0 : -1, role: "option", "aria-selected": _this.isSelectedTime(time) ? "true" : undefined, "aria-disabled": _this.isDisabledTime(time) ? "true" : undefined }, formatDate$1(time, format, _this.props.locale)));
|
|
25285
25285
|
});
|
|
25286
25286
|
};
|
|
25287
25287
|
_this.renderTimeCaption = function () {
|
|
@@ -26052,7 +26052,7 @@ var Calendar = /** @class */ (function (_super) {
|
|
|
26052
26052
|
? _this.props.weekDayClassName(day)
|
|
26053
26053
|
: undefined;
|
|
26054
26054
|
return (React__default.createElement("div", { key: offset, role: "columnheader", className: clsx("react-datepicker__day-name", weekDayClassName, disabled ? "react-datepicker__day-name--disabled" : "") },
|
|
26055
|
-
React__default.createElement("span", { className: "react-datepicker__sr-only" }, formatDate(day, "EEEE", _this.props.locale)),
|
|
26055
|
+
React__default.createElement("span", { className: "react-datepicker__sr-only" }, formatDate$1(day, "EEEE", _this.props.locale)),
|
|
26056
26056
|
React__default.createElement("span", { "aria-hidden": "true" }, weekDayName)));
|
|
26057
26057
|
}));
|
|
26058
26058
|
};
|
|
@@ -26232,7 +26232,7 @@ var Calendar = /** @class */ (function (_super) {
|
|
|
26232
26232
|
classes.push("react-datepicker__current-month--hasMonthYearDropdown");
|
|
26233
26233
|
}
|
|
26234
26234
|
return (React__default.createElement("h2", { className: classes.join(" ") }, isValid(date)
|
|
26235
|
-
? formatDate(date, _this.props.dateFormat, _this.props.locale)
|
|
26235
|
+
? formatDate$1(date, _this.props.dateFormat, _this.props.locale)
|
|
26236
26236
|
: ""));
|
|
26237
26237
|
};
|
|
26238
26238
|
_this.renderYearDropdown = function (overrideHide) {
|
|
@@ -27216,7 +27216,7 @@ var DatePicker = /** @class */ (function (_super) {
|
|
|
27216
27216
|
var newMinutes = Math.min(maxMinutes, currentMinutes + timeIntervals);
|
|
27217
27217
|
newTime = addMinutes(baseDate, newMinutes);
|
|
27218
27218
|
}
|
|
27219
|
-
var formattedTime = formatDate(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
|
|
27219
|
+
var formattedTime = formatDate$1(newTime, formatStr || DatePicker.defaultProps.dateFormat, _this.props.locale);
|
|
27220
27220
|
_this.setState({
|
|
27221
27221
|
preSelection: newTime,
|
|
27222
27222
|
inputValue: formattedTime,
|
|
@@ -27808,24 +27808,77 @@ var PRESELECT_CHANGE_VIA_INPUT = "input";
|
|
|
27808
27808
|
var PRESELECT_CHANGE_VIA_NAVIGATE = "navigate";
|
|
27809
27809
|
|
|
27810
27810
|
const MONTHS = moment.months();
|
|
27811
|
+
/** The one format the field displays and accepts when typed. */
|
|
27812
|
+
const DATE_FORMAT = 'DD/MM/YYYY';
|
|
27813
|
+
const BOUND_FORMAT = 'YYYY-MM-DD';
|
|
27814
|
+
const MAX_DIGITS = 8;
|
|
27811
27815
|
function computeDateBounds(min, max) {
|
|
27812
27816
|
const minDate = min
|
|
27813
27817
|
? min instanceof Date
|
|
27814
|
-
? moment(min).format(
|
|
27818
|
+
? moment(min).format(BOUND_FORMAT)
|
|
27815
27819
|
: min
|
|
27816
27820
|
: undefined;
|
|
27817
27821
|
const maxDate = max
|
|
27818
27822
|
? max instanceof Date
|
|
27819
|
-
? moment(max).format(
|
|
27823
|
+
? moment(max).format(BOUND_FORMAT)
|
|
27820
27824
|
: max
|
|
27821
27825
|
: undefined;
|
|
27822
27826
|
return {
|
|
27823
27827
|
minDate,
|
|
27824
27828
|
maxDate,
|
|
27825
|
-
minYear: minDate ? moment(minDate,
|
|
27826
|
-
maxYear: maxDate ? moment(maxDate,
|
|
27829
|
+
minYear: minDate ? moment(minDate, BOUND_FORMAT).year() : undefined,
|
|
27830
|
+
maxYear: maxDate ? moment(maxDate, BOUND_FORMAT).year() : undefined,
|
|
27827
27831
|
};
|
|
27828
27832
|
}
|
|
27833
|
+
function formatDate(value) {
|
|
27834
|
+
return value ? moment(value).format(DATE_FORMAT) : '';
|
|
27835
|
+
}
|
|
27836
|
+
function toBoundDate(bound) {
|
|
27837
|
+
return bound ? moment(bound, BOUND_FORMAT).toDate() : undefined;
|
|
27838
|
+
}
|
|
27839
|
+
/**
|
|
27840
|
+
* Keep only the digits a date can hold and re-insert the separators, so typing
|
|
27841
|
+
* `25082026` reads back as `25/08/2026` and pasted junk cannot survive.
|
|
27842
|
+
*/
|
|
27843
|
+
function maskDateText(text) {
|
|
27844
|
+
const digits = text.replace(/\D/g, '').slice(0, MAX_DIGITS);
|
|
27845
|
+
if (digits.length <= 2)
|
|
27846
|
+
return digits;
|
|
27847
|
+
if (digits.length <= 4)
|
|
27848
|
+
return `${digits.slice(0, 2)}/${digits.slice(2)}`;
|
|
27849
|
+
return `${digits.slice(0, 2)}/${digits.slice(2, 4)}/${digits.slice(4)}`;
|
|
27850
|
+
}
|
|
27851
|
+
function countDigits(text) {
|
|
27852
|
+
return text.replace(/\D/g, '').length;
|
|
27853
|
+
}
|
|
27854
|
+
/** Offset in `text` that sits just after its nth digit. */
|
|
27855
|
+
function caretAfterDigits(text, digits) {
|
|
27856
|
+
if (digits <= 0)
|
|
27857
|
+
return 0;
|
|
27858
|
+
let seen = 0;
|
|
27859
|
+
for (let index = 0; index < text.length; index += 1) {
|
|
27860
|
+
if (text[index] >= '0' && text[index] <= '9') {
|
|
27861
|
+
seen += 1;
|
|
27862
|
+
if (seen === digits)
|
|
27863
|
+
return index + 1;
|
|
27864
|
+
}
|
|
27865
|
+
}
|
|
27866
|
+
return text.length;
|
|
27867
|
+
}
|
|
27868
|
+
function parseDateText(text) {
|
|
27869
|
+
const parsed = moment(text, DATE_FORMAT, true);
|
|
27870
|
+
return parsed.isValid() ? parsed.toDate() : undefined;
|
|
27871
|
+
}
|
|
27872
|
+
function isWithinBounds(date, { minDate, maxDate }) {
|
|
27873
|
+
const day = moment(date).startOf('day');
|
|
27874
|
+
if (minDate && day.isBefore(moment(minDate, BOUND_FORMAT).startOf('day'))) {
|
|
27875
|
+
return false;
|
|
27876
|
+
}
|
|
27877
|
+
if (maxDate && day.isAfter(moment(maxDate, BOUND_FORMAT).startOf('day'))) {
|
|
27878
|
+
return false;
|
|
27879
|
+
}
|
|
27880
|
+
return true;
|
|
27881
|
+
}
|
|
27829
27882
|
|
|
27830
27883
|
function DatePickerHeader({ monthDate, changeYear, changeMonth, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, minYear, maxYear, hidePrev, hideNext, }) {
|
|
27831
27884
|
const current = moment(monthDate);
|
|
@@ -27840,25 +27893,39 @@ function DatePickerHeader({ monthDate, changeYear, changeMonth, decreaseMonth, i
|
|
|
27840
27893
|
return (jsxs("div", { className: "date-range-picker-header", children: [hidePrev ? (jsx("span", { className: "date-range-picker-nav-spacer", "aria-hidden": true })) : (jsx("button", { type: "button", onClick: decreaseMonth, disabled: prevMonthButtonDisabled, "aria-label": "Previous month", className: "date-range-picker-nav", children: jsx(ChevronLeft, { className: "h-4 w-4", strokeWidth: 2 }) })), jsxs("div", { className: "date-range-picker-selects", children: [jsx("div", { className: "date-range-picker-select-wrap", children: jsx("select", { "aria-label": "Select month", className: "date-range-picker-select", value: shownMonth, onChange: (event) => changeMonth(Number(event.target.value)), children: MONTHS.map((label, index) => (jsx("option", { value: index, children: label }, label))) }) }), jsx("div", { className: "date-range-picker-select-wrap", children: jsx("select", { "aria-label": "Select year", className: "date-range-picker-select", value: shownYear, onChange: (event) => changeYear(Number(event.target.value)), children: years.map((year) => (jsx("option", { value: year, children: year }, year))) }) })] }), hideNext ? (jsx("span", { className: "date-range-picker-nav-spacer", "aria-hidden": true })) : (jsx("button", { type: "button", onClick: increaseMonth, disabled: nextMonthButtonDisabled, "aria-label": "Next month", className: "date-range-picker-nav", children: jsx(ChevronRight, { className: "h-4 w-4", strokeWidth: 2 }) }))] }));
|
|
27841
27894
|
}
|
|
27842
27895
|
|
|
27843
|
-
var css_248z$2 = "@charset \"UTF-8\";.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow,.react-datepicker__navigation-icon:before,.react-datepicker__year-read-view--down-arrow{border-color:#ccc;border-style:solid;border-width:3px 3px 0 0;content:\"\";display:block;height:9px;position:absolute;top:6px;width:9px}.react-datepicker__sr-only{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.react-datepicker-wrapper{border:0;display:inline-block;padding:0}.react-datepicker{background-color:#fff;border:1px solid #aeaeae;border-radius:.3rem;color:#000;display:inline-block;font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;line-height:normal;position:relative}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker-popper{line-height:0;z-index:1}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker__header{background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative;text-align:center}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select){border-top-right-radius:.3rem}.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__year-dropdown-container--select{display:inline-block;margin:0 15px}.react-datepicker-time__header,.react-datepicker-year-header,.react-datepicker__current-month{color:#000;font-size:.944rem;font-weight:700;margin-top:0}h2.react-datepicker__current-month{margin:0;padding:0}.react-datepicker-time__header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.react-datepicker__navigation{align-items:center;background:none;border:none;cursor:pointer;display:flex;height:32px;justify-content:center;overflow:hidden;padding:0;position:absolute;text-align:center;text-indent:-999em;top:2px;width:32px;z-index:1}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{display:block;margin-left:auto;margin-right:auto;position:relative;top:0}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover :before{border-color:#a6a6a6}.react-datepicker__navigation-icon{font-size:20px;position:relative;top:-1px;width:0}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{left:-7px;transform:rotate(45deg)}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{right:-7px;transform:rotate(225deg)}.react-datepicker__month-container{float:left}.react-datepicker__year{margin:.4rem;text-align:center}.react-datepicker__year-wrapper{display:flex;flex-wrap:wrap;max-width:180px}.react-datepicker__year .react-datepicker__year-text{display:inline-block;margin:2px;width:4rem}.react-datepicker__month{margin:.4rem;text-align:center}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{display:inline-block;margin:2px;width:4rem}.react-datepicker__input-time-container{clear:both;float:left;margin:5px 0 10px 15px;text-align:left;width:100%}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{display:inline-block;margin-left:10px}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{display:inline-block;margin-left:5px}.react-datepicker__time-container{border-left:1px solid #aeaeae;float:right;width:85px}.react-datepicker__time-container--with-today-button{border:1px solid #aeaeae;border-radius:.3rem;display:inline;position:absolute;right:-87px;top:0}.react-datepicker__time-container .react-datepicker__time{background:#fff;border-bottom-right-radius:.3rem;position:relative}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{border-bottom-right-radius:.3rem;margin:0 auto;overflow-x:hidden;text-align:center;width:85px}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{box-sizing:content-box;height:calc(195px + .85rem);list-style:none;margin:0;overflow-y:scroll;padding-left:0;padding-right:0;width:100%}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{height:30px;padding:5px 10px;white-space:nowrap}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{background-color:#f0f0f0;cursor:pointer}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{background-color:#216ba5;color:#fff;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{background-color:transparent;cursor:default}.react-datepicker__week-number{color:#ccc;display:inline-block;line-height:1.7rem;margin:.166rem;text-align:center;width:1.7rem}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__week-number--selected{background-color:#216ba5;border-radius:.3rem;color:#fff}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__day-names{margin-bottom:-8px;text-align:center;white-space:nowrap}.react-datepicker__week{white-space:nowrap}.react-datepicker__day,.react-datepicker__day-name,.react-datepicker__time-name{color:#000;display:inline-block;line-height:1.7rem;margin:.166rem;text-align:center;width:1.7rem}.react-datepicker__day--disabled,.react-datepicker__day-name--disabled,.react-datepicker__time-name--disabled{color:#ccc;cursor:default}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{background-color:#3dcc4a;border-radius:.3rem;color:#fff}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{background-color:#ff6803;border-radius:.3rem;color:#fff;position:relative}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{background-color:#333;border-radius:4px;bottom:100%;color:#fff;left:50%;opacity:0;padding:4px;position:absolute;transform:translateX(-50%);transition:visibility 0s,opacity .3s ease-in-out;visibility:hidden;white-space:nowrap}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{opacity:1;visibility:visible}.react-datepicker__day--in-range,.react-datepicker__day--in-selecting-range,.react-datepicker__day--selected,.react-datepicker__month-text--in-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--selected,.react-datepicker__quarter-text--in-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--selected,.react-datepicker__year-text--in-range,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--selected{background-color:#216ba5;border-radius:.3rem;color:#fff}.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{background-color:#bad9f1;border-radius:.3rem;color:#000}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{background-color:#1d5d90;color:#fff}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range){background-color:rgba(33,107,165,.5)}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range){background-color:#f0f0f0;color:#000}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{color:#ccc;cursor:default}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{background-color:#333;border-radius:4px;bottom:70%;color:#fff;left:50%;opacity:0;padding:4px;position:absolute;transform:translateX(-50%);transition:visibility 0s,opacity .3s ease-in-out;visibility:hidden;white-space:nowrap}.react-datepicker__input-container{display:inline-block;position:relative;width:100%}.react-datepicker__input-container .react-datepicker__calendar-icon{box-sizing:content-box;padding:.5rem;position:absolute}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__month-read-view,.react-datepicker__month-year-read-view,.react-datepicker__year-read-view{border:1px solid transparent;border-radius:.3rem;position:relative}.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover,.react-datepicker__year-read-view:hover{cursor:pointer}.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow,.react-datepicker__year-read-view--down-arrow{right:-16px;top:0;transform:rotate(135deg)}.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown,.react-datepicker__year-dropdown{background-color:#f0f0f0;border:1px solid #aeaeae;border-radius:.3rem;left:25%;position:absolute;text-align:center;top:30px;width:50%;z-index:1}.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover,.react-datepicker__year-dropdown:hover{cursor:pointer}.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable,.react-datepicker__year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__month-option,.react-datepicker__month-year-option,.react-datepicker__year-option{display:block;line-height:20px;margin-left:auto;margin-right:auto;width:100%}.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type,.react-datepicker__year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type,.react-datepicker__year-option:last-of-type{border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover,.react-datepicker__year-option:hover{background-color:#ccc}.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected,.react-datepicker__year-option--selected{left:15px;position:absolute}.react-datepicker__close-icon{background-color:transparent;border:0;cursor:pointer;display:table-cell;height:100%;outline:0;padding:0 6px 0 0;position:absolute;right:0;top:0;vertical-align:middle}.react-datepicker__close-icon:after{background-color:#216ba5;border-radius:50%;color:#fff;content:\"×\";cursor:pointer;display:table-cell;font-size:12px;height:16px;line-height:1;padding:2px;text-align:center;vertical-align:middle;width:16px}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{background-color:#ccc;cursor:default}.react-datepicker__today-button{background:#f0f0f0;border-top:1px solid #aeaeae;clear:left;cursor:pointer;font-weight:700;padding:5px 0;text-align:center}.react-datepicker__portal{align-items:center;background-color:rgba(0,0,0,.8);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:2147483647}.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__time-name{line-height:3rem;width:3rem}@media (max-height:550px),(max-width:400px){.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__time-name{line-height:2rem;width:2rem}}.react-datepicker__portal .react-datepicker-time__header,.react-datepicker__portal .react-datepicker__current-month{font-size:1.44rem}.react-datepicker__children-container{height:auto;margin:.4rem;padding-left:.2rem;padding-right:.2rem;width:13.8rem}.react-datepicker__aria-live{border:0;clip-path:circle(0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.react-datepicker__calendar-icon{height:1em;vertical-align:-.125em;width:1em}";
|
|
27844
|
-
styleInject(css_248z$2);
|
|
27845
|
-
|
|
27846
|
-
var css_248z$1 = ".date-range-picker-popover[data-slot=popover-content]{max-width:calc(100vw - 2rem);width:fit-content}.date-range-picker-calendar.react-datepicker{background:transparent;border:0;display:flex;flex-direction:column;font-family:inherit;font-size:.875rem}.date-range-picker-calendar .react-datepicker__month-container{float:none;width:auto}.date-range-picker-calendar .react-datepicker__header{background:transparent;border-bottom:0;padding:0}.date-range-picker-calendar .react-datepicker__current-month{display:none}.date-range-picker-header{align-items:center;display:flex;gap:.5rem;justify-content:space-between;padding:0 .25rem .25rem}.date-range-picker-selects{align-items:center;display:flex;gap:.375rem}.date-range-picker-select-wrap{align-items:center;display:inline-flex;position:relative}.date-range-picker-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:var(--background);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");background-position:right .375rem center;background-repeat:no-repeat;background-size:.875rem;border:1px solid var(--input-border,var(--border));border-radius:.5rem;color:var(--foreground);cursor:pointer;font-size:.8125rem;font-weight:500;height:1.875rem;line-height:1.875rem;outline:none;padding:0 1.5rem 0 .625rem;transition:border-color .15s,box-shadow .15s}.date-range-picker-select:hover{background-color:var(--muted)}.date-range-picker-select:focus-visible{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ring) 30%,transparent)}.date-range-picker-select option{background-color:var(--popover,var(--background));color:var(--foreground)}.date-range-picker-nav-spacer{display:inline-block;height:1.75rem;width:1.75rem}.date-range-picker-nav{align-items:center;background-color:var(--muted);border:0;border-radius:.5rem;color:var(--muted-foreground);cursor:pointer;display:inline-flex;height:1.75rem;justify-content:center;padding:0;transition:background-color .15s,color .15s;width:1.75rem}.date-range-picker-nav:hover{background-color:var(--accent);color:var(--foreground)}.date-range-picker-nav:disabled{cursor:not-allowed;opacity:.4}.date-range-picker-calendar .react-datepicker__day-names{display:flex;justify-content:space-between;margin:.5rem 0 .25rem}.date-range-picker-calendar .react-datepicker__day-name{color:var(--muted-foreground);font-size:.75rem;font-weight:400;line-height:1.75rem;margin:0;width:2.25rem}.date-range-picker-calendar .react-datepicker__month{margin:0}.date-range-picker-calendar .react-datepicker__week{display:flex;justify-content:space-between}.date-range-picker-calendar .react-datepicker__day{align-items:center;border-radius:.5rem;color:var(--foreground);display:inline-flex;font-size:.875rem;height:2.25rem;justify-content:center;line-height:2.25rem;margin:.125rem 0;width:2.25rem}.date-range-picker-calendar .react-datepicker__day--outside-month{color:var(--muted-foreground);opacity:.55}.date-range-picker-calendar .react-datepicker__day:hover{background-color:var(--muted);border-radius:.5rem}.date-range-picker-calendar .react-datepicker__day--today{background-color:var(--muted);color:var(--foreground);font-weight:600}.date-range-picker-calendar .react-datepicker__day--keyboard-selected,.date-range-picker-calendar .react-datepicker__day--selected{background-color:var(--primary);color:var(--primary-foreground);font-weight:500}.date-range-picker-calendar .react-datepicker__day--keyboard-selected:hover,.date-range-picker-calendar .react-datepicker__day--selected:hover{background-color:var(--primary);color:var(--primary-foreground);filter:brightness(.95)}.date-range-picker-calendar .react-datepicker__day--in-range,.date-range-picker-calendar .react-datepicker__day--in-selecting-range{background-color:color-mix(in srgb,var(--primary) 18%,transparent);color:var(--primary)}.date-range-picker-calendar .react-datepicker__day--range-end,.date-range-picker-calendar .react-datepicker__day--range-start{background-color:var(--primary);color:var(--primary-foreground)}.date-range-picker-calendar .react-datepicker__day--disabled{color:var(--muted-foreground);cursor:not-allowed;opacity:.4}.date-range-picker-calendar .react-datepicker__children-container{margin:0;padding:0;width:auto}.date-range-picker-footer{align-items:center;display:flex;justify-content:space-between;margin-top:.75rem;padding-top:.75rem;width:100%}.date-range-picker-action{align-items:center;background-color:color-mix(in srgb,var(--primary) 10%,transparent);border:0;border-radius:.5rem;color:var(--primary);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;height:2rem;justify-content:center;padding:0 .875rem;transition:background-color .15s}.date-range-picker-action:hover{background-color:color-mix(in srgb,var(--primary) 18%,transparent)}:is(.dark) .date-range-picker-calendar .react-datepicker__day--today{background-color:color-mix(in srgb,var(--muted) 80%,transparent)}:is(.dark) .date-range-picker-action{background-color:color-mix(in srgb,var(--primary) 18%,transparent)}:is(.dark) .date-range-picker-action:hover{background-color:color-mix(in srgb,var(--primary) 28%,transparent)}";
|
|
27847
|
-
styleInject(css_248z$1);
|
|
27848
|
-
|
|
27849
27896
|
// Only one DateInput popover should be open at a time. Because each instance is
|
|
27850
27897
|
// its own `modal` Radix Popover, opening a second one does not dismiss the first
|
|
27851
27898
|
// via outside-click. Instances coordinate through a window event: whoever opens
|
|
27852
27899
|
// broadcasts its id, and every other open instance closes itself.
|
|
27853
27900
|
const DATEINPUT_OPEN_EVENT = 'caratlogic:dateinput-open';
|
|
27854
|
-
function
|
|
27901
|
+
function useDateInput({ value, onChange, onBlur, min, max, disabled, }) {
|
|
27855
27902
|
const [open, setOpen] = useState(false);
|
|
27856
27903
|
const instanceId = useId$2();
|
|
27857
|
-
const
|
|
27858
|
-
|
|
27904
|
+
const inputRef = useRef(null);
|
|
27905
|
+
const caretRef = useRef(null);
|
|
27906
|
+
const bounds = computeDateBounds(min, max);
|
|
27907
|
+
const formatted = formatDate(value);
|
|
27908
|
+
const [text, setText] = useState(formatted);
|
|
27909
|
+
const [syncedValue, setSyncedValue] = useState(formatted);
|
|
27910
|
+
// Adopt `value` whenever it changes from the outside — a form reset, a
|
|
27911
|
+
// calendar pick, a sibling field narrowing the range — while leaving a
|
|
27912
|
+
// half-typed date alone.
|
|
27913
|
+
if (formatted !== syncedValue) {
|
|
27914
|
+
setSyncedValue(formatted);
|
|
27915
|
+
setText(formatted);
|
|
27916
|
+
}
|
|
27917
|
+
// Masking rewrites the whole string, which parks the caret at the end on any
|
|
27918
|
+
// keystroke that crosses a separator. Put it back once the DOM has the value.
|
|
27919
|
+
useLayoutEffect(() => {
|
|
27920
|
+
const caret = caretRef.current;
|
|
27921
|
+
if (caret === null || !inputRef.current)
|
|
27922
|
+
return;
|
|
27923
|
+
caretRef.current = null;
|
|
27924
|
+
inputRef.current.setSelectionRange(caret, caret);
|
|
27925
|
+
});
|
|
27859
27926
|
useEffect(() => {
|
|
27860
|
-
const onOtherOpen = (
|
|
27861
|
-
if (
|
|
27927
|
+
const onOtherOpen = (event) => {
|
|
27928
|
+
if (event.detail !== instanceId)
|
|
27862
27929
|
setOpen(false);
|
|
27863
27930
|
};
|
|
27864
27931
|
window.addEventListener(DATEINPUT_OPEN_EVENT, onOtherOpen);
|
|
@@ -27870,6 +27937,132 @@ function DateInput({ value, onChange, onBlur, name, className, min, max, disable
|
|
|
27870
27937
|
window.dispatchEvent(new CustomEvent(DATEINPUT_OPEN_EVENT, { detail: instanceId }));
|
|
27871
27938
|
}
|
|
27872
27939
|
};
|
|
27940
|
+
const commit = (date) => {
|
|
27941
|
+
const next = formatDate(date);
|
|
27942
|
+
setText(next);
|
|
27943
|
+
setSyncedValue(next);
|
|
27944
|
+
onChange(date);
|
|
27945
|
+
};
|
|
27946
|
+
/**
|
|
27947
|
+
* Show `masked` and report it upwards only once it is a whole, real,
|
|
27948
|
+
* in-range date — so `01/01/2` on the way to `01/01/2026` never lands in the
|
|
27949
|
+
* form, and an emptied field clears the value.
|
|
27950
|
+
*/
|
|
27951
|
+
const applyText = (masked, caret) => {
|
|
27952
|
+
caretRef.current = caret;
|
|
27953
|
+
setText(masked);
|
|
27954
|
+
if (masked === '') {
|
|
27955
|
+
setSyncedValue('');
|
|
27956
|
+
onChange(undefined);
|
|
27957
|
+
return;
|
|
27958
|
+
}
|
|
27959
|
+
if (masked.length < DATE_FORMAT.length)
|
|
27960
|
+
return;
|
|
27961
|
+
const parsed = parseDateText(masked);
|
|
27962
|
+
if (parsed && isWithinBounds(parsed, bounds)) {
|
|
27963
|
+
setSyncedValue(masked);
|
|
27964
|
+
onChange(parsed);
|
|
27965
|
+
}
|
|
27966
|
+
};
|
|
27967
|
+
const handleTextChange = (event) => {
|
|
27968
|
+
const raw = event.target.value;
|
|
27969
|
+
const caret = event.target.selectionStart ?? raw.length;
|
|
27970
|
+
const masked = maskDateText(raw);
|
|
27971
|
+
applyText(masked, caretAfterDigits(masked, countDigits(raw.slice(0, caret))));
|
|
27972
|
+
};
|
|
27973
|
+
/** Fall back to the committed value when the field is left mid-edit. */
|
|
27974
|
+
const normalize = () => {
|
|
27975
|
+
if (text === '')
|
|
27976
|
+
return;
|
|
27977
|
+
const parsed = parseDateText(text);
|
|
27978
|
+
if (!parsed || !isWithinBounds(parsed, bounds))
|
|
27979
|
+
setText(formatted);
|
|
27980
|
+
};
|
|
27981
|
+
const handleKeyDown = (event) => {
|
|
27982
|
+
if (event.key === 'Enter') {
|
|
27983
|
+
// Settle the field rather than submitting the form around it.
|
|
27984
|
+
event.preventDefault();
|
|
27985
|
+
setOpen(false);
|
|
27986
|
+
normalize();
|
|
27987
|
+
return;
|
|
27988
|
+
}
|
|
27989
|
+
if (event.key === 'Escape' && open) {
|
|
27990
|
+
setOpen(false);
|
|
27991
|
+
return;
|
|
27992
|
+
}
|
|
27993
|
+
if (event.key === 'ArrowDown' && event.altKey && !disabled) {
|
|
27994
|
+
event.preventDefault();
|
|
27995
|
+
handleOpenChange(true);
|
|
27996
|
+
return;
|
|
27997
|
+
}
|
|
27998
|
+
if (event.key !== 'Backspace')
|
|
27999
|
+
return;
|
|
28000
|
+
// A separator is not content: backspacing onto a `/` has to take the digit
|
|
28001
|
+
// in front of it, or the mask re-inserts the slash and the caret sticks.
|
|
28002
|
+
const input = event.currentTarget;
|
|
28003
|
+
const start = input.selectionStart ?? 0;
|
|
28004
|
+
if (start !== input.selectionEnd ||
|
|
28005
|
+
start < 2 ||
|
|
28006
|
+
input.value[start - 1] !== '/') {
|
|
28007
|
+
return;
|
|
28008
|
+
}
|
|
28009
|
+
event.preventDefault();
|
|
28010
|
+
const kept = input.value.slice(0, start - 2);
|
|
28011
|
+
const masked = maskDateText(kept + input.value.slice(start));
|
|
28012
|
+
applyText(masked, caretAfterDigits(masked, countDigits(kept)));
|
|
28013
|
+
};
|
|
28014
|
+
const handleTextBlur = () => {
|
|
28015
|
+
normalize();
|
|
28016
|
+
onBlur?.();
|
|
28017
|
+
};
|
|
28018
|
+
const parsedText = parseDateText(text);
|
|
28019
|
+
return {
|
|
28020
|
+
open,
|
|
28021
|
+
text,
|
|
28022
|
+
invalid: text.length === DATE_FORMAT.length &&
|
|
28023
|
+
(!parsedText || !isWithinBounds(parsedText, bounds)),
|
|
28024
|
+
bounds,
|
|
28025
|
+
inputRef,
|
|
28026
|
+
handleOpenChange,
|
|
28027
|
+
handleTextChange,
|
|
28028
|
+
handleKeyDown,
|
|
28029
|
+
handleTextBlur,
|
|
28030
|
+
toggleOpen: () => {
|
|
28031
|
+
if (!disabled)
|
|
28032
|
+
handleOpenChange(!open);
|
|
28033
|
+
},
|
|
28034
|
+
selectDate: (date) => {
|
|
28035
|
+
commit(date ?? undefined);
|
|
28036
|
+
if (date)
|
|
28037
|
+
setOpen(false);
|
|
28038
|
+
},
|
|
28039
|
+
clearDate: () => {
|
|
28040
|
+
commit(undefined);
|
|
28041
|
+
setOpen(false);
|
|
28042
|
+
},
|
|
28043
|
+
selectToday: () => {
|
|
28044
|
+
commit(new Date());
|
|
28045
|
+
setOpen(false);
|
|
28046
|
+
},
|
|
28047
|
+
};
|
|
28048
|
+
}
|
|
28049
|
+
|
|
28050
|
+
const CALENDAR_BUTTON_LABEL = 'Open calendar';
|
|
28051
|
+
/** Spells out what the field accepts, since the format is now typeable. */
|
|
28052
|
+
const DATE_FORMAT_HINT = `Date format ${DATE_FORMAT}`;
|
|
28053
|
+
|
|
28054
|
+
var css_248z$2 = "@charset \"UTF-8\";.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow,.react-datepicker__navigation-icon:before,.react-datepicker__year-read-view--down-arrow{border-color:#ccc;border-style:solid;border-width:3px 3px 0 0;content:\"\";display:block;height:9px;position:absolute;top:6px;width:9px}.react-datepicker__sr-only{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.react-datepicker-wrapper{border:0;display:inline-block;padding:0}.react-datepicker{background-color:#fff;border:1px solid #aeaeae;border-radius:.3rem;color:#000;display:inline-block;font-family:Helvetica Neue,helvetica,arial,sans-serif;font-size:.8rem;line-height:normal;position:relative}.react-datepicker--time-only .react-datepicker__time-container{border-left:0}.react-datepicker--time-only .react-datepicker__time,.react-datepicker--time-only .react-datepicker__time-box{border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem}.react-datepicker-popper{line-height:0;z-index:1}.react-datepicker-popper .react-datepicker__triangle{stroke:#aeaeae}.react-datepicker-popper[data-placement^=bottom] .react-datepicker__triangle{fill:#f0f0f0;color:#f0f0f0}.react-datepicker-popper[data-placement^=top] .react-datepicker__triangle{fill:#fff;color:#fff}.react-datepicker__header{background-color:#f0f0f0;border-bottom:1px solid #aeaeae;border-top-left-radius:.3rem;padding:8px 0;position:relative;text-align:center}.react-datepicker__header--time{padding-bottom:8px;padding-left:5px;padding-right:5px}.react-datepicker__header--time:not(.react-datepicker__header--time--only){border-top-left-radius:0}.react-datepicker__header:not(.react-datepicker__header--has-time-select){border-top-right-radius:.3rem}.react-datepicker__month-dropdown-container--scroll,.react-datepicker__month-dropdown-container--select,.react-datepicker__month-year-dropdown-container--scroll,.react-datepicker__month-year-dropdown-container--select,.react-datepicker__year-dropdown-container--scroll,.react-datepicker__year-dropdown-container--select{display:inline-block;margin:0 15px}.react-datepicker-time__header,.react-datepicker-year-header,.react-datepicker__current-month{color:#000;font-size:.944rem;font-weight:700;margin-top:0}h2.react-datepicker__current-month{margin:0;padding:0}.react-datepicker-time__header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.react-datepicker__navigation{align-items:center;background:none;border:none;cursor:pointer;display:flex;height:32px;justify-content:center;overflow:hidden;padding:0;position:absolute;text-align:center;text-indent:-999em;top:2px;width:32px;z-index:1}.react-datepicker__navigation--previous{left:2px}.react-datepicker__navigation--next{right:2px}.react-datepicker__navigation--next--with-time:not(.react-datepicker__navigation--next--with-today-button){right:85px}.react-datepicker__navigation--years{display:block;margin-left:auto;margin-right:auto;position:relative;top:0}.react-datepicker__navigation--years-previous{top:4px}.react-datepicker__navigation--years-upcoming{top:-4px}.react-datepicker__navigation:hover :before{border-color:#a6a6a6}.react-datepicker__navigation-icon{font-size:20px;position:relative;top:-1px;width:0}.react-datepicker__navigation-icon--next{left:-2px}.react-datepicker__navigation-icon--next:before{left:-7px;transform:rotate(45deg)}.react-datepicker__navigation-icon--previous{right:-2px}.react-datepicker__navigation-icon--previous:before{right:-7px;transform:rotate(225deg)}.react-datepicker__month-container{float:left}.react-datepicker__year{margin:.4rem;text-align:center}.react-datepicker__year-wrapper{display:flex;flex-wrap:wrap;max-width:180px}.react-datepicker__year .react-datepicker__year-text{display:inline-block;margin:2px;width:4rem}.react-datepicker__month{margin:.4rem;text-align:center}.react-datepicker__month .react-datepicker__month-text,.react-datepicker__month .react-datepicker__quarter-text{display:inline-block;margin:2px;width:4rem}.react-datepicker__input-time-container{clear:both;float:left;margin:5px 0 10px 15px;text-align:left;width:100%}.react-datepicker__input-time-container .react-datepicker-time__caption,.react-datepicker__input-time-container .react-datepicker-time__input-container{display:inline-block}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input{display:inline-block;margin-left:10px}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input{width:auto}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-inner-spin-button,.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__input input[type=time]{-moz-appearance:textfield}.react-datepicker__input-time-container .react-datepicker-time__input-container .react-datepicker-time__delimiter{display:inline-block;margin-left:5px}.react-datepicker__time-container{border-left:1px solid #aeaeae;float:right;width:85px}.react-datepicker__time-container--with-today-button{border:1px solid #aeaeae;border-radius:.3rem;display:inline;position:absolute;right:-87px;top:0}.react-datepicker__time-container .react-datepicker__time{background:#fff;border-bottom-right-radius:.3rem;position:relative}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{border-bottom-right-radius:.3rem;margin:0 auto;overflow-x:hidden;text-align:center;width:85px}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list{box-sizing:content-box;height:calc(195px + .85rem);list-style:none;margin:0;overflow-y:scroll;padding-left:0;padding-right:0;width:100%}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item{height:30px;padding:5px 10px;white-space:nowrap}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item:hover{background-color:#f0f0f0;cursor:pointer}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected{background-color:#216ba5;color:#fff;font-weight:700}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--selected:hover{background-color:#216ba5}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled{color:#ccc}.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box ul.react-datepicker__time-list li.react-datepicker__time-list-item--disabled:hover{background-color:transparent;cursor:default}.react-datepicker__week-number{color:#ccc;display:inline-block;line-height:1.7rem;margin:.166rem;text-align:center;width:1.7rem}.react-datepicker__week-number.react-datepicker__week-number--clickable{cursor:pointer}.react-datepicker__week-number.react-datepicker__week-number--clickable:not(.react-datepicker__week-number--selected):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__week-number--selected{background-color:#216ba5;border-radius:.3rem;color:#fff}.react-datepicker__week-number--selected:hover{background-color:#1d5d90}.react-datepicker__day-names{margin-bottom:-8px;text-align:center;white-space:nowrap}.react-datepicker__week{white-space:nowrap}.react-datepicker__day,.react-datepicker__day-name,.react-datepicker__time-name{color:#000;display:inline-block;line-height:1.7rem;margin:.166rem;text-align:center;width:1.7rem}.react-datepicker__day--disabled,.react-datepicker__day-name--disabled,.react-datepicker__time-name--disabled{color:#ccc;cursor:default}.react-datepicker__day,.react-datepicker__month-text,.react-datepicker__quarter-text,.react-datepicker__year-text{cursor:pointer}.react-datepicker__day:not([aria-disabled=true]):hover,.react-datepicker__month-text:not([aria-disabled=true]):hover,.react-datepicker__quarter-text:not([aria-disabled=true]):hover,.react-datepicker__year-text:not([aria-disabled=true]):hover{background-color:#f0f0f0;border-radius:.3rem}.react-datepicker__day--today,.react-datepicker__month-text--today,.react-datepicker__quarter-text--today,.react-datepicker__year-text--today{font-weight:700}.react-datepicker__day--highlighted,.react-datepicker__month-text--highlighted,.react-datepicker__quarter-text--highlighted,.react-datepicker__year-text--highlighted{background-color:#3dcc4a;border-radius:.3rem;color:#fff}.react-datepicker__day--highlighted:not([aria-disabled=true]):hover,.react-datepicker__month-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--highlighted:not([aria-disabled=true]):hover,.react-datepicker__year-text--highlighted:not([aria-disabled=true]):hover{background-color:#32be3f}.react-datepicker__day--highlighted-custom-1,.react-datepicker__month-text--highlighted-custom-1,.react-datepicker__quarter-text--highlighted-custom-1,.react-datepicker__year-text--highlighted-custom-1{color:#f0f}.react-datepicker__day--highlighted-custom-2,.react-datepicker__month-text--highlighted-custom-2,.react-datepicker__quarter-text--highlighted-custom-2,.react-datepicker__year-text--highlighted-custom-2{color:green}.react-datepicker__day--holidays,.react-datepicker__month-text--holidays,.react-datepicker__quarter-text--holidays,.react-datepicker__year-text--holidays{background-color:#ff6803;border-radius:.3rem;color:#fff;position:relative}.react-datepicker__day--holidays .overlay,.react-datepicker__month-text--holidays .overlay,.react-datepicker__quarter-text--holidays .overlay,.react-datepicker__year-text--holidays .overlay{background-color:#333;border-radius:4px;bottom:100%;color:#fff;left:50%;opacity:0;padding:4px;position:absolute;transform:translateX(-50%);transition:visibility 0s,opacity .3s ease-in-out;visibility:hidden;white-space:nowrap}.react-datepicker__day--holidays:not([aria-disabled=true]):hover,.react-datepicker__month-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--holidays:not([aria-disabled=true]):hover,.react-datepicker__year-text--holidays:not([aria-disabled=true]):hover{background-color:#cf5300}.react-datepicker__day--holidays:hover .overlay,.react-datepicker__month-text--holidays:hover .overlay,.react-datepicker__quarter-text--holidays:hover .overlay,.react-datepicker__year-text--holidays:hover .overlay{opacity:1;visibility:visible}.react-datepicker__day--in-range,.react-datepicker__day--in-selecting-range,.react-datepicker__day--selected,.react-datepicker__month-text--in-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__month-text--selected,.react-datepicker__quarter-text--in-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__quarter-text--selected,.react-datepicker__year-text--in-range,.react-datepicker__year-text--in-selecting-range,.react-datepicker__year-text--selected{background-color:#216ba5;border-radius:.3rem;color:#fff}.react-datepicker__day--in-range:not([aria-disabled=true]):hover,.react-datepicker__day--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__day--selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__month-text--selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--in-selecting-range:not([aria-disabled=true]):hover,.react-datepicker__year-text--selected:not([aria-disabled=true]):hover{background-color:#1d5d90}.react-datepicker__day--keyboard-selected,.react-datepicker__month-text--keyboard-selected,.react-datepicker__quarter-text--keyboard-selected,.react-datepicker__year-text--keyboard-selected{background-color:#bad9f1;border-radius:.3rem;color:#000}.react-datepicker__day--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__month-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__quarter-text--keyboard-selected:not([aria-disabled=true]):hover,.react-datepicker__year-text--keyboard-selected:not([aria-disabled=true]):hover{background-color:#1d5d90;color:#fff}.react-datepicker__day--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__month-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__quarter-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range),.react-datepicker__year-text--in-selecting-range:not(.react-datepicker__day--in-range,.react-datepicker__month-text--in-range,.react-datepicker__quarter-text--in-range,.react-datepicker__year-text--in-range){background-color:rgba(33,107,165,.5)}.react-datepicker__month--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__month--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__day--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__month-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__quarter-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range),.react-datepicker__year--selecting-range .react-datepicker__year-text--in-range:not(.react-datepicker__day--in-selecting-range,.react-datepicker__month-text--in-selecting-range,.react-datepicker__quarter-text--in-selecting-range,.react-datepicker__year-text--in-selecting-range){background-color:#f0f0f0;color:#000}.react-datepicker__day--disabled,.react-datepicker__month-text--disabled,.react-datepicker__quarter-text--disabled,.react-datepicker__year-text--disabled{color:#ccc;cursor:default}.react-datepicker__day--disabled .overlay,.react-datepicker__month-text--disabled .overlay,.react-datepicker__quarter-text--disabled .overlay,.react-datepicker__year-text--disabled .overlay{background-color:#333;border-radius:4px;bottom:70%;color:#fff;left:50%;opacity:0;padding:4px;position:absolute;transform:translateX(-50%);transition:visibility 0s,opacity .3s ease-in-out;visibility:hidden;white-space:nowrap}.react-datepicker__input-container{display:inline-block;position:relative;width:100%}.react-datepicker__input-container .react-datepicker__calendar-icon{box-sizing:content-box;padding:.5rem;position:absolute}.react-datepicker__view-calendar-icon input{padding:6px 10px 5px 25px}.react-datepicker__month-read-view,.react-datepicker__month-year-read-view,.react-datepicker__year-read-view{border:1px solid transparent;border-radius:.3rem;position:relative}.react-datepicker__month-read-view:hover,.react-datepicker__month-year-read-view:hover,.react-datepicker__year-read-view:hover{cursor:pointer}.react-datepicker__month-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view:hover .react-datepicker__year-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__month-read-view--down-arrow,.react-datepicker__year-read-view:hover .react-datepicker__year-read-view--down-arrow{border-top-color:#b3b3b3}.react-datepicker__month-read-view--down-arrow,.react-datepicker__month-year-read-view--down-arrow,.react-datepicker__year-read-view--down-arrow{right:-16px;top:0;transform:rotate(135deg)}.react-datepicker__month-dropdown,.react-datepicker__month-year-dropdown,.react-datepicker__year-dropdown{background-color:#f0f0f0;border:1px solid #aeaeae;border-radius:.3rem;left:25%;position:absolute;text-align:center;top:30px;width:50%;z-index:1}.react-datepicker__month-dropdown:hover,.react-datepicker__month-year-dropdown:hover,.react-datepicker__year-dropdown:hover{cursor:pointer}.react-datepicker__month-dropdown--scrollable,.react-datepicker__month-year-dropdown--scrollable,.react-datepicker__year-dropdown--scrollable{height:150px;overflow-y:scroll}.react-datepicker__month-option,.react-datepicker__month-year-option,.react-datepicker__year-option{display:block;line-height:20px;margin-left:auto;margin-right:auto;width:100%}.react-datepicker__month-option:first-of-type,.react-datepicker__month-year-option:first-of-type,.react-datepicker__year-option:first-of-type{border-top-left-radius:.3rem;border-top-right-radius:.3rem}.react-datepicker__month-option:last-of-type,.react-datepicker__month-year-option:last-of-type,.react-datepicker__year-option:last-of-type{border-bottom-left-radius:.3rem;border-bottom-right-radius:.3rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.react-datepicker__month-option:hover,.react-datepicker__month-year-option:hover,.react-datepicker__year-option:hover{background-color:#ccc}.react-datepicker__month-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-upcoming,.react-datepicker__year-option:hover .react-datepicker__navigation--years-upcoming{border-bottom-color:#b3b3b3}.react-datepicker__month-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__month-year-option:hover .react-datepicker__navigation--years-previous,.react-datepicker__year-option:hover .react-datepicker__navigation--years-previous{border-top-color:#b3b3b3}.react-datepicker__month-option--selected,.react-datepicker__month-year-option--selected,.react-datepicker__year-option--selected{left:15px;position:absolute}.react-datepicker__close-icon{background-color:transparent;border:0;cursor:pointer;display:table-cell;height:100%;outline:0;padding:0 6px 0 0;position:absolute;right:0;top:0;vertical-align:middle}.react-datepicker__close-icon:after{background-color:#216ba5;border-radius:50%;color:#fff;content:\"×\";cursor:pointer;display:table-cell;font-size:12px;height:16px;line-height:1;padding:2px;text-align:center;vertical-align:middle;width:16px}.react-datepicker__close-icon--disabled{cursor:default}.react-datepicker__close-icon--disabled:after{background-color:#ccc;cursor:default}.react-datepicker__today-button{background:#f0f0f0;border-top:1px solid #aeaeae;clear:left;cursor:pointer;font-weight:700;padding:5px 0;text-align:center}.react-datepicker__portal{align-items:center;background-color:rgba(0,0,0,.8);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:2147483647}.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__time-name{line-height:3rem;width:3rem}@media (max-height:550px),(max-width:400px){.react-datepicker__portal .react-datepicker__day,.react-datepicker__portal .react-datepicker__day-name,.react-datepicker__portal .react-datepicker__time-name{line-height:2rem;width:2rem}}.react-datepicker__portal .react-datepicker-time__header,.react-datepicker__portal .react-datepicker__current-month{font-size:1.44rem}.react-datepicker__children-container{height:auto;margin:.4rem;padding-left:.2rem;padding-right:.2rem;width:13.8rem}.react-datepicker__aria-live{border:0;clip-path:circle(0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.react-datepicker__calendar-icon{height:1em;vertical-align:-.125em;width:1em}";
|
|
28055
|
+
styleInject(css_248z$2);
|
|
28056
|
+
|
|
28057
|
+
var css_248z$1 = ".date-range-picker-popover[data-slot=popover-content]{max-width:calc(100vw - 2rem);width:fit-content}.date-range-picker-calendar.react-datepicker{background:transparent;border:0;display:flex;flex-direction:column;font-family:inherit;font-size:.875rem}.date-range-picker-calendar .react-datepicker__month-container{float:none;width:auto}.date-range-picker-calendar .react-datepicker__header{background:transparent;border-bottom:0;padding:0}.date-range-picker-calendar .react-datepicker__current-month{display:none}.date-range-picker-header{align-items:center;display:flex;gap:.5rem;justify-content:space-between;padding:0 .25rem .25rem}.date-range-picker-selects{align-items:center;display:flex;gap:.375rem}.date-range-picker-select-wrap{align-items:center;display:inline-flex;position:relative}.date-range-picker-select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background-color:var(--background);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");background-position:right .375rem center;background-repeat:no-repeat;background-size:.875rem;border:1px solid var(--input-border,var(--border));border-radius:.5rem;color:var(--foreground);cursor:pointer;font-size:.8125rem;font-weight:500;height:1.875rem;line-height:1.875rem;outline:none;padding:0 1.5rem 0 .625rem;transition:border-color .15s,box-shadow .15s}.date-range-picker-select:hover{background-color:var(--muted)}.date-range-picker-select:focus-visible{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ring) 30%,transparent)}.date-range-picker-select option{background-color:var(--popover,var(--background));color:var(--foreground)}.date-range-picker-nav-spacer{display:inline-block;height:1.75rem;width:1.75rem}.date-range-picker-nav{align-items:center;background-color:var(--muted);border:0;border-radius:.5rem;color:var(--muted-foreground);cursor:pointer;display:inline-flex;height:1.75rem;justify-content:center;padding:0;transition:background-color .15s,color .15s;width:1.75rem}.date-range-picker-nav:hover{background-color:var(--accent);color:var(--foreground)}.date-range-picker-nav:disabled{cursor:not-allowed;opacity:.4}.date-range-picker-calendar .react-datepicker__day-names{display:flex;justify-content:space-between;margin:.5rem 0 .25rem}.date-range-picker-calendar .react-datepicker__day-name{color:var(--muted-foreground);font-size:.75rem;font-weight:400;line-height:1.75rem;margin:0;width:2.25rem}.date-range-picker-calendar .react-datepicker__month{margin:0}.date-range-picker-calendar .react-datepicker__week{display:flex;justify-content:space-between}.date-range-picker-calendar .react-datepicker__day{align-items:center;border-radius:.5rem;color:var(--foreground);display:inline-flex;font-size:.875rem;height:2.25rem;justify-content:center;line-height:2.25rem;margin:.125rem 0;width:2.25rem}.date-range-picker-calendar .react-datepicker__day--outside-month{color:var(--muted-foreground);opacity:.55}.date-range-picker-calendar .react-datepicker__day:hover{background-color:var(--muted);border-radius:.5rem}.date-range-picker-calendar .react-datepicker__day--today{background-color:var(--muted);color:var(--foreground);font-weight:600}.date-range-picker-calendar .react-datepicker__day--keyboard-selected,.date-range-picker-calendar .react-datepicker__day--selected{background-color:var(--primary);color:var(--primary-foreground);font-weight:500}.date-range-picker-calendar .react-datepicker__day--keyboard-selected:hover,.date-range-picker-calendar .react-datepicker__day--selected:hover{background-color:var(--primary);color:var(--primary-foreground);filter:brightness(.95)}.date-range-picker-calendar .react-datepicker__day--in-range,.date-range-picker-calendar .react-datepicker__day--in-selecting-range{background-color:color-mix(in srgb,var(--primary) 18%,transparent);color:var(--primary)}.date-range-picker-calendar .react-datepicker__day--range-end,.date-range-picker-calendar .react-datepicker__day--range-start{background-color:var(--primary);color:var(--primary-foreground)}.date-range-picker-calendar .react-datepicker__day--disabled{color:var(--muted-foreground);cursor:not-allowed;opacity:.4}.date-range-picker-calendar .react-datepicker__children-container{margin:0;padding:0;width:auto}.date-range-picker-footer{align-items:center;display:flex;justify-content:space-between;margin-top:.75rem;padding-top:.75rem;width:100%}.date-range-picker-action{align-items:center;background-color:color-mix(in srgb,var(--primary) 10%,transparent);border:0;border-radius:.5rem;color:var(--primary);cursor:pointer;display:inline-flex;font-size:.8125rem;font-weight:500;height:2rem;justify-content:center;padding:0 .875rem;transition:background-color .15s}.date-range-picker-action:hover{background-color:color-mix(in srgb,var(--primary) 18%,transparent)}:is(.dark) .date-range-picker-calendar .react-datepicker__day--today{background-color:color-mix(in srgb,var(--muted) 80%,transparent)}:is(.dark) .date-range-picker-action{background-color:color-mix(in srgb,var(--primary) 18%,transparent)}:is(.dark) .date-range-picker-action:hover{background-color:color-mix(in srgb,var(--primary) 28%,transparent)}";
|
|
28058
|
+
styleInject(css_248z$1);
|
|
28059
|
+
|
|
28060
|
+
/**
|
|
28061
|
+
* Date field that can be typed or picked. The text box takes a masked
|
|
28062
|
+
* `DD/MM/YYYY` entry; the trailing button opens the same calendar as before.
|
|
28063
|
+
*/
|
|
28064
|
+
function DateInput({ value, onChange, onBlur, name, id, className, min, max, disabled, placeholder = DATE_FORMAT, ariaLabel, }) {
|
|
28065
|
+
const { open, text, invalid, bounds, inputRef, handleOpenChange, handleTextChange, handleKeyDown, handleTextBlur, toggleOpen, selectDate, clearDate, selectToday, } = useDateInput({ value, onChange, onBlur, min, max, disabled });
|
|
27873
28066
|
// NOTE: We drive `open` ourselves from the button's onClick instead of using
|
|
27874
28067
|
// Radix's <PopoverTrigger> toggle. When this Popover is nested inside the
|
|
27875
28068
|
// modal <SlideOut> (Radix Dialog), the trigger's built-in toggle does not
|
|
@@ -27878,20 +28071,7 @@ function DateInput({ value, onChange, onBlur, name, className, min, max, disable
|
|
|
27878
28071
|
// source of truth — no double-fire, and it works across browsers. `modal`
|
|
27879
28072
|
// lets the open popover own pointer events above the dialog so the calendar
|
|
27880
28073
|
// (portalled to <body>) stays clickable.
|
|
27881
|
-
return (jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsx(PopoverAnchor, { asChild: true, children: jsxs("
|
|
27882
|
-
if (!disabled)
|
|
27883
|
-
handleOpenChange(!open);
|
|
27884
|
-
}, "data-slot": "input", "data-empty": !value || undefined, className: cn('border-input-border flex h-9 w-full min-w-0 cursor-pointer items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-1 text-left shadow-[0_1px_2px_0_#0000000d] transition-[color,box-shadow] outline-none', 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]', 'aria-invalid:ring-destructive/20 aria-invalid:border-destructive', disabled && 'cursor-not-allowed bg-muted/50 text-label', className), children: [jsx("span", { className: cn('truncate text-sm md:text-sm', value ? 'text-foreground' : 'text-placeholder'), children: value ? moment(value).format('DD/MM/YYYY') : placeholder }), jsx("span", { className: "inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground", children: jsx(CalendarDays, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsx(PopoverContent, { align: "start", className: "date-range-picker-popover w-auto p-4", children: jsx(DatePicker, { inline: true, selected: value ?? null, minDate: minDate ? moment(minDate, 'YYYY-MM-DD').toDate() : undefined, maxDate: maxDate ? moment(maxDate, 'YYYY-MM-DD').toDate() : undefined, onChange: (date) => {
|
|
27885
|
-
onChange(date ?? undefined);
|
|
27886
|
-
if (date)
|
|
27887
|
-
setOpen(false);
|
|
27888
|
-
}, calendarClassName: "date-range-picker-calendar", formatWeekDay: (weekday) => weekday.slice(0, 2), renderCustomHeader: ({ monthDate, changeYear, changeMonth, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, }) => (jsx(DatePickerHeader, { monthDate: monthDate, changeYear: changeYear, changeMonth: changeMonth, decreaseMonth: decreaseMonth, increaseMonth: increaseMonth, prevMonthButtonDisabled: prevMonthButtonDisabled, nextMonthButtonDisabled: nextMonthButtonDisabled, minYear: minYear, maxYear: maxYear })), children: jsxs("div", { className: "date-range-picker-footer", children: [jsx("button", { type: "button", onClick: () => {
|
|
27889
|
-
onChange(undefined);
|
|
27890
|
-
setOpen(false);
|
|
27891
|
-
}, className: "date-range-picker-action", children: "Clear" }), jsx("button", { type: "button", onClick: () => {
|
|
27892
|
-
onChange(new Date());
|
|
27893
|
-
setOpen(false);
|
|
27894
|
-
}, className: "date-range-picker-action", children: "Today" })] }) }) })] }));
|
|
28074
|
+
return (jsxs(Popover, { open: open, onOpenChange: handleOpenChange, modal: true, children: [jsx(PopoverAnchor, { asChild: true, children: jsxs("div", { "data-slot": "input", "data-empty": !value || undefined, "data-invalid": invalid || undefined, className: cn('border-input-border flex h-9 w-full min-w-0 items-center gap-2 rounded-md border bg-transparent px-3 py-1 shadow-[0_1px_2px_0_#0000000d] transition-[color,box-shadow] outline-none', 'focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]', 'data-[invalid]:border-destructive data-[invalid]:ring-destructive/20 data-[invalid]:ring-[3px]', disabled && 'cursor-not-allowed bg-muted/50 text-label', className), children: [jsx("input", { ref: inputRef, type: "text", inputMode: "numeric", autoComplete: "off", spellCheck: false, id: id, name: name, value: text, placeholder: placeholder, disabled: disabled, maxLength: DATE_FORMAT.length, "aria-label": ariaLabel, "aria-invalid": invalid || undefined, title: DATE_FORMAT_HINT, onChange: handleTextChange, onKeyDown: handleKeyDown, onBlur: handleTextBlur, className: "placeholder:text-placeholder selection:bg-primary selection:text-primary-foreground h-full min-w-0 flex-1 bg-transparent text-base text-foreground outline-none placeholder:text-sm disabled:cursor-not-allowed disabled:text-label md:text-sm" }), jsx("button", { type: "button", disabled: disabled, "aria-label": CALENDAR_BUTTON_LABEL, "aria-haspopup": "dialog", "aria-expanded": open, onClick: toggleOpen, className: "-mr-1 inline-flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-sm text-muted-foreground outline-none hover:text-foreground focus-visible:ring-ring/50 focus-visible:ring-[2px] disabled:cursor-not-allowed", children: jsx(CalendarDays, { className: "h-4 w-4 stroke-[1.75]" }) })] }) }), jsx(PopoverContent, { align: "start", className: "date-range-picker-popover w-auto p-4", children: jsx(DatePicker, { inline: true, selected: value ?? null, minDate: toBoundDate(bounds.minDate), maxDate: toBoundDate(bounds.maxDate), onChange: selectDate, calendarClassName: "date-range-picker-calendar", formatWeekDay: (weekday) => weekday.slice(0, 2), renderCustomHeader: ({ monthDate, changeYear, changeMonth, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, }) => (jsx(DatePickerHeader, { monthDate: monthDate, changeYear: changeYear, changeMonth: changeMonth, decreaseMonth: decreaseMonth, increaseMonth: increaseMonth, prevMonthButtonDisabled: prevMonthButtonDisabled, nextMonthButtonDisabled: nextMonthButtonDisabled, minYear: bounds.minYear, maxYear: bounds.maxYear })), children: jsxs("div", { className: "date-range-picker-footer", children: [jsx("button", { type: "button", onClick: clearDate, className: "date-range-picker-action", children: "Clear" }), jsx("button", { type: "button", onClick: selectToday, className: "date-range-picker-action", children: "Today" })] }) }) })] }));
|
|
27895
28075
|
}
|
|
27896
28076
|
|
|
27897
28077
|
const DropdownMenu = DropdownMenuPrimitive.Root;
|
|
@@ -57449,7 +57629,11 @@ const SidebarInset = React.forwardRef(({ className, ...props }, ref) => (jsx("ma
|
|
|
57449
57629
|
SidebarInset.displayName = 'SidebarInset';
|
|
57450
57630
|
const SidebarInput = React.forwardRef(({ className, ...props }, ref) => (jsx("input", { ref: ref, "data-sidebar": "input", className: cn('h-8 w-full bg-background text-sm shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring', className), ...props })));
|
|
57451
57631
|
SidebarInput.displayName = 'SidebarInput';
|
|
57452
|
-
const SidebarHeader = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, "data-sidebar": "header",
|
|
57632
|
+
const SidebarHeader = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, "data-sidebar": "header",
|
|
57633
|
+
/* Icon mode drops the asymmetric pl-4/pr-1 (which is there for the expanded
|
|
57634
|
+
brand + collapse button row) so a centred brand lands on the same axis as
|
|
57635
|
+
the nav icons below it. */
|
|
57636
|
+
className: cn('flex flex-col gap-2 pr-1 pt-3 pb-4 pl-4 group-data-[collapsible=icon]:px-0', className), ...props })));
|
|
57453
57637
|
SidebarHeader.displayName = 'SidebarHeader';
|
|
57454
57638
|
const SidebarFooter = React.forwardRef(({ className, ...props }, ref) => (jsx("div", { ref: ref, "data-sidebar": "footer", className: cn('flex flex-col gap-2 pr-1 py-4 pl-4', className), ...props })));
|
|
57455
57639
|
SidebarFooter.displayName = 'SidebarFooter';
|
|
@@ -57475,6 +57659,21 @@ const SidebarMenu = React.forwardRef(({ className, ...props }, ref) => (jsx("ul"
|
|
|
57475
57659
|
SidebarMenu.displayName = 'SidebarMenu';
|
|
57476
57660
|
const SidebarMenuItem = React.forwardRef(({ className, ...props }, ref) => (jsx("li", { ref: ref, "data-sidebar": "menu-item", className: cn('group/menu-item relative', className), ...props })));
|
|
57477
57661
|
SidebarMenuItem.displayName = 'SidebarMenuItem';
|
|
57662
|
+
/**
|
|
57663
|
+
* Owns a nav tooltip's open state so every tooltip closes when the sidebar
|
|
57664
|
+
* expands or collapses. The width transition slides buttons out from under a
|
|
57665
|
+
* stationary pointer without firing `pointerleave`, so Radix otherwise keeps
|
|
57666
|
+
* each tooltip it opened on the way in — they surface together the moment the
|
|
57667
|
+
* rail renders them, and only a fresh hover dismisses them one by one.
|
|
57668
|
+
*/
|
|
57669
|
+
const useSidebarTooltipOpen = () => {
|
|
57670
|
+
const { state } = useSidebar();
|
|
57671
|
+
const [open, setOpen] = React.useState(false);
|
|
57672
|
+
React.useEffect(() => {
|
|
57673
|
+
setOpen(false);
|
|
57674
|
+
}, [state]);
|
|
57675
|
+
return { open, setOpen };
|
|
57676
|
+
};
|
|
57478
57677
|
const sidebarMenuButtonVariants = cva('peer/menu-button relative flex h-9 w-full cursor-pointer items-center gap-2 overflow-hidden rounded-sm px-2.5 py-1.5 text-left text-sm text-sidebar-foreground outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-active-bg data-[active=true]:text-sidebar-foreground data-[state=open]:hover:bg-sidebar-active-bg data-[state=open]:hover:text-sidebar-foreground group-data-[collapsible=icon]:!size-9 group-data-[collapsible=icon]:!p-2 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:[&>span]:hidden [&>span]:truncate [&>svg]:size-4 [&>svg]:shrink-0', {
|
|
57479
57678
|
variants: {
|
|
57480
57679
|
variant: {
|
|
@@ -57497,13 +57696,15 @@ const SidebarMenuButton = React.forwardRef(({ asChild = false, isActive = false,
|
|
|
57497
57696
|
const { state } = useSidebar();
|
|
57498
57697
|
const [innerRef, setRef] = useForwardedRef(ref);
|
|
57499
57698
|
const truncatedText = useTruncatedText(innerRef);
|
|
57699
|
+
const { open: tooltipOpen, setOpen: setTooltipOpen } = useSidebarTooltipOpen();
|
|
57500
57700
|
const button = (jsx(Comp, { ref: setRef, "data-sidebar": "menu-button", "data-size": size, "data-active": isActive, className: cn(sidebarMenuButtonVariants({ variant, size }), className), ...props }));
|
|
57501
57701
|
// Tooltip when collapsed (icon-only) OR when the expanded label is clipped.
|
|
57502
57702
|
// The Tooltip structure stays mounted and only the content is conditional,
|
|
57503
57703
|
// so toggling it never remounts the button.
|
|
57504
57704
|
const collapsed = !!tooltip && state === 'collapsed';
|
|
57505
57705
|
const collapsedProps = typeof tooltip === 'string' ? { children: tooltip } : tooltip;
|
|
57506
|
-
|
|
57706
|
+
const tooltipContent = collapsed ? (jsx(TooltipContent, { side: "right", align: "center", className: TRUNCATION_TOOLTIP_CLASS, ...collapsedProps })) : truncatedText ? (jsx(TooltipContent, { side: "right", align: "center", className: TRUNCATION_TOOLTIP_CLASS, children: truncatedText })) : null;
|
|
57707
|
+
return (jsxs(Tooltip, { open: !!tooltipContent && tooltipOpen, onOpenChange: setTooltipOpen, children: [jsx(TooltipTrigger, { asChild: true, children: button }), tooltipContent] }));
|
|
57507
57708
|
});
|
|
57508
57709
|
SidebarMenuButton.displayName = 'SidebarMenuButton';
|
|
57509
57710
|
const SidebarMenuAction = React.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
|
|
@@ -57527,9 +57728,10 @@ const SidebarMenuSubButton = React.forwardRef(({ asChild = false, size = 'md', i
|
|
|
57527
57728
|
const Comp = asChild ? Slot : 'a';
|
|
57528
57729
|
const [innerRef, setRef] = useForwardedRef(ref);
|
|
57529
57730
|
const truncatedText = useTruncatedText(innerRef);
|
|
57731
|
+
const { open: tooltipOpen, setOpen: setTooltipOpen } = useSidebarTooltipOpen();
|
|
57530
57732
|
const button = (jsx(Comp, { ref: setRef, "data-sidebar": "menu-sub-button", "data-size": size, "data-active": isActive, className: cn('relative flex h-9 w-full min-w-0 cursor-pointer items-center gap-2 overflow-hidden rounded-sm pl-3 pr-1 py-1.5 text-left text-sidebar-foreground/80 outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span]:truncate [&>svg]:size-4 [&>svg]:shrink-0', 'data-[active=true]:bg-sidebar-primary data-[active=true]:text-sidebar-primary-foreground', size === 'sm' && 'text-xs', size === 'md' && 'text-sm', 'group-data-[collapsible=icon]:hidden', className), ...props }));
|
|
57531
57733
|
// Keep the Tooltip mounted; render the content only when the label is clipped.
|
|
57532
|
-
return (jsxs(Tooltip, { children: [jsx(TooltipTrigger, { asChild: true, children: button }), truncatedText && (jsx(TooltipContent, { side: "right", align: "center", className: TRUNCATION_TOOLTIP_CLASS, children: truncatedText }))] }));
|
|
57734
|
+
return (jsxs(Tooltip, { open: !!truncatedText && tooltipOpen, onOpenChange: setTooltipOpen, children: [jsx(TooltipTrigger, { asChild: true, children: button }), truncatedText && (jsx(TooltipContent, { side: "right", align: "center", className: TRUNCATION_TOOLTIP_CLASS, children: truncatedText }))] }));
|
|
57533
57735
|
});
|
|
57534
57736
|
SidebarMenuSubButton.displayName = 'SidebarMenuSubButton';
|
|
57535
57737
|
const Collapsible = CollapsiblePrimitive.Root;
|
|
@@ -65799,6 +66001,15 @@ const DEFAULT_SIDEBAR_WIDTH = '248px';
|
|
|
65799
66001
|
/** Green pill marking the active top-level item. Rendered in-flow as the row's
|
|
65800
66002
|
* first flex child (hidden when the sidebar collapses to icons). */
|
|
65801
66003
|
const ActiveRail = () => (jsx("span", { "aria-hidden": "true", className: "pointer-events-none h-9 w-[4px] shrink-0 rounded-full bg-sidebar-primary group-data-[collapsible=icon]:hidden" }));
|
|
66004
|
+
/** Collapsed, the rail is also the way back into the menu: clicking any nav
|
|
66005
|
+
* item opens the sidebar, not just the brand. */
|
|
66006
|
+
const useCollapsedSidebar = () => {
|
|
66007
|
+
const { state, isMobile, setOpen } = useSidebar();
|
|
66008
|
+
return {
|
|
66009
|
+
collapsed: !isMobile && state === 'collapsed',
|
|
66010
|
+
expandSidebar: () => setOpen(true),
|
|
66011
|
+
};
|
|
66012
|
+
};
|
|
65802
66013
|
const BrandHeader = ({ brand }) => {
|
|
65803
66014
|
const { state, isMobile, openMobile, toggleSidebar } = useSidebar();
|
|
65804
66015
|
const expanded = state === 'expanded' || (isMobile && openMobile);
|
|
@@ -65810,13 +66021,31 @@ const BrandHeader = ({ brand }) => {
|
|
|
65810
66021
|
const NavLeaf = ({ item, currentPath, onNavigate }) => {
|
|
65811
66022
|
const Icon = item.icon;
|
|
65812
66023
|
const active = isPathActive(currentPath, item.path);
|
|
65813
|
-
|
|
66024
|
+
const { collapsed, expandSidebar } = useCollapsedSidebar();
|
|
66025
|
+
return (jsxs(SidebarMenuItem, { className: cn(active && 'flex items-center gap-1.5 group-data-[collapsible=icon]:block'), children: [active && jsx(ActiveRail, {}), jsxs(SidebarMenuButton, { isActive: active, tooltip: item.label, onClick: () => {
|
|
66026
|
+
if (collapsed)
|
|
66027
|
+
expandSidebar();
|
|
66028
|
+
if (item.path)
|
|
66029
|
+
onNavigate(item.path);
|
|
66030
|
+
}, className: cn(active && 'min-w-0 flex-1 group-data-[collapsible=icon]:flex-none'), children: [Icon && jsx(Icon, {}), jsx("span", { children: item.label })] }), item.badge != null && (jsx(SidebarMenuBadge, { className: "h-5 w-5 min-w-5 rounded-full border border-primary bg-primary/10 p-0 text-primary", children: item.badge }))] }));
|
|
65814
66031
|
};
|
|
65815
66032
|
const NavParent = ({ item, currentPath, onNavigate }) => {
|
|
65816
66033
|
const Icon = item.icon;
|
|
65817
66034
|
const children = (item.children ?? []).filter((s) => s.visible !== false);
|
|
65818
66035
|
const parentActive = children.some((s) => isPathActive(currentPath, s.path));
|
|
65819
|
-
|
|
66036
|
+
const { collapsed, expandSidebar } = useCollapsedSidebar();
|
|
66037
|
+
const [open, setOpen] = useState(parentActive);
|
|
66038
|
+
// Collapsed, the sub-menu is hidden, so a click opens the sidebar and this
|
|
66039
|
+
// group instead of silently toggling something the user cannot see.
|
|
66040
|
+
const handleOpenChange = (next) => {
|
|
66041
|
+
if (!collapsed) {
|
|
66042
|
+
setOpen(next);
|
|
66043
|
+
return;
|
|
66044
|
+
}
|
|
66045
|
+
expandSidebar();
|
|
66046
|
+
setOpen(true);
|
|
66047
|
+
};
|
|
66048
|
+
return (jsx(Collapsible, { asChild: true, open: open, onOpenChange: handleOpenChange, children: jsxs(SidebarMenuItem, { className: "group/collapsible", children: [jsxs("div", { className: cn(parentActive &&
|
|
65820
66049
|
'flex items-center gap-1.5 group-data-[collapsible=icon]:block'), children: [parentActive && jsx(ActiveRail, {}), jsx(CollapsibleTrigger, { asChild: true, children: jsxs(SidebarMenuButton, { isActive: parentActive, tooltip: item.label, className: cn(parentActive &&
|
|
65821
66050
|
'min-w-0 flex-1 group-data-[collapsible=icon]:flex-none'), children: [Icon && jsx(Icon, {}), jsx("span", { children: item.label }), jsx(ChevronRight, { className: "ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90 group-data-[collapsible=icon]:hidden" })] }) })] }), jsx(CollapsibleContent, { children: jsx(SidebarMenuSub, { children: children.map((sub) => {
|
|
65822
66051
|
const SubIcon = sub.icon;
|