@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.
Files changed (64) hide show
  1. package/README.md +80 -0
  2. package/dist/cjs/button-stack.js +9 -0
  3. package/dist/cjs/button-stack.js.map +1 -0
  4. package/dist/cjs/date-inputs.js +37 -0
  5. package/dist/cjs/date-inputs.js.map +1 -0
  6. package/dist/cjs/date-range-content.js +194 -0
  7. package/dist/cjs/date-range-content.js.map +1 -0
  8. package/dist/cjs/date-range-picker.js +48 -0
  9. package/dist/cjs/date-range-picker.js.map +1 -0
  10. package/dist/cjs/datetime.js +56 -0
  11. package/dist/cjs/datetime.js.map +1 -0
  12. package/dist/cjs/index.js +16 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/presets-listbox.js +18 -0
  15. package/dist/cjs/presets-listbox.js.map +1 -0
  16. package/dist/cjs/utils.js +137 -0
  17. package/dist/cjs/utils.js.map +1 -0
  18. package/dist/esm/button-stack.js +6 -0
  19. package/dist/esm/button-stack.js.map +1 -0
  20. package/dist/esm/date-inputs.js +34 -0
  21. package/dist/esm/date-inputs.js.map +1 -0
  22. package/dist/esm/date-range-content.js +191 -0
  23. package/dist/esm/date-range-content.js.map +1 -0
  24. package/dist/esm/date-range-picker.js +45 -0
  25. package/dist/esm/date-range-picker.js.map +1 -0
  26. package/dist/esm/datetime.js +50 -0
  27. package/dist/esm/datetime.js.map +1 -0
  28. package/dist/esm/index.js +4 -0
  29. package/dist/esm/index.js.map +1 -0
  30. package/dist/esm/presets-listbox.js +15 -0
  31. package/dist/esm/presets-listbox.js.map +1 -0
  32. package/dist/esm/utils.js +130 -0
  33. package/dist/esm/utils.js.map +1 -0
  34. package/dist/tsconfig-cjs.tsbuildinfo +1 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -0
  36. package/dist/types/button-stack.d.ts +8 -0
  37. package/dist/types/button-stack.d.ts.map +1 -0
  38. package/dist/types/date-inputs.d.ts +21 -0
  39. package/dist/types/date-inputs.d.ts.map +1 -0
  40. package/dist/types/date-range-content.d.ts +39 -0
  41. package/dist/types/date-range-content.d.ts.map +1 -0
  42. package/dist/types/date-range-picker.d.ts +25 -0
  43. package/dist/types/date-range-picker.d.ts.map +1 -0
  44. package/dist/types/datetime.d.ts +15 -0
  45. package/dist/types/datetime.d.ts.map +1 -0
  46. package/dist/types/index.d.ts +6 -0
  47. package/dist/types/index.d.ts.map +1 -0
  48. package/dist/types/presets-listbox.d.ts +12 -0
  49. package/dist/types/presets-listbox.d.ts.map +1 -0
  50. package/dist/types/utils.d.ts +40 -0
  51. package/dist/types/utils.d.ts.map +1 -0
  52. package/package.json +71 -0
  53. package/src/button-stack.tsx +17 -0
  54. package/src/date-inputs.tsx +142 -0
  55. package/src/date-range-content.tsx +379 -0
  56. package/src/date-range-picker.tsx +197 -0
  57. package/src/datetime.ts +58 -0
  58. package/src/index.ts +11 -0
  59. package/src/presets-listbox.tsx +65 -0
  60. package/src/style.scss +72 -0
  61. package/src/test/date-range-picker.test.tsx +334 -0
  62. package/src/test/utils.test.ts +58 -0
  63. package/src/types.d.ts +1 -0
  64. package/src/utils.ts +174 -0
package/README.md ADDED
@@ -0,0 +1,80 @@
1
+ # @automattic/date-range-picker
2
+
3
+ A date-range picker built on top of `@automattic/ui`'s `DateRangeCalendar`. It
4
+ provides a popover-style trigger, keyboard-navigable preset shortcuts (last 7
5
+ days, month-to-date, etc.), accessible date inputs, and timezone-aware
6
+ site-day handling.
7
+
8
+ ## Installation
9
+
10
+ ```sh
11
+ npm install @automattic/date-range-picker
12
+ ```
13
+
14
+ Consumers must also load the calendar styles from `@automattic/ui` and import
15
+ the picker's own stylesheet. The package ships SCSS source; compile it via
16
+ your own build pipeline (sass-loader, etc.):
17
+
18
+ ```ts
19
+ import '@automattic/ui/style.css';
20
+ import '@automattic/date-range-picker/src/style.scss';
21
+ ```
22
+
23
+ The SCSS expects `$grid-unit-*`, `$radius-small`, and `$gray-600` from
24
+ `@wordpress/base-styles` to be in scope (either via a global `@import` or via
25
+ sass-loader's `additionalData`).
26
+
27
+ ## Usage
28
+
29
+ ```tsx
30
+ import { DateRangePicker } from '@automattic/date-range-picker';
31
+
32
+ function Example() {
33
+ const [ range, setRange ] = useState( { start: new Date(), end: new Date() } );
34
+
35
+ return (
36
+ <DateRangePicker
37
+ start={ range.start }
38
+ end={ range.end }
39
+ onChange={ setRange }
40
+ locale="en-US"
41
+ timezoneString="America/New_York"
42
+ />
43
+ );
44
+ }
45
+ ```
46
+
47
+ ### Props
48
+
49
+ | Prop | Type | Default | Description |
50
+ | ----------------------- | ------------------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------- |
51
+ | `start` | `Date` | _required_ | Start of the selected range. |
52
+ | `end` | `Date` | _required_ | End of the selected range. |
53
+ | `onChange` | `( next: { start: Date; end: Date } ) => void` | _required_ | Called when the user applies a new range. |
54
+ | `locale` | `string` | _required_ | BCP 47 locale used to format the trigger label (e.g. `"en-US"`). |
55
+ | `timezoneString` | `string` | `undefined` | Optional IANA timezone for the calendar (e.g. `"America/New_York"`). |
56
+ | `gmtOffset` | `number` | `undefined` | Fallback offset in hours when `timezoneString` is not available. |
57
+ | `disableFuture` | `boolean` | `true` | Disable days after today. |
58
+ | `disabledBefore` | `Date` | `undefined` | Disable days before this date. |
59
+ | `defaultFallbackPreset` | `PresetId` | `'last-7-days'` | Preset applied when the user clicks Apply with no dates selected. |
60
+ | `hiddenPresets` | `PresetId[]` | `[]` | Presets to hide from the listbox. Use to scope down the default set per consumer. |
61
+ | `inputsProps` | `{ onStartFocus?, onEndFocus?, onStartBlur?, … }` | `undefined` | Focus/blur callbacks for the date inputs (analytics hooks, etc.). |
62
+
63
+ ### Exports
64
+
65
+ ```ts
66
+ import {
67
+ DateRangePicker,
68
+ formatLabel,
69
+ presetDefs,
70
+ getActivePresetId,
71
+ computePresetRange,
72
+ type PresetId,
73
+ } from '@automattic/date-range-picker';
74
+ ```
75
+
76
+ ## Translations
77
+
78
+ The package uses `@wordpress/i18n` directly. Strings are extracted with the
79
+ default text domain; consumers can override the domain via their build
80
+ pipeline (e.g. Jetpack's `i18n-loader-webpack-plugin`).
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ButtonStack = ButtonStack;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const components_1 = require("@wordpress/components");
6
+ function ButtonStack({ children, ...hStackProps }) {
7
+ return ((0, jsx_runtime_1.jsx)(components_1.__experimentalHStack, { ...hStackProps, spacing: 3, children: children }));
8
+ }
9
+ //# sourceMappingURL=button-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-stack.js","sourceRoot":"","sources":["../../src/button-stack.tsx"],"names":[],"mappings":";;AAOA,kCASC;;AAhBD,sDAAuE;AAOvE,SAAgB,WAAW,CAAE,EAC5B,QAAQ,EACR,GAAG,WAAW,EACyD;IACvE,OAAO,CACN,uBAAC,iCAAM,OAAM,WAAW,EAAG,OAAO,EAAG,CAAC,YACnC,QAAQ,GACF,CACT,CAAC;AACH,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateInputs = DateInputs;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const components_1 = require("@wordpress/components");
6
+ const i18n_1 = require("@wordpress/i18n");
7
+ function DateInputs({ fromStr, toStr, onFromChange, onToChange, todayStr, minStr, fromStyle, toStyle, stack = false, justify = 'flex-start', containerStyle, onFromFocus, onToFocus, onFromBlur, onToBlur, }) {
8
+ if (stack) {
9
+ return ((0, jsx_runtime_1.jsxs)(components_1.__experimentalVStack, { as: "div", spacing: 2, className: "daterange-inputs", style: containerStyle, children: [(0, jsx_runtime_1.jsx)(components_1.__experimentalInputControl, { type: "date", label: (0, i18n_1.__)('Start date'), value: fromStr, onFocus: (e) => {
10
+ onFromFocus?.(e);
11
+ }, onBlur: (e) => {
12
+ onFromBlur?.(e);
13
+ }, onChange: (value) => {
14
+ onFromChange(value ?? '');
15
+ }, autoComplete: "off", min: minStr, max: toStr || todayStr, style: { width: '100%', ...(fromStyle || {}) }, __next40pxDefaultSize: true }), (0, jsx_runtime_1.jsx)(components_1.__experimentalInputControl, { type: "date", label: (0, i18n_1.__)('End date'), value: toStr, onFocus: (e) => {
16
+ onToFocus?.(e);
17
+ }, onBlur: (e) => {
18
+ onToBlur?.(e);
19
+ }, onChange: (value) => {
20
+ onToChange(value ?? '');
21
+ }, autoComplete: "off", min: fromStr || minStr, style: { width: '100%', ...(toStyle || {}) }, __next40pxDefaultSize: true })] }));
22
+ }
23
+ return ((0, jsx_runtime_1.jsxs)(components_1.__experimentalHStack, { as: "div", spacing: 8, justify: justify, className: "daterange-inputs", wrap: false, style: containerStyle, children: [(0, jsx_runtime_1.jsx)(components_1.__experimentalInputControl, { type: "date", label: (0, i18n_1.__)('Start date'), value: fromStr, onFocus: (e) => {
24
+ onFromFocus?.(e);
25
+ }, onBlur: (e) => {
26
+ onFromBlur?.(e);
27
+ }, onChange: (value) => {
28
+ onFromChange(value ?? '');
29
+ }, autoComplete: "off", min: minStr, max: toStr || todayStr, style: fromStyle, __next40pxDefaultSize: true }), (0, jsx_runtime_1.jsx)(components_1.__experimentalInputControl, { type: "date", label: (0, i18n_1.__)('End date'), value: toStr, onFocus: (e) => {
30
+ onToFocus?.(e);
31
+ }, onBlur: (e) => {
32
+ onToBlur?.(e);
33
+ }, onChange: (value) => {
34
+ onToChange(value ?? '');
35
+ }, autoComplete: "off", min: fromStr || minStr, style: toStyle, __next40pxDefaultSize: true })] }));
36
+ }
37
+ //# sourceMappingURL=date-inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-inputs.js","sourceRoot":"","sources":["../../src/date-inputs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateRangeContent = DateRangeContent;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const ui_1 = require("@automattic/ui");
6
+ const components_1 = require("@wordpress/components");
7
+ const i18n_1 = require("@wordpress/i18n");
8
+ const date_fns_1 = require("date-fns");
9
+ const react_1 = require("react");
10
+ const button_stack_1 = require("./button-stack");
11
+ const date_inputs_1 = require("./date-inputs");
12
+ const datetime_1 = require("./datetime");
13
+ const presets_listbox_1 = require("./presets-listbox");
14
+ const utils_1 = require("./utils");
15
+ function DateRangeContent(props) {
16
+ 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;
17
+ // Avoid passing invalid or empty time zones to Intl consumers
18
+ const isValidIanaTimeZone = (timeZone) => {
19
+ if (!timeZone) {
20
+ return false;
21
+ }
22
+ try {
23
+ // Will throw for invalid IANA identifiers (including empty strings)
24
+ Intl.DateTimeFormat('en-US', { timeZone: timeZone });
25
+ return true;
26
+ }
27
+ catch (_e) {
28
+ return false;
29
+ }
30
+ };
31
+ const timeZoneForCalendar = isValidIanaTimeZone(timezoneString) ? timezoneString : undefined;
32
+ const [isTyping, setIsTyping] = (0, react_1.useState)(false);
33
+ const [inputsVersion, setInputsVersion] = (0, react_1.useState)(0);
34
+ const clear = () => {
35
+ setFromDraft(undefined);
36
+ setToDraft(undefined);
37
+ setFromStr('');
38
+ setToStr('');
39
+ setIsTyping(false);
40
+ // Force controlled inputs to remount so any internal buffers are reset
41
+ setInputsVersion((version) => version + 1);
42
+ };
43
+ const canDefaultApply = !fromDraft && !toDraft && !fromStr && !toStr && !isTyping;
44
+ const defaultPresetLabel = utils_1.presetDefs.find((p) => p.id === defaultFallbackPreset)?.label || (0, i18n_1.__)('default range');
45
+ const apply = () => {
46
+ if (fromDraft && toDraft) {
47
+ const [startPoint, endPoint] = fromDraft <= toDraft ? [fromDraft, toDraft] : [toDraft, fromDraft];
48
+ onChange({ start: startPoint, end: endPoint });
49
+ onClose?.();
50
+ return;
51
+ }
52
+ if (canDefaultApply) {
53
+ const range = (0, utils_1.computePresetRange)(defaultFallbackPreset, today);
54
+ if (range) {
55
+ onChange({ start: range.from, end: range.to });
56
+ onClose?.();
57
+ }
58
+ }
59
+ };
60
+ const setPreset = (id) => {
61
+ const range = (0, utils_1.computePresetRange)(id, today);
62
+ if (!range) {
63
+ return;
64
+ }
65
+ setFromDraft(range.from);
66
+ setToDraft(range.to);
67
+ setFromStr((0, datetime_1.formatYmd)(range.from, timezoneString, gmtOffset));
68
+ setToStr((0, datetime_1.formatYmd)(range.to, timezoneString, gmtOffset));
69
+ onChange({ start: range.from, end: range.to });
70
+ onClose?.();
71
+ };
72
+ const activePresetId = (() => {
73
+ const preset = (0, utils_1.getActivePresetId)(fromDraft, toDraft, today);
74
+ if (preset) {
75
+ return preset;
76
+ }
77
+ // Only mark "custom" when both dates are present and do not match a known preset
78
+ if (fromDraft && toDraft) {
79
+ return 'custom';
80
+ }
81
+ // When cleared or incomplete, highlight nothing
82
+ return undefined;
83
+ })();
84
+ // Site “today” as a site-day Date
85
+ const siteToday = (0, datetime_1.parseYmdLocal)((0, datetime_1.formatYmd)(today, timezoneString, gmtOffset)) ??
86
+ new Date(today.getFullYear(), today.getMonth(), today.getDate());
87
+ // Month anchors in site time
88
+ const siteMonthStart = (0, date_fns_1.startOfMonth)(siteToday);
89
+ const prevMonthStart = (0, date_fns_1.subMonths)(siteMonthStart, 1);
90
+ // Build calendar month refs
91
+ const makeTZMonthFromDate = (d) => timeZoneForCalendar
92
+ ? new ui_1.TZDate(Date.UTC(d.getFullYear(), d.getMonth(), 1, 12), timeZoneForCalendar)
93
+ : new Date(d.getFullYear(), d.getMonth(), 1);
94
+ const defaultMonth = showTwoMonths
95
+ ? makeTZMonthFromDate(prevMonthStart)
96
+ : makeTZMonthFromDate(siteMonthStart);
97
+ const endMonth = makeTZMonthFromDate(siteMonthStart);
98
+ // Use TZDate for calendar selection when a valid IANA time zone is available
99
+ const selected = timeZoneForCalendar && (fromDraft || toDraft)
100
+ ? {
101
+ from: fromDraft ? new ui_1.TZDate(+fromDraft, timeZoneForCalendar) : undefined,
102
+ to: toDraft ? new ui_1.TZDate(+toDraft, timeZoneForCalendar) : undefined,
103
+ }
104
+ : { from: fromDraft ?? undefined, to: toDraft ?? undefined };
105
+ const disabledMatcher = (() => {
106
+ const matchers = [];
107
+ if (disableFuture) {
108
+ matchers.push({ after: today });
109
+ }
110
+ if (disabledBefore) {
111
+ matchers.push({ before: disabledBefore });
112
+ }
113
+ if (matchers.length === 0) {
114
+ return undefined;
115
+ }
116
+ return matchers.length === 1 ? matchers[0] : matchers;
117
+ })();
118
+ const minInputStr = disabledBefore ? (0, datetime_1.formatSiteYmd)(disabledBefore) : undefined;
119
+ return ((0, jsx_runtime_1.jsxs)(components_1.__experimentalVStack, { as: "div", spacing: 3, style: { padding: 12 }, children: [(0, jsx_runtime_1.jsx)(components_1.__experimentalText, { as: "div", weight: 600, align: "center", size: "smallTitle", children: (0, i18n_1.__)('Date Range') }), isSmall ? ((0, jsx_runtime_1.jsxs)(components_1.__experimentalVStack, { as: "div", spacing: 2, children: [(0, jsx_runtime_1.jsx)(presets_listbox_1.PresetsListbox, { labelId: mobileLabelId, activePresetId: activePresetId, onSelect: setPreset, compositeActiveId: compositeActiveId, setCompositeActiveId: setCompositeActiveId, hiddenPresets: hiddenPresets }), (0, jsx_runtime_1.jsx)(date_inputs_1.DateInputs, { fromStr: fromStr, toStr: toStr, onFromChange: (value) => {
120
+ setFromStr(value);
121
+ const parsed = value ? (0, datetime_1.parseYmdLocal)(value) || undefined : undefined;
122
+ setFromDraft(parsed);
123
+ setIsTyping(Boolean(value || toStr));
124
+ }, onToChange: (value) => {
125
+ setToStr(value);
126
+ const parsed = value ? (0, datetime_1.parseYmdLocal)(value) || undefined : undefined;
127
+ setToDraft(parsed);
128
+ setIsTyping(Boolean(fromStr || value));
129
+ }, todayStr: todayStr, minStr: minInputStr, onFromFocus: (e) => {
130
+ setIsTyping(true);
131
+ inputsProps?.onStartFocus?.(e);
132
+ }, onToFocus: (e) => {
133
+ setIsTyping(true);
134
+ inputsProps?.onEndFocus?.(e);
135
+ }, onFromBlur: (e) => {
136
+ if (!fromStr && !toStr) {
137
+ setIsTyping(false);
138
+ }
139
+ inputsProps?.onStartBlur?.(e);
140
+ }, onToBlur: (e) => {
141
+ if (!fromStr && !toStr) {
142
+ setIsTyping(false);
143
+ }
144
+ inputsProps?.onEndBlur?.(e);
145
+ }, stack: true, fromStyle: { minWidth: 140 }, toStyle: { minWidth: 140 } }, `inputs-${inputsVersion}-mobile`)] })) : ((0, jsx_runtime_1.jsx)(components_1.__experimentalHStack, { as: "div", spacing: 4, justify: "flex-end", className: "daterange-inputs", wrap: false, style: { width: '100%' }, children: (0, jsx_runtime_1.jsx)(date_inputs_1.DateInputs, { fromStr: fromStr, toStr: toStr, onFromChange: (value) => {
146
+ setFromStr(value);
147
+ const parsed = value ? (0, datetime_1.parseYmdLocal)(value) || undefined : undefined;
148
+ setFromDraft(parsed);
149
+ setIsTyping(Boolean(value || toStr));
150
+ }, onToChange: (value) => {
151
+ setToStr(value);
152
+ const parsed = value ? (0, datetime_1.parseYmdLocal)(value) || undefined : undefined;
153
+ setToDraft(parsed);
154
+ setIsTyping(Boolean(fromStr || value));
155
+ }, todayStr: todayStr, minStr: minInputStr, onFromFocus: (e) => {
156
+ setIsTyping(true);
157
+ inputsProps?.onStartFocus?.(e);
158
+ }, onToFocus: (e) => {
159
+ setIsTyping(true);
160
+ inputsProps?.onEndFocus?.(e);
161
+ }, onFromBlur: (e) => {
162
+ if (!fromStr && !toStr) {
163
+ setIsTyping(false);
164
+ }
165
+ inputsProps?.onStartBlur?.(e);
166
+ }, onToBlur: (e) => {
167
+ if (!fromStr && !toStr) {
168
+ setIsTyping(false);
169
+ }
170
+ inputsProps?.onEndBlur?.(e);
171
+ }, fromStyle: { minWidth: 220, flex: '0 0 auto' }, toStyle: { minWidth: 220, flex: '0 0 auto' }, justify: "flex-end", containerStyle: { width: '100%' } }, `inputs-${inputsVersion}-desktop`) })), (0, jsx_runtime_1.jsxs)(components_1.__experimentalHStack, { as: "div", spacing: 4, justify: "flex-start", className: "daterange-body", wrap: false, children: [!isSmall && ((0, jsx_runtime_1.jsx)(presets_listbox_1.PresetsListbox, { labelId: desktopLabelId, activePresetId: activePresetId, onSelect: setPreset, compositeActiveId: compositeActiveId, setCompositeActiveId: setCompositeActiveId, hiddenPresets: hiddenPresets })), (0, jsx_runtime_1.jsx)("div", { className: "daterange-calendar", children: (0, jsx_runtime_1.jsx)(ui_1.DateRangeCalendar, { timeZone: timeZoneForCalendar, numberOfMonths: isSmall ? 1 : 2, defaultMonth: defaultMonth, endMonth: endMonth, disabled: disabledMatcher, excludeDisabled: true, selected: selected, onSelect: (range) => {
172
+ const toNative = (d) => (d ? new Date(d.getTime()) : undefined);
173
+ if (range?.from) {
174
+ const from = toNative(range.from);
175
+ setFromDraft(from);
176
+ if (from) {
177
+ setFromStr((0, datetime_1.formatYmd)(from, timezoneString, gmtOffset));
178
+ }
179
+ }
180
+ if (range?.to) {
181
+ const to = toNative(range.to);
182
+ setToDraft(to);
183
+ if (to) {
184
+ setToStr((0, datetime_1.formatYmd)(to, timezoneString, gmtOffset));
185
+ }
186
+ }
187
+ setIsTyping(false);
188
+ } }) })] }), (0, jsx_runtime_1.jsxs)(button_stack_1.ButtonStack, { as: "div", justify: "flex-end", children: [(0, jsx_runtime_1.jsx)(components_1.Button, { variant: "secondary", onClick: clear, children: (0, i18n_1.__)('Clear') }), (0, jsx_runtime_1.jsx)(components_1.Button, { variant: "primary", onClick: apply, disabled: (!fromDraft || !toDraft) && !canDefaultApply, "aria-label":
189
+ /* translators: %s is the preset label, e.g. 'Last 30 days' */
190
+ canDefaultApply ? (0, i18n_1.sprintf)((0, i18n_1.__)('Apply %s'), defaultPresetLabel) : (0, i18n_1.__)('Apply'), children:
191
+ /* translators: %s is the preset label, e.g. 'Last 30 days' */
192
+ canDefaultApply ? (0, i18n_1.sprintf)((0, i18n_1.__)('Apply %s'), defaultPresetLabel) : (0, i18n_1.__)('Apply') })] })] }));
193
+ }
194
+ //# 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":";;AAiDA,4CAyUC;;AA1XD,uCAA2D;AAC3D,sDAK+B;AAC/B,0CAA8C;AAC9C,uCAAmD;AACnD,iCAAiC;AACjC,iDAA6C;AAC7C,+CAA2C;AAC3C,yCAAqE;AACrE,uDAAmD;AACnD,mCAAsF;AAmCtF,SAAgB,gBAAgB,CAAE,KAA4B;IAC7D,MAAM,EACL,OAAO,EACP,aAAa,GAAG,KAAK,EACrB,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,cAAc,EACd,SAAS,EACT,QAAQ,EACR,OAAO,EACP,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,EACL,QAAQ,EACR,aAAa,EACb,cAAc,EACd,aAAa,GAAG,IAAI,EACpB,cAAc,EACd,qBAAqB,GAAG,aAAa,EACrC,aAAa,EACb,WAAW,GACX,GAAG,KAAK,CAAC;IAEV,8DAA8D;IAC9D,MAAM,mBAAmB,GAAG,CAAE,QAAiB,EAAuB,EAAE;QACvE,IAAK,CAAE,QAAQ,EAAG,CAAC;YAClB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACJ,oEAAoE;YACpE,IAAI,CAAC,cAAc,CAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACb,CAAC;QAAC,OAAQ,EAAE,EAAG,CAAC;YACf,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,mBAAmB,CAAE,cAAc,CAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,CAAE,QAAQ,EAAE,WAAW,CAAE,GAAG,IAAA,gBAAQ,EAAE,KAAK,CAAE,CAAC;IACpD,MAAM,CAAE,aAAa,EAAE,gBAAgB,CAAE,GAAG,IAAA,gBAAQ,EAAE,CAAC,CAAE,CAAC;IAE1D,MAAM,KAAK,GAAG,GAAG,EAAE;QAClB,YAAY,CAAE,SAAS,CAAE,CAAC;QAC1B,UAAU,CAAE,SAAS,CAAE,CAAC;QACxB,UAAU,CAAE,EAAE,CAAE,CAAC;QACjB,QAAQ,CAAE,EAAE,CAAE,CAAC;QACf,WAAW,CAAE,KAAK,CAAE,CAAC;QACrB,uEAAuE;QACvE,gBAAgB,CAAE,CAAE,OAAO,EAAG,EAAE,CAAC,OAAO,GAAG,CAAC,CAAE,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAE,SAAS,IAAI,CAAE,OAAO,IAAI,CAAE,OAAO,IAAI,CAAE,KAAK,IAAI,CAAE,QAAQ,CAAC;IACvF,MAAM,kBAAkB,GACvB,kBAAU,CAAC,IAAI,CAAE,CAAE,CAAC,EAAG,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,qBAAqB,CAAE,EAAE,KAAK,IAAI,IAAA,SAAE,EAAE,eAAe,CAAE,CAAC;IAE5F,MAAM,KAAK,GAAG,GAAG,EAAE;QAClB,IAAK,SAAS,IAAI,OAAO,EAAG,CAAC;YAC5B,MAAM,CAAE,UAAU,EAAE,QAAQ,CAAE,GAC7B,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAE,SAAS,EAAE,OAAO,CAAE,CAAC,CAAC,CAAC,CAAE,OAAO,EAAE,SAAS,CAAE,CAAC;YACxE,QAAQ,CAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAE,CAAC;YACjD,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO;QACR,CAAC;QACD,IAAK,eAAe,EAAG,CAAC;YACvB,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAE,qBAAqB,EAAE,KAAK,CAAE,CAAC;YACjE,IAAK,KAAK,EAAG,CAAC;gBACb,QAAQ,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAE,CAAC;gBACjD,OAAO,EAAE,EAAE,CAAC;YACb,CAAC;QACF,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAE,EAAY,EAAG,EAAE;QACpC,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAE,EAAE,EAAE,KAAK,CAAE,CAAC;QAC9C,IAAK,CAAE,KAAK,EAAG,CAAC;YACf,OAAO;QACR,CAAC;QACD,YAAY,CAAE,KAAK,CAAC,IAAI,CAAE,CAAC;QAC3B,UAAU,CAAE,KAAK,CAAC,EAAE,CAAE,CAAC;QACvB,UAAU,CAAE,IAAA,oBAAS,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAE,CAAE,CAAC;QACjE,QAAQ,CAAE,IAAA,oBAAS,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,CAAE,CAAE,CAAC;QAC7D,QAAQ,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAE,CAAC;QACjD,OAAO,EAAE,EAAE,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,cAAc,GAAyB,CAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,IAAA,yBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAE,CAAC;QAC9D,IAAK,MAAM,EAAG,CAAC;YACd,OAAO,MAAM,CAAC;QACf,CAAC;QACD,iFAAiF;QACjF,IAAK,SAAS,IAAI,OAAO,EAAG,CAAC;YAC5B,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,gDAAgD;QAChD,OAAO,SAAS,CAAC;IAClB,CAAC,CAAE,EAAE,CAAC;IAEN,kCAAkC;IAClC,MAAM,SAAS,GACd,IAAA,wBAAa,EAAE,IAAA,oBAAS,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,CAAE,CAAE;QAC9D,IAAI,IAAI,CAAE,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAE,CAAC;IAEpE,6BAA6B;IAC7B,MAAM,cAAc,GAAG,IAAA,uBAAY,EAAE,SAAS,CAAE,CAAC;IACjD,MAAM,cAAc,GAAG,IAAA,oBAAS,EAAE,cAAc,EAAE,CAAC,CAAE,CAAC;IAEtD,4BAA4B;IAC5B,MAAM,mBAAmB,GAAG,CAAE,CAAO,EAAG,EAAE,CACzC,mBAAmB;QAClB,CAAC,CAAC,IAAI,WAAM,CAAE,IAAI,CAAC,GAAG,CAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAE,EAAE,mBAAmB,CAAE;QACrF,CAAC,CAAC,IAAI,IAAI,CAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAE,CAAC;IAEjD,MAAM,YAAY,GAAG,aAAa;QACjC,CAAC,CAAC,mBAAmB,CAAE,cAAc,CAAE;QACvC,CAAC,CAAC,mBAAmB,CAAE,cAAc,CAAE,CAAC;IAEzC,MAAM,QAAQ,GAAG,mBAAmB,CAAE,cAAc,CAAE,CAAC;IAEvD,6EAA6E;IAC7E,MAAM,QAAQ,GACb,mBAAmB,IAAI,CAAE,SAAS,IAAI,OAAO,CAAE;QAC9C,CAAC,CAAC;YACA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,WAAM,CAAE,CAAC,SAAS,EAAE,mBAAmB,CAAE,CAAC,CAAC,CAAC,SAAS;YAC3E,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,WAAM,CAAE,CAAC,OAAO,EAAE,mBAAmB,CAAE,CAAC,CAAC,CAAC,SAAS;SACpE;QACH,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,IAAI,SAAS,EAAE,EAAE,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC;IAE/D,MAAM,eAAe,GAAG,CAAE,GAAG,EAAE;QAC9B,MAAM,QAAQ,GAAgD,EAAE,CAAC;QACjE,IAAK,aAAa,EAAG,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAE,CAAC;QACnC,CAAC;QACD,IAAK,cAAc,EAAG,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAE,CAAC;QAC7C,CAAC;QACD,IAAK,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAG,CAAC;YAC7B,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzD,CAAC,CAAE,EAAE,CAAC;IAEN,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAE,cAAc,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjF,OAAO,CACN,wBAAC,iCAAM,IAAC,EAAE,EAAC,KAAK,EAAC,OAAO,EAAG,CAAC,EAAG,KAAK,EAAG,EAAE,OAAO,EAAE,EAAE,EAAE,aACrD,uBAAC,+BAAI,IAAC,EAAE,EAAC,KAAK,EAAC,MAAM,EAAG,GAAG,EAAG,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAC,YAAY,YAC3D,IAAA,SAAE,EAAE,YAAY,CAAE,GACd,EAEL,OAAO,CAAC,CAAC,CAAC,CACX,wBAAC,iCAAM,IAAC,EAAE,EAAC,KAAK,EAAC,OAAO,EAAG,CAAC,aAC3B,uBAAC,gCAAc,IACd,OAAO,EAAG,aAAa,EACvB,cAAc,EAAG,cAAc,EAC/B,QAAQ,EAAG,SAAS,EACpB,iBAAiB,EAAG,iBAAiB,EACrC,oBAAoB,EAAG,oBAAoB,EAC3C,aAAa,EAAG,aAAa,GAC5B,EAEF,uBAAC,wBAAU,IAEV,OAAO,EAAG,OAAO,EACjB,KAAK,EAAG,KAAK,EACb,YAAY,EAAG,CAAE,KAAK,EAAG,EAAE;4BAC1B,UAAU,CAAE,KAAK,CAAE,CAAC;4BACpB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAE,KAAK,CAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;4BACvE,YAAY,CAAE,MAAM,CAAE,CAAC;4BACvB,WAAW,CAAE,OAAO,CAAE,KAAK,IAAI,KAAK,CAAE,CAAE,CAAC;wBAC1C,CAAC,EACD,UAAU,EAAG,CAAE,KAAK,EAAG,EAAE;4BACxB,QAAQ,CAAE,KAAK,CAAE,CAAC;4BAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAE,KAAK,CAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;4BACvE,UAAU,CAAE,MAAM,CAAE,CAAC;4BACrB,WAAW,CAAE,OAAO,CAAE,OAAO,IAAI,KAAK,CAAE,CAAE,CAAC;wBAC5C,CAAC,EACD,QAAQ,EAAG,QAAQ,EACnB,MAAM,EAAG,WAAW,EACpB,WAAW,EAAG,CAAE,CAAC,EAAG,EAAE;4BACrB,WAAW,CAAE,IAAI,CAAE,CAAC;4BACpB,WAAW,EAAE,YAAY,EAAE,CAAE,CAAC,CAAE,CAAC;wBAClC,CAAC,EACD,SAAS,EAAG,CAAE,CAAC,EAAG,EAAE;4BACnB,WAAW,CAAE,IAAI,CAAE,CAAC;4BACpB,WAAW,EAAE,UAAU,EAAE,CAAE,CAAC,CAAE,CAAC;wBAChC,CAAC,EACD,UAAU,EAAG,CAAE,CAAC,EAAG,EAAE;4BACpB,IAAK,CAAE,OAAO,IAAI,CAAE,KAAK,EAAG,CAAC;gCAC5B,WAAW,CAAE,KAAK,CAAE,CAAC;4BACtB,CAAC;4BACD,WAAW,EAAE,WAAW,EAAE,CAAE,CAAC,CAAE,CAAC;wBACjC,CAAC,EACD,QAAQ,EAAG,CAAE,CAAC,EAAG,EAAE;4BAClB,IAAK,CAAE,OAAO,IAAI,CAAE,KAAK,EAAG,CAAC;gCAC5B,WAAW,CAAE,KAAK,CAAE,CAAC;4BACtB,CAAC;4BACD,WAAW,EAAE,SAAS,EAAE,CAAE,CAAC,CAAE,CAAC;wBAC/B,CAAC,EACD,KAAK,QACL,SAAS,EAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,EAC7B,OAAO,EAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAvCrB,UAAW,aAAc,SAAS,CAwCvC,IACM,CACT,CAAC,CAAC,CAAC,CACH,uBAAC,iCAAM,IACN,EAAE,EAAC,KAAK,EACR,OAAO,EAAG,CAAC,EACX,OAAO,EAAC,UAAU,EAClB,SAAS,EAAC,kBAAkB,EAC5B,IAAI,EAAG,KAAK,EACZ,KAAK,EAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAEzB,uBAAC,wBAAU,IAEV,OAAO,EAAG,OAAO,EACjB,KAAK,EAAG,KAAK,EACb,YAAY,EAAG,CAAE,KAAK,EAAG,EAAE;wBAC1B,UAAU,CAAE,KAAK,CAAE,CAAC;wBACpB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAE,KAAK,CAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;wBACvE,YAAY,CAAE,MAAM,CAAE,CAAC;wBACvB,WAAW,CAAE,OAAO,CAAE,KAAK,IAAI,KAAK,CAAE,CAAE,CAAC;oBAC1C,CAAC,EACD,UAAU,EAAG,CAAE,KAAK,EAAG,EAAE;wBACxB,QAAQ,CAAE,KAAK,CAAE,CAAC;wBAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAA,wBAAa,EAAE,KAAK,CAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;wBACvE,UAAU,CAAE,MAAM,CAAE,CAAC;wBACrB,WAAW,CAAE,OAAO,CAAE,OAAO,IAAI,KAAK,CAAE,CAAE,CAAC;oBAC5C,CAAC,EACD,QAAQ,EAAG,QAAQ,EACnB,MAAM,EAAG,WAAW,EACpB,WAAW,EAAG,CAAE,CAAC,EAAG,EAAE;wBACrB,WAAW,CAAE,IAAI,CAAE,CAAC;wBACpB,WAAW,EAAE,YAAY,EAAE,CAAE,CAAC,CAAE,CAAC;oBAClC,CAAC,EACD,SAAS,EAAG,CAAE,CAAC,EAAG,EAAE;wBACnB,WAAW,CAAE,IAAI,CAAE,CAAC;wBACpB,WAAW,EAAE,UAAU,EAAE,CAAE,CAAC,CAAE,CAAC;oBAChC,CAAC,EACD,UAAU,EAAG,CAAE,CAAC,EAAG,EAAE;wBACpB,IAAK,CAAE,OAAO,IAAI,CAAE,KAAK,EAAG,CAAC;4BAC5B,WAAW,CAAE,KAAK,CAAE,CAAC;wBACtB,CAAC;wBACD,WAAW,EAAE,WAAW,EAAE,CAAE,CAAC,CAAE,CAAC;oBACjC,CAAC,EACD,QAAQ,EAAG,CAAE,CAAC,EAAG,EAAE;wBAClB,IAAK,CAAE,OAAO,IAAI,CAAE,KAAK,EAAG,CAAC;4BAC5B,WAAW,CAAE,KAAK,CAAE,CAAC;wBACtB,CAAC;wBACD,WAAW,EAAE,SAAS,EAAE,CAAE,CAAC,CAAE,CAAC;oBAC/B,CAAC,EACD,SAAS,EAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAC/C,OAAO,EAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,EAC7C,OAAO,EAAC,UAAU,EAClB,cAAc,EAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAxC5B,UAAW,aAAc,UAAU,CAyCxC,GACM,CACT,EAED,wBAAC,iCAAM,IAAC,EAAE,EAAC,KAAK,EAAC,OAAO,EAAG,CAAC,EAAG,OAAO,EAAC,YAAY,EAAC,SAAS,EAAC,gBAAgB,EAAC,IAAI,EAAG,KAAK,aACxF,CAAE,OAAO,IAAI,CACd,uBAAC,gCAAc,IACd,OAAO,EAAG,cAAc,EACxB,cAAc,EAAG,cAAc,EAC/B,QAAQ,EAAG,SAAS,EACpB,iBAAiB,EAAG,iBAAiB,EACrC,oBAAoB,EAAG,oBAAoB,EAC3C,aAAa,EAAG,aAAa,GAC5B,CACF,EAED,gCAAK,SAAS,EAAC,oBAAoB,YAClC,uBAAC,sBAAiB,IACjB,QAAQ,EAAG,mBAAmB,EAC9B,cAAc,EAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChC,YAAY,EAAG,YAAY,EAC3B,QAAQ,EAAG,QAAQ,EACnB,QAAQ,EAAG,eAAe,EAC1B,eAAe,QACf,QAAQ,EAAG,QAAQ,EACnB,QAAQ,EAAG,CAAE,KAAK,EAAG,EAAE;gCACtB,MAAM,QAAQ,GAAG,CAAE,CAAQ,EAAG,EAAE,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAE,CAAC,CAAC,OAAO,EAAE,CAAE,CAAC,CAAC,CAAC,SAAS,CAAE,CAAC;gCAC7E,IAAK,KAAK,EAAE,IAAI,EAAG,CAAC;oCACnB,MAAM,IAAI,GAAG,QAAQ,CAAE,KAAK,CAAC,IAAI,CAAE,CAAC;oCACpC,YAAY,CAAE,IAAI,CAAE,CAAC;oCACrB,IAAK,IAAI,EAAG,CAAC;wCACZ,UAAU,CAAE,IAAA,oBAAS,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,CAAE,CAAE,CAAC;oCAC5D,CAAC;gCACF,CAAC;gCACD,IAAK,KAAK,EAAE,EAAE,EAAG,CAAC;oCACjB,MAAM,EAAE,GAAG,QAAQ,CAAE,KAAK,CAAC,EAAE,CAAE,CAAC;oCAChC,UAAU,CAAE,EAAE,CAAE,CAAC;oCACjB,IAAK,EAAE,EAAG,CAAC;wCACV,QAAQ,CAAE,IAAA,oBAAS,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,CAAE,CAAE,CAAC;oCACxD,CAAC;gCACF,CAAC;gCACD,WAAW,CAAE,KAAK,CAAE,CAAC;4BACtB,CAAC,GACA,GACG,IACE,EAET,wBAAC,0BAAW,IAAC,EAAE,EAAC,KAAK,EAAC,OAAO,EAAC,UAAU,aACvC,uBAAC,mBAAM,IAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAG,KAAK,YACxC,IAAA,SAAE,EAAE,OAAO,CAAE,GACP,EACT,uBAAC,mBAAM,IACN,OAAO,EAAC,SAAS,EACjB,OAAO,EAAG,KAAK,EACf,QAAQ,EAAG,CAAE,CAAE,SAAS,IAAI,CAAE,OAAO,CAAE,IAAI,CAAE,eAAe;wBAE3D,8DAA8D;wBAC9D,eAAe,CAAC,CAAC,CAAC,IAAA,cAAO,EAAE,IAAA,SAAE,EAAE,UAAU,CAAE,EAAE,kBAAkB,CAAE,CAAC,CAAC,CAAC,IAAA,SAAE,EAAE,OAAO,CAAE;wBAIjF,8DAA8D;wBAC9D,eAAe,CAAC,CAAC,CAAC,IAAA,cAAO,EAAE,IAAA,SAAE,EAAE,UAAU,CAAE,EAAE,kBAAkB,CAAE,CAAC,CAAC,CAAC,IAAA,SAAE,EAAE,OAAO,CAAE,GAE1E,IACI,IACN,CACT,CAAC;AACH,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateRangePicker = DateRangePicker;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const components_1 = require("@wordpress/components");
6
+ const compose_1 = require("@wordpress/compose");
7
+ const i18n_1 = require("@wordpress/i18n");
8
+ const icons_1 = require("@wordpress/icons");
9
+ const react_1 = require("react");
10
+ const date_range_content_1 = require("./date-range-content");
11
+ const datetime_1 = require("./datetime");
12
+ const utils_1 = require("./utils");
13
+ require("./style.scss");
14
+ function DateRangePicker({ start, end, onChange, gmtOffset, timezoneString, locale, disableFuture = true, disabledBefore, defaultFallbackPreset = 'last-7-days', hiddenPresets, inputsProps, }) {
15
+ const isSmall = (0, compose_1.useMediaQuery)('(max-width: 600px)');
16
+ // Use a wider breakpoint to decide when two calendars can fit comfortably
17
+ const showTwoMonths = (0, compose_1.useMediaQuery)('(min-width: 900px)');
18
+ const instanceId = (0, compose_1.useInstanceId)(DateRangePicker, 'daterange');
19
+ const mobileLabelId = `presets-label-${instanceId}-mobile`;
20
+ const desktopLabelId = `presets-label-${instanceId}-desktop`;
21
+ const label = (0, utils_1.formatLabel)(start, end, locale);
22
+ // Reset internal draft state when key inputs change by remounting the inner component
23
+ const resetKey = [
24
+ (0, datetime_1.formatSiteYmd)(start),
25
+ (0, datetime_1.formatSiteYmd)(end),
26
+ timezoneString ?? '',
27
+ gmtOffset ?? '',
28
+ ].join('|');
29
+ return ((0, jsx_runtime_1.jsx)(components_1.Dropdown, { popoverProps: { className: 'daterange-popover' }, renderToggle: ({ onToggle, isOpen }) => ((0, jsx_runtime_1.jsx)(components_1.Tooltip, { text: (0, i18n_1.__)('Select a date range'), placement: "top", children: (0, jsx_runtime_1.jsx)("div", { className: "daterange-input__toggle", children: (0, jsx_runtime_1.jsx)(components_1.Button, { type: "button", variant: "tertiary", onClick: onToggle, "aria-haspopup": "dialog", "aria-expanded": isOpen, "aria-label": (0, i18n_1.sprintf)(
30
+ /* Translators: %s: date range label */
31
+ (0, i18n_1.__)('Date range: %s. Activate to open calendar.'), label), className: "daterange-input__field", icon: icons_1.calendar, iconPosition: "right", children: (0, jsx_runtime_1.jsx)("span", { "aria-hidden": "true", className: "daterange-input__text", children: label }) }) }) })), renderContent: ({ onClose }) => ((0, jsx_runtime_1.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)) }));
32
+ }
33
+ function DateRangePickerInner({ isSmall, showTwoMonths, start, end, timezoneString, gmtOffset, onChange, onClose, mobileLabelId, desktopLabelId, disableFuture, disabledBefore, defaultFallbackPreset, hiddenPresets, inputsProps, }) {
34
+ const [fromDraft, setFromDraft] = (0, react_1.useState)(() => start);
35
+ const [toDraft, setToDraft] = (0, react_1.useState)(() => end);
36
+ const [fromStr, setFromStr] = (0, react_1.useState)(() => (0, datetime_1.formatSiteYmd)(start));
37
+ const [toStr, setToStr] = (0, react_1.useState)(() => (0, datetime_1.formatSiteYmd)(end));
38
+ // Tracks the keyboard-focused preset in the listbox (roving focus), not the selected preset.
39
+ const [compositeActiveId, setCompositeActiveId] = (0, react_1.useState)(null);
40
+ const today = (0, react_1.useMemo)(() => {
41
+ const parsed = (0, datetime_1.parseYmdLocal)((0, datetime_1.formatYmd)(new Date(), timezoneString, gmtOffset));
42
+ // Fallback to local midnight if parsing ever fails
43
+ return (parsed ?? new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate()));
44
+ }, [timezoneString, gmtOffset]);
45
+ const todayStr = (0, react_1.useMemo)(() => (0, datetime_1.formatSiteYmd)(today), [today]);
46
+ return ((0, jsx_runtime_1.jsx)(date_range_content_1.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 }));
47
+ }
48
+ //# 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,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatDate = formatDate;
4
+ exports.parseYmdLocal = parseYmdLocal;
5
+ exports.formatYmd = formatYmd;
6
+ exports.formatSiteYmd = formatSiteYmd;
7
+ const date_1 = require("@wordpress/date");
8
+ const date_fns_1 = require("date-fns");
9
+ const YMD_REGEX = /^\d{4}-\d{2}-\d{2}$/;
10
+ function formatDate(date, locale, formatOptions = { dateStyle: 'medium' }) {
11
+ if (isNaN(date.getTime())) {
12
+ return '';
13
+ }
14
+ return new Intl.DateTimeFormat(locale, formatOptions).format(date);
15
+ }
16
+ /**
17
+ * Parse a date string in the format "YYYY-MM-DD" (local time).
18
+ */
19
+ function parseYmdLocal(value) {
20
+ if (!YMD_REGEX.test(value)) {
21
+ return null;
22
+ }
23
+ const parsed = (0, date_fns_1.parse)(value, 'yyyy-MM-dd', new Date());
24
+ if (!(0, date_fns_1.isValid)(parsed)) {
25
+ return null;
26
+ }
27
+ // Ensure strict match (reject overflows like 2023-02-31 -> 2023-03-03)
28
+ return (0, date_fns_1.format)(parsed, 'yyyy-MM-dd') === value ? parsed : null;
29
+ }
30
+ /**
31
+ * Format a date as a site calendar day (YYYY-MM-DD).
32
+ */
33
+ function formatYmd(date, timezoneString, gmtOffset) {
34
+ if (timezoneString) {
35
+ return (0, date_1.dateI18n)('Y-m-d', date, timezoneString);
36
+ }
37
+ if (typeof gmtOffset === 'number') {
38
+ const shifted = new Date(date.getTime() + gmtOffset * 60 * 60 * 1000);
39
+ const year = shifted.getUTCFullYear();
40
+ const month = String(shifted.getUTCMonth() + 1).padStart(2, '0');
41
+ const day = String(shifted.getUTCDate()).padStart(2, '0');
42
+ return `${year}-${month}-${day}`;
43
+ }
44
+ return (0, date_1.dateI18n)('Y-m-d', date);
45
+ }
46
+ /**
47
+ * Format a Date that already represents a site calendar day.
48
+ * This avoids reapplying timezone math to dates coming from the picker or URL.
49
+ */
50
+ function formatSiteYmd(date) {
51
+ const year = date.getFullYear();
52
+ const month = String(date.getMonth() + 1).padStart(2, '0');
53
+ const day = String(date.getDate()).padStart(2, '0');
54
+ return `${year}-${month}-${day}`;
55
+ }
56
+ //# sourceMappingURL=datetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../src/datetime.ts"],"names":[],"mappings":";;AAKA,gCASC;AAKD,sCAUC;AAKD,8BAYC;AAMD,sCAKC;AAzDD,0CAA2C;AAC3C,uCAAkD;AAElD,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAExC,SAAgB,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,SAAgB,aAAa,CAAE,KAAa;IAC3C,IAAK,CAAE,SAAS,CAAC,IAAI,CAAE,KAAK,CAAE,EAAG,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,gBAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAE,CAAC;IACxD,IAAK,CAAE,IAAA,kBAAO,EAAE,MAAM,CAAE,EAAG,CAAC;QAC3B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,uEAAuE;IACvE,OAAO,IAAA,iBAAM,EAAE,MAAM,EAAE,YAAY,CAAE,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAE,IAAU,EAAE,cAAuB,EAAE,SAAkB;IACjF,IAAK,cAAc,EAAG,CAAC;QACtB,OAAO,IAAA,eAAQ,EAAE,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,IAAA,eAAQ,EAAE,OAAO,EAAE,IAAI,CAAE,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAgB,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,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseYmdLocal = exports.formatSiteYmd = exports.formatYmd = exports.presetDefs = exports.isLast7Days = exports.getActivePresetId = exports.formatLabel = exports.computePresetRange = exports.DateRangePicker = void 0;
4
+ var date_range_picker_1 = require("./date-range-picker");
5
+ Object.defineProperty(exports, "DateRangePicker", { enumerable: true, get: function () { return date_range_picker_1.DateRangePicker; } });
6
+ var utils_1 = require("./utils");
7
+ Object.defineProperty(exports, "computePresetRange", { enumerable: true, get: function () { return utils_1.computePresetRange; } });
8
+ Object.defineProperty(exports, "formatLabel", { enumerable: true, get: function () { return utils_1.formatLabel; } });
9
+ Object.defineProperty(exports, "getActivePresetId", { enumerable: true, get: function () { return utils_1.getActivePresetId; } });
10
+ Object.defineProperty(exports, "isLast7Days", { enumerable: true, get: function () { return utils_1.isLast7Days; } });
11
+ Object.defineProperty(exports, "presetDefs", { enumerable: true, get: function () { return utils_1.presetDefs; } });
12
+ var datetime_1 = require("./datetime");
13
+ Object.defineProperty(exports, "formatYmd", { enumerable: true, get: function () { return datetime_1.formatYmd; } });
14
+ Object.defineProperty(exports, "formatSiteYmd", { enumerable: true, get: function () { return datetime_1.formatSiteYmd; } });
15
+ Object.defineProperty(exports, "parseYmdLocal", { enumerable: true, get: function () { return datetime_1.parseYmdLocal; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AAExB,iCAMiB;AALhB,2GAAA,kBAAkB,OAAA;AAClB,oGAAA,WAAW,OAAA;AACX,0GAAA,iBAAiB,OAAA;AACjB,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AAGX,uCAAqE;AAA5D,qGAAA,SAAS,OAAA;AAAE,yGAAA,aAAa,OAAA;AAAE,yGAAA,aAAa,OAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PresetsListbox = PresetsListbox;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const components_1 = require("@wordpress/components");
6
+ const i18n_1 = require("@wordpress/i18n");
7
+ const utils_1 = require("./utils");
8
+ function PresetsListbox({ labelId, activePresetId, onSelect, compositeActiveId, setCompositeActiveId, hiddenPresets, }) {
9
+ const items = [
10
+ ...utils_1.presetDefs,
11
+ { id: 'custom', label: (0, i18n_1.__)('Custom') },
12
+ ].filter((item) => !hiddenPresets?.includes(item.id));
13
+ return ((0, jsx_runtime_1.jsxs)(components_1.__experimentalVStack, { justify: "flex-start", alignment: "stretch", spacing: 1, className: "daterange-presets", children: [(0, jsx_runtime_1.jsx)(components_1.VisuallyHidden, { id: labelId, children: (0, i18n_1.__)('Date range presets') }), (0, jsx_runtime_1.jsx)(components_1.Composite, { "aria-labelledby": labelId, activeId: compositeActiveId ?? undefined, setActiveId: (id) => setCompositeActiveId(id ?? null), focusLoop: true, virtualFocus: true, role: "listbox", children: (0, jsx_runtime_1.jsx)(components_1.__experimentalVStack, { justify: "flex-start", alignment: "stretch", spacing: 1, children: items.map((preset) => {
14
+ const isSelected = activePresetId === preset.id;
15
+ return ((0, jsx_runtime_1.jsx)(components_1.Composite.Item, { id: preset.id, render: (0, jsx_runtime_1.jsx)(components_1.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));
16
+ }) }) })] }));
17
+ }
18
+ //# sourceMappingURL=presets-listbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets-listbox.js","sourceRoot":"","sources":["../../src/presets-listbox.tsx"],"names":[],"mappings":";;AAmBA,wCA6CC;;AAhED,sDAK+B;AAC/B,0CAAqC;AACrC,mCAAqC;AAYrC,SAAgB,cAAc,CAAE,EAC/B,OAAO,EACP,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACQ;IACrB,MAAM,KAAK,GAAqD;QAC/D,GAAG,kBAAU;QACb,EAAE,EAAE,EAAE,QAAiB,EAAE,KAAK,EAAE,IAAA,SAAE,EAAE,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,wBAAC,iCAAM,IAAC,OAAO,EAAC,YAAY,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAG,CAAC,EAAG,SAAS,EAAC,mBAAmB,aAC3F,uBAAC,2BAAc,IAAC,EAAE,EAAG,OAAO,YAAK,IAAA,SAAE,EAAE,oBAAoB,CAAE,GAAmB,EAC9E,uBAAC,sBAAS,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,uBAAC,iCAAM,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,uBAAC,sBAAS,CAAC,IAAI,IAEd,EAAE,EAAG,MAAM,CAAC,EAAE,EACd,MAAM,EAAG,uBAAC,mBAAM,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"}