@zendeskgarden/react-datepickers 8.39.0 → 8.41.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/index.esm.js CHANGED
@@ -13,47 +13,18 @@ import { Manager, Reference, Popper } from 'react-popper';
13
13
  import { composeEventHandlers, KEY_CODES } from '@zendeskgarden/container-utilities';
14
14
  import { retrieveComponentStyles, DEFAULT_THEME, menuStyles, getColor } from '@zendeskgarden/react-theming';
15
15
 
16
- function _defineProperty(obj, key, value) {
17
- if (key in obj) {
18
- Object.defineProperty(obj, key, {
19
- value: value,
20
- enumerable: true,
21
- configurable: true,
22
- writable: true
23
- });
24
- } else {
25
- obj[key] = value;
26
- }
27
-
28
- return obj;
29
- }
30
-
31
- function _extends$2() {
32
- _extends$2 = Object.assign || function (target) {
33
- for (var i = 1; i < arguments.length; i++) {
34
- var source = arguments[i];
35
-
36
- for (var key in source) {
37
- if (Object.prototype.hasOwnProperty.call(source, key)) {
38
- target[key] = source[key];
39
- }
40
- }
41
- }
42
-
43
- return target;
44
- };
45
-
46
- return _extends$2.apply(this, arguments);
47
- }
48
-
49
16
  function ownKeys(object, enumerableOnly) {
50
17
  var keys = Object.keys(object);
51
18
 
52
19
  if (Object.getOwnPropertySymbols) {
53
20
  var symbols = Object.getOwnPropertySymbols(object);
54
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
55
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
56
- });
21
+
22
+ if (enumerableOnly) {
23
+ symbols = symbols.filter(function (sym) {
24
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
25
+ });
26
+ }
27
+
57
28
  keys.push.apply(keys, symbols);
58
29
  }
59
30
 
@@ -80,16 +51,37 @@ function _objectSpread2(target) {
80
51
  return target;
81
52
  }
82
53
 
83
- function _taggedTemplateLiteral(strings, raw) {
84
- if (!raw) {
85
- raw = strings.slice(0);
54
+ function _defineProperty(obj, key, value) {
55
+ if (key in obj) {
56
+ Object.defineProperty(obj, key, {
57
+ value: value,
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true
61
+ });
62
+ } else {
63
+ obj[key] = value;
86
64
  }
87
65
 
88
- return Object.freeze(Object.defineProperties(strings, {
89
- raw: {
90
- value: Object.freeze(raw)
66
+ return obj;
67
+ }
68
+
69
+ function _extends$2() {
70
+ _extends$2 = Object.assign || function (target) {
71
+ for (var i = 1; i < arguments.length; i++) {
72
+ var source = arguments[i];
73
+
74
+ for (var key in source) {
75
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
76
+ target[key] = source[key];
77
+ }
78
+ }
91
79
  }
92
- }));
80
+
81
+ return target;
82
+ };
83
+
84
+ return _extends$2.apply(this, arguments);
93
85
  }
94
86
 
95
87
  function _slicedToArray(arr, i) {
@@ -101,14 +93,17 @@ function _arrayWithHoles(arr) {
101
93
  }
102
94
 
103
95
  function _iterableToArrayLimit(arr, i) {
104
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
96
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
97
+
98
+ if (_i == null) return;
105
99
  var _arr = [];
106
100
  var _n = true;
107
101
  var _d = false;
108
- var _e = undefined;
102
+
103
+ var _s, _e;
109
104
 
110
105
  try {
111
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
106
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
112
107
  _arr.push(_s.value);
113
108
 
114
109
  if (i && _arr.length === i) break;
@@ -199,7 +194,7 @@ function getMenuPosition(popperPlacement) {
199
194
 
200
195
  function requiredArgs(required, args) {
201
196
  if (args.length < required) {
202
- throw new TypeError(required + ' argument' + required > 1 ? 's' : '' + ' required, but only ' + args.length + ' present');
197
+ throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');
203
198
  }
204
199
  }
205
200
 
@@ -212,7 +207,7 @@ function toDate(argument) {
212
207
  return new Date(argument);
213
208
  } else {
214
209
  if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {
215
- console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule");
210
+ console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule");
216
211
  console.warn(new Error().stack);
217
212
  }
218
213
  return new Date(NaN);
@@ -309,6 +304,12 @@ function addDays(dirtyDate, dirtyAmount) {
309
304
  requiredArgs(2, arguments);
310
305
  var date = toDate(dirtyDate);
311
306
  var amount = toInteger(dirtyAmount);
307
+ if (isNaN(amount)) {
308
+ return new Date(NaN);
309
+ }
310
+ if (!amount) {
311
+ return date;
312
+ }
312
313
  date.setDate(date.getDate() + amount);
313
314
  return date;
314
315
  }
@@ -360,25 +361,29 @@ function getDate(dirtyDate) {
360
361
  return dayOfMonth;
361
362
  }
362
363
 
363
- var _templateObject$b;
364
364
  var COMPONENT_ID$b = 'datepickers.menu';
365
365
  var StyledMenu = styled.div.attrs({
366
366
  'data-garden-id': COMPONENT_ID$b,
367
- 'data-garden-version': '8.39.0'
368
- })(_templateObject$b || (_templateObject$b = _taggedTemplateLiteral(["\n ", ";\n"])), function (props) {
367
+ 'data-garden-version': '8.41.0'
368
+ }).withConfig({
369
+ displayName: "StyledMenu",
370
+ componentId: "sc-1npbkk0-0"
371
+ })(["", ";"], function (props) {
369
372
  return retrieveComponentStyles(COMPONENT_ID$b, props);
370
373
  });
371
374
  StyledMenu.defaultProps = {
372
375
  theme: DEFAULT_THEME
373
376
  };
374
377
 
375
- var _templateObject$a;
376
378
  var COMPONENT_ID$a = 'datepickers.menu_wrapper';
377
379
  var StyledMenuWrapper = styled.div.attrs(function (props) {
378
380
  return {
379
381
  className: props.isAnimated && 'is-animated'
380
382
  };
381
- })(_templateObject$a || (_templateObject$a = _taggedTemplateLiteral(["\n ", ";\n\n ", ";\n"])), function (props) {
383
+ }).withConfig({
384
+ displayName: "StyledMenuWrapper",
385
+ componentId: "sc-6fowoz-0"
386
+ })(["", ";", ";"], function (props) {
382
387
  return menuStyles(getMenuPosition(props.placement), {
383
388
  theme: props.theme,
384
389
  hidden: props.isHidden,
@@ -393,7 +398,6 @@ StyledMenuWrapper.defaultProps = {
393
398
  theme: DEFAULT_THEME
394
399
  };
395
400
 
396
- var _templateObject$9;
397
401
  var COMPONENT_ID$9 = 'datepickers.datepicker';
398
402
  var retrievePadding = function retrievePadding(_ref) {
399
403
  var isCompact = _ref.isCompact,
@@ -406,7 +410,10 @@ var retrievePadding = function retrievePadding(_ref) {
406
410
  };
407
411
  var StyledDatepicker = styled.div.attrs({
408
412
  'data-garden-id': COMPONENT_ID$9
409
- })(_templateObject$9 || (_templateObject$9 = _taggedTemplateLiteral(["\n direction: ", ";\n\n ", "\n\n background-color: ", ";\n color: ", ";\n\n ", ";\n"])), function (props) {
413
+ }).withConfig({
414
+ displayName: "StyledDatepicker",
415
+ componentId: "sc-w3zqsp-0"
416
+ })(["direction:", ";", " background-color:", ";color:", ";", ";"], function (props) {
410
417
  return props.theme.rtl && 'rtl';
411
418
  }, retrievePadding, function (props) {
412
419
  return props.theme.colors.background;
@@ -419,11 +426,13 @@ StyledDatepicker.defaultProps = {
419
426
  theme: DEFAULT_THEME
420
427
  };
421
428
 
422
- var _templateObject$8;
423
429
  var COMPONENT_ID$8 = 'datepickers.range_calendar';
424
430
  var StyledRangeCalendar = styled.div.attrs({
425
431
  'data-garden-id': COMPONENT_ID$8
426
- })(_templateObject$8 || (_templateObject$8 = _taggedTemplateLiteral(["\n display: flex;\n overflow: auto;\n\n ", " {\n margin: 0;\n\n ", "\n }\n\n ", ";\n"])), StyledDatepicker, function (props) {
432
+ }).withConfig({
433
+ displayName: "StyledRangeCalendar",
434
+ componentId: "sc-1og46sy-0"
435
+ })(["display:flex;overflow:auto;", "{margin:0;", "}", ";"], StyledDatepicker, function (props) {
427
436
  return props.theme.rtl ? "&:last-of-type {margin-right: ".concat(props.theme.space.base * 5, "px}") : "&:first-of-type {margin-right: ".concat(props.theme.space.base * 5, "px}");
428
437
  }, function (props) {
429
438
  return retrieveComponentStyles(COMPONENT_ID$8, props);
@@ -432,11 +441,13 @@ StyledRangeCalendar.defaultProps = {
432
441
  theme: DEFAULT_THEME
433
442
  };
434
443
 
435
- var _templateObject$7;
436
444
  var COMPONENT_ID$7 = 'datepickers.header';
437
445
  var StyledHeader = styled.div.attrs({
438
446
  'data-garden-id': COMPONENT_ID$7
439
- })(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteral(["\n display: flex;\n width: ", "px;\n\n ", ";\n"])), function (props) {
447
+ }).withConfig({
448
+ displayName: "StyledHeader",
449
+ componentId: "sc-upq318-0"
450
+ })(["display:flex;width:", "px;", ";"], function (props) {
440
451
  return props.isCompact ? props.theme.space.base * 56 : props.theme.space.base * 70;
441
452
  }, function (props) {
442
453
  return retrieveComponentStyles(COMPONENT_ID$7, props);
@@ -445,7 +456,6 @@ StyledHeader.defaultProps = {
445
456
  theme: DEFAULT_THEME
446
457
  };
447
458
 
448
- var _templateObject$6;
449
459
  var retrieveSizing = function retrieveSizing(_ref) {
450
460
  var isCompact = _ref.isCompact,
451
461
  theme = _ref.theme;
@@ -462,7 +472,10 @@ var retrieveColor$1 = function retrieveColor(_ref2) {
462
472
  var COMPONENT_ID$6 = 'datepickers.header_paddle';
463
473
  var StyledHeaderPaddle = styled.div.attrs({
464
474
  'data-garden-id': COMPONENT_ID$6
465
- })(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n transform: ", ";\n visibility: ", ";\n border-radius: 50%;\n cursor: pointer;\n\n ", "\n\n ", "\n\n svg {\n width: ", ";\n height: ", ";\n }\n\n ", ";\n"])), function (props) {
475
+ }).withConfig({
476
+ displayName: "StyledHeaderPaddle",
477
+ componentId: "sc-2oqh0g-0"
478
+ })(["display:flex;align-items:center;justify-content:center;transform:", ";visibility:", ";border-radius:50%;cursor:pointer;", " ", " svg{width:", ";height:", ";}", ";"], function (props) {
466
479
  return props.theme.rtl && 'rotate(180deg)';
467
480
  }, function (props) {
468
481
  return props.isHidden && 'hidden';
@@ -478,11 +491,13 @@ StyledHeaderPaddle.defaultProps = {
478
491
  theme: DEFAULT_THEME
479
492
  };
480
493
 
481
- var _templateObject$5;
482
494
  var COMPONENT_ID$5 = 'datepickers.header_label';
483
495
  var StyledHeaderLabel = styled.div.attrs({
484
496
  'data-garden-id': COMPONENT_ID$5
485
- })(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteral(["\n display: flex;\n flex-grow: 1;\n align-items: center;\n justify-content: center;\n font-size: ", ";\n font-weight: ", ";\n\n ", ";\n"])), function (props) {
497
+ }).withConfig({
498
+ displayName: "StyledHeaderLabel",
499
+ componentId: "sc-1ryf5ub-0"
500
+ })(["display:flex;flex-grow:1;align-items:center;justify-content:center;font-size:", ";font-weight:", ";", ";"], function (props) {
486
501
  return props.isCompact ? props.theme.fontSizes.sm : props.theme.fontSizes.md;
487
502
  }, function (props) {
488
503
  return props.theme.fontWeights.semibold;
@@ -493,11 +508,13 @@ StyledHeaderLabel.defaultProps = {
493
508
  theme: DEFAULT_THEME
494
509
  };
495
510
 
496
- var _templateObject$4;
497
511
  var COMPONENT_ID$4 = 'datepickers.calendar';
498
512
  var StyledCalendar = styled.div.attrs({
499
513
  'data-garden-id': COMPONENT_ID$4
500
- })(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteral(["\n width: ", "px;\n\n ", ";\n"])), function (props) {
514
+ }).withConfig({
515
+ displayName: "StyledCalendar",
516
+ componentId: "sc-g5hoe8-0"
517
+ })(["width:", "px;", ";"], function (props) {
501
518
  return props.isCompact ? props.theme.space.base * 56 : props.theme.space.base * 70;
502
519
  }, function (props) {
503
520
  return retrieveComponentStyles(COMPONENT_ID$4, props);
@@ -506,7 +523,6 @@ StyledCalendar.defaultProps = {
506
523
  theme: DEFAULT_THEME
507
524
  };
508
525
 
509
- var _templateObject$3;
510
526
  var COMPONENT_ID$3 = 'datepickers.calendar_item';
511
527
  var retrieveSize = function retrieveSize(_ref) {
512
528
  var isCompact = _ref.isCompact,
@@ -521,18 +537,23 @@ var retrieveSize = function retrieveSize(_ref) {
521
537
  };
522
538
  var StyledCalendarItem = styled.div.attrs({
523
539
  'data-garden-id': COMPONENT_ID$3
524
- })(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteral(["\n display: inline-block;\n position: relative;\n vertical-align: top;\n\n ", "\n\n ", ";\n"])), retrieveSize, function (props) {
540
+ }).withConfig({
541
+ displayName: "StyledCalendarItem",
542
+ componentId: "sc-143w8wb-0"
543
+ })(["display:inline-block;position:relative;vertical-align:top;", " ", ";"], retrieveSize, function (props) {
525
544
  return retrieveComponentStyles(COMPONENT_ID$3, props);
526
545
  });
527
546
  StyledCalendarItem.defaultProps = {
528
547
  theme: DEFAULT_THEME
529
548
  };
530
549
 
531
- var _templateObject$2;
532
550
  var COMPONENT_ID$2 = 'datepickers.day_label';
533
551
  var StyledDayLabel = styled.div.attrs({
534
552
  'data-garden-id': COMPONENT_ID$2
535
- })(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n font-size: ", ";\n font-weight: ", ";\n\n ", ";\n"])), function (props) {
553
+ }).withConfig({
554
+ displayName: "StyledDayLabel",
555
+ componentId: "sc-9bh1p7-0"
556
+ })(["display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:", ";font-weight:", ";", ";"], function (props) {
536
557
  return props.isCompact ? props.theme.fontSizes.sm : props.theme.fontSizes.md;
537
558
  }, function (props) {
538
559
  return props.theme.fontWeights.semibold;
@@ -543,7 +564,6 @@ StyledDayLabel.defaultProps = {
543
564
  theme: DEFAULT_THEME
544
565
  };
545
566
 
546
- var _templateObject$1;
547
567
  var COMPONENT_ID$1 = 'datepickers.highlight';
548
568
  var retrieveBorderRadius = function retrieveBorderRadius(_ref) {
549
569
  var theme = _ref.theme,
@@ -575,14 +595,16 @@ var retrieveColor = function retrieveColor(_ref2) {
575
595
  };
576
596
  var StyledHighlight = styled.div.attrs({
577
597
  'data-garden-id': COMPONENT_ID$1
578
- })(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\n ", "\n\n ", "\n\n ", ";\n"])), retrieveBorderRadius, retrieveColor, function (props) {
598
+ }).withConfig({
599
+ displayName: "StyledHighlight",
600
+ componentId: "sc-16vr32x-0"
601
+ })(["position:absolute;top:0;left:0;width:100%;height:100%;", " ", " ", ";"], retrieveBorderRadius, retrieveColor, function (props) {
579
602
  return retrieveComponentStyles(COMPONENT_ID$1, props);
580
603
  });
581
604
  StyledHighlight.defaultProps = {
582
605
  theme: DEFAULT_THEME
583
606
  };
584
607
 
585
- var _templateObject;
586
608
  var retrieveStyledDayColors = function retrieveStyledDayColors(_ref) {
587
609
  var isSelected = _ref.isSelected,
588
610
  isDisabled = _ref.isDisabled,
@@ -609,7 +631,10 @@ var StyledDay = styled.div.attrs(function (props) {
609
631
  'data-garden-id': COMPONENT_ID,
610
632
  'aria-disabled': props.isDisabled ? 'true' : 'false'
611
633
  };
612
- })(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n position: absolute;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: ", ";\n width: 100%;\n height: 100%;\n font-size: ", ";\n font-weight: ", ";\n\n ", "\n\n ", ";\n"])), function (props) {
634
+ }).withConfig({
635
+ displayName: "StyledDay",
636
+ componentId: "sc-v42uk5-0"
637
+ })(["display:flex;position:absolute;align-items:center;justify-content:center;border-radius:50%;cursor:", ";width:100%;height:100%;font-size:", ";font-weight:", ";", " ", ";"], function (props) {
613
638
  return props.isDisabled ? 'inherit' : 'pointer';
614
639
  }, function (props) {
615
640
  return props.isCompact ? props.theme.fontSizes.sm : props.theme.fontSizes.md;
@@ -861,28 +886,26 @@ var Calendar$1 = function Calendar(_ref) {
861
886
  }, dayLabels, items));
862
887
  };
863
888
 
864
- function getDaysInMonth(dirtyDate) {
865
- requiredArgs(1, arguments);
866
- var date = toDate(dirtyDate);
867
- var year = date.getFullYear();
868
- var monthIndex = date.getMonth();
869
- var lastDayOfMonth = new Date(0);
870
- lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);
871
- lastDayOfMonth.setHours(0, 0, 0, 0);
872
- return lastDayOfMonth.getDate();
873
- }
874
-
875
889
  function addMonths(dirtyDate, dirtyAmount) {
876
890
  requiredArgs(2, arguments);
877
891
  var date = toDate(dirtyDate);
878
892
  var amount = toInteger(dirtyAmount);
879
- var desiredMonth = date.getMonth() + amount;
880
- var dateWithDesiredMonth = new Date(0);
881
- dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);
882
- dateWithDesiredMonth.setHours(0, 0, 0, 0);
883
- var daysInMonth = getDaysInMonth(dateWithDesiredMonth);
884
- date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));
885
- return date;
893
+ if (isNaN(amount)) {
894
+ return new Date(NaN);
895
+ }
896
+ if (!amount) {
897
+ return date;
898
+ }
899
+ var dayOfMonth = date.getDate();
900
+ var endOfDesiredMonth = new Date(date.getTime());
901
+ endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);
902
+ var daysInMonth = endOfDesiredMonth.getDate();
903
+ if (dayOfMonth >= daysInMonth) {
904
+ return endOfDesiredMonth;
905
+ } else {
906
+ date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);
907
+ return date;
908
+ }
886
909
  }
887
910
 
888
911
  function subMonths(dirtyDate, dirtyAmount) {
@@ -927,6 +950,14 @@ var formatDistanceLocale = {
927
950
  one: '1 day',
928
951
  other: '{{count}} days'
929
952
  },
953
+ aboutXWeeks: {
954
+ one: 'about 1 week',
955
+ other: 'about {{count}} weeks'
956
+ },
957
+ xWeeks: {
958
+ one: '1 week',
959
+ other: '{{count}} weeks'
960
+ },
930
961
  aboutXMonths: {
931
962
  one: 'about 1 month',
932
963
  other: 'about {{count}} months'
@@ -973,8 +1004,8 @@ function formatDistance(token, count, options) {
973
1004
  }
974
1005
 
975
1006
  function buildFormatLongFn(args) {
976
- return function (dirtyOptions) {
977
- var options = dirtyOptions || {};
1007
+ return function () {
1008
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
978
1009
  var width = options.width ? String(options.width) : args.defaultWidth;
979
1010
  var format = args.formats[width] || args.formats[args.defaultWidth];
980
1011
  return format;
@@ -1013,6 +1044,7 @@ var formatLong = {
1013
1044
  defaultWidth: 'full'
1014
1045
  })
1015
1046
  };
1047
+ var formatLong$1 = formatLong;
1016
1048
 
1017
1049
  var formatRelativeLocale = {
1018
1050
  lastWeek: "'last' eeee 'at' p",
@@ -1173,33 +1205,29 @@ var localize = {
1173
1205
  defaultFormattingWidth: 'wide'
1174
1206
  })
1175
1207
  };
1208
+ var localize$1 = localize;
1176
1209
 
1177
1210
  function buildMatchPatternFn(args) {
1178
- return function (dirtyString, dirtyOptions) {
1179
- var string = String(dirtyString);
1180
- var options = dirtyOptions || {};
1211
+ return function (string) {
1212
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1181
1213
  var matchResult = string.match(args.matchPattern);
1182
- if (!matchResult) {
1183
- return null;
1184
- }
1214
+ if (!matchResult) return null;
1185
1215
  var matchedString = matchResult[0];
1186
1216
  var parseResult = string.match(args.parsePattern);
1187
- if (!parseResult) {
1188
- return null;
1189
- }
1217
+ if (!parseResult) return null;
1190
1218
  var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
1191
1219
  value = options.valueCallback ? options.valueCallback(value) : value;
1220
+ var rest = string.slice(matchedString.length);
1192
1221
  return {
1193
1222
  value: value,
1194
- rest: string.slice(matchedString.length)
1223
+ rest: rest
1195
1224
  };
1196
1225
  };
1197
1226
  }
1198
1227
 
1199
1228
  function buildMatchFn(args) {
1200
- return function (dirtyString, dirtyOptions) {
1201
- var string = String(dirtyString);
1202
- var options = dirtyOptions || {};
1229
+ return function (string) {
1230
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1203
1231
  var width = options.width;
1204
1232
  var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
1205
1233
  var matchResult = string.match(matchPattern);
@@ -1208,21 +1236,18 @@ function buildMatchFn(args) {
1208
1236
  }
1209
1237
  var matchedString = matchResult[0];
1210
1238
  var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];
1239
+ var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {
1240
+ return pattern.test(matchedString);
1241
+ }) : findKey(parsePatterns, function (pattern) {
1242
+ return pattern.test(matchedString);
1243
+ });
1211
1244
  var value;
1212
- if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {
1213
- value = findIndex(parsePatterns, function (pattern) {
1214
- return pattern.test(string);
1215
- });
1216
- } else {
1217
- value = findKey(parsePatterns, function (pattern) {
1218
- return pattern.test(string);
1219
- });
1220
- }
1221
- value = args.valueCallback ? args.valueCallback(value) : value;
1245
+ value = args.valueCallback ? args.valueCallback(key) : key;
1222
1246
  value = options.valueCallback ? options.valueCallback(value) : value;
1247
+ var rest = string.slice(matchedString.length);
1223
1248
  return {
1224
1249
  value: value,
1225
- rest: string.slice(matchedString.length)
1250
+ rest: rest
1226
1251
  };
1227
1252
  };
1228
1253
  }
@@ -1232,6 +1257,7 @@ function findKey(object, predicate) {
1232
1257
  return key;
1233
1258
  }
1234
1259
  }
1260
+ return undefined;
1235
1261
  }
1236
1262
  function findIndex(array, predicate) {
1237
1263
  for (var key = 0; key < array.length; key++) {
@@ -1239,6 +1265,7 @@ function findIndex(array, predicate) {
1239
1265
  return key;
1240
1266
  }
1241
1267
  }
1268
+ return undefined;
1242
1269
  }
1243
1270
 
1244
1271
  var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
@@ -1336,20 +1363,22 @@ var match = {
1336
1363
  defaultParseWidth: 'any'
1337
1364
  })
1338
1365
  };
1366
+ var match$1 = match;
1339
1367
 
1340
1368
  var locale = {
1341
1369
  code: 'en-US',
1342
1370
  formatDistance: formatDistance,
1343
- formatLong: formatLong,
1371
+ formatLong: formatLong$1,
1344
1372
  formatRelative: formatRelative,
1345
- localize: localize,
1346
- match: match,
1373
+ localize: localize$1,
1374
+ match: match$1,
1347
1375
  options: {
1348
1376
  weekStartsOn: 0
1349
1377
  ,
1350
1378
  firstWeekContainsDate: 1
1351
1379
  }
1352
1380
  };
1381
+ var defaultLocale = locale;
1353
1382
 
1354
1383
  function addMilliseconds(dirtyDate, dirtyAmount) {
1355
1384
  requiredArgs(2, arguments);
@@ -1370,7 +1399,7 @@ function assign(target, dirtyObject) {
1370
1399
  }
1371
1400
  dirtyObject = dirtyObject || {};
1372
1401
  for (var property in dirtyObject) {
1373
- if (dirtyObject.hasOwnProperty(property)) {
1402
+ if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {
1374
1403
  target[property] = dirtyObject[property];
1375
1404
  }
1376
1405
  }
@@ -1456,14 +1485,12 @@ var longFormatters = {
1456
1485
  p: timeLongFormatter,
1457
1486
  P: dateTimeLongFormatter
1458
1487
  };
1488
+ var longFormatters$1 = longFormatters;
1459
1489
 
1460
- var MILLISECONDS_IN_MINUTE$1 = 60000;
1461
- function getTimezoneOffsetInMilliseconds(dirtyDate) {
1462
- var date = new Date(dirtyDate.getTime());
1463
- var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());
1464
- date.setSeconds(0, 0);
1465
- var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE$1;
1466
- return baseTimezoneOffset * MILLISECONDS_IN_MINUTE$1 + millisecondsPartOfTimezoneOffset;
1490
+ function getTimezoneOffsetInMilliseconds(date) {
1491
+ var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
1492
+ utcDate.setUTCFullYear(date.getFullYear());
1493
+ return date.getTime() - utcDate.getTime();
1467
1494
  }
1468
1495
 
1469
1496
  var protectedDayOfYearTokens = ['D', 'DD'];
@@ -1474,15 +1501,15 @@ function isProtectedDayOfYearToken(token) {
1474
1501
  function isProtectedWeekYearToken(token) {
1475
1502
  return protectedWeekYearTokens.indexOf(token) !== -1;
1476
1503
  }
1477
- function throwProtectedError(token) {
1504
+ function throwProtectedError(token, format, input) {
1478
1505
  if (token === 'YYYY') {
1479
- throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');
1506
+ throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://git.io/fxCyr"));
1480
1507
  } else if (token === 'YY') {
1481
- throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');
1508
+ throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://git.io/fxCyr"));
1482
1509
  } else if (token === 'D') {
1483
- throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');
1510
+ throw new RangeError("Use `d` instead of `D` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://git.io/fxCyr"));
1484
1511
  } else if (token === 'DD') {
1485
- throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');
1512
+ throw new RangeError("Use `dd` instead of `DD` (in `".concat(format, "`) for formatting days of the month to the input `").concat(input, "`; see: https://git.io/fxCyr"));
1486
1513
  }
1487
1514
  }
1488
1515
 
@@ -2182,6 +2209,7 @@ var parsers = {
2182
2209
  },
2183
2210
  d: {
2184
2211
  priority: 90,
2212
+ subPriority: 1,
2185
2213
  parse: function (string, token, match, _options) {
2186
2214
  switch (token) {
2187
2215
  case 'd':
@@ -2213,6 +2241,7 @@ var parsers = {
2213
2241
  },
2214
2242
  D: {
2215
2243
  priority: 90,
2244
+ subPriority: 1,
2216
2245
  parse: function (string, token, match, _options) {
2217
2246
  switch (token) {
2218
2247
  case 'D':
@@ -2868,6 +2897,7 @@ var parsers = {
2868
2897
  incompatibleTokens: '*'
2869
2898
  }
2870
2899
  };
2900
+ var parsers$1 = parsers;
2871
2901
 
2872
2902
  var TIMEZONE_UNIT_PRIORITY = 10;
2873
2903
  var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
@@ -2876,22 +2906,22 @@ var escapedStringRegExp = /^'([^]*?)'?$/;
2876
2906
  var doubleQuoteRegExp = /''/g;
2877
2907
  var notWhitespaceRegExp = /\S/;
2878
2908
  var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
2879
- function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {
2909
+ function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {
2880
2910
  requiredArgs(3, arguments);
2881
2911
  var dateString = String(dirtyDateString);
2882
2912
  var formatString = String(dirtyFormatString);
2883
2913
  var options = dirtyOptions || {};
2884
- var locale$1 = options.locale || locale;
2885
- if (!locale$1.match) {
2914
+ var locale = options.locale || defaultLocale;
2915
+ if (!locale.match) {
2886
2916
  throw new RangeError('locale must contain match property');
2887
2917
  }
2888
- var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;
2918
+ var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;
2889
2919
  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);
2890
2920
  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);
2891
2921
  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
2892
2922
  throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');
2893
2923
  }
2894
- var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;
2924
+ var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;
2895
2925
  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);
2896
2926
  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);
2897
2927
  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
@@ -2899,7 +2929,7 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2899
2929
  }
2900
2930
  if (formatString === '') {
2901
2931
  if (dateString === '') {
2902
- return toDate(dirtyBackupDate);
2932
+ return toDate(dirtyReferenceDate);
2903
2933
  } else {
2904
2934
  return new Date(NaN);
2905
2935
  }
@@ -2907,10 +2937,11 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2907
2937
  var subFnOptions = {
2908
2938
  firstWeekContainsDate: firstWeekContainsDate,
2909
2939
  weekStartsOn: weekStartsOn,
2910
- locale: locale$1
2940
+ locale: locale
2911
2941
  };
2912
2942
  var setters = [{
2913
2943
  priority: TIMEZONE_UNIT_PRIORITY,
2944
+ subPriority: -1,
2914
2945
  set: dateToSystemTimezone,
2915
2946
  index: 0
2916
2947
  }];
@@ -2918,8 +2949,8 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2918
2949
  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {
2919
2950
  var firstCharacter = substring[0];
2920
2951
  if (firstCharacter === 'p' || firstCharacter === 'P') {
2921
- var longFormatter = longFormatters[firstCharacter];
2922
- return longFormatter(substring, locale$1.formatLong, subFnOptions);
2952
+ var longFormatter = longFormatters$1[firstCharacter];
2953
+ return longFormatter(substring, locale.formatLong, subFnOptions);
2923
2954
  }
2924
2955
  return substring;
2925
2956
  }).join('').match(formattingTokensRegExp);
@@ -2927,13 +2958,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2927
2958
  for (i = 0; i < tokens.length; i++) {
2928
2959
  var token = tokens[i];
2929
2960
  if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {
2930
- throwProtectedError(token);
2961
+ throwProtectedError(token, formatString, dirtyDateString);
2931
2962
  }
2932
2963
  if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {
2933
- throwProtectedError(token);
2964
+ throwProtectedError(token, formatString, dirtyDateString);
2934
2965
  }
2935
2966
  var firstCharacter = token[0];
2936
- var parser = parsers[firstCharacter];
2967
+ var parser = parsers$1[firstCharacter];
2937
2968
  if (parser) {
2938
2969
  var incompatibleTokens = parser.incompatibleTokens;
2939
2970
  if (Array.isArray(incompatibleTokens)) {
@@ -2955,12 +2986,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2955
2986
  token: firstCharacter,
2956
2987
  fullToken: token
2957
2988
  });
2958
- var parseResult = parser.parse(dateString, token, locale$1.match, subFnOptions);
2989
+ var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);
2959
2990
  if (!parseResult) {
2960
2991
  return new Date(NaN);
2961
2992
  }
2962
2993
  setters.push({
2963
2994
  priority: parser.priority,
2995
+ subPriority: parser.subPriority || 0,
2964
2996
  set: parser.set,
2965
2997
  validate: parser.validate,
2966
2998
  value: parseResult.value,
@@ -2995,11 +3027,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2995
3027
  }).map(function (priority) {
2996
3028
  return setters.filter(function (setter) {
2997
3029
  return setter.priority === priority;
2998
- }).reverse();
3030
+ }).sort(function (a, b) {
3031
+ return b.subPriority - a.subPriority;
3032
+ });
2999
3033
  }).map(function (setterArray) {
3000
3034
  return setterArray[0];
3001
3035
  });
3002
- var date = toDate(dirtyBackupDate);
3036
+ var date = toDate(dirtyReferenceDate);
3003
3037
  if (isNaN(date)) {
3004
3038
  return new Date(NaN);
3005
3039
  }
@@ -3955,7 +3989,7 @@ var Calendar = function Calendar(props) {
3955
3989
  onChange = _useDatepickerRangeCo.onChange;
3956
3990
  return React__default.createElement(StyledRangeCalendar, _extends$2({
3957
3991
  "data-garden-id": "datepickers.range",
3958
- "data-garden-version": '8.39.0'
3992
+ "data-garden-version": '8.41.0'
3959
3993
  }, props), React__default.createElement(Month, {
3960
3994
  locale: locale,
3961
3995
  displayDate: state.previewDate,