@react-stately/datepicker 3.0.0-nightly.3173 → 3.0.0-rc.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 CHANGED
@@ -1,29 +1,16 @@
1
1
  var $h2qOe$internationalizeddate = require("@internationalized/date");
2
2
  var $h2qOe$reactstatelyutils = require("@react-stately/utils");
3
+ var $h2qOe$reactstatelyoverlays = require("@react-stately/overlays");
3
4
  var $h2qOe$react = require("react");
4
5
 
5
- function $parcel$exportWildcard(dest, source) {
6
- Object.keys(source).forEach(function(key) {
7
- if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
8
- return;
9
- }
10
-
11
- Object.defineProperty(dest, key, {
12
- enumerable: true,
13
- get: function get() {
14
- return source[key];
15
- }
16
- });
17
- });
18
-
19
- return dest;
20
- }
21
6
  function $parcel$export(e, n, v, s) {
22
7
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
23
8
  }
24
- var $aaab7a647e17e1fd$exports = {};
25
9
 
26
- $parcel$export($aaab7a647e17e1fd$exports, "useDatePickerState", () => $aaab7a647e17e1fd$export$87194bb378cc3ac2);
10
+ $parcel$export(module.exports, "useDatePickerState", () => $aaab7a647e17e1fd$export$87194bb378cc3ac2);
11
+ $parcel$export(module.exports, "useDateFieldState", () => $596a1f0f523d6752$export$60e84778edff6d26);
12
+ $parcel$export(module.exports, "useDateRangePickerState", () => $7072d26f58deb33b$export$e50a61c1de9f574);
13
+ $parcel$export(module.exports, "useTimeFieldState", () => $2654e87be0231a69$export$fd53cef0cc796101);
27
14
 
28
15
 
29
16
 
@@ -102,9 +89,10 @@ function $50d5d6a623389320$export$2440da353cedad43(v, granularity) {
102
89
 
103
90
 
104
91
 
92
+
105
93
  function $aaab7a647e17e1fd$export$87194bb378cc3ac2(props) {
106
94
  var ref;
107
- let [isOpen1, setOpen] = $h2qOe$react.useState(false);
95
+ let overlayState = $h2qOe$reactstatelyoverlays.useOverlayTriggerState(props);
108
96
  let [value, setValue] = $h2qOe$reactstatelyutils.useControlledState(props.value, props.defaultValue || null, props.onChange);
109
97
  let v = value || props.placeholderValue;
110
98
  let [granularity, defaultTimeZone] = $50d5d6a623389320$export$2440da353cedad43(v, props.granularity);
@@ -130,7 +118,7 @@ function $aaab7a647e17e1fd$export$87194bb378cc3ac2(props) {
130
118
  if (selectedTime || shouldClose) commitValue(newValue, selectedTime || $50d5d6a623389320$export$c5221a78ef73c5e9(props.placeholderValue));
131
119
  else setSelectedDate(newValue);
132
120
  } else setValue(newValue);
133
- if (shouldClose) setOpen(false);
121
+ if (shouldClose) overlayState.setOpen(false);
134
122
  };
135
123
  let selectTime = (newValue)=>{
136
124
  if (selectedDate) commitValue(selectedDate, newValue);
@@ -146,13 +134,13 @@ function $aaab7a647e17e1fd$export$87194bb378cc3ac2(props) {
146
134
  setTimeValue: selectTime,
147
135
  granularity: granularity,
148
136
  hasTime: hasTime,
149
- isOpen: isOpen1,
137
+ isOpen: overlayState.isOpen,
150
138
  setOpen (isOpen) {
151
139
  // Commit the selected date when the calendar is closed. Use a placeholder time if one wasn't set.
152
140
  // If only the time was set and not the date, don't commit. The state will be preserved until
153
141
  // the user opens the popover again.
154
142
  if (!isOpen && !value && selectedDate && hasTime) commitValue(selectedDate, selectedTime || $50d5d6a623389320$export$c5221a78ef73c5e9(props.placeholderValue));
155
- setOpen(isOpen);
143
+ overlayState.setOpen(isOpen);
156
144
  },
157
145
  validationState: validationState,
158
146
  formatValue (locale, fieldOptions) {
@@ -170,14 +158,11 @@ function $aaab7a647e17e1fd$export$87194bb378cc3ac2(props) {
170
158
  }
171
159
 
172
160
 
173
- var $6d4e641deb83cb9e$exports = {};
174
-
175
- $parcel$export($6d4e641deb83cb9e$exports, "useDatePickerFieldState", () => $6d4e641deb83cb9e$export$714a241b39a650d6);
176
161
 
177
162
 
178
163
 
179
164
 
180
- const $6d4e641deb83cb9e$var$EDITABLE_SEGMENTS = {
165
+ const $596a1f0f523d6752$var$EDITABLE_SEGMENTS = {
181
166
  year: true,
182
167
  month: true,
183
168
  day: true,
@@ -187,7 +172,7 @@ const $6d4e641deb83cb9e$var$EDITABLE_SEGMENTS = {
187
172
  dayPeriod: true,
188
173
  era: true
189
174
  };
190
- const $6d4e641deb83cb9e$var$PAGE_STEP = {
175
+ const $596a1f0f523d6752$var$PAGE_STEP = {
191
176
  year: 5,
192
177
  month: 2,
193
178
  day: 7,
@@ -196,10 +181,10 @@ const $6d4e641deb83cb9e$var$PAGE_STEP = {
196
181
  second: 15
197
182
  };
198
183
  // Node seems to convert everything to lowercase...
199
- const $6d4e641deb83cb9e$var$TYPE_MAPPING = {
184
+ const $596a1f0f523d6752$var$TYPE_MAPPING = {
200
185
  dayperiod: 'dayPeriod'
201
186
  };
202
- function $6d4e641deb83cb9e$export$714a241b39a650d6(props) {
187
+ function $596a1f0f523d6752$export$60e84778edff6d26(props) {
203
188
  let { locale: locale , createCalendar: createCalendar , hideTimeZone: hideTimeZone , isDisabled: isDisabled , isReadOnly: isReadOnly , isRequired: isRequired } = props;
204
189
  let v1 = props.value || props.defaultValue || props.placeholderValue;
205
190
  let [granularity, defaultTimeZone] = $50d5d6a623389320$export$2440da353cedad43(v1, props.granularity);
@@ -242,7 +227,7 @@ function $6d4e641deb83cb9e$export$714a241b39a650d6(props) {
242
227
  ]);
243
228
  // Determine how many editable segments there are for validation purposes.
244
229
  // The result is cached for performance.
245
- let allSegments = $h2qOe$react.useMemo(()=>dateFormatter.formatToParts(new Date()).filter((seg)=>$6d4e641deb83cb9e$var$EDITABLE_SEGMENTS[seg.type]
230
+ let allSegments = $h2qOe$react.useMemo(()=>dateFormatter.formatToParts(new Date()).filter((seg)=>$596a1f0f523d6752$var$EDITABLE_SEGMENTS[seg.type]
246
231
  ).reduce((p, seg)=>(p[seg.type] = true, p)
247
232
  , {
248
233
  })
@@ -312,13 +297,13 @@ function $6d4e641deb83cb9e$export$714a241b39a650d6(props) {
312
297
  timeZone
313
298
  ]);
314
299
  let segments = $h2qOe$react.useMemo(()=>dateFormatter.formatToParts(dateValue).map((segment)=>{
315
- let isEditable = $6d4e641deb83cb9e$var$EDITABLE_SEGMENTS[segment.type];
300
+ let isEditable = $596a1f0f523d6752$var$EDITABLE_SEGMENTS[segment.type];
316
301
  if (segment.type === 'era' && calendar.getEras().length === 1) isEditable = false;
317
302
  return {
318
- type: $6d4e641deb83cb9e$var$TYPE_MAPPING[segment.type] || segment.type,
303
+ type: $596a1f0f523d6752$var$TYPE_MAPPING[segment.type] || segment.type,
319
304
  text: segment.value,
320
- ...$6d4e641deb83cb9e$var$getSegmentLimits(displayValue, segment.type, resolvedOptions),
321
- isPlaceholder: $6d4e641deb83cb9e$var$EDITABLE_SEGMENTS[segment.type] && !validSegments[segment.type],
305
+ ...$596a1f0f523d6752$var$getSegmentLimits(displayValue, segment.type, resolvedOptions),
306
+ isPlaceholder: $596a1f0f523d6752$var$EDITABLE_SEGMENTS[segment.type] && !validSegments[segment.type],
322
307
  isEditable: isEditable
323
308
  };
324
309
  })
@@ -344,9 +329,10 @@ function $6d4e641deb83cb9e$export$714a241b39a650d6(props) {
344
329
  };
345
330
  let adjustSegment = (type, amount)=>{
346
331
  markValid(type);
347
- setValue($6d4e641deb83cb9e$var$addSegment(displayValue, type, amount, resolvedOptions));
332
+ setValue($596a1f0f523d6752$var$addSegment(displayValue, type, amount, resolvedOptions));
348
333
  };
349
334
  let validationState = props.validationState || ($50d5d6a623389320$export$eac50920cf2fd59a(calendarValue, props.minValue, props.maxValue) ? 'invalid' : null);
335
+ var _maxGranularity1;
350
336
  return {
351
337
  value: calendarValue,
352
338
  dateValue: dateValue,
@@ -355,6 +341,7 @@ function $6d4e641deb83cb9e$export$714a241b39a650d6(props) {
355
341
  dateFormatter: dateFormatter,
356
342
  validationState: validationState,
357
343
  granularity: granularity,
344
+ maxGranularity: (_maxGranularity1 = props.maxGranularity) !== null && _maxGranularity1 !== void 0 ? _maxGranularity1 : 'year',
358
345
  isDisabled: isDisabled,
359
346
  isReadOnly: isReadOnly,
360
347
  isRequired: isRequired,
@@ -365,14 +352,14 @@ function $6d4e641deb83cb9e$export$714a241b39a650d6(props) {
365
352
  adjustSegment(part, -1);
366
353
  },
367
354
  incrementPage (part) {
368
- adjustSegment(part, $6d4e641deb83cb9e$var$PAGE_STEP[part] || 1);
355
+ adjustSegment(part, $596a1f0f523d6752$var$PAGE_STEP[part] || 1);
369
356
  },
370
357
  decrementPage (part) {
371
- adjustSegment(part, -($6d4e641deb83cb9e$var$PAGE_STEP[part] || 1));
358
+ adjustSegment(part, -($596a1f0f523d6752$var$PAGE_STEP[part] || 1));
372
359
  },
373
360
  setSegment (part, v) {
374
361
  markValid(part);
375
- setValue($6d4e641deb83cb9e$var$setSegment(displayValue, part, v, resolvedOptions));
362
+ setValue($596a1f0f523d6752$var$setSegment(displayValue, part, v, resolvedOptions));
376
363
  },
377
364
  confirmPlaceholder (part) {
378
365
  if (props.isDisabled || props.isReadOnly) return;
@@ -414,12 +401,15 @@ function $6d4e641deb83cb9e$export$714a241b39a650d6(props) {
414
401
  setDate(null);
415
402
  setValue(value);
416
403
  },
417
- getFormatOptions (fieldOptions) {
418
- return $50d5d6a623389320$export$7e319ea407e63bc0(fieldOptions, formatOpts);
404
+ formatValue (fieldOptions) {
405
+ if (!calendarValue) return '';
406
+ let formatOptions = $50d5d6a623389320$export$7e319ea407e63bc0(fieldOptions, formatOpts);
407
+ let formatter = new $h2qOe$internationalizeddate.DateFormatter(locale, formatOptions);
408
+ return formatter.format(dateValue);
419
409
  }
420
410
  };
421
411
  }
422
- function $6d4e641deb83cb9e$var$getSegmentLimits(date, type, options) {
412
+ function $596a1f0f523d6752$var$getSegmentLimits(date, type, options) {
423
413
  switch(type){
424
414
  case 'era':
425
415
  {
@@ -486,7 +476,7 @@ function $6d4e641deb83cb9e$var$getSegmentLimits(date, type, options) {
486
476
  return {
487
477
  };
488
478
  }
489
- function $6d4e641deb83cb9e$var$addSegment(value, part, amount, options) {
479
+ function $596a1f0f523d6752$var$addSegment(value, part, amount, options) {
490
480
  switch(part){
491
481
  case 'era':
492
482
  case 'year':
@@ -514,7 +504,7 @@ function $6d4e641deb83cb9e$var$addSegment(value, part, amount, options) {
514
504
  });
515
505
  }
516
506
  }
517
- function $6d4e641deb83cb9e$var$setSegment(value, part, segmentValue, options) {
507
+ function $596a1f0f523d6752$var$setSegment(value, part, segmentValue, options) {
518
508
  switch(part){
519
509
  case 'day':
520
510
  case 'month':
@@ -552,16 +542,14 @@ function $6d4e641deb83cb9e$var$setSegment(value, part, segmentValue, options) {
552
542
  }
553
543
 
554
544
 
555
- var $7072d26f58deb33b$exports = {};
556
545
 
557
- $parcel$export($7072d26f58deb33b$exports, "useDateRangePickerState", () => $7072d26f58deb33b$export$e50a61c1de9f574);
558
546
 
559
547
 
560
548
 
561
549
 
562
550
  function $7072d26f58deb33b$export$e50a61c1de9f574(props) {
563
551
  var ref, ref1;
564
- let [isOpen1, setOpen] = $h2qOe$react.useState(false);
552
+ let overlayState = $h2qOe$reactstatelyoverlays.useOverlayTriggerState(props);
565
553
  let [controlledValue, setControlledValue] = $h2qOe$reactstatelyutils.useControlledState(props.value, props.defaultValue || null, props.onChange);
566
554
  let [placeholderValue, setPlaceholderValue] = $h2qOe$react.useState(()=>controlledValue || {
567
555
  start: null,
@@ -613,7 +601,7 @@ function $7072d26f58deb33b$export$e50a61c1de9f574(props) {
613
601
  else setSelectedDateRange(range);
614
602
  } else if (range.start && range.end) setValue(range);
615
603
  else setSelectedDateRange(range);
616
- if (shouldClose) setOpen(false);
604
+ if (shouldClose) overlayState.setOpen(false);
617
605
  };
618
606
  let setTimeRange = (range)=>{
619
607
  if ((dateRange1 === null || dateRange1 === void 0 ? void 0 : dateRange1.start) && (dateRange1 === null || dateRange1 === void 0 ? void 0 : dateRange1.end) && range.start && range.end) commitValue(dateRange1, range);
@@ -647,7 +635,7 @@ function $7072d26f58deb33b$export$e50a61c1de9f574(props) {
647
635
  },
648
636
  setDateRange: setDateRange,
649
637
  setTimeRange: setTimeRange,
650
- isOpen: isOpen1,
638
+ isOpen: overlayState.isOpen,
651
639
  setOpen (isOpen) {
652
640
  // Commit the selected date range when the calendar is closed. Use a placeholder time if one wasn't set.
653
641
  // If only the time range was set and not the date range, don't commit. The state will be preserved until
@@ -656,11 +644,11 @@ function $7072d26f58deb33b$export$e50a61c1de9f574(props) {
656
644
  start: (timeRange1 === null || timeRange1 === void 0 ? void 0 : timeRange1.start) || $50d5d6a623389320$export$c5221a78ef73c5e9(props.placeholderValue),
657
645
  end: (timeRange1 === null || timeRange1 === void 0 ? void 0 : timeRange1.end) || $50d5d6a623389320$export$c5221a78ef73c5e9(props.placeholderValue)
658
646
  });
659
- setOpen(isOpen);
647
+ overlayState.setOpen(isOpen);
660
648
  },
661
649
  validationState: validationState,
662
650
  formatValue (locale, fieldOptions) {
663
- if (!value1 || !value1.start || !value1.end) return '';
651
+ if (!value1 || !value1.start || !value1.end) return null;
664
652
  let startTimeZone = 'timeZone' in value1.start ? value1.start.timeZone : undefined;
665
653
  let startGranularity = props.granularity || (value1.start && 'minute' in value1.start ? 'minute' : 'day');
666
654
  let endTimeZone = 'timeZone' in value1.end ? value1.end.timeZone : undefined;
@@ -671,14 +659,35 @@ function $7072d26f58deb33b$export$e50a61c1de9f574(props) {
671
659
  hideTimeZone: props.hideTimeZone,
672
660
  hourCycle: props.hourCycle
673
661
  });
662
+ let startDate = value1.start.toDate(startTimeZone || 'UTC');
663
+ let endDate = value1.end.toDate(endTimeZone || 'UTC');
674
664
  let startFormatter = new $h2qOe$internationalizeddate.DateFormatter(locale, startOptions);
675
665
  let endFormatter;
676
- if (startTimeZone === endTimeZone && startGranularity === endGranularity) {
666
+ if (startTimeZone === endTimeZone && startGranularity === endGranularity && value1.start.compare(value1.end) !== 0) {
677
667
  // Use formatRange, as it results in shorter output when some of the fields
678
668
  // are shared between the start and end dates (e.g. the same month).
679
669
  // Formatting will fail if the end date is before the start date. Fall back below when that happens.
680
670
  try {
681
- return startFormatter.formatRange(value1.start.toDate(startTimeZone), value1.end.toDate(endTimeZone));
671
+ let parts = startFormatter.formatRangeToParts(startDate, endDate);
672
+ // Find the separator between the start and end date. This is determined
673
+ // by finding the last shared literal before the end range.
674
+ let separatorIndex = -1;
675
+ for(let i = 0; i < parts.length; i++){
676
+ let part = parts[i];
677
+ if (part.source === 'shared' && part.type === 'literal') separatorIndex = i;
678
+ else if (part.source === 'endRange') break;
679
+ }
680
+ // Now we can combine the parts into start and end strings.
681
+ let start = '';
682
+ let end = '';
683
+ for(let i1 = 0; i1 < parts.length; i1++){
684
+ if (i1 < separatorIndex) start += parts[i1].value;
685
+ else if (i1 > separatorIndex) end += parts[i1].value;
686
+ }
687
+ return {
688
+ start: start,
689
+ end: end
690
+ };
682
691
  } catch (e) {
683
692
  // ignore
684
693
  }
@@ -692,7 +701,10 @@ function $7072d26f58deb33b$export$e50a61c1de9f574(props) {
692
701
  });
693
702
  endFormatter = new $h2qOe$internationalizeddate.DateFormatter(locale, endOptions);
694
703
  }
695
- return `${startFormatter.format(value1.start.toDate(startTimeZone))} – ${endFormatter.format(value1.end.toDate(endTimeZone))}`;
704
+ return {
705
+ start: startFormatter.format(startDate),
706
+ end: endFormatter.format(endDate)
707
+ };
696
708
  },
697
709
  confirmPlaceholder () {
698
710
  // Need to use ref value here because the value can be set in the same tick as
@@ -711,9 +723,6 @@ function $7072d26f58deb33b$export$e50a61c1de9f574(props) {
711
723
  }
712
724
 
713
725
 
714
- var $2654e87be0231a69$exports = {};
715
-
716
- $parcel$export($2654e87be0231a69$exports, "useTimeFieldState", () => $2654e87be0231a69$export$fd53cef0cc796101);
717
726
 
718
727
 
719
728
 
@@ -744,7 +753,7 @@ function $2654e87be0231a69$export$fd53cef0cc796101(props) {
744
753
  let onChange = (newValue)=>{
745
754
  setValue(v && 'day' in v ? newValue : newValue && $h2qOe$internationalizeddate.toTime(newValue));
746
755
  };
747
- return $6d4e641deb83cb9e$export$714a241b39a650d6({
756
+ return $596a1f0f523d6752$export$60e84778edff6d26({
748
757
  ...props,
749
758
  value: dateTime,
750
759
  defaultValue: undefined,
@@ -765,10 +774,6 @@ function $2654e87be0231a69$var$convertValue(value, date = $h2qOe$internationaliz
765
774
  }
766
775
 
767
776
 
768
- $parcel$exportWildcard(module.exports, $aaab7a647e17e1fd$exports);
769
- $parcel$exportWildcard(module.exports, $6d4e641deb83cb9e$exports);
770
- $parcel$exportWildcard(module.exports, $7072d26f58deb33b$exports);
771
- $parcel$exportWildcard(module.exports, $2654e87be0231a69$exports);
772
777
 
773
778
 
774
779
  //# sourceMappingURL=main.js.map