@automattic/date-range-picker 1.0.0
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/README.md +80 -0
- package/dist/cjs/button-stack.js +9 -0
- package/dist/cjs/button-stack.js.map +1 -0
- package/dist/cjs/date-inputs.js +37 -0
- package/dist/cjs/date-inputs.js.map +1 -0
- package/dist/cjs/date-range-content.js +194 -0
- package/dist/cjs/date-range-content.js.map +1 -0
- package/dist/cjs/date-range-picker.js +48 -0
- package/dist/cjs/date-range-picker.js.map +1 -0
- package/dist/cjs/datetime.js +56 -0
- package/dist/cjs/datetime.js.map +1 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/presets-listbox.js +18 -0
- package/dist/cjs/presets-listbox.js.map +1 -0
- package/dist/cjs/utils.js +137 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/button-stack.js +6 -0
- package/dist/esm/button-stack.js.map +1 -0
- package/dist/esm/date-inputs.js +34 -0
- package/dist/esm/date-inputs.js.map +1 -0
- package/dist/esm/date-range-content.js +191 -0
- package/dist/esm/date-range-content.js.map +1 -0
- package/dist/esm/date-range-picker.js +45 -0
- package/dist/esm/date-range-picker.js.map +1 -0
- package/dist/esm/datetime.js +50 -0
- package/dist/esm/datetime.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/presets-listbox.js +15 -0
- package/dist/esm/presets-listbox.js.map +1 -0
- package/dist/esm/utils.js +130 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/button-stack.d.ts +8 -0
- package/dist/types/button-stack.d.ts.map +1 -0
- package/dist/types/date-inputs.d.ts +21 -0
- package/dist/types/date-inputs.d.ts.map +1 -0
- package/dist/types/date-range-content.d.ts +39 -0
- package/dist/types/date-range-content.d.ts.map +1 -0
- package/dist/types/date-range-picker.d.ts +25 -0
- package/dist/types/date-range-picker.d.ts.map +1 -0
- package/dist/types/datetime.d.ts +15 -0
- package/dist/types/datetime.d.ts.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/presets-listbox.d.ts +12 -0
- package/dist/types/presets-listbox.d.ts.map +1 -0
- package/dist/types/utils.d.ts +40 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +71 -0
- package/src/button-stack.tsx +17 -0
- package/src/date-inputs.tsx +142 -0
- package/src/date-range-content.tsx +379 -0
- package/src/date-range-picker.tsx +197 -0
- package/src/datetime.ts +58 -0
- package/src/index.ts +11 -0
- package/src/presets-listbox.tsx +65 -0
- package/src/style.scss +72 -0
- package/src/test/date-range-picker.test.tsx +334 -0
- package/src/test/utils.test.ts +58 -0
- package/src/types.d.ts +1 -0
- package/src/utils.ts +174 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.presetDefs = void 0;
|
|
4
|
+
exports.computePresetRange = computePresetRange;
|
|
5
|
+
exports.getActivePresetId = getActivePresetId;
|
|
6
|
+
exports.formatLabel = formatLabel;
|
|
7
|
+
exports.isLast7Days = isLast7Days;
|
|
8
|
+
const i18n_1 = require("@wordpress/i18n");
|
|
9
|
+
const date_fns_1 = require("date-fns");
|
|
10
|
+
const datetime_1 = require("./datetime");
|
|
11
|
+
// Range helpers (inclusive)
|
|
12
|
+
const lastNDays = (date, number) => ({
|
|
13
|
+
from: new Date(date.getFullYear(), date.getMonth(), date.getDate() - (number - 1)),
|
|
14
|
+
to: date,
|
|
15
|
+
});
|
|
16
|
+
const monthToDate = (date) => ({
|
|
17
|
+
from: new Date(date.getFullYear(), date.getMonth(), 1),
|
|
18
|
+
to: date,
|
|
19
|
+
});
|
|
20
|
+
const yearToDate = (date) => ({
|
|
21
|
+
from: new Date(date.getFullYear(), 0, 1),
|
|
22
|
+
to: date,
|
|
23
|
+
});
|
|
24
|
+
const lastTwelveMonths = (date) => ({
|
|
25
|
+
from: new Date(date.getFullYear() - 1, date.getMonth(), date.getDate() + 1),
|
|
26
|
+
to: date,
|
|
27
|
+
});
|
|
28
|
+
const lastThreeYears = (date) => ({
|
|
29
|
+
from: new Date(date.getFullYear() - 3, date.getMonth(), date.getDate() + 1),
|
|
30
|
+
to: date,
|
|
31
|
+
});
|
|
32
|
+
exports.presetDefs = [
|
|
33
|
+
{ id: 'today', label: (0, i18n_1.__)('Today') },
|
|
34
|
+
{ id: 'yesterday', label: (0, i18n_1.__)('Yesterday') },
|
|
35
|
+
{ id: 'last-7-days', label: (0, i18n_1.__)('Last 7 days') },
|
|
36
|
+
{ id: 'last-30-days', label: (0, i18n_1.__)('Last 30 days') },
|
|
37
|
+
{ id: 'last-90-days', label: (0, i18n_1.__)('Last 90 days') },
|
|
38
|
+
{ id: 'month-to-date', label: (0, i18n_1.__)('Month to date') },
|
|
39
|
+
{ id: 'last-12-months', label: (0, i18n_1.__)('Last 12 months') },
|
|
40
|
+
{ id: 'year-to-date', label: (0, i18n_1.__)('Year to date') },
|
|
41
|
+
{ id: 'last-3-years', label: (0, i18n_1.__)('Last 3 years') },
|
|
42
|
+
];
|
|
43
|
+
function computePresetRange(preset, baseDate) {
|
|
44
|
+
switch (preset) {
|
|
45
|
+
case 'today':
|
|
46
|
+
return { from: baseDate, to: baseDate };
|
|
47
|
+
case 'yesterday':
|
|
48
|
+
return {
|
|
49
|
+
from: new Date(baseDate.getFullYear(), baseDate.getMonth(), baseDate.getDate() - 1),
|
|
50
|
+
to: new Date(baseDate.getFullYear(), baseDate.getMonth(), baseDate.getDate() - 1),
|
|
51
|
+
};
|
|
52
|
+
case 'last-7-days':
|
|
53
|
+
return lastNDays(baseDate, 7);
|
|
54
|
+
case 'last-30-days':
|
|
55
|
+
return lastNDays(baseDate, 30);
|
|
56
|
+
case 'last-90-days':
|
|
57
|
+
return lastNDays(baseDate, 90);
|
|
58
|
+
case 'month-to-date':
|
|
59
|
+
return monthToDate(baseDate);
|
|
60
|
+
case 'last-12-months':
|
|
61
|
+
return lastTwelveMonths(baseDate);
|
|
62
|
+
case 'year-to-date':
|
|
63
|
+
return yearToDate(baseDate);
|
|
64
|
+
case 'last-3-years':
|
|
65
|
+
return lastThreeYears(baseDate);
|
|
66
|
+
default:
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function getActivePresetId(from, to, baseDate) {
|
|
71
|
+
if (!from || !to || !baseDate) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
let newFrom = (0, date_fns_1.startOfDay)(from);
|
|
75
|
+
let newTo = (0, date_fns_1.startOfDay)(to);
|
|
76
|
+
if (newFrom.getTime() > newTo.getTime()) {
|
|
77
|
+
const tmp = newFrom;
|
|
78
|
+
newFrom = newTo;
|
|
79
|
+
newTo = tmp;
|
|
80
|
+
}
|
|
81
|
+
const todayStart = (0, date_fns_1.startOfDay)(baseDate);
|
|
82
|
+
const yesterdayStart = (0, date_fns_1.addDays)(todayStart, -1);
|
|
83
|
+
if ((0, date_fns_1.isSameDay)(newFrom, todayStart) && (0, date_fns_1.isSameDay)(newTo, todayStart)) {
|
|
84
|
+
return 'today';
|
|
85
|
+
}
|
|
86
|
+
if ((0, date_fns_1.isSameDay)(newFrom, yesterdayStart) && (0, date_fns_1.isSameDay)(newTo, yesterdayStart)) {
|
|
87
|
+
return 'yesterday';
|
|
88
|
+
}
|
|
89
|
+
if ((0, date_fns_1.isSameDay)(newTo, todayStart)) {
|
|
90
|
+
const diff = (0, date_fns_1.differenceInCalendarDays)(todayStart, newFrom); // inclusive days = diff + 1
|
|
91
|
+
if (diff === 6) {
|
|
92
|
+
return 'last-7-days';
|
|
93
|
+
}
|
|
94
|
+
if (diff === 29) {
|
|
95
|
+
return 'last-30-days';
|
|
96
|
+
}
|
|
97
|
+
if (diff === 89) {
|
|
98
|
+
return 'last-90-days';
|
|
99
|
+
}
|
|
100
|
+
if ((0, date_fns_1.isSameDay)(newFrom, (0, date_fns_1.addYears)(todayStart, -1)) ||
|
|
101
|
+
(0, date_fns_1.isSameDay)(newFrom, (0, date_fns_1.addDays)((0, date_fns_1.addYears)(todayStart, -1), 1))) {
|
|
102
|
+
return 'last-12-months';
|
|
103
|
+
}
|
|
104
|
+
if ((0, date_fns_1.isSameDay)(newFrom, (0, date_fns_1.addYears)(todayStart, -3)) ||
|
|
105
|
+
(0, date_fns_1.isSameDay)(newFrom, (0, date_fns_1.addDays)((0, date_fns_1.addYears)(todayStart, -3), 1))) {
|
|
106
|
+
return 'last-3-years';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if ((0, date_fns_1.isSameDay)(newFrom, (0, date_fns_1.startOfMonth)(todayStart)) && (0, date_fns_1.isSameDay)(newTo, todayStart)) {
|
|
110
|
+
return 'month-to-date';
|
|
111
|
+
}
|
|
112
|
+
if ((0, date_fns_1.isSameDay)(newFrom, (0, date_fns_1.startOfYear)(todayStart)) && (0, date_fns_1.isSameDay)(newTo, todayStart)) {
|
|
113
|
+
return 'year-to-date';
|
|
114
|
+
}
|
|
115
|
+
for (const preset of exports.presetDefs) {
|
|
116
|
+
const range = computePresetRange(preset.id, todayStart);
|
|
117
|
+
if (range &&
|
|
118
|
+
(0, date_fns_1.isSameDay)(newFrom, (0, date_fns_1.startOfDay)(range.from)) &&
|
|
119
|
+
(0, date_fns_1.isSameDay)(newTo, (0, date_fns_1.startOfDay)(range.to))) {
|
|
120
|
+
return preset.id;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
// UI-specific: Date range label for the picker
|
|
126
|
+
function formatLabel(start, end, locale) {
|
|
127
|
+
return (0, i18n_1.sprintf)(
|
|
128
|
+
/* translators: %1$s: start date, %2$s: end date */
|
|
129
|
+
(0, i18n_1.__)('%1$s to %2$s'), (0, datetime_1.formatDate)(start, locale, { dateStyle: 'medium' }), (0, datetime_1.formatDate)(end, locale, { dateStyle: 'medium' }));
|
|
130
|
+
}
|
|
131
|
+
// Determine if the given date range matches the last 7 days preset
|
|
132
|
+
function isLast7Days(range, timezoneString, gmtOffset) {
|
|
133
|
+
const siteToday = (0, datetime_1.parseYmdLocal)((0, datetime_1.formatYmd)(new Date(), timezoneString, gmtOffset)) ??
|
|
134
|
+
new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate());
|
|
135
|
+
return getActivePresetId(range.start, range.end, siteToday) === 'last-7-days';
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { __experimentalHStack as HStack } from '@wordpress/components';
|
|
3
|
+
export function ButtonStack({ children, ...hStackProps }) {
|
|
4
|
+
return (_jsx(HStack, { ...hStackProps, spacing: 3, children: children }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=button-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-stack.js","sourceRoot":"","sources":["../../src/button-stack.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAOvE,MAAM,UAAU,WAAW,CAAE,EAC5B,QAAQ,EACR,GAAG,WAAW,EACyD;IACvE,OAAO,CACN,KAAC,MAAM,OAAM,WAAW,EAAG,OAAO,EAAG,CAAC,YACnC,QAAQ,GACF,CACT,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { __experimentalHStack as HStack, __experimentalVStack as VStack, __experimentalInputControl as InputControl, } from '@wordpress/components';
|
|
3
|
+
import { __ } from '@wordpress/i18n';
|
|
4
|
+
export function DateInputs({ fromStr, toStr, onFromChange, onToChange, todayStr, minStr, fromStyle, toStyle, stack = false, justify = 'flex-start', containerStyle, onFromFocus, onToFocus, onFromBlur, onToBlur, }) {
|
|
5
|
+
if (stack) {
|
|
6
|
+
return (_jsxs(VStack, { as: "div", spacing: 2, className: "daterange-inputs", style: containerStyle, children: [_jsx(InputControl, { type: "date", label: __('Start date'), value: fromStr, onFocus: (e) => {
|
|
7
|
+
onFromFocus?.(e);
|
|
8
|
+
}, onBlur: (e) => {
|
|
9
|
+
onFromBlur?.(e);
|
|
10
|
+
}, onChange: (value) => {
|
|
11
|
+
onFromChange(value ?? '');
|
|
12
|
+
}, autoComplete: "off", min: minStr, max: toStr || todayStr, style: { width: '100%', ...(fromStyle || {}) }, __next40pxDefaultSize: true }), _jsx(InputControl, { type: "date", label: __('End date'), value: toStr, onFocus: (e) => {
|
|
13
|
+
onToFocus?.(e);
|
|
14
|
+
}, onBlur: (e) => {
|
|
15
|
+
onToBlur?.(e);
|
|
16
|
+
}, onChange: (value) => {
|
|
17
|
+
onToChange(value ?? '');
|
|
18
|
+
}, autoComplete: "off", min: fromStr || minStr, style: { width: '100%', ...(toStyle || {}) }, __next40pxDefaultSize: true })] }));
|
|
19
|
+
}
|
|
20
|
+
return (_jsxs(HStack, { as: "div", spacing: 8, justify: justify, className: "daterange-inputs", wrap: false, style: containerStyle, children: [_jsx(InputControl, { type: "date", label: __('Start date'), value: fromStr, onFocus: (e) => {
|
|
21
|
+
onFromFocus?.(e);
|
|
22
|
+
}, onBlur: (e) => {
|
|
23
|
+
onFromBlur?.(e);
|
|
24
|
+
}, onChange: (value) => {
|
|
25
|
+
onFromChange(value ?? '');
|
|
26
|
+
}, autoComplete: "off", min: minStr, max: toStr || todayStr, style: fromStyle, __next40pxDefaultSize: true }), _jsx(InputControl, { type: "date", label: __('End date'), value: toStr, onFocus: (e) => {
|
|
27
|
+
onToFocus?.(e);
|
|
28
|
+
}, onBlur: (e) => {
|
|
29
|
+
onToBlur?.(e);
|
|
30
|
+
}, onChange: (value) => {
|
|
31
|
+
onToChange(value ?? '');
|
|
32
|
+
}, autoComplete: "off", min: fromStr || minStr, style: toStyle, __next40pxDefaultSize: true })] }));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=date-inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-inputs.js","sourceRoot":"","sources":["../../src/date-inputs.tsx"],"names":[],"mappings":";AAAA,OAAO,EACN,oBAAoB,IAAI,MAAM,EAC9B,oBAAoB,IAAI,MAAM,EAC9B,0BAA0B,IAAI,YAAY,GAC1C,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AA2BrC,MAAM,UAAU,UAAU,CAAE,EAC3B,OAAO,EACP,KAAK,EACL,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,OAAO,EACP,KAAK,GAAG,KAAK,EACb,OAAO,GAAG,YAAY,EACtB,cAAc,EACd,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,GACS;IACjB,IAAK,KAAK,EAAG,CAAC;QACb,OAAO,CACN,MAAC,MAAM,IAAC,EAAE,EAAC,KAAK,EAAC,OAAO,EAAG,CAAC,EAAG,SAAS,EAAC,kBAAkB,EAAC,KAAK,EAAG,cAAc,aACjF,KAAC,YAAY,IACZ,IAAI,EAAC,MAAM,EACX,KAAK,EAAG,EAAE,CAAE,YAAY,CAAE,EAC1B,KAAK,EAAG,OAAO,EACf,OAAO,EAAG,CAAE,CAAiC,EAAG,EAAE;wBACjD,WAAW,EAAE,CAAE,CAAC,CAAE,CAAC;oBACpB,CAAC,EACD,MAAM,EAAG,CAAE,CAAiC,EAAG,EAAE;wBAChD,UAAU,EAAE,CAAE,CAAC,CAAE,CAAC;oBACnB,CAAC,EACD,QAAQ,EAAG,CAAE,KAAc,EAAG,EAAE;wBAC/B,YAAY,CAAE,KAAK,IAAI,EAAE,CAAE,CAAC;oBAC7B,CAAC,EACD,YAAY,EAAC,KAAK,EAClB,GAAG,EAAG,MAAM,EACZ,GAAG,EAAG,KAAK,IAAI,QAAQ,EACvB,KAAK,EAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAE,SAAS,IAAI,EAAE,CAAE,EAAE,EACjD,qBAAqB,SACpB,EACF,KAAC,YAAY,IACZ,IAAI,EAAC,MAAM,EACX,KAAK,EAAG,EAAE,CAAE,UAAU,CAAE,EACxB,KAAK,EAAG,KAAK,EACb,OAAO,EAAG,CAAE,CAAiC,EAAG,EAAE;wBACjD,SAAS,EAAE,CAAE,CAAC,CAAE,CAAC;oBAClB,CAAC,EACD,MAAM,EAAG,CAAE,CAAiC,EAAG,EAAE;wBAChD,QAAQ,EAAE,CAAE,CAAC,CAAE,CAAC;oBACjB,CAAC,EACD,QAAQ,EAAG,CAAE,KAAc,EAAG,EAAE;wBAC/B,UAAU,CAAE,KAAK,IAAI,EAAE,CAAE,CAAC;oBAC3B,CAAC,EACD,YAAY,EAAC,KAAK,EAClB,GAAG,EAAG,OAAO,IAAI,MAAM,EACvB,KAAK,EAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAE,OAAO,IAAI,EAAE,CAAE,EAAE,EAC/C,qBAAqB,SACpB,IACM,CACT,CAAC;IACH,CAAC;IAED,OAAO,CACN,MAAC,MAAM,IACN,EAAE,EAAC,KAAK,EACR,OAAO,EAAG,CAAC,EACX,OAAO,EAAG,OAAO,EACjB,SAAS,EAAC,kBAAkB,EAC5B,IAAI,EAAG,KAAK,EACZ,KAAK,EAAG,cAAc,aAEtB,KAAC,YAAY,IACZ,IAAI,EAAC,MAAM,EACX,KAAK,EAAG,EAAE,CAAE,YAAY,CAAE,EAC1B,KAAK,EAAG,OAAO,EACf,OAAO,EAAG,CAAE,CAAiC,EAAG,EAAE;oBACjD,WAAW,EAAE,CAAE,CAAC,CAAE,CAAC;gBACpB,CAAC,EACD,MAAM,EAAG,CAAE,CAAiC,EAAG,EAAE;oBAChD,UAAU,EAAE,CAAE,CAAC,CAAE,CAAC;gBACnB,CAAC,EACD,QAAQ,EAAG,CAAE,KAAc,EAAG,EAAE;oBAC/B,YAAY,CAAE,KAAK,IAAI,EAAE,CAAE,CAAC;gBAC7B,CAAC,EACD,YAAY,EAAC,KAAK,EAClB,GAAG,EAAG,MAAM,EACZ,GAAG,EAAG,KAAK,IAAI,QAAQ,EACvB,KAAK,EAAG,SAAS,EACjB,qBAAqB,SACpB,EACF,KAAC,YAAY,IACZ,IAAI,EAAC,MAAM,EACX,KAAK,EAAG,EAAE,CAAE,UAAU,CAAE,EACxB,KAAK,EAAG,KAAK,EACb,OAAO,EAAG,CAAE,CAAiC,EAAG,EAAE;oBACjD,SAAS,EAAE,CAAE,CAAC,CAAE,CAAC;gBAClB,CAAC,EACD,MAAM,EAAG,CAAE,CAAiC,EAAG,EAAE;oBAChD,QAAQ,EAAE,CAAE,CAAC,CAAE,CAAC;gBACjB,CAAC,EACD,QAAQ,EAAG,CAAE,KAAc,EAAG,EAAE;oBAC/B,UAAU,CAAE,KAAK,IAAI,EAAE,CAAE,CAAC;gBAC3B,CAAC,EACD,YAAY,EAAC,KAAK,EAClB,GAAG,EAAG,OAAO,IAAI,MAAM,EACvB,KAAK,EAAG,OAAO,EACf,qBAAqB,SACpB,IACM,CACT,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DateRangeCalendar, TZDate } from '@automattic/ui';
|
|
3
|
+
import { __experimentalText as Text, Button, __experimentalHStack as HStack, __experimentalVStack as VStack, } from '@wordpress/components';
|
|
4
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
5
|
+
import { startOfMonth, subMonths } from 'date-fns';
|
|
6
|
+
import { useState } from 'react';
|
|
7
|
+
import { ButtonStack } from './button-stack';
|
|
8
|
+
import { DateInputs } from './date-inputs';
|
|
9
|
+
import { formatYmd, formatSiteYmd, parseYmdLocal } from './datetime';
|
|
10
|
+
import { PresetsListbox } from './presets-listbox';
|
|
11
|
+
import { computePresetRange, getActivePresetId, presetDefs } from './utils';
|
|
12
|
+
export function DateRangeContent(props) {
|
|
13
|
+
const { isSmall, showTwoMonths = false, fromDraft, toDraft, fromStr, toStr, setFromDraft, setToDraft, setFromStr, setToStr, timezoneString, gmtOffset, onChange, onClose, compositeActiveId, setCompositeActiveId, today, todayStr, mobileLabelId, desktopLabelId, disableFuture = true, disabledBefore, defaultFallbackPreset = 'last-7-days', hiddenPresets, inputsProps, } = props;
|
|
14
|
+
// Avoid passing invalid or empty time zones to Intl consumers
|
|
15
|
+
const isValidIanaTimeZone = (timeZone) => {
|
|
16
|
+
if (!timeZone) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
// Will throw for invalid IANA identifiers (including empty strings)
|
|
21
|
+
Intl.DateTimeFormat('en-US', { timeZone: timeZone });
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch (_e) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const timeZoneForCalendar = isValidIanaTimeZone(timezoneString) ? timezoneString : undefined;
|
|
29
|
+
const [isTyping, setIsTyping] = useState(false);
|
|
30
|
+
const [inputsVersion, setInputsVersion] = useState(0);
|
|
31
|
+
const clear = () => {
|
|
32
|
+
setFromDraft(undefined);
|
|
33
|
+
setToDraft(undefined);
|
|
34
|
+
setFromStr('');
|
|
35
|
+
setToStr('');
|
|
36
|
+
setIsTyping(false);
|
|
37
|
+
// Force controlled inputs to remount so any internal buffers are reset
|
|
38
|
+
setInputsVersion((version) => version + 1);
|
|
39
|
+
};
|
|
40
|
+
const canDefaultApply = !fromDraft && !toDraft && !fromStr && !toStr && !isTyping;
|
|
41
|
+
const defaultPresetLabel = presetDefs.find((p) => p.id === defaultFallbackPreset)?.label || __('default range');
|
|
42
|
+
const apply = () => {
|
|
43
|
+
if (fromDraft && toDraft) {
|
|
44
|
+
const [startPoint, endPoint] = fromDraft <= toDraft ? [fromDraft, toDraft] : [toDraft, fromDraft];
|
|
45
|
+
onChange({ start: startPoint, end: endPoint });
|
|
46
|
+
onClose?.();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (canDefaultApply) {
|
|
50
|
+
const range = computePresetRange(defaultFallbackPreset, today);
|
|
51
|
+
if (range) {
|
|
52
|
+
onChange({ start: range.from, end: range.to });
|
|
53
|
+
onClose?.();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const setPreset = (id) => {
|
|
58
|
+
const range = computePresetRange(id, today);
|
|
59
|
+
if (!range) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
setFromDraft(range.from);
|
|
63
|
+
setToDraft(range.to);
|
|
64
|
+
setFromStr(formatYmd(range.from, timezoneString, gmtOffset));
|
|
65
|
+
setToStr(formatYmd(range.to, timezoneString, gmtOffset));
|
|
66
|
+
onChange({ start: range.from, end: range.to });
|
|
67
|
+
onClose?.();
|
|
68
|
+
};
|
|
69
|
+
const activePresetId = (() => {
|
|
70
|
+
const preset = getActivePresetId(fromDraft, toDraft, today);
|
|
71
|
+
if (preset) {
|
|
72
|
+
return preset;
|
|
73
|
+
}
|
|
74
|
+
// Only mark "custom" when both dates are present and do not match a known preset
|
|
75
|
+
if (fromDraft && toDraft) {
|
|
76
|
+
return 'custom';
|
|
77
|
+
}
|
|
78
|
+
// When cleared or incomplete, highlight nothing
|
|
79
|
+
return undefined;
|
|
80
|
+
})();
|
|
81
|
+
// Site “today” as a site-day Date
|
|
82
|
+
const siteToday = parseYmdLocal(formatYmd(today, timezoneString, gmtOffset)) ??
|
|
83
|
+
new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
|
84
|
+
// Month anchors in site time
|
|
85
|
+
const siteMonthStart = startOfMonth(siteToday);
|
|
86
|
+
const prevMonthStart = subMonths(siteMonthStart, 1);
|
|
87
|
+
// Build calendar month refs
|
|
88
|
+
const makeTZMonthFromDate = (d) => timeZoneForCalendar
|
|
89
|
+
? new TZDate(Date.UTC(d.getFullYear(), d.getMonth(), 1, 12), timeZoneForCalendar)
|
|
90
|
+
: new Date(d.getFullYear(), d.getMonth(), 1);
|
|
91
|
+
const defaultMonth = showTwoMonths
|
|
92
|
+
? makeTZMonthFromDate(prevMonthStart)
|
|
93
|
+
: makeTZMonthFromDate(siteMonthStart);
|
|
94
|
+
const endMonth = makeTZMonthFromDate(siteMonthStart);
|
|
95
|
+
// Use TZDate for calendar selection when a valid IANA time zone is available
|
|
96
|
+
const selected = timeZoneForCalendar && (fromDraft || toDraft)
|
|
97
|
+
? {
|
|
98
|
+
from: fromDraft ? new TZDate(+fromDraft, timeZoneForCalendar) : undefined,
|
|
99
|
+
to: toDraft ? new TZDate(+toDraft, timeZoneForCalendar) : undefined,
|
|
100
|
+
}
|
|
101
|
+
: { from: fromDraft ?? undefined, to: toDraft ?? undefined };
|
|
102
|
+
const disabledMatcher = (() => {
|
|
103
|
+
const matchers = [];
|
|
104
|
+
if (disableFuture) {
|
|
105
|
+
matchers.push({ after: today });
|
|
106
|
+
}
|
|
107
|
+
if (disabledBefore) {
|
|
108
|
+
matchers.push({ before: disabledBefore });
|
|
109
|
+
}
|
|
110
|
+
if (matchers.length === 0) {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
return matchers.length === 1 ? matchers[0] : matchers;
|
|
114
|
+
})();
|
|
115
|
+
const minInputStr = disabledBefore ? formatSiteYmd(disabledBefore) : undefined;
|
|
116
|
+
return (_jsxs(VStack, { as: "div", spacing: 3, style: { padding: 12 }, children: [_jsx(Text, { as: "div", weight: 600, align: "center", size: "smallTitle", children: __('Date Range') }), isSmall ? (_jsxs(VStack, { as: "div", spacing: 2, children: [_jsx(PresetsListbox, { labelId: mobileLabelId, activePresetId: activePresetId, onSelect: setPreset, compositeActiveId: compositeActiveId, setCompositeActiveId: setCompositeActiveId, hiddenPresets: hiddenPresets }), _jsx(DateInputs, { fromStr: fromStr, toStr: toStr, onFromChange: (value) => {
|
|
117
|
+
setFromStr(value);
|
|
118
|
+
const parsed = value ? parseYmdLocal(value) || undefined : undefined;
|
|
119
|
+
setFromDraft(parsed);
|
|
120
|
+
setIsTyping(Boolean(value || toStr));
|
|
121
|
+
}, onToChange: (value) => {
|
|
122
|
+
setToStr(value);
|
|
123
|
+
const parsed = value ? parseYmdLocal(value) || undefined : undefined;
|
|
124
|
+
setToDraft(parsed);
|
|
125
|
+
setIsTyping(Boolean(fromStr || value));
|
|
126
|
+
}, todayStr: todayStr, minStr: minInputStr, onFromFocus: (e) => {
|
|
127
|
+
setIsTyping(true);
|
|
128
|
+
inputsProps?.onStartFocus?.(e);
|
|
129
|
+
}, onToFocus: (e) => {
|
|
130
|
+
setIsTyping(true);
|
|
131
|
+
inputsProps?.onEndFocus?.(e);
|
|
132
|
+
}, onFromBlur: (e) => {
|
|
133
|
+
if (!fromStr && !toStr) {
|
|
134
|
+
setIsTyping(false);
|
|
135
|
+
}
|
|
136
|
+
inputsProps?.onStartBlur?.(e);
|
|
137
|
+
}, onToBlur: (e) => {
|
|
138
|
+
if (!fromStr && !toStr) {
|
|
139
|
+
setIsTyping(false);
|
|
140
|
+
}
|
|
141
|
+
inputsProps?.onEndBlur?.(e);
|
|
142
|
+
}, stack: true, fromStyle: { minWidth: 140 }, toStyle: { minWidth: 140 } }, `inputs-${inputsVersion}-mobile`)] })) : (_jsx(HStack, { as: "div", spacing: 4, justify: "flex-end", className: "daterange-inputs", wrap: false, style: { width: '100%' }, children: _jsx(DateInputs, { fromStr: fromStr, toStr: toStr, onFromChange: (value) => {
|
|
143
|
+
setFromStr(value);
|
|
144
|
+
const parsed = value ? parseYmdLocal(value) || undefined : undefined;
|
|
145
|
+
setFromDraft(parsed);
|
|
146
|
+
setIsTyping(Boolean(value || toStr));
|
|
147
|
+
}, onToChange: (value) => {
|
|
148
|
+
setToStr(value);
|
|
149
|
+
const parsed = value ? parseYmdLocal(value) || undefined : undefined;
|
|
150
|
+
setToDraft(parsed);
|
|
151
|
+
setIsTyping(Boolean(fromStr || value));
|
|
152
|
+
}, todayStr: todayStr, minStr: minInputStr, onFromFocus: (e) => {
|
|
153
|
+
setIsTyping(true);
|
|
154
|
+
inputsProps?.onStartFocus?.(e);
|
|
155
|
+
}, onToFocus: (e) => {
|
|
156
|
+
setIsTyping(true);
|
|
157
|
+
inputsProps?.onEndFocus?.(e);
|
|
158
|
+
}, onFromBlur: (e) => {
|
|
159
|
+
if (!fromStr && !toStr) {
|
|
160
|
+
setIsTyping(false);
|
|
161
|
+
}
|
|
162
|
+
inputsProps?.onStartBlur?.(e);
|
|
163
|
+
}, onToBlur: (e) => {
|
|
164
|
+
if (!fromStr && !toStr) {
|
|
165
|
+
setIsTyping(false);
|
|
166
|
+
}
|
|
167
|
+
inputsProps?.onEndBlur?.(e);
|
|
168
|
+
}, fromStyle: { minWidth: 220, flex: '0 0 auto' }, toStyle: { minWidth: 220, flex: '0 0 auto' }, justify: "flex-end", containerStyle: { width: '100%' } }, `inputs-${inputsVersion}-desktop`) })), _jsxs(HStack, { as: "div", spacing: 4, justify: "flex-start", className: "daterange-body", wrap: false, children: [!isSmall && (_jsx(PresetsListbox, { labelId: desktopLabelId, activePresetId: activePresetId, onSelect: setPreset, compositeActiveId: compositeActiveId, setCompositeActiveId: setCompositeActiveId, hiddenPresets: hiddenPresets })), _jsx("div", { className: "daterange-calendar", children: _jsx(DateRangeCalendar, { timeZone: timeZoneForCalendar, numberOfMonths: isSmall ? 1 : 2, defaultMonth: defaultMonth, endMonth: endMonth, disabled: disabledMatcher, excludeDisabled: true, selected: selected, onSelect: (range) => {
|
|
169
|
+
const toNative = (d) => (d ? new Date(d.getTime()) : undefined);
|
|
170
|
+
if (range?.from) {
|
|
171
|
+
const from = toNative(range.from);
|
|
172
|
+
setFromDraft(from);
|
|
173
|
+
if (from) {
|
|
174
|
+
setFromStr(formatYmd(from, timezoneString, gmtOffset));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (range?.to) {
|
|
178
|
+
const to = toNative(range.to);
|
|
179
|
+
setToDraft(to);
|
|
180
|
+
if (to) {
|
|
181
|
+
setToStr(formatYmd(to, timezoneString, gmtOffset));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
setIsTyping(false);
|
|
185
|
+
} }) })] }), _jsxs(ButtonStack, { as: "div", justify: "flex-end", children: [_jsx(Button, { variant: "secondary", onClick: clear, children: __('Clear') }), _jsx(Button, { variant: "primary", onClick: apply, disabled: (!fromDraft || !toDraft) && !canDefaultApply, "aria-label":
|
|
186
|
+
/* translators: %s is the preset label, e.g. 'Last 30 days' */
|
|
187
|
+
canDefaultApply ? sprintf(__('Apply %s'), defaultPresetLabel) : __('Apply'), children:
|
|
188
|
+
/* translators: %s is the preset label, e.g. 'Last 30 days' */
|
|
189
|
+
canDefaultApply ? sprintf(__('Apply %s'), defaultPresetLabel) : __('Apply') })] })] }));
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=date-range-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range-content.js","sourceRoot":"","sources":["../../src/date-range-content.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Dropdown, Tooltip, Button } from '@wordpress/components';
|
|
3
|
+
import { useMediaQuery, useInstanceId } from '@wordpress/compose';
|
|
4
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
5
|
+
import { calendar } from '@wordpress/icons';
|
|
6
|
+
import { useMemo, useState } from 'react';
|
|
7
|
+
import { DateRangeContent } from './date-range-content';
|
|
8
|
+
import { parseYmdLocal, formatYmd, formatSiteYmd } from './datetime';
|
|
9
|
+
import { formatLabel } from './utils';
|
|
10
|
+
import './style.scss';
|
|
11
|
+
export function DateRangePicker({ start, end, onChange, gmtOffset, timezoneString, locale, disableFuture = true, disabledBefore, defaultFallbackPreset = 'last-7-days', hiddenPresets, inputsProps, }) {
|
|
12
|
+
const isSmall = useMediaQuery('(max-width: 600px)');
|
|
13
|
+
// Use a wider breakpoint to decide when two calendars can fit comfortably
|
|
14
|
+
const showTwoMonths = useMediaQuery('(min-width: 900px)');
|
|
15
|
+
const instanceId = useInstanceId(DateRangePicker, 'daterange');
|
|
16
|
+
const mobileLabelId = `presets-label-${instanceId}-mobile`;
|
|
17
|
+
const desktopLabelId = `presets-label-${instanceId}-desktop`;
|
|
18
|
+
const label = formatLabel(start, end, locale);
|
|
19
|
+
// Reset internal draft state when key inputs change by remounting the inner component
|
|
20
|
+
const resetKey = [
|
|
21
|
+
formatSiteYmd(start),
|
|
22
|
+
formatSiteYmd(end),
|
|
23
|
+
timezoneString ?? '',
|
|
24
|
+
gmtOffset ?? '',
|
|
25
|
+
].join('|');
|
|
26
|
+
return (_jsx(Dropdown, { popoverProps: { className: 'daterange-popover' }, renderToggle: ({ onToggle, isOpen }) => (_jsx(Tooltip, { text: __('Select a date range'), placement: "top", children: _jsx("div", { className: "daterange-input__toggle", children: _jsx(Button, { type: "button", variant: "tertiary", onClick: onToggle, "aria-haspopup": "dialog", "aria-expanded": isOpen, "aria-label": sprintf(
|
|
27
|
+
/* Translators: %s: date range label */
|
|
28
|
+
__('Date range: %s. Activate to open calendar.'), label), className: "daterange-input__field", icon: calendar, iconPosition: "right", children: _jsx("span", { "aria-hidden": "true", className: "daterange-input__text", children: label }) }) }) })), renderContent: ({ onClose }) => (_jsx(DateRangePickerInner, { isSmall: isSmall, showTwoMonths: showTwoMonths, start: start, end: end, timezoneString: timezoneString, gmtOffset: gmtOffset, onChange: onChange, onClose: onClose, mobileLabelId: mobileLabelId, desktopLabelId: desktopLabelId, disableFuture: disableFuture, disabledBefore: disabledBefore, defaultFallbackPreset: defaultFallbackPreset, hiddenPresets: hiddenPresets, inputsProps: inputsProps }, resetKey)) }));
|
|
29
|
+
}
|
|
30
|
+
function DateRangePickerInner({ isSmall, showTwoMonths, start, end, timezoneString, gmtOffset, onChange, onClose, mobileLabelId, desktopLabelId, disableFuture, disabledBefore, defaultFallbackPreset, hiddenPresets, inputsProps, }) {
|
|
31
|
+
const [fromDraft, setFromDraft] = useState(() => start);
|
|
32
|
+
const [toDraft, setToDraft] = useState(() => end);
|
|
33
|
+
const [fromStr, setFromStr] = useState(() => formatSiteYmd(start));
|
|
34
|
+
const [toStr, setToStr] = useState(() => formatSiteYmd(end));
|
|
35
|
+
// Tracks the keyboard-focused preset in the listbox (roving focus), not the selected preset.
|
|
36
|
+
const [compositeActiveId, setCompositeActiveId] = useState(null);
|
|
37
|
+
const today = useMemo(() => {
|
|
38
|
+
const parsed = parseYmdLocal(formatYmd(new Date(), timezoneString, gmtOffset));
|
|
39
|
+
// Fallback to local midnight if parsing ever fails
|
|
40
|
+
return (parsed ?? new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()));
|
|
41
|
+
}, [timezoneString, gmtOffset]);
|
|
42
|
+
const todayStr = useMemo(() => formatSiteYmd(today), [today]);
|
|
43
|
+
return (_jsx(DateRangeContent, { isSmall: isSmall, fromDraft: fromDraft, toDraft: toDraft, fromStr: fromStr, toStr: toStr, setFromDraft: setFromDraft, setToDraft: setToDraft, setFromStr: setFromStr, setToStr: setToStr, timezoneString: timezoneString, gmtOffset: gmtOffset, onChange: onChange, onClose: onClose, compositeActiveId: compositeActiveId, setCompositeActiveId: setCompositeActiveId, today: today, todayStr: todayStr, mobileLabelId: mobileLabelId, desktopLabelId: desktopLabelId, disableFuture: disableFuture, disabledBefore: disabledBefore, showTwoMonths: showTwoMonths, defaultFallbackPreset: defaultFallbackPreset, hiddenPresets: hiddenPresets, inputsProps: inputsProps }));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=date-range-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-range-picker.js","sourceRoot":"","sources":["../../src/date-range-picker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { dateI18n } from '@wordpress/date';
|
|
2
|
+
import { parse, isValid, format } from 'date-fns';
|
|
3
|
+
const YMD_REGEX = /^\d{4}-\d{2}-\d{2}$/;
|
|
4
|
+
export function formatDate(date, locale, formatOptions = { dateStyle: 'medium' }) {
|
|
5
|
+
if (isNaN(date.getTime())) {
|
|
6
|
+
return '';
|
|
7
|
+
}
|
|
8
|
+
return new Intl.DateTimeFormat(locale, formatOptions).format(date);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Parse a date string in the format "YYYY-MM-DD" (local time).
|
|
12
|
+
*/
|
|
13
|
+
export function parseYmdLocal(value) {
|
|
14
|
+
if (!YMD_REGEX.test(value)) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const parsed = parse(value, 'yyyy-MM-dd', new Date());
|
|
18
|
+
if (!isValid(parsed)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
// Ensure strict match (reject overflows like 2023-02-31 -> 2023-03-03)
|
|
22
|
+
return format(parsed, 'yyyy-MM-dd') === value ? parsed : null;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Format a date as a site calendar day (YYYY-MM-DD).
|
|
26
|
+
*/
|
|
27
|
+
export function formatYmd(date, timezoneString, gmtOffset) {
|
|
28
|
+
if (timezoneString) {
|
|
29
|
+
return dateI18n('Y-m-d', date, timezoneString);
|
|
30
|
+
}
|
|
31
|
+
if (typeof gmtOffset === 'number') {
|
|
32
|
+
const shifted = new Date(date.getTime() + gmtOffset * 60 * 60 * 1000);
|
|
33
|
+
const year = shifted.getUTCFullYear();
|
|
34
|
+
const month = String(shifted.getUTCMonth() + 1).padStart(2, '0');
|
|
35
|
+
const day = String(shifted.getUTCDate()).padStart(2, '0');
|
|
36
|
+
return `${year}-${month}-${day}`;
|
|
37
|
+
}
|
|
38
|
+
return dateI18n('Y-m-d', date);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Format a Date that already represents a site calendar day.
|
|
42
|
+
* This avoids reapplying timezone math to dates coming from the picker or URL.
|
|
43
|
+
*/
|
|
44
|
+
export function formatSiteYmd(date) {
|
|
45
|
+
const year = date.getFullYear();
|
|
46
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
47
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
48
|
+
return `${year}-${month}-${day}`;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=datetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../src/datetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAExC,MAAM,UAAU,UAAU,CACzB,IAAU,EACV,MAAc,EACd,gBAA4C,EAAE,SAAS,EAAE,QAAQ,EAAE;IAEnE,IAAK,KAAK,CAAE,IAAI,CAAC,OAAO,EAAE,CAAE,EAAG,CAAC;QAC/B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,cAAc,CAAE,MAAM,EAAE,aAAa,CAAE,CAAC,MAAM,CAAE,IAAI,CAAE,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAE,KAAa;IAC3C,IAAK,CAAE,SAAS,CAAC,IAAI,CAAE,KAAK,CAAE,EAAG,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAE,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAE,CAAC;IACxD,IAAK,CAAE,OAAO,CAAE,MAAM,CAAE,EAAG,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,uEAAuE;IACvE,OAAO,MAAM,CAAE,MAAM,EAAE,YAAY,CAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAE,IAAU,EAAE,cAAuB,EAAE,SAAkB;IACjF,IAAK,cAAc,EAAG,CAAC;QACtB,OAAO,QAAQ,CAAE,OAAO,EAAE,IAAI,EAAE,cAAc,CAAE,CAAC;IAClD,CAAC;IACD,IAAK,OAAO,SAAS,KAAK,QAAQ,EAAG,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAE,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAE,CAAC;QACxE,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAE,CAAC,QAAQ,CAAE,CAAC,EAAE,GAAG,CAAE,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,CAAE,OAAO,CAAC,UAAU,EAAE,CAAE,CAAC,QAAQ,CAAE,CAAC,EAAE,GAAG,CAAE,CAAC;QAC9D,OAAO,GAAI,IAAK,IAAK,KAAM,IAAK,GAAI,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAE,OAAO,EAAE,IAAI,CAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAE,IAAU;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAE,CAAC,QAAQ,CAAE,CAAC,EAAE,GAAG,CAAE,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,CAAE,IAAI,CAAC,OAAO,EAAE,CAAE,CAAC,QAAQ,CAAE,CAAC,EAAE,GAAG,CAAE,CAAC;IACxD,OAAO,GAAI,IAAK,IAAK,KAAM,IAAK,GAAI,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EACN,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,UAAU,GACV,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, __experimentalVStack as VStack, Composite, VisuallyHidden, } from '@wordpress/components';
|
|
3
|
+
import { __ } from '@wordpress/i18n';
|
|
4
|
+
import { presetDefs } from './utils';
|
|
5
|
+
export function PresetsListbox({ labelId, activePresetId, onSelect, compositeActiveId, setCompositeActiveId, hiddenPresets, }) {
|
|
6
|
+
const items = [
|
|
7
|
+
...presetDefs,
|
|
8
|
+
{ id: 'custom', label: __('Custom') },
|
|
9
|
+
].filter((item) => !hiddenPresets?.includes(item.id));
|
|
10
|
+
return (_jsxs(VStack, { justify: "flex-start", alignment: "stretch", spacing: 1, className: "daterange-presets", children: [_jsx(VisuallyHidden, { id: labelId, children: __('Date range presets') }), _jsx(Composite, { "aria-labelledby": labelId, activeId: compositeActiveId ?? undefined, setActiveId: (id) => setCompositeActiveId(id ?? null), focusLoop: true, virtualFocus: true, role: "listbox", children: _jsx(VStack, { justify: "flex-start", alignment: "stretch", spacing: 1, children: items.map((preset) => {
|
|
11
|
+
const isSelected = activePresetId === preset.id;
|
|
12
|
+
return (_jsx(Composite.Item, { id: preset.id, render: _jsx(Button, { size: "compact", variant: isSelected ? 'primary' : undefined }), onClick: () => onSelect(preset.id), role: "option", "aria-selected": isSelected || undefined, className: "preset-listbox__item", children: preset.label }, preset.id));
|
|
13
|
+
}) }) })] }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=presets-listbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets-listbox.js","sourceRoot":"","sources":["../../src/presets-listbox.tsx"],"names":[],"mappings":";AAAA,OAAO,EACN,MAAM,EACN,oBAAoB,IAAI,MAAM,EAC9B,SAAS,EACT,cAAc,GACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAYrC,MAAM,UAAU,cAAc,CAAE,EAC/B,OAAO,EACP,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACQ;IACrB,MAAM,KAAK,GAAqD;QAC/D,GAAG,UAAU;QACb,EAAE,EAAE,EAAE,QAAiB,EAAE,KAAK,EAAE,EAAE,CAAE,QAAQ,CAAE,EAAE;KAChD,CAAC,MAAM,CAAE,CAAE,IAAI,EAAG,EAAE,CAAC,CAAE,aAAa,EAAE,QAAQ,CAAE,IAAI,CAAC,EAAE,CAAE,CAAE,CAAC;IAE7D,OAAO,CACN,MAAC,MAAM,IAAC,OAAO,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAG,CAAC,EAAG,SAAS,EAAC,mBAAmB,aAC3F,KAAC,cAAc,IAAC,EAAE,EAAG,OAAO,YAAK,EAAE,CAAE,oBAAoB,CAAE,GAAmB,EAC9E,KAAC,SAAS,uBACS,OAAO,EACzB,QAAQ,EAAG,iBAAiB,IAAI,SAAS,EACzC,WAAW,EAAG,CAAE,EAAE,EAAG,EAAE,CAAC,oBAAoB,CAAE,EAAE,IAAI,IAAI,CAAE,EAC1D,SAAS,QACT,YAAY,QACZ,IAAI,EAAC,SAAS,YAEd,KAAC,MAAM,IAAC,OAAO,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAG,CAAC,YACzD,KAAK,CAAC,GAAG,CAAE,CAAE,MAAM,EAAG,EAAE;wBACzB,MAAM,UAAU,GAAG,cAAc,KAAK,MAAM,CAAC,EAAE,CAAC;wBAChD,OAAO,CACN,KAAC,SAAS,CAAC,IAAI,IAEd,EAAE,EAAG,MAAM,CAAC,EAAE,EACd,MAAM,EAAG,KAAC,MAAM,IAAC,IAAI,EAAC,SAAS,EAAC,OAAO,EAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAK,EACjF,OAAO,EAAG,GAAG,EAAE,CAAC,QAAQ,CAAE,MAAM,CAAC,EAAE,CAAE,EACrC,IAAI,EAAC,QAAQ,mBACG,UAAU,IAAI,SAAS,EACvC,SAAS,EAAC,sBAAsB,YAE9B,MAAM,CAAC,KAAK,IARR,MAAM,CAAC,EAAE,CASC,CACjB,CAAC;oBACH,CAAC,CAAE,GACK,GACE,IACJ,CACT,CAAC;AACH,CAAC"}
|