@react-spectrum/datepicker 3.0.0-alpha.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/dist/main.js ADDED
@@ -0,0 +1,877 @@
1
+ var {
2
+ Flex
3
+ } = require("@react-spectrum/layout");
4
+
5
+ var {
6
+ useProviderProps,
7
+ useProvider
8
+ } = require("@react-spectrum/provider");
9
+
10
+ var {
11
+ mergeProps,
12
+ useEvent,
13
+ useLayoutEffect,
14
+ useResizeObserver
15
+ } = require("@react-aria/utils");
16
+
17
+ var _spectrumIconsUiCheckmarkMedium = $parcel$interopDefault(require("@spectrum-icons/ui/CheckmarkMedium"));
18
+
19
+ var _spectrumIconsUiAlertMedium = $parcel$interopDefault(require("@spectrum-icons/ui/AlertMedium"));
20
+
21
+ var {
22
+ FieldButton
23
+ } = require("@react-spectrum/button");
24
+
25
+ var {
26
+ Field
27
+ } = require("@react-spectrum/label");
28
+
29
+ var {
30
+ Dialog,
31
+ DialogTrigger
32
+ } = require("@react-spectrum/dialog");
33
+
34
+ var {
35
+ useDatePickerFieldState,
36
+ useTimeFieldState,
37
+ useDatePickerState,
38
+ useDateRangePickerState
39
+ } = require("@react-stately/datepicker");
40
+
41
+ var {
42
+ usePress,
43
+ useHover
44
+ } = require("@react-aria/interactions");
45
+
46
+ var {
47
+ useLocale,
48
+ useDateFormatter
49
+ } = require("@react-aria/i18n");
50
+
51
+ var {
52
+ useFocusManager,
53
+ FocusRing,
54
+ FocusScope,
55
+ useFocusRing
56
+ } = require("@react-aria/focus");
57
+
58
+ var {
59
+ useDateSegment,
60
+ useDateField,
61
+ useDatePicker,
62
+ useDisplayNames,
63
+ useDateRangePicker
64
+ } = require("@react-aria/datepicker");
65
+
66
+ var _react2 = require("react");
67
+
68
+ var _react = $parcel$interopDefault(_react2);
69
+
70
+ var {
71
+ useMemo,
72
+ useRef,
73
+ useCallback,
74
+ useState
75
+ } = _react2;
76
+
77
+ var {
78
+ NumberParser
79
+ } = require("@internationalized/number");
80
+
81
+ var _babelRuntimeHelpersObjectWithoutPropertiesLoose = $parcel$interopDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
82
+
83
+ var {
84
+ createCalendar
85
+ } = require("@internationalized/date");
86
+
87
+ var {
88
+ Content
89
+ } = require("@react-spectrum/view");
90
+
91
+ var {
92
+ classNames,
93
+ useValueEffect,
94
+ useStyleProps
95
+ } = require("@react-spectrum/utils");
96
+
97
+ var _spectrumIconsWorkflowCalendar = $parcel$interopDefault(require("@spectrum-icons/workflow/Calendar"));
98
+
99
+ var {
100
+ Calendar,
101
+ RangeCalendar
102
+ } = require("@react-spectrum/calendar");
103
+
104
+ var _babelRuntimeHelpersExtends = $parcel$interopDefault(require("@babel/runtime/helpers/extends"));
105
+
106
+ require("./main.css");
107
+
108
+ function $parcel$interopDefault(a) {
109
+ return a && a.__esModule ? a.default : a;
110
+ }
111
+
112
+ // ASSET: /Users/govett/dev/react-spectrum-v3/packages/@react-spectrum/datepicker/src/index.css
113
+ var $b6d0c479f6b0b3ae6b1bda0e763d0b7$exports = {};
114
+ $b6d0c479f6b0b3ae6b1bda0e763d0b7$exports = {
115
+ "react-spectrum-Datepicker-fieldWrapper": "_react-spectrum-Datepicker-fieldWrapper_ce051",
116
+ "react-spectrum-Datepicker-startField": "_react-spectrum-Datepicker-startField_ce051",
117
+ "react-spectrum-Datepicker-endField": "_react-spectrum-Datepicker-endField_ce051",
118
+ "react-spectrum-Datepicker-field": "_react-spectrum-Datepicker-field_ce051",
119
+ "react-spectrum-Datepicker-input": "_react-spectrum-Datepicker-input_ce051",
120
+ "react-spectrum-DateField": "_react-spectrum-DateField_ce051",
121
+ "react-spectrum-TimeField": "_react-spectrum-TimeField_ce051",
122
+ "react-spectrum-TimeField-fieldWrapper": "_react-spectrum-TimeField-fieldWrapper_ce051",
123
+ "react-spectrum-Datepicker-inputContents": "_react-spectrum-Datepicker-inputContents_ce051",
124
+ "react-spectrum-Datepicker-rangeDash": "_react-spectrum-Datepicker-rangeDash_ce051",
125
+ "react-spectrum-Datepicker-segments": "_react-spectrum-Datepicker-segments_ce051",
126
+ "react-spectrum-Datepicker-literal": "_react-spectrum-Datepicker-literal_ce051",
127
+ "react-spectrum-DatePicker-cell": "_react-spectrum-DatePicker-cell_ce051",
128
+ "is-placeholder": "_is-placeholder_ce051",
129
+ "is-read-only": "_is-read-only_ce051",
130
+ "react-spectrum-Datepicker-dialog": "_react-spectrum-Datepicker-dialog_ce051",
131
+ "react-spectrum-Datepicker-dialogContent": "_react-spectrum-Datepicker-dialogContent_ce051",
132
+ "react-spectrum-Datepicker-timeFields": "_react-spectrum-Datepicker-timeFields_ce051"
133
+ };
134
+
135
+ function $a4d5ef9475d76e07632597e25134d21f$export$DatePickerSegment(_ref) {
136
+ let {
137
+ segment,
138
+ state
139
+ } = _ref,
140
+ otherProps = _babelRuntimeHelpersObjectWithoutPropertiesLoose(_ref, ["segment", "state"]);
141
+
142
+ switch (segment.type) {
143
+ // A separator, e.g. punctuation
144
+ case 'literal':
145
+ return /*#__PURE__*/_react.createElement($a4d5ef9475d76e07632597e25134d21f$var$LiteralSegment, {
146
+ segment: segment
147
+ });
148
+ // Editable segment
149
+
150
+ default:
151
+ return /*#__PURE__*/_react.createElement($a4d5ef9475d76e07632597e25134d21f$var$EditableSegment, _babelRuntimeHelpersExtends({
152
+ segment: segment,
153
+ state: state
154
+ }, otherProps));
155
+ }
156
+ }
157
+
158
+ var $b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default = $parcel$interopDefault($b6d0c479f6b0b3ae6b1bda0e763d0b7$exports);
159
+
160
+ function $a4d5ef9475d76e07632597e25134d21f$var$LiteralSegment(_ref2) {
161
+ let {
162
+ segment
163
+ } = _ref2;
164
+ let focusManager = useFocusManager();
165
+ let {
166
+ pressProps
167
+ } = usePress({
168
+ onPressStart: e => {
169
+ if (e.pointerType === 'mouse') {
170
+ let res = focusManager.focusNext({
171
+ from: e.target
172
+ });
173
+
174
+ if (!res) {
175
+ focusManager.focusPrevious({
176
+ from: e.target
177
+ });
178
+ }
179
+ }
180
+ }
181
+ });
182
+ return /*#__PURE__*/_react.createElement("span", _babelRuntimeHelpersExtends({
183
+ "aria-hidden": "true",
184
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-literal')
185
+ }, pressProps), segment.text);
186
+ }
187
+
188
+ function $a4d5ef9475d76e07632597e25134d21f$var$EditableSegment(_ref3) {
189
+ let {
190
+ segment,
191
+ state
192
+ } = _ref3,
193
+ otherProps = _babelRuntimeHelpersObjectWithoutPropertiesLoose(_ref3, ["segment", "state"]);
194
+
195
+ let ref = useRef();
196
+ let {
197
+ segmentProps
198
+ } = useDateSegment(otherProps, segment, state, ref);
199
+ let {
200
+ locale
201
+ } = useLocale();
202
+ let parser = useMemo(() => new NumberParser(locale), [locale]);
203
+ let isNumeric = useMemo(() => parser.isValidPartialNumber(segment.text), [segment.text, parser]);
204
+ return /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({
205
+ ref: ref,
206
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-DatePicker-cell', {
207
+ 'is-placeholder': segment.isPlaceholder,
208
+ 'is-read-only': !segment.isEditable
209
+ }),
210
+ style: {
211
+ minWidth: !isNumeric ? null : String(segment.maxValue).length + 'ch'
212
+ }
213
+ }, segmentProps), segment.isPlaceholder ? '' : segment.text);
214
+ }
215
+
216
+ function $bb1beeb056291dd4835f70688fa2d1$export$DatePickerField(props) {
217
+ let {
218
+ isDisabled,
219
+ isReadOnly,
220
+ isRequired,
221
+ inputClassName
222
+ } = props;
223
+ let ref = useRef();
224
+ let {
225
+ locale
226
+ } = useLocale();
227
+ let state = useDatePickerFieldState(_babelRuntimeHelpersExtends({}, props, {
228
+ locale,
229
+ createCalendar
230
+ }));
231
+ let {
232
+ fieldProps
233
+ } = useDateField(props, state, ref);
234
+ return /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, fieldProps, {
235
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-segments', inputClassName),
236
+ ref: ref
237
+ }), state.segments.map((segment, i) => /*#__PURE__*/_react.createElement($a4d5ef9475d76e07632597e25134d21f$export$DatePickerSegment, {
238
+ key: i,
239
+ segment: segment,
240
+ state: state,
241
+ isDisabled: isDisabled,
242
+ isReadOnly: isReadOnly,
243
+ isRequired: isRequired
244
+ })));
245
+ }
246
+
247
+ // ASSET: /Users/govett/dev/react-spectrum-v3/node_modules/@adobe/spectrum-css-temp/components/textfield/vars.css
248
+ var $d6ccebc39ce6c9807064e14b8824ec$exports = {};
249
+ $d6ccebc39ce6c9807064e14b8824ec$exports = {
250
+ "spectrum-Textfield": "_spectrum-Textfield_61339",
251
+ "spectrum-Textfield--quiet": "_spectrum-Textfield--quiet_61339",
252
+ "spectrum-Textfield--multiline": "_spectrum-Textfield--multiline_61339",
253
+ "spectrum-Textfield-input": "_spectrum-Textfield-input_61339",
254
+ "is-placeholder": "_is-placeholder_61339",
255
+ "is-hovered": "_is-hovered_61339",
256
+ "spectrum-Textfield--valid": "_spectrum-Textfield--valid_61339",
257
+ "spectrum-Textfield--invalid": "_spectrum-Textfield--invalid_61339",
258
+ "spectrum-Textfield--loadable": "_spectrum-Textfield--loadable_61339",
259
+ "spectrum-Textfield-validationIcon": "_spectrum-Textfield-validationIcon_61339",
260
+ "spectrum-Textfield-icon": "_spectrum-Textfield-icon_61339",
261
+ "spectrum-Textfield-inputIcon": "_spectrum-Textfield-inputIcon_61339",
262
+ "spectrum-Textfield-circleLoader": "_spectrum-Textfield-circleLoader_61339",
263
+ "is-focused": "_is-focused_61339",
264
+ "focus-ring": "_focus-ring_61339",
265
+ "is-disabled": "_is-disabled_61339"
266
+ };
267
+ var $d6ccebc39ce6c9807064e14b8824ec$$interop$default = $parcel$interopDefault($d6ccebc39ce6c9807064e14b8824ec$exports);
268
+
269
+ function $fc05313d559dfe41cbc11f190edaab5f$export$Input(props) {
270
+ let defaultRef = useRef();
271
+ let {
272
+ isDisabled,
273
+ isQuiet,
274
+ inputClassName,
275
+ validationState,
276
+ children,
277
+ fieldProps,
278
+ inputRef = defaultRef,
279
+ className,
280
+ autoFocus,
281
+ style
282
+ } = props; // Reserve padding for the error icon when the width of the input is unconstrained.
283
+ // When constrained, don't reserve space because adding it only when invalid will
284
+ // not cause a layout shift.
285
+
286
+ let [reservePadding, setReservePadding] = useValueEffect(false);
287
+ let onResize = useCallback(() => setReservePadding(function* (reservePadding) {
288
+ if (reservePadding) {
289
+ // Try to collapse padding if the content is clipped.
290
+ if (inputRef.current.scrollWidth > inputRef.current.offsetWidth) {
291
+ let width = inputRef.current.parentElement.offsetWidth;
292
+ yield false; // If removing padding causes a layout shift, add it back.
293
+
294
+ if (inputRef.current.parentElement.offsetWidth !== width) {
295
+ yield true;
296
+ }
297
+ }
298
+ } else {
299
+ // Try to add padding if the content is not clipped.
300
+ if (inputRef.current.offsetWidth >= inputRef.current.scrollWidth) {
301
+ let width = inputRef.current.parentElement.offsetWidth;
302
+ yield true; // If adding padding does not change the width (i.e. width is constrained), remove it again.
303
+
304
+ if (inputRef.current.parentElement.offsetWidth === width) {
305
+ yield false;
306
+ }
307
+ }
308
+ }
309
+ }), [inputRef, setReservePadding]);
310
+ useLayoutEffect(onResize, [onResize]);
311
+ useResizeObserver({
312
+ ref: inputRef,
313
+ onResize
314
+ }); // We also need to listen for resize events of the window so we can detect
315
+ // when there is enough space for the padding to be re-added. Ideally we'd
316
+ // use a resize observer on a parent element, but it's hard to know _what_
317
+ // parent element.
318
+
319
+ useEvent(useRef(window), 'resize', onResize);
320
+ let isInvalid = validationState === 'invalid';
321
+ let textfieldClass = classNames($d6ccebc39ce6c9807064e14b8824ec$$interop$default, 'spectrum-Textfield', {
322
+ 'spectrum-Textfield--invalid': isInvalid,
323
+ 'spectrum-Textfield--valid': validationState === 'valid',
324
+ 'spectrum-Textfield--quiet': isQuiet
325
+ }, classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-field'), className);
326
+ let inputClass = classNames($d6ccebc39ce6c9807064e14b8824ec$$interop$default, 'spectrum-Textfield-input', {
327
+ 'is-disabled': isDisabled,
328
+ 'is-invalid': isInvalid
329
+ }, reservePadding && classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-input'), inputClassName);
330
+ let iconClass = classNames($d6ccebc39ce6c9807064e14b8824ec$$interop$default, 'spectrum-Textfield-validationIcon');
331
+ let validationIcon = null;
332
+
333
+ if (validationState === 'invalid') {
334
+ validationIcon = /*#__PURE__*/_react.createElement(_spectrumIconsUiAlertMedium, {
335
+ UNSAFE_className: iconClass
336
+ });
337
+ } else if (validationState === 'valid') {
338
+ validationIcon = /*#__PURE__*/_react.createElement(_spectrumIconsUiCheckmarkMedium, {
339
+ UNSAFE_className: iconClass
340
+ });
341
+ }
342
+
343
+ return /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, mergeProps(fieldProps), {
344
+ className: textfieldClass,
345
+ style: style
346
+ }), /*#__PURE__*/_react.createElement(FocusRing, {
347
+ focusClass: classNames($d6ccebc39ce6c9807064e14b8824ec$$interop$default, 'is-focused'),
348
+ focusRingClass: classNames($d6ccebc39ce6c9807064e14b8824ec$$interop$default, 'focus-ring'),
349
+ isTextInput: true,
350
+ within: true
351
+ }, /*#__PURE__*/_react.createElement("div", {
352
+ role: "presentation",
353
+ className: inputClass
354
+ }, /*#__PURE__*/_react.createElement("div", {
355
+ role: "presentation",
356
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-inputContents'),
357
+ ref: inputRef
358
+ }, /*#__PURE__*/_react.createElement(FocusScope, {
359
+ autoFocus: autoFocus
360
+ }, children)))), validationIcon);
361
+ }
362
+
363
+ // ASSET: /Users/govett/dev/react-spectrum-v3/node_modules/@adobe/spectrum-css-temp/components/inputgroup/vars.css
364
+ var $da042374adac990dbdf960d689b813$exports = {};
365
+ $da042374adac990dbdf960d689b813$exports = {
366
+ "spectrum-InputGroup": "_spectrum-InputGroup_d053e",
367
+ "spectrum-FieldButton": "_spectrum-FieldButton_d053e",
368
+ "is-disabled": "_is-disabled_d053e",
369
+ "spectrum-InputGroup--invalid": "_spectrum-InputGroup--invalid_d053e",
370
+ "spectrum-InputGroup--quiet": "_spectrum-InputGroup--quiet_d053e",
371
+ "spectrum-InputGroup-field": "_spectrum-InputGroup-field_d053e",
372
+ "spectrum-InputGroup-input-validationIcon": "_spectrum-InputGroup-input-validationIcon_d053e",
373
+ "spectrum-InputGroup-input-circleLoader": "_spectrum-InputGroup-input-circleLoader_d053e",
374
+ "spectrum-InputGroup-input": "_spectrum-InputGroup-input_d053e",
375
+ "spectrum-InputGroup-icon": "_spectrum-InputGroup-icon_d053e",
376
+ "spectrum-InputGroup-popover--quiet": "_spectrum-InputGroup-popover--quiet_d053e",
377
+ "spectrum-Datepicker--range": "_spectrum-Datepicker--range_d053e",
378
+ "spectrum-Datepicker--datetimeRange": "_spectrum-Datepicker--datetimeRange_d053e",
379
+ "spectrum-Datepicker-startField": "_spectrum-Datepicker-startField_d053e",
380
+ "spectrum-Datepicker-endField": "_spectrum-Datepicker-endField_d053e",
381
+ "spectrum-Datepicker--rangeDash": "_spectrum-Datepicker--rangeDash_d053e",
382
+ "is-focused": "_is-focused_d053e",
383
+ "spectrum-Datepicker-focusRing": "_spectrum-Datepicker-focusRing_d053e",
384
+ "is-hovered": "_is-hovered_d053e",
385
+ "focus-ring": "_focus-ring_d053e",
386
+ "is-selected": "_is-selected_d053e",
387
+ "spectrum-FieldButton--invalid": "_spectrum-FieldButton--invalid_d053e"
388
+ };
389
+
390
+ function TimeField(props) {
391
+ props = useProviderProps(props);
392
+ let {
393
+ autoFocus,
394
+ isDisabled,
395
+ isReadOnly,
396
+ isRequired,
397
+ isQuiet
398
+ } = props;
399
+ let ref = useRef();
400
+ let {
401
+ locale
402
+ } = useLocale();
403
+ let state = useTimeFieldState(_babelRuntimeHelpersExtends({}, props, {
404
+ locale,
405
+ createCalendar
406
+ }));
407
+ let {
408
+ labelProps,
409
+ fieldProps,
410
+ descriptionProps,
411
+ errorMessageProps
412
+ } = useDateField(props, state, ref);
413
+ return /*#__PURE__*/_react.createElement(Field, _babelRuntimeHelpersExtends({}, props, {
414
+ labelProps: labelProps,
415
+ descriptionProps: descriptionProps,
416
+ errorMessageProps: errorMessageProps,
417
+ validationState: state.validationState,
418
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-TimeField-fieldWrapper')
419
+ }), /*#__PURE__*/_react.createElement($fc05313d559dfe41cbc11f190edaab5f$export$Input, {
420
+ fieldProps: fieldProps,
421
+ isDisabled: isDisabled,
422
+ isQuiet: isQuiet,
423
+ autoFocus: autoFocus,
424
+ validationState: state.validationState,
425
+ inputRef: ref,
426
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-TimeField')
427
+ }, state.segments.map((segment, i) => /*#__PURE__*/_react.createElement($a4d5ef9475d76e07632597e25134d21f$export$DatePickerSegment, {
428
+ key: i,
429
+ segment: segment,
430
+ state: state,
431
+ isDisabled: isDisabled,
432
+ isReadOnly: isReadOnly,
433
+ isRequired: isRequired
434
+ }))));
435
+ }
436
+
437
+ exports.TimeField = TimeField;
438
+
439
+ function $f1ff9c857707c1ccb13932f572ebbde3$export$useFormatHelpText(props) {
440
+ let formatter = useDateFormatter({
441
+ dateStyle: 'short'
442
+ });
443
+ let displayNames = useDisplayNames();
444
+ return useMemo(() => {
445
+ if (props.description) {
446
+ return props.description;
447
+ }
448
+
449
+ if (props.showFormatHelpText) {
450
+ return formatter.formatToParts(new Date()).map(s => {
451
+ if (s.type === 'literal') {
452
+ return s.value;
453
+ }
454
+
455
+ return displayNames.of(s.type);
456
+ }).join(' ');
457
+ }
458
+
459
+ return '';
460
+ }, [props.description, props.showFormatHelpText, formatter, displayNames]);
461
+ }
462
+
463
+ function $f1ff9c857707c1ccb13932f572ebbde3$export$useVisibleMonths(maxVisibleMonths) {
464
+ let {
465
+ scale
466
+ } = useProvider();
467
+ let [visibleMonths, setVisibleMonths] = useState($f1ff9c857707c1ccb13932f572ebbde3$var$getVisibleMonths(scale));
468
+ useLayoutEffect(() => {
469
+ let onResize = () => setVisibleMonths($f1ff9c857707c1ccb13932f572ebbde3$var$getVisibleMonths(scale));
470
+
471
+ onResize();
472
+ window.addEventListener('resize', onResize);
473
+ return () => {
474
+ window.removeEventListener('resize', onResize);
475
+ };
476
+ }, [scale]);
477
+ return Math.max(1, Math.min(visibleMonths, maxVisibleMonths, 3));
478
+ }
479
+
480
+ function $f1ff9c857707c1ccb13932f572ebbde3$var$getVisibleMonths(scale) {
481
+ let monthWidth = scale === 'large' ? 336 : 280;
482
+ let gap = scale === 'large' ? 30 : 24;
483
+ let popoverPadding = scale === 'large' ? 32 : 48;
484
+ return Math.floor((window.innerWidth - popoverPadding * 2) / (monthWidth + gap));
485
+ }
486
+
487
+ var $da042374adac990dbdf960d689b813$$interop$default = $parcel$interopDefault($da042374adac990dbdf960d689b813$exports);
488
+
489
+ function DatePicker(props) {
490
+ props = useProviderProps(props);
491
+ let {
492
+ autoFocus,
493
+ isQuiet,
494
+ isDisabled,
495
+ isReadOnly,
496
+ isRequired,
497
+ placeholderValue,
498
+ maxVisibleMonths = 1
499
+ } = props;
500
+ let {
501
+ hoverProps,
502
+ isHovered
503
+ } = useHover({
504
+ isDisabled
505
+ });
506
+ let targetRef = useRef();
507
+ let state = useDatePickerState(props);
508
+ let {
509
+ groupProps,
510
+ labelProps,
511
+ fieldProps,
512
+ descriptionProps,
513
+ errorMessageProps,
514
+ buttonProps,
515
+ dialogProps
516
+ } = useDatePicker(props, state, targetRef);
517
+ let {
518
+ value,
519
+ setValue,
520
+ isOpen,
521
+ setOpen
522
+ } = state;
523
+ let {
524
+ direction
525
+ } = useLocale();
526
+ let {
527
+ isFocused,
528
+ isFocusVisible,
529
+ focusProps
530
+ } = useFocusRing({
531
+ within: true,
532
+ isTextInput: true,
533
+ autoFocus
534
+ });
535
+ let className = classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-InputGroup', {
536
+ 'spectrum-InputGroup--quiet': isQuiet,
537
+ 'spectrum-InputGroup--invalid': state.validationState === 'invalid',
538
+ 'is-disabled': isDisabled,
539
+ 'is-hovered': isHovered,
540
+ 'is-focused': isFocused,
541
+ 'focus-ring': isFocusVisible
542
+ });
543
+ let fieldClassName = classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-InputGroup-input', {
544
+ 'is-disabled': isDisabled,
545
+ 'is-invalid': state.validationState === 'invalid'
546
+ }); // Note: this description is intentionally not passed to useDatePicker.
547
+ // The format help text is unnecessary for screen reader users because each segment already has a label.
548
+
549
+ let description = $f1ff9c857707c1ccb13932f572ebbde3$export$useFormatHelpText(props);
550
+
551
+ if (description && !props.description) {
552
+ descriptionProps.id = null;
553
+ }
554
+
555
+ let placeholder = placeholderValue;
556
+ let timePlaceholder = placeholder && 'hour' in placeholder ? placeholder : null;
557
+ let timeMinValue = props.minValue && 'hour' in props.minValue ? props.minValue : null;
558
+ let timeMaxValue = props.maxValue && 'hour' in props.maxValue ? props.maxValue : null;
559
+ let timeGranularity = state.granularity === 'hour' || state.granularity === 'minute' || state.granularity === 'second' || state.granularity === 'millisecond' ? state.granularity : null;
560
+ let showTimeField = !!timeGranularity;
561
+ let visibleMonths = $f1ff9c857707c1ccb13932f572ebbde3$export$useVisibleMonths(maxVisibleMonths);
562
+ return /*#__PURE__*/_react.createElement(Field, _babelRuntimeHelpersExtends({}, props, {
563
+ ref: targetRef,
564
+ description: description,
565
+ labelProps: labelProps,
566
+ descriptionProps: descriptionProps,
567
+ errorMessageProps: errorMessageProps,
568
+ validationState: state.validationState,
569
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-fieldWrapper')
570
+ }), /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, mergeProps(groupProps, hoverProps, focusProps), {
571
+ className: className
572
+ }), /*#__PURE__*/_react.createElement($fc05313d559dfe41cbc11f190edaab5f$export$Input, {
573
+ isDisabled: isDisabled,
574
+ isQuiet: isQuiet,
575
+ validationState: state.validationState,
576
+ autoFocus: autoFocus,
577
+ className: classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-InputGroup-field'),
578
+ inputClassName: fieldClassName
579
+ }, /*#__PURE__*/_react.createElement($bb1beeb056291dd4835f70688fa2d1$export$DatePickerField, _babelRuntimeHelpersExtends({}, fieldProps, {
580
+ isQuiet: isQuiet,
581
+ validationState: state.validationState,
582
+ value: value,
583
+ onChange: setValue,
584
+ placeholderValue: placeholderValue,
585
+ isDisabled: isDisabled,
586
+ isReadOnly: isReadOnly,
587
+ isRequired: isRequired,
588
+ granularity: props.granularity,
589
+ hourCycle: props.hourCycle,
590
+ inputClassName: fieldClassName,
591
+ hideTimeZone: props.hideTimeZone
592
+ }))), /*#__PURE__*/_react.createElement(DialogTrigger, {
593
+ type: "popover",
594
+ mobileType: "tray",
595
+ placement: direction === 'rtl' ? 'bottom right' : 'bottom left',
596
+ targetRef: targetRef,
597
+ hideArrow: true,
598
+ isOpen: isOpen,
599
+ onOpenChange: setOpen
600
+ }, /*#__PURE__*/_react.createElement(FieldButton, _babelRuntimeHelpersExtends({}, buttonProps, {
601
+ UNSAFE_className: classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-FieldButton'),
602
+ isQuiet: isQuiet,
603
+ validationState: state.validationState,
604
+ isDisabled: isDisabled || isReadOnly
605
+ }), /*#__PURE__*/_react.createElement(_spectrumIconsWorkflowCalendar, null)), /*#__PURE__*/_react.createElement(Dialog, _babelRuntimeHelpersExtends({
606
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-dialog')
607
+ }, dialogProps), /*#__PURE__*/_react.createElement(Content, {
608
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-dialogContent')
609
+ }, /*#__PURE__*/_react.createElement(Calendar, {
610
+ autoFocus: true,
611
+ value: state.dateValue,
612
+ onChange: state.setDateValue,
613
+ visibleMonths: visibleMonths,
614
+ minValue: props.minValue,
615
+ maxValue: props.maxValue
616
+ }), showTimeField && /*#__PURE__*/_react.createElement("div", {
617
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-timeFields')
618
+ }, /*#__PURE__*/_react.createElement(TimeField, {
619
+ label: "Time",
620
+ value: state.timeValue,
621
+ onChange: state.setTimeValue,
622
+ placeholderValue: timePlaceholder,
623
+ granularity: timeGranularity,
624
+ minValue: timeMinValue,
625
+ maxValue: timeMaxValue,
626
+ hourCycle: props.hourCycle,
627
+ hideTimeZone: props.hideTimeZone,
628
+ marginTop: "size-100"
629
+ })))))));
630
+ }
631
+
632
+ exports.DatePicker = DatePicker;
633
+
634
+ function DateRangePicker(props) {
635
+ var _state$timeRange, _state$timeRange2;
636
+
637
+ props = useProviderProps(props);
638
+
639
+ let {
640
+ isQuiet,
641
+ isDisabled,
642
+ isReadOnly,
643
+ isRequired,
644
+ autoFocus,
645
+ placeholderValue,
646
+ maxVisibleMonths = 1
647
+ } = props,
648
+ otherProps = _babelRuntimeHelpersObjectWithoutPropertiesLoose(props, ["isQuiet", "isDisabled", "isReadOnly", "isRequired", "autoFocus", "placeholderValue", "maxVisibleMonths"]);
649
+
650
+ let {
651
+ styleProps
652
+ } = useStyleProps(otherProps);
653
+ let {
654
+ hoverProps,
655
+ isHovered
656
+ } = useHover({
657
+ isDisabled
658
+ });
659
+ let targetRef = useRef();
660
+ let state = useDateRangePickerState(props);
661
+ let {
662
+ labelProps,
663
+ groupProps,
664
+ buttonProps,
665
+ dialogProps,
666
+ startFieldProps,
667
+ endFieldProps,
668
+ descriptionProps,
669
+ errorMessageProps
670
+ } = useDateRangePicker(props, state, targetRef);
671
+ let {
672
+ value,
673
+ isOpen,
674
+ setOpen
675
+ } = state;
676
+ let {
677
+ direction
678
+ } = useLocale();
679
+ let {
680
+ isFocused,
681
+ isFocusVisible,
682
+ focusProps
683
+ } = useFocusRing({
684
+ within: true,
685
+ isTextInput: true,
686
+ autoFocus
687
+ });
688
+ let className = classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-InputGroup', {
689
+ 'spectrum-InputGroup--quiet': isQuiet,
690
+ 'spectrum-InputGroup--invalid': state.validationState === 'invalid',
691
+ 'is-disabled': isDisabled,
692
+ 'is-hovered': isHovered,
693
+ 'is-focused': isFocused,
694
+ 'focus-ring': isFocusVisible
695
+ }, styleProps.className);
696
+ let fieldClassName = classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-InputGroup-input', {
697
+ 'is-disabled': isDisabled,
698
+ 'is-invalid': state.validationState === 'invalid'
699
+ }); // Note: this description is intentionally not passed to useDatePicker.
700
+ // The format help text is unnecessary for screen reader users because each segment already has a label.
701
+
702
+ let description = $f1ff9c857707c1ccb13932f572ebbde3$export$useFormatHelpText(props);
703
+
704
+ if (description && !props.description) {
705
+ descriptionProps.id = null;
706
+ }
707
+
708
+ let placeholder = placeholderValue;
709
+ let timePlaceholder = placeholder && 'hour' in placeholder ? placeholder : null;
710
+ let timeMinValue = props.minValue && 'hour' in props.minValue ? props.minValue : null;
711
+ let timeMaxValue = props.maxValue && 'hour' in props.maxValue ? props.maxValue : null;
712
+ let timeGranularity = state.granularity === 'hour' || state.granularity === 'minute' || state.granularity === 'second' || state.granularity === 'millisecond' ? state.granularity : null;
713
+ let showTimeField = !!timeGranularity;
714
+ let visibleMonths = $f1ff9c857707c1ccb13932f572ebbde3$export$useVisibleMonths(maxVisibleMonths);
715
+ return /*#__PURE__*/_react.createElement(Field, _babelRuntimeHelpersExtends({}, props, {
716
+ ref: targetRef,
717
+ description: description,
718
+ labelProps: labelProps,
719
+ descriptionProps: descriptionProps,
720
+ errorMessageProps: errorMessageProps,
721
+ validationState: state.validationState,
722
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-fieldWrapper')
723
+ }), /*#__PURE__*/_react.createElement("div", _babelRuntimeHelpersExtends({}, styleProps, mergeProps(groupProps, hoverProps, focusProps), {
724
+ className: className
725
+ }), /*#__PURE__*/_react.createElement($fc05313d559dfe41cbc11f190edaab5f$export$Input, {
726
+ isDisabled: isDisabled,
727
+ isQuiet: isQuiet,
728
+ validationState: state.validationState,
729
+ autoFocus: autoFocus,
730
+ className: classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-InputGroup-field'),
731
+ inputClassName: fieldClassName
732
+ }, /*#__PURE__*/_react.createElement($bb1beeb056291dd4835f70688fa2d1$export$DatePickerField, _babelRuntimeHelpersExtends({}, startFieldProps, {
733
+ isQuiet: props.isQuiet,
734
+ isDisabled: isDisabled,
735
+ isReadOnly: isReadOnly,
736
+ isRequired: isRequired,
737
+ validationState: state.validationState,
738
+ placeholderValue: placeholderValue,
739
+ value: (value == null ? void 0 : value.start) || null,
740
+ defaultValue: null,
741
+ onChange: start => state.setDateTime('start', start),
742
+ granularity: props.granularity,
743
+ hourCycle: props.hourCycle,
744
+ inputClassName: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-startField')
745
+ })), /*#__PURE__*/_react.createElement($ba91a2bde73306c4b85ccbc76fb468fc$var$DateRangeDash, null), /*#__PURE__*/_react.createElement($bb1beeb056291dd4835f70688fa2d1$export$DatePickerField, _babelRuntimeHelpersExtends({}, endFieldProps, {
746
+ isQuiet: props.isQuiet,
747
+ isDisabled: isDisabled,
748
+ isReadOnly: isReadOnly,
749
+ isRequired: isRequired,
750
+ validationState: state.validationState,
751
+ placeholderValue: placeholderValue,
752
+ value: (value == null ? void 0 : value.end) || null,
753
+ defaultValue: null,
754
+ onChange: end => state.setDateTime('end', end),
755
+ granularity: props.granularity,
756
+ hourCycle: props.hourCycle,
757
+ inputClassName: classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-Datepicker-endField', classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-endField'))
758
+ }))), /*#__PURE__*/_react.createElement(DialogTrigger, {
759
+ type: "popover",
760
+ mobileType: "tray",
761
+ placement: direction === 'rtl' ? 'bottom right' : 'bottom left',
762
+ targetRef: targetRef,
763
+ hideArrow: true,
764
+ isOpen: isOpen,
765
+ onOpenChange: setOpen
766
+ }, /*#__PURE__*/_react.createElement(FieldButton, _babelRuntimeHelpersExtends({}, buttonProps, {
767
+ UNSAFE_className: classNames($da042374adac990dbdf960d689b813$$interop$default, 'spectrum-FieldButton'),
768
+ isQuiet: isQuiet,
769
+ validationState: state.validationState,
770
+ isDisabled: isDisabled || isReadOnly
771
+ }), /*#__PURE__*/_react.createElement(_spectrumIconsWorkflowCalendar, null)), /*#__PURE__*/_react.createElement(Dialog, _babelRuntimeHelpersExtends({
772
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-dialog')
773
+ }, dialogProps), /*#__PURE__*/_react.createElement(Content, {
774
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-dialogContent')
775
+ }, /*#__PURE__*/_react.createElement(RangeCalendar, {
776
+ autoFocus: true,
777
+ value: state.dateRange,
778
+ onChange: state.setDateRange,
779
+ visibleMonths: visibleMonths,
780
+ minValue: props.minValue,
781
+ maxValue: props.maxValue
782
+ }), showTimeField && /*#__PURE__*/_react.createElement(Flex, {
783
+ gap: "size-100",
784
+ marginTop: "size-100",
785
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-timeFields')
786
+ }, /*#__PURE__*/_react.createElement(TimeField, {
787
+ label: "Start time",
788
+ value: ((_state$timeRange = state.timeRange) == null ? void 0 : _state$timeRange.start) || null,
789
+ onChange: v => state.setTime('start', v),
790
+ placeholderValue: timePlaceholder,
791
+ granularity: timeGranularity,
792
+ minValue: timeMinValue,
793
+ maxValue: timeMaxValue,
794
+ hourCycle: props.hourCycle,
795
+ hideTimeZone: props.hideTimeZone,
796
+ flex: true
797
+ }), /*#__PURE__*/_react.createElement(TimeField, {
798
+ label: "End time",
799
+ value: ((_state$timeRange2 = state.timeRange) == null ? void 0 : _state$timeRange2.end) || null,
800
+ onChange: v => state.setTime('end', v),
801
+ placeholderValue: timePlaceholder,
802
+ granularity: timeGranularity,
803
+ minValue: timeMinValue,
804
+ maxValue: timeMaxValue,
805
+ hourCycle: props.hourCycle,
806
+ hideTimeZone: props.hideTimeZone,
807
+ flex: true
808
+ })))))));
809
+ }
810
+
811
+ exports.DateRangePicker = DateRangePicker;
812
+
813
+ function $ba91a2bde73306c4b85ccbc76fb468fc$var$DateRangeDash() {
814
+ return /*#__PURE__*/_react.createElement("div", {
815
+ "aria-hidden": "true",
816
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-rangeDash')
817
+ });
818
+ }
819
+
820
+ function DateField(props) {
821
+ props = useProviderProps(props);
822
+ let {
823
+ autoFocus,
824
+ isDisabled,
825
+ isReadOnly,
826
+ isRequired,
827
+ isQuiet
828
+ } = props;
829
+ let ref = useRef();
830
+ let {
831
+ locale
832
+ } = useLocale();
833
+ let state = useDatePickerFieldState(_babelRuntimeHelpersExtends({}, props, {
834
+ locale,
835
+ createCalendar
836
+ }));
837
+ let {
838
+ labelProps,
839
+ fieldProps,
840
+ descriptionProps,
841
+ errorMessageProps
842
+ } = useDateField(props, state, ref); // Note: this description is intentionally not passed to useDatePicker.
843
+ // The format help text is unnecessary for screen reader users because each segment already has a label.
844
+
845
+ let description = $f1ff9c857707c1ccb13932f572ebbde3$export$useFormatHelpText(props);
846
+
847
+ if (description && !props.description) {
848
+ descriptionProps.id = null;
849
+ }
850
+
851
+ return /*#__PURE__*/_react.createElement(Field, _babelRuntimeHelpersExtends({}, props, {
852
+ description: description,
853
+ labelProps: labelProps,
854
+ descriptionProps: descriptionProps,
855
+ errorMessageProps: errorMessageProps,
856
+ validationState: state.validationState,
857
+ UNSAFE_className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-Datepicker-fieldWrapper')
858
+ }), /*#__PURE__*/_react.createElement($fc05313d559dfe41cbc11f190edaab5f$export$Input, {
859
+ fieldProps: fieldProps,
860
+ isDisabled: isDisabled,
861
+ isQuiet: isQuiet,
862
+ autoFocus: autoFocus,
863
+ validationState: state.validationState,
864
+ inputRef: ref,
865
+ className: classNames($b6d0c479f6b0b3ae6b1bda0e763d0b7$$interop$default, 'react-spectrum-DateField')
866
+ }, state.segments.map((segment, i) => /*#__PURE__*/_react.createElement($a4d5ef9475d76e07632597e25134d21f$export$DatePickerSegment, {
867
+ key: i,
868
+ segment: segment,
869
+ state: state,
870
+ isDisabled: isDisabled,
871
+ isReadOnly: isReadOnly,
872
+ isRequired: isRequired
873
+ }))));
874
+ }
875
+
876
+ exports.DateField = DateField;
877
+ //# sourceMappingURL=main.js.map