@zendeskgarden/react-datepickers 8.39.1 → 8.42.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.cjs.js CHANGED
@@ -224,7 +224,7 @@ function getMenuPosition(popperPlacement) {
224
224
 
225
225
  function requiredArgs(required, args) {
226
226
  if (args.length < required) {
227
- throw new TypeError(required + ' argument' + required > 1 ? 's' : '' + ' required, but only ' + args.length + ' present');
227
+ throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');
228
228
  }
229
229
  }
230
230
 
@@ -237,7 +237,7 @@ function toDate(argument) {
237
237
  return new Date(argument);
238
238
  } else {
239
239
  if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {
240
- 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");
240
+ 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");
241
241
  console.warn(new Error().stack);
242
242
  }
243
243
  return new Date(NaN);
@@ -334,6 +334,12 @@ function addDays(dirtyDate, dirtyAmount) {
334
334
  requiredArgs(2, arguments);
335
335
  var date = toDate(dirtyDate);
336
336
  var amount = toInteger(dirtyAmount);
337
+ if (isNaN(amount)) {
338
+ return new Date(NaN);
339
+ }
340
+ if (!amount) {
341
+ return date;
342
+ }
337
343
  date.setDate(date.getDate() + amount);
338
344
  return date;
339
345
  }
@@ -388,7 +394,7 @@ function getDate(dirtyDate) {
388
394
  var COMPONENT_ID$b = 'datepickers.menu';
389
395
  var StyledMenu = styled__default['default'].div.attrs({
390
396
  'data-garden-id': COMPONENT_ID$b,
391
- 'data-garden-version': '8.39.1'
397
+ 'data-garden-version': '8.42.0'
392
398
  }).withConfig({
393
399
  displayName: "StyledMenu",
394
400
  componentId: "sc-1npbkk0-0"
@@ -910,28 +916,26 @@ var Calendar$1 = function Calendar(_ref) {
910
916
  }, dayLabels, items));
911
917
  };
912
918
 
913
- function getDaysInMonth(dirtyDate) {
914
- requiredArgs(1, arguments);
915
- var date = toDate(dirtyDate);
916
- var year = date.getFullYear();
917
- var monthIndex = date.getMonth();
918
- var lastDayOfMonth = new Date(0);
919
- lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);
920
- lastDayOfMonth.setHours(0, 0, 0, 0);
921
- return lastDayOfMonth.getDate();
922
- }
923
-
924
919
  function addMonths(dirtyDate, dirtyAmount) {
925
920
  requiredArgs(2, arguments);
926
921
  var date = toDate(dirtyDate);
927
922
  var amount = toInteger(dirtyAmount);
928
- var desiredMonth = date.getMonth() + amount;
929
- var dateWithDesiredMonth = new Date(0);
930
- dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);
931
- dateWithDesiredMonth.setHours(0, 0, 0, 0);
932
- var daysInMonth = getDaysInMonth(dateWithDesiredMonth);
933
- date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));
934
- return date;
923
+ if (isNaN(amount)) {
924
+ return new Date(NaN);
925
+ }
926
+ if (!amount) {
927
+ return date;
928
+ }
929
+ var dayOfMonth = date.getDate();
930
+ var endOfDesiredMonth = new Date(date.getTime());
931
+ endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);
932
+ var daysInMonth = endOfDesiredMonth.getDate();
933
+ if (dayOfMonth >= daysInMonth) {
934
+ return endOfDesiredMonth;
935
+ } else {
936
+ date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);
937
+ return date;
938
+ }
935
939
  }
936
940
 
937
941
  function subMonths(dirtyDate, dirtyAmount) {
@@ -976,6 +980,14 @@ var formatDistanceLocale = {
976
980
  one: '1 day',
977
981
  other: '{{count}} days'
978
982
  },
983
+ aboutXWeeks: {
984
+ one: 'about 1 week',
985
+ other: 'about {{count}} weeks'
986
+ },
987
+ xWeeks: {
988
+ one: '1 week',
989
+ other: '{{count}} weeks'
990
+ },
979
991
  aboutXMonths: {
980
992
  one: 'about 1 month',
981
993
  other: 'about {{count}} months'
@@ -1022,8 +1034,8 @@ function formatDistance(token, count, options) {
1022
1034
  }
1023
1035
 
1024
1036
  function buildFormatLongFn(args) {
1025
- return function (dirtyOptions) {
1026
- var options = dirtyOptions || {};
1037
+ return function () {
1038
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1027
1039
  var width = options.width ? String(options.width) : args.defaultWidth;
1028
1040
  var format = args.formats[width] || args.formats[args.defaultWidth];
1029
1041
  return format;
@@ -1062,6 +1074,7 @@ var formatLong = {
1062
1074
  defaultWidth: 'full'
1063
1075
  })
1064
1076
  };
1077
+ var formatLong$1 = formatLong;
1065
1078
 
1066
1079
  var formatRelativeLocale = {
1067
1080
  lastWeek: "'last' eeee 'at' p",
@@ -1222,33 +1235,29 @@ var localize = {
1222
1235
  defaultFormattingWidth: 'wide'
1223
1236
  })
1224
1237
  };
1238
+ var localize$1 = localize;
1225
1239
 
1226
1240
  function buildMatchPatternFn(args) {
1227
- return function (dirtyString, dirtyOptions) {
1228
- var string = String(dirtyString);
1229
- var options = dirtyOptions || {};
1241
+ return function (string) {
1242
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1230
1243
  var matchResult = string.match(args.matchPattern);
1231
- if (!matchResult) {
1232
- return null;
1233
- }
1244
+ if (!matchResult) return null;
1234
1245
  var matchedString = matchResult[0];
1235
1246
  var parseResult = string.match(args.parsePattern);
1236
- if (!parseResult) {
1237
- return null;
1238
- }
1247
+ if (!parseResult) return null;
1239
1248
  var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
1240
1249
  value = options.valueCallback ? options.valueCallback(value) : value;
1250
+ var rest = string.slice(matchedString.length);
1241
1251
  return {
1242
1252
  value: value,
1243
- rest: string.slice(matchedString.length)
1253
+ rest: rest
1244
1254
  };
1245
1255
  };
1246
1256
  }
1247
1257
 
1248
1258
  function buildMatchFn(args) {
1249
- return function (dirtyString, dirtyOptions) {
1250
- var string = String(dirtyString);
1251
- var options = dirtyOptions || {};
1259
+ return function (string) {
1260
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1252
1261
  var width = options.width;
1253
1262
  var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
1254
1263
  var matchResult = string.match(matchPattern);
@@ -1257,21 +1266,18 @@ function buildMatchFn(args) {
1257
1266
  }
1258
1267
  var matchedString = matchResult[0];
1259
1268
  var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];
1269
+ var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {
1270
+ return pattern.test(matchedString);
1271
+ }) : findKey(parsePatterns, function (pattern) {
1272
+ return pattern.test(matchedString);
1273
+ });
1260
1274
  var value;
1261
- if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {
1262
- value = findIndex(parsePatterns, function (pattern) {
1263
- return pattern.test(string);
1264
- });
1265
- } else {
1266
- value = findKey(parsePatterns, function (pattern) {
1267
- return pattern.test(string);
1268
- });
1269
- }
1270
- value = args.valueCallback ? args.valueCallback(value) : value;
1275
+ value = args.valueCallback ? args.valueCallback(key) : key;
1271
1276
  value = options.valueCallback ? options.valueCallback(value) : value;
1277
+ var rest = string.slice(matchedString.length);
1272
1278
  return {
1273
1279
  value: value,
1274
- rest: string.slice(matchedString.length)
1280
+ rest: rest
1275
1281
  };
1276
1282
  };
1277
1283
  }
@@ -1281,6 +1287,7 @@ function findKey(object, predicate) {
1281
1287
  return key;
1282
1288
  }
1283
1289
  }
1290
+ return undefined;
1284
1291
  }
1285
1292
  function findIndex(array, predicate) {
1286
1293
  for (var key = 0; key < array.length; key++) {
@@ -1288,6 +1295,7 @@ function findIndex(array, predicate) {
1288
1295
  return key;
1289
1296
  }
1290
1297
  }
1298
+ return undefined;
1291
1299
  }
1292
1300
 
1293
1301
  var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
@@ -1385,20 +1393,22 @@ var match = {
1385
1393
  defaultParseWidth: 'any'
1386
1394
  })
1387
1395
  };
1396
+ var match$1 = match;
1388
1397
 
1389
1398
  var locale = {
1390
1399
  code: 'en-US',
1391
1400
  formatDistance: formatDistance,
1392
- formatLong: formatLong,
1401
+ formatLong: formatLong$1,
1393
1402
  formatRelative: formatRelative,
1394
- localize: localize,
1395
- match: match,
1403
+ localize: localize$1,
1404
+ match: match$1,
1396
1405
  options: {
1397
1406
  weekStartsOn: 0
1398
1407
  ,
1399
1408
  firstWeekContainsDate: 1
1400
1409
  }
1401
1410
  };
1411
+ var defaultLocale = locale;
1402
1412
 
1403
1413
  function addMilliseconds(dirtyDate, dirtyAmount) {
1404
1414
  requiredArgs(2, arguments);
@@ -1419,7 +1429,7 @@ function assign(target, dirtyObject) {
1419
1429
  }
1420
1430
  dirtyObject = dirtyObject || {};
1421
1431
  for (var property in dirtyObject) {
1422
- if (dirtyObject.hasOwnProperty(property)) {
1432
+ if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {
1423
1433
  target[property] = dirtyObject[property];
1424
1434
  }
1425
1435
  }
@@ -1505,14 +1515,12 @@ var longFormatters = {
1505
1515
  p: timeLongFormatter,
1506
1516
  P: dateTimeLongFormatter
1507
1517
  };
1518
+ var longFormatters$1 = longFormatters;
1508
1519
 
1509
- var MILLISECONDS_IN_MINUTE$1 = 60000;
1510
- function getTimezoneOffsetInMilliseconds(dirtyDate) {
1511
- var date = new Date(dirtyDate.getTime());
1512
- var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());
1513
- date.setSeconds(0, 0);
1514
- var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE$1;
1515
- return baseTimezoneOffset * MILLISECONDS_IN_MINUTE$1 + millisecondsPartOfTimezoneOffset;
1520
+ function getTimezoneOffsetInMilliseconds(date) {
1521
+ var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
1522
+ utcDate.setUTCFullYear(date.getFullYear());
1523
+ return date.getTime() - utcDate.getTime();
1516
1524
  }
1517
1525
 
1518
1526
  var protectedDayOfYearTokens = ['D', 'DD'];
@@ -1523,15 +1531,15 @@ function isProtectedDayOfYearToken(token) {
1523
1531
  function isProtectedWeekYearToken(token) {
1524
1532
  return protectedWeekYearTokens.indexOf(token) !== -1;
1525
1533
  }
1526
- function throwProtectedError(token) {
1534
+ function throwProtectedError(token, format, input) {
1527
1535
  if (token === 'YYYY') {
1528
- throw new RangeError('Use `yyyy` instead of `YYYY` for formatting years; see: https://git.io/fxCyr');
1536
+ throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://git.io/fxCyr"));
1529
1537
  } else if (token === 'YY') {
1530
- throw new RangeError('Use `yy` instead of `YY` for formatting years; see: https://git.io/fxCyr');
1538
+ throw new RangeError("Use `yy` instead of `YY` (in `".concat(format, "`) for formatting years to the input `").concat(input, "`; see: https://git.io/fxCyr"));
1531
1539
  } else if (token === 'D') {
1532
- throw new RangeError('Use `d` instead of `D` for formatting days of the month; see: https://git.io/fxCyr');
1540
+ 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"));
1533
1541
  } else if (token === 'DD') {
1534
- throw new RangeError('Use `dd` instead of `DD` for formatting days of the month; see: https://git.io/fxCyr');
1542
+ 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"));
1535
1543
  }
1536
1544
  }
1537
1545
 
@@ -2231,6 +2239,7 @@ var parsers = {
2231
2239
  },
2232
2240
  d: {
2233
2241
  priority: 90,
2242
+ subPriority: 1,
2234
2243
  parse: function (string, token, match, _options) {
2235
2244
  switch (token) {
2236
2245
  case 'd':
@@ -2262,6 +2271,7 @@ var parsers = {
2262
2271
  },
2263
2272
  D: {
2264
2273
  priority: 90,
2274
+ subPriority: 1,
2265
2275
  parse: function (string, token, match, _options) {
2266
2276
  switch (token) {
2267
2277
  case 'D':
@@ -2917,6 +2927,7 @@ var parsers = {
2917
2927
  incompatibleTokens: '*'
2918
2928
  }
2919
2929
  };
2930
+ var parsers$1 = parsers;
2920
2931
 
2921
2932
  var TIMEZONE_UNIT_PRIORITY = 10;
2922
2933
  var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
@@ -2925,22 +2936,22 @@ var escapedStringRegExp = /^'([^]*?)'?$/;
2925
2936
  var doubleQuoteRegExp = /''/g;
2926
2937
  var notWhitespaceRegExp = /\S/;
2927
2938
  var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
2928
- function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {
2939
+ function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {
2929
2940
  requiredArgs(3, arguments);
2930
2941
  var dateString = String(dirtyDateString);
2931
2942
  var formatString = String(dirtyFormatString);
2932
2943
  var options = dirtyOptions || {};
2933
- var locale$1 = options.locale || locale;
2934
- if (!locale$1.match) {
2944
+ var locale = options.locale || defaultLocale;
2945
+ if (!locale.match) {
2935
2946
  throw new RangeError('locale must contain match property');
2936
2947
  }
2937
- var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;
2948
+ var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;
2938
2949
  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);
2939
2950
  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);
2940
2951
  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
2941
2952
  throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');
2942
2953
  }
2943
- var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;
2954
+ var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;
2944
2955
  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);
2945
2956
  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);
2946
2957
  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
@@ -2948,7 +2959,7 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2948
2959
  }
2949
2960
  if (formatString === '') {
2950
2961
  if (dateString === '') {
2951
- return toDate(dirtyBackupDate);
2962
+ return toDate(dirtyReferenceDate);
2952
2963
  } else {
2953
2964
  return new Date(NaN);
2954
2965
  }
@@ -2956,10 +2967,11 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2956
2967
  var subFnOptions = {
2957
2968
  firstWeekContainsDate: firstWeekContainsDate,
2958
2969
  weekStartsOn: weekStartsOn,
2959
- locale: locale$1
2970
+ locale: locale
2960
2971
  };
2961
2972
  var setters = [{
2962
2973
  priority: TIMEZONE_UNIT_PRIORITY,
2974
+ subPriority: -1,
2963
2975
  set: dateToSystemTimezone,
2964
2976
  index: 0
2965
2977
  }];
@@ -2967,8 +2979,8 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2967
2979
  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {
2968
2980
  var firstCharacter = substring[0];
2969
2981
  if (firstCharacter === 'p' || firstCharacter === 'P') {
2970
- var longFormatter = longFormatters[firstCharacter];
2971
- return longFormatter(substring, locale$1.formatLong, subFnOptions);
2982
+ var longFormatter = longFormatters$1[firstCharacter];
2983
+ return longFormatter(substring, locale.formatLong, subFnOptions);
2972
2984
  }
2973
2985
  return substring;
2974
2986
  }).join('').match(formattingTokensRegExp);
@@ -2976,13 +2988,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2976
2988
  for (i = 0; i < tokens.length; i++) {
2977
2989
  var token = tokens[i];
2978
2990
  if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {
2979
- throwProtectedError(token);
2991
+ throwProtectedError(token, formatString, dirtyDateString);
2980
2992
  }
2981
2993
  if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {
2982
- throwProtectedError(token);
2994
+ throwProtectedError(token, formatString, dirtyDateString);
2983
2995
  }
2984
2996
  var firstCharacter = token[0];
2985
- var parser = parsers[firstCharacter];
2997
+ var parser = parsers$1[firstCharacter];
2986
2998
  if (parser) {
2987
2999
  var incompatibleTokens = parser.incompatibleTokens;
2988
3000
  if (Array.isArray(incompatibleTokens)) {
@@ -3004,12 +3016,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
3004
3016
  token: firstCharacter,
3005
3017
  fullToken: token
3006
3018
  });
3007
- var parseResult = parser.parse(dateString, token, locale$1.match, subFnOptions);
3019
+ var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);
3008
3020
  if (!parseResult) {
3009
3021
  return new Date(NaN);
3010
3022
  }
3011
3023
  setters.push({
3012
3024
  priority: parser.priority,
3025
+ subPriority: parser.subPriority || 0,
3013
3026
  set: parser.set,
3014
3027
  validate: parser.validate,
3015
3028
  value: parseResult.value,
@@ -3044,11 +3057,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
3044
3057
  }).map(function (priority) {
3045
3058
  return setters.filter(function (setter) {
3046
3059
  return setter.priority === priority;
3047
- }).reverse();
3060
+ }).sort(function (a, b) {
3061
+ return b.subPriority - a.subPriority;
3062
+ });
3048
3063
  }).map(function (setterArray) {
3049
3064
  return setterArray[0];
3050
3065
  });
3051
- var date = toDate(dirtyBackupDate);
3066
+ var date = toDate(dirtyReferenceDate);
3052
3067
  if (isNaN(date)) {
3053
3068
  return new Date(NaN);
3054
3069
  }
@@ -4004,7 +4019,7 @@ var Calendar = function Calendar(props) {
4004
4019
  onChange = _useDatepickerRangeCo.onChange;
4005
4020
  return React__default['default'].createElement(StyledRangeCalendar, _extends$2({
4006
4021
  "data-garden-id": "datepickers.range",
4007
- "data-garden-version": '8.39.1'
4022
+ "data-garden-version": '8.42.0'
4008
4023
  }, props), React__default['default'].createElement(Month, {
4009
4024
  locale: locale,
4010
4025
  displayDate: state.previewDate,
package/dist/index.esm.js CHANGED
@@ -194,7 +194,7 @@ function getMenuPosition(popperPlacement) {
194
194
 
195
195
  function requiredArgs(required, args) {
196
196
  if (args.length < required) {
197
- 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');
198
198
  }
199
199
  }
200
200
 
@@ -207,7 +207,7 @@ function toDate(argument) {
207
207
  return new Date(argument);
208
208
  } else {
209
209
  if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {
210
- 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");
211
211
  console.warn(new Error().stack);
212
212
  }
213
213
  return new Date(NaN);
@@ -304,6 +304,12 @@ function addDays(dirtyDate, dirtyAmount) {
304
304
  requiredArgs(2, arguments);
305
305
  var date = toDate(dirtyDate);
306
306
  var amount = toInteger(dirtyAmount);
307
+ if (isNaN(amount)) {
308
+ return new Date(NaN);
309
+ }
310
+ if (!amount) {
311
+ return date;
312
+ }
307
313
  date.setDate(date.getDate() + amount);
308
314
  return date;
309
315
  }
@@ -358,7 +364,7 @@ function getDate(dirtyDate) {
358
364
  var COMPONENT_ID$b = 'datepickers.menu';
359
365
  var StyledMenu = styled.div.attrs({
360
366
  'data-garden-id': COMPONENT_ID$b,
361
- 'data-garden-version': '8.39.1'
367
+ 'data-garden-version': '8.42.0'
362
368
  }).withConfig({
363
369
  displayName: "StyledMenu",
364
370
  componentId: "sc-1npbkk0-0"
@@ -880,28 +886,26 @@ var Calendar$1 = function Calendar(_ref) {
880
886
  }, dayLabels, items));
881
887
  };
882
888
 
883
- function getDaysInMonth(dirtyDate) {
884
- requiredArgs(1, arguments);
885
- var date = toDate(dirtyDate);
886
- var year = date.getFullYear();
887
- var monthIndex = date.getMonth();
888
- var lastDayOfMonth = new Date(0);
889
- lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);
890
- lastDayOfMonth.setHours(0, 0, 0, 0);
891
- return lastDayOfMonth.getDate();
892
- }
893
-
894
889
  function addMonths(dirtyDate, dirtyAmount) {
895
890
  requiredArgs(2, arguments);
896
891
  var date = toDate(dirtyDate);
897
892
  var amount = toInteger(dirtyAmount);
898
- var desiredMonth = date.getMonth() + amount;
899
- var dateWithDesiredMonth = new Date(0);
900
- dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);
901
- dateWithDesiredMonth.setHours(0, 0, 0, 0);
902
- var daysInMonth = getDaysInMonth(dateWithDesiredMonth);
903
- date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));
904
- 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
+ }
905
909
  }
906
910
 
907
911
  function subMonths(dirtyDate, dirtyAmount) {
@@ -946,6 +950,14 @@ var formatDistanceLocale = {
946
950
  one: '1 day',
947
951
  other: '{{count}} days'
948
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
+ },
949
961
  aboutXMonths: {
950
962
  one: 'about 1 month',
951
963
  other: 'about {{count}} months'
@@ -992,8 +1004,8 @@ function formatDistance(token, count, options) {
992
1004
  }
993
1005
 
994
1006
  function buildFormatLongFn(args) {
995
- return function (dirtyOptions) {
996
- var options = dirtyOptions || {};
1007
+ return function () {
1008
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
997
1009
  var width = options.width ? String(options.width) : args.defaultWidth;
998
1010
  var format = args.formats[width] || args.formats[args.defaultWidth];
999
1011
  return format;
@@ -1032,6 +1044,7 @@ var formatLong = {
1032
1044
  defaultWidth: 'full'
1033
1045
  })
1034
1046
  };
1047
+ var formatLong$1 = formatLong;
1035
1048
 
1036
1049
  var formatRelativeLocale = {
1037
1050
  lastWeek: "'last' eeee 'at' p",
@@ -1192,33 +1205,29 @@ var localize = {
1192
1205
  defaultFormattingWidth: 'wide'
1193
1206
  })
1194
1207
  };
1208
+ var localize$1 = localize;
1195
1209
 
1196
1210
  function buildMatchPatternFn(args) {
1197
- return function (dirtyString, dirtyOptions) {
1198
- var string = String(dirtyString);
1199
- var options = dirtyOptions || {};
1211
+ return function (string) {
1212
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1200
1213
  var matchResult = string.match(args.matchPattern);
1201
- if (!matchResult) {
1202
- return null;
1203
- }
1214
+ if (!matchResult) return null;
1204
1215
  var matchedString = matchResult[0];
1205
1216
  var parseResult = string.match(args.parsePattern);
1206
- if (!parseResult) {
1207
- return null;
1208
- }
1217
+ if (!parseResult) return null;
1209
1218
  var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];
1210
1219
  value = options.valueCallback ? options.valueCallback(value) : value;
1220
+ var rest = string.slice(matchedString.length);
1211
1221
  return {
1212
1222
  value: value,
1213
- rest: string.slice(matchedString.length)
1223
+ rest: rest
1214
1224
  };
1215
1225
  };
1216
1226
  }
1217
1227
 
1218
1228
  function buildMatchFn(args) {
1219
- return function (dirtyString, dirtyOptions) {
1220
- var string = String(dirtyString);
1221
- var options = dirtyOptions || {};
1229
+ return function (string) {
1230
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1222
1231
  var width = options.width;
1223
1232
  var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];
1224
1233
  var matchResult = string.match(matchPattern);
@@ -1227,21 +1236,18 @@ function buildMatchFn(args) {
1227
1236
  }
1228
1237
  var matchedString = matchResult[0];
1229
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
+ });
1230
1244
  var value;
1231
- if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {
1232
- value = findIndex(parsePatterns, function (pattern) {
1233
- return pattern.test(string);
1234
- });
1235
- } else {
1236
- value = findKey(parsePatterns, function (pattern) {
1237
- return pattern.test(string);
1238
- });
1239
- }
1240
- value = args.valueCallback ? args.valueCallback(value) : value;
1245
+ value = args.valueCallback ? args.valueCallback(key) : key;
1241
1246
  value = options.valueCallback ? options.valueCallback(value) : value;
1247
+ var rest = string.slice(matchedString.length);
1242
1248
  return {
1243
1249
  value: value,
1244
- rest: string.slice(matchedString.length)
1250
+ rest: rest
1245
1251
  };
1246
1252
  };
1247
1253
  }
@@ -1251,6 +1257,7 @@ function findKey(object, predicate) {
1251
1257
  return key;
1252
1258
  }
1253
1259
  }
1260
+ return undefined;
1254
1261
  }
1255
1262
  function findIndex(array, predicate) {
1256
1263
  for (var key = 0; key < array.length; key++) {
@@ -1258,6 +1265,7 @@ function findIndex(array, predicate) {
1258
1265
  return key;
1259
1266
  }
1260
1267
  }
1268
+ return undefined;
1261
1269
  }
1262
1270
 
1263
1271
  var matchOrdinalNumberPattern = /^(\d+)(th|st|nd|rd)?/i;
@@ -1355,20 +1363,22 @@ var match = {
1355
1363
  defaultParseWidth: 'any'
1356
1364
  })
1357
1365
  };
1366
+ var match$1 = match;
1358
1367
 
1359
1368
  var locale = {
1360
1369
  code: 'en-US',
1361
1370
  formatDistance: formatDistance,
1362
- formatLong: formatLong,
1371
+ formatLong: formatLong$1,
1363
1372
  formatRelative: formatRelative,
1364
- localize: localize,
1365
- match: match,
1373
+ localize: localize$1,
1374
+ match: match$1,
1366
1375
  options: {
1367
1376
  weekStartsOn: 0
1368
1377
  ,
1369
1378
  firstWeekContainsDate: 1
1370
1379
  }
1371
1380
  };
1381
+ var defaultLocale = locale;
1372
1382
 
1373
1383
  function addMilliseconds(dirtyDate, dirtyAmount) {
1374
1384
  requiredArgs(2, arguments);
@@ -1389,7 +1399,7 @@ function assign(target, dirtyObject) {
1389
1399
  }
1390
1400
  dirtyObject = dirtyObject || {};
1391
1401
  for (var property in dirtyObject) {
1392
- if (dirtyObject.hasOwnProperty(property)) {
1402
+ if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {
1393
1403
  target[property] = dirtyObject[property];
1394
1404
  }
1395
1405
  }
@@ -1475,14 +1485,12 @@ var longFormatters = {
1475
1485
  p: timeLongFormatter,
1476
1486
  P: dateTimeLongFormatter
1477
1487
  };
1488
+ var longFormatters$1 = longFormatters;
1478
1489
 
1479
- var MILLISECONDS_IN_MINUTE$1 = 60000;
1480
- function getTimezoneOffsetInMilliseconds(dirtyDate) {
1481
- var date = new Date(dirtyDate.getTime());
1482
- var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());
1483
- date.setSeconds(0, 0);
1484
- var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE$1;
1485
- 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();
1486
1494
  }
1487
1495
 
1488
1496
  var protectedDayOfYearTokens = ['D', 'DD'];
@@ -1493,15 +1501,15 @@ function isProtectedDayOfYearToken(token) {
1493
1501
  function isProtectedWeekYearToken(token) {
1494
1502
  return protectedWeekYearTokens.indexOf(token) !== -1;
1495
1503
  }
1496
- function throwProtectedError(token) {
1504
+ function throwProtectedError(token, format, input) {
1497
1505
  if (token === 'YYYY') {
1498
- 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"));
1499
1507
  } else if (token === 'YY') {
1500
- 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"));
1501
1509
  } else if (token === 'D') {
1502
- 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"));
1503
1511
  } else if (token === 'DD') {
1504
- 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"));
1505
1513
  }
1506
1514
  }
1507
1515
 
@@ -2201,6 +2209,7 @@ var parsers = {
2201
2209
  },
2202
2210
  d: {
2203
2211
  priority: 90,
2212
+ subPriority: 1,
2204
2213
  parse: function (string, token, match, _options) {
2205
2214
  switch (token) {
2206
2215
  case 'd':
@@ -2232,6 +2241,7 @@ var parsers = {
2232
2241
  },
2233
2242
  D: {
2234
2243
  priority: 90,
2244
+ subPriority: 1,
2235
2245
  parse: function (string, token, match, _options) {
2236
2246
  switch (token) {
2237
2247
  case 'D':
@@ -2887,6 +2897,7 @@ var parsers = {
2887
2897
  incompatibleTokens: '*'
2888
2898
  }
2889
2899
  };
2900
+ var parsers$1 = parsers;
2890
2901
 
2891
2902
  var TIMEZONE_UNIT_PRIORITY = 10;
2892
2903
  var formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g;
@@ -2895,22 +2906,22 @@ var escapedStringRegExp = /^'([^]*?)'?$/;
2895
2906
  var doubleQuoteRegExp = /''/g;
2896
2907
  var notWhitespaceRegExp = /\S/;
2897
2908
  var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
2898
- function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions) {
2909
+ function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {
2899
2910
  requiredArgs(3, arguments);
2900
2911
  var dateString = String(dirtyDateString);
2901
2912
  var formatString = String(dirtyFormatString);
2902
2913
  var options = dirtyOptions || {};
2903
- var locale$1 = options.locale || locale;
2904
- if (!locale$1.match) {
2914
+ var locale = options.locale || defaultLocale;
2915
+ if (!locale.match) {
2905
2916
  throw new RangeError('locale must contain match property');
2906
2917
  }
2907
- var localeFirstWeekContainsDate = locale$1.options && locale$1.options.firstWeekContainsDate;
2918
+ var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;
2908
2919
  var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);
2909
2920
  var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);
2910
2921
  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {
2911
2922
  throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');
2912
2923
  }
2913
- var localeWeekStartsOn = locale$1.options && locale$1.options.weekStartsOn;
2924
+ var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;
2914
2925
  var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);
2915
2926
  var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);
2916
2927
  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {
@@ -2918,7 +2929,7 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2918
2929
  }
2919
2930
  if (formatString === '') {
2920
2931
  if (dateString === '') {
2921
- return toDate(dirtyBackupDate);
2932
+ return toDate(dirtyReferenceDate);
2922
2933
  } else {
2923
2934
  return new Date(NaN);
2924
2935
  }
@@ -2926,10 +2937,11 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2926
2937
  var subFnOptions = {
2927
2938
  firstWeekContainsDate: firstWeekContainsDate,
2928
2939
  weekStartsOn: weekStartsOn,
2929
- locale: locale$1
2940
+ locale: locale
2930
2941
  };
2931
2942
  var setters = [{
2932
2943
  priority: TIMEZONE_UNIT_PRIORITY,
2944
+ subPriority: -1,
2933
2945
  set: dateToSystemTimezone,
2934
2946
  index: 0
2935
2947
  }];
@@ -2937,8 +2949,8 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2937
2949
  var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {
2938
2950
  var firstCharacter = substring[0];
2939
2951
  if (firstCharacter === 'p' || firstCharacter === 'P') {
2940
- var longFormatter = longFormatters[firstCharacter];
2941
- return longFormatter(substring, locale$1.formatLong, subFnOptions);
2952
+ var longFormatter = longFormatters$1[firstCharacter];
2953
+ return longFormatter(substring, locale.formatLong, subFnOptions);
2942
2954
  }
2943
2955
  return substring;
2944
2956
  }).join('').match(formattingTokensRegExp);
@@ -2946,13 +2958,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2946
2958
  for (i = 0; i < tokens.length; i++) {
2947
2959
  var token = tokens[i];
2948
2960
  if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {
2949
- throwProtectedError(token);
2961
+ throwProtectedError(token, formatString, dirtyDateString);
2950
2962
  }
2951
2963
  if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {
2952
- throwProtectedError(token);
2964
+ throwProtectedError(token, formatString, dirtyDateString);
2953
2965
  }
2954
2966
  var firstCharacter = token[0];
2955
- var parser = parsers[firstCharacter];
2967
+ var parser = parsers$1[firstCharacter];
2956
2968
  if (parser) {
2957
2969
  var incompatibleTokens = parser.incompatibleTokens;
2958
2970
  if (Array.isArray(incompatibleTokens)) {
@@ -2974,12 +2986,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
2974
2986
  token: firstCharacter,
2975
2987
  fullToken: token
2976
2988
  });
2977
- var parseResult = parser.parse(dateString, token, locale$1.match, subFnOptions);
2989
+ var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);
2978
2990
  if (!parseResult) {
2979
2991
  return new Date(NaN);
2980
2992
  }
2981
2993
  setters.push({
2982
2994
  priority: parser.priority,
2995
+ subPriority: parser.subPriority || 0,
2983
2996
  set: parser.set,
2984
2997
  validate: parser.validate,
2985
2998
  value: parseResult.value,
@@ -3014,11 +3027,13 @@ function parse(dirtyDateString, dirtyFormatString, dirtyBackupDate, dirtyOptions
3014
3027
  }).map(function (priority) {
3015
3028
  return setters.filter(function (setter) {
3016
3029
  return setter.priority === priority;
3017
- }).reverse();
3030
+ }).sort(function (a, b) {
3031
+ return b.subPriority - a.subPriority;
3032
+ });
3018
3033
  }).map(function (setterArray) {
3019
3034
  return setterArray[0];
3020
3035
  });
3021
- var date = toDate(dirtyBackupDate);
3036
+ var date = toDate(dirtyReferenceDate);
3022
3037
  if (isNaN(date)) {
3023
3038
  return new Date(NaN);
3024
3039
  }
@@ -3974,7 +3989,7 @@ var Calendar = function Calendar(props) {
3974
3989
  onChange = _useDatepickerRangeCo.onChange;
3975
3990
  return React__default.createElement(StyledRangeCalendar, _extends$2({
3976
3991
  "data-garden-id": "datepickers.range",
3977
- "data-garden-version": '8.39.1'
3992
+ "data-garden-version": '8.42.0'
3978
3993
  }, props), React__default.createElement(Month, {
3979
3994
  locale: locale,
3980
3995
  displayDate: state.previewDate,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zendeskgarden/react-datepickers",
3
- "version": "8.39.1",
3
+ "version": "8.42.0",
4
4
  "description": "Components relating to datepickers in the Garden Design System",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Zendesk Garden <garden@zendesk.com>",
@@ -21,7 +21,7 @@
21
21
  "sideEffects": false,
22
22
  "types": "dist/typings/index.d.ts",
23
23
  "dependencies": {
24
- "@zendeskgarden/container-utilities": "^0.5.5",
24
+ "@zendeskgarden/container-utilities": "^0.6.0",
25
25
  "date-fns": "^2.0.0-beta.2",
26
26
  "prop-types": "^15.5.7",
27
27
  "react-popper": "^1.3.4"
@@ -33,7 +33,7 @@
33
33
  "styled-components": "^4.2.0 || ^5.0.0"
34
34
  },
35
35
  "devDependencies": {
36
- "@zendeskgarden/react-theming": "^8.39.1",
36
+ "@zendeskgarden/react-theming": "^8.42.0",
37
37
  "@zendeskgarden/svg-icons": "6.30.2"
38
38
  },
39
39
  "keywords": [
@@ -46,5 +46,5 @@
46
46
  "access": "public"
47
47
  },
48
48
  "zendeskgarden:src": "src/index.ts",
49
- "gitHead": "50a3de03c519cac3ef84f9f49cc9e29308db9ebd"
49
+ "gitHead": "5cac646f69c4a9bed374d530734272332392671a"
50
50
  }