@ui5/webcomponents-localization 1.7.4 → 1.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/generated/assets/cldr/ar.json +799 -1
  3. package/dist/generated/assets/cldr/ar_EG.json +799 -1
  4. package/dist/generated/assets/cldr/ar_SA.json +799 -1
  5. package/dist/generated/assets/cldr/bg.json +764 -1
  6. package/dist/generated/assets/cldr/ca.json +798 -1
  7. package/dist/generated/assets/cldr/cs.json +797 -1
  8. package/dist/generated/assets/cldr/cy.json +729 -1
  9. package/dist/generated/assets/cldr/da.json +764 -1
  10. package/dist/generated/assets/cldr/de.json +798 -1
  11. package/dist/generated/assets/cldr/de_AT.json +798 -1
  12. package/dist/generated/assets/cldr/de_CH.json +798 -1
  13. package/dist/generated/assets/cldr/el.json +697 -1
  14. package/dist/generated/assets/cldr/el_CY.json +697 -1
  15. package/dist/generated/assets/cldr/en.json +763 -2
  16. package/dist/generated/assets/cldr/en_AU.json +763 -1
  17. package/dist/generated/assets/cldr/en_GB.json +763 -1
  18. package/dist/generated/assets/cldr/en_HK.json +763 -1
  19. package/dist/generated/assets/cldr/en_IE.json +763 -1
  20. package/dist/generated/assets/cldr/en_IN.json +763 -1
  21. package/dist/generated/assets/cldr/en_NZ.json +763 -1
  22. package/dist/generated/assets/cldr/en_PG.json +763 -1
  23. package/dist/generated/assets/cldr/en_SG.json +763 -1
  24. package/dist/generated/assets/cldr/en_ZA.json +763 -1
  25. package/dist/generated/assets/cldr/es.json +730 -1
  26. package/dist/generated/assets/cldr/es_AR.json +730 -1
  27. package/dist/generated/assets/cldr/es_BO.json +733 -4
  28. package/dist/generated/assets/cldr/es_CL.json +733 -4
  29. package/dist/generated/assets/cldr/es_CO.json +730 -1
  30. package/dist/generated/assets/cldr/es_MX.json +733 -4
  31. package/dist/generated/assets/cldr/es_PE.json +733 -4
  32. package/dist/generated/assets/cldr/es_UY.json +733 -4
  33. package/dist/generated/assets/cldr/es_VE.json +732 -3
  34. package/dist/generated/assets/cldr/et.json +763 -1
  35. package/dist/generated/assets/cldr/fa.json +765 -1
  36. package/dist/generated/assets/cldr/fi.json +797 -1
  37. package/dist/generated/assets/cldr/fr.json +763 -1
  38. package/dist/generated/assets/cldr/fr_BE.json +763 -1
  39. package/dist/generated/assets/cldr/fr_CA.json +763 -1
  40. package/dist/generated/assets/cldr/fr_CH.json +763 -1
  41. package/dist/generated/assets/cldr/fr_LU.json +763 -1
  42. package/dist/generated/assets/cldr/he.json +798 -1
  43. package/dist/generated/assets/cldr/hi.json +730 -1
  44. package/dist/generated/assets/cldr/hr.json +763 -1
  45. package/dist/generated/assets/cldr/hu.json +831 -1
  46. package/dist/generated/assets/cldr/id.json +763 -1
  47. package/dist/generated/assets/cldr/it.json +763 -1
  48. package/dist/generated/assets/cldr/it_CH.json +763 -1
  49. package/dist/generated/assets/cldr/ja.json +797 -1
  50. package/dist/generated/assets/cldr/kk.json +763 -1
  51. package/dist/generated/assets/cldr/ko.json +797 -1
  52. package/dist/generated/assets/cldr/lt.json +763 -1
  53. package/dist/generated/assets/cldr/lv.json +763 -1
  54. package/dist/generated/assets/cldr/ms.json +731 -1
  55. package/dist/generated/assets/cldr/nb.json +764 -1
  56. package/dist/generated/assets/cldr/nl.json +730 -1
  57. package/dist/generated/assets/cldr/nl_BE.json +730 -1
  58. package/dist/generated/assets/cldr/pl.json +797 -1
  59. package/dist/generated/assets/cldr/pt.json +763 -1
  60. package/dist/generated/assets/cldr/pt_PT.json +763 -1
  61. package/dist/generated/assets/cldr/ro.json +763 -1
  62. package/dist/generated/assets/cldr/ru.json +763 -1
  63. package/dist/generated/assets/cldr/ru_UA.json +763 -1
  64. package/dist/generated/assets/cldr/sk.json +797 -1
  65. package/dist/generated/assets/cldr/sl.json +797 -1
  66. package/dist/generated/assets/cldr/sr.json +763 -1
  67. package/dist/generated/assets/cldr/sr_Latn.json +763 -1
  68. package/dist/generated/assets/cldr/sv.json +764 -1
  69. package/dist/generated/assets/cldr/th.json +831 -1
  70. package/dist/generated/assets/cldr/tr.json +831 -1
  71. package/dist/generated/assets/cldr/uk.json +763 -1
  72. package/dist/generated/assets/cldr/vi.json +763 -1
  73. package/dist/generated/assets/cldr/zh_CN.json +799 -2
  74. package/dist/generated/assets/cldr/zh_HK.json +799 -2
  75. package/dist/generated/assets/cldr/zh_SG.json +799 -2
  76. package/dist/generated/assets/cldr/zh_TW.json +798 -1
  77. package/dist/sap/base/Log.js +28 -29
  78. package/dist/sap/base/assert.js +5 -6
  79. package/dist/sap/ui/core/Configuration.js +21 -0
  80. package/dist/sap/ui/core/Core.js +2 -27
  81. package/dist/sap/ui/core/FormatSettings.js +15 -0
  82. package/dist/sap/ui/core/Locale.js +3 -0
  83. package/dist/sap/ui/core/LocaleData.js +78 -3
  84. package/dist/sap/ui/core/date/Buddhist.js +0 -6
  85. package/dist/sap/ui/core/date/CalendarUtils.js +36 -0
  86. package/dist/sap/ui/core/date/CalendarWeekNumbering.js +7 -0
  87. package/dist/sap/ui/core/date/Islamic.js +3 -3
  88. package/dist/sap/ui/core/date/Japanese.js +4 -4
  89. package/dist/sap/ui/core/date/UniversalDate.js +73 -22
  90. package/dist/sap/ui/core/format/DateFormat.js +157 -57
  91. package/dist/sap/ui/core/format/TimezoneUtil.js +12 -1
  92. package/package.json +5 -5
  93. package/src/sap/ui/core/Configuration.js +21 -0
  94. package/src/sap/ui/core/Core.js +2 -27
  95. package/src/sap/ui/core/FormatSettings.js +15 -0
  96. package/used-modules.txt +2 -0
  97. package/global.d.ts +0 -105
  98. package/src/DateFormat.ts +0 -3
  99. package/src/LocaleData.ts +0 -8
  100. package/src/dates/CalendarDate.ts +0 -231
  101. package/src/getCachedLocaleDataInstance.ts +0 -14
@@ -1,13 +1,15 @@
1
- import Core from '../Core.js';
2
1
  import CalendarType from '../CalendarType.js';
3
2
  import Locale from '../Locale.js';
4
3
  import LocaleData from '../LocaleData.js';
5
4
  import UniversalDate from '../date/UniversalDate.js';
5
+ import CalendarUtils from '../date/CalendarUtils.js';
6
+ import CalendarWeekNumbering from '../date/CalendarWeekNumbering.js';
6
7
  import TimezoneUtil from './TimezoneUtil.js';
7
8
  import deepEqual from '../../../base/util/deepEqual.js';
8
9
  import formatMessage from '../../../base/strings/formatMessage.js';
9
10
  import Log from '../../../base/Log.js';
10
11
  import extend from '../../../base/util/extend.js';
12
+ import Configuration from '../Configuration.js';
11
13
  var DateFormat = function () {
12
14
  throw new Error();
13
15
  };
@@ -263,7 +265,7 @@ DateFormat.createInstance = function (oFormatOptions, oLocale, oInfo) {
263
265
  oFormatOptions = undefined;
264
266
  }
265
267
  if (!oLocale) {
266
- oLocale = Core.getConfiguration().getFormatSettings().getFormatLocale();
268
+ oLocale = Configuration.getFormatSettings().getFormatLocale();
267
269
  }
268
270
  oFormat.oLocale = oLocale;
269
271
  oFormat.oLocaleData = LocaleData.getInstance(oLocale);
@@ -279,7 +281,13 @@ DateFormat.createInstance = function (oFormatOptions, oLocale, oInfo) {
279
281
  }
280
282
  oFormat.type = oInfo.type;
281
283
  if (!oFormat.oFormatOptions.calendarType) {
282
- oFormat.oFormatOptions.calendarType = Core.getConfiguration().getCalendarType();
284
+ oFormat.oFormatOptions.calendarType = Configuration.getCalendarType();
285
+ }
286
+ if (oFormat.oFormatOptions.firstDayOfWeek === undefined && oFormat.oFormatOptions.minimalDaysInFirstWeek !== undefined || oFormat.oFormatOptions.firstDayOfWeek !== undefined && oFormat.oFormatOptions.minimalDaysInFirstWeek === undefined) {
287
+ throw new TypeError('Format options firstDayOfWeek and minimalDaysInFirstWeek need both to be set, but only one was provided.');
288
+ }
289
+ if (oFormat.oFormatOptions.calendarWeekNumbering && !Object.values(CalendarWeekNumbering).includes(oFormat.oFormatOptions.calendarWeekNumbering)) {
290
+ throw new TypeError('Illegal format option calendarWeekNumbering: \'' + oFormat.oFormatOptions.calendarWeekNumbering + '\'');
283
291
  }
284
292
  if (!oFormat.oFormatOptions.pattern) {
285
293
  if (oFormat.oFormatOptions.format) {
@@ -361,7 +369,15 @@ DateFormat.prototype.init = function () {
361
369
  this.aErasNarrow = this.oLocaleData.getEras('narrow', sCalendarType);
362
370
  this.aErasAbbrev = this.oLocaleData.getEras('abbreviated', sCalendarType);
363
371
  this.aErasWide = this.oLocaleData.getEras('wide', sCalendarType);
364
- this.aDayPeriods = this.oLocaleData.getDayPeriods('abbreviated', sCalendarType);
372
+ this.aDayPeriodsAbbrev = this.oLocaleData.getDayPeriods('abbreviated', sCalendarType);
373
+ this.aDayPeriodsNarrow = this.oLocaleData.getDayPeriods('narrow', sCalendarType);
374
+ this.aDayPeriodsWide = this.oLocaleData.getDayPeriods('wide', sCalendarType);
375
+ this.oFlexibleDayPeriodsAbbrev = this.oLocaleData.getFlexibleDayPeriods('abbreviated', sCalendarType);
376
+ this.oFlexibleDayPeriodsNarrow = this.oLocaleData.getFlexibleDayPeriods('narrow', sCalendarType);
377
+ this.oFlexibleDayPeriodsWide = this.oLocaleData.getFlexibleDayPeriods('wide', sCalendarType);
378
+ this.oFlexibleDayPeriodsAbbrevSt = this.oLocaleData.getFlexibleDayPeriodsStandAlone('abbreviated', sCalendarType);
379
+ this.oFlexibleDayPeriodsNarrowSt = this.oLocaleData.getFlexibleDayPeriodsStandAlone('narrow', sCalendarType);
380
+ this.oFlexibleDayPeriodsWideSt = this.oLocaleData.getFlexibleDayPeriodsStandAlone('wide', sCalendarType);
365
381
  this.aFormatArray = this.parseCldrDatePattern(this.oFormatOptions.pattern);
366
382
  this.sAllowedCharacters = this.getAllowedCharacters(this.aFormatArray);
367
383
  };
@@ -601,7 +617,7 @@ DateFormat.prototype.oSymbols = {
601
617
  'Y': {
602
618
  name: 'weekYear',
603
619
  format: function (oField, oDate, bUTC, oFormat) {
604
- var oWeek = oDate.getUTCWeek();
620
+ var oWeek = oDate.getUTCWeek(oFormat.oLocale, getCalendarWeekParameter(oFormat.oFormatOptions));
605
621
  var iWeekYear = oWeek.year;
606
622
  var sWeekYear = String(iWeekYear);
607
623
  var sCalendarType = oFormat.oFormatOptions.calendarType;
@@ -752,7 +768,7 @@ DateFormat.prototype.oSymbols = {
752
768
  'w': {
753
769
  name: 'weekInYear',
754
770
  format: function (oField, oDate, bUTC, oFormat) {
755
- var oWeek = oDate.getUTCWeek();
771
+ var oWeek = oDate.getUTCWeek(oFormat.oLocale, getCalendarWeekParameter(oFormat.oFormatOptions));
756
772
  var iWeek = oWeek.week;
757
773
  var sWeek = String(iWeek + 1);
758
774
  if (oField.digits < 3) {
@@ -1034,35 +1050,89 @@ DateFormat.prototype.oSymbols = {
1034
1050
  name: 'amPmMarker',
1035
1051
  format: function (oField, oDate, bUTC, oFormat) {
1036
1052
  var iDayPeriod = oDate.getUTCDayPeriod();
1037
- return oFormat.aDayPeriods[iDayPeriod];
1053
+ if (oField.digits <= 3) {
1054
+ return oFormat.aDayPeriodsAbbrev[iDayPeriod];
1055
+ } else if (oField.digits === 4) {
1056
+ return oFormat.aDayPeriodsWide[iDayPeriod];
1057
+ } else {
1058
+ return oFormat.aDayPeriodsNarrow[iDayPeriod];
1059
+ }
1060
+ },
1061
+ parse: function (sValue, oPart, oFormat, oConfig, sTimezone) {
1062
+ var rAMPM, bAMPMAlternativeCase, oEntry, i, aMatch, normalize, aVariants, aDayPeriodsVariants = [
1063
+ oFormat.aDayPeriodsWide,
1064
+ oFormat.aDayPeriodsAbbrev,
1065
+ oFormat.aDayPeriodsNarrow
1066
+ ];
1067
+ rAMPM = /[aApP](?:\.)?[\x20\xA0]?[mM](?:\.)?/;
1068
+ aMatch = sValue.match(rAMPM);
1069
+ bAMPMAlternativeCase = aMatch && aMatch.index === 0;
1070
+ function normalize(sValue) {
1071
+ return sValue.replace(/[\x20\xA0]/g, '').replace(/\./g, '');
1072
+ }
1073
+ if (bAMPMAlternativeCase) {
1074
+ sValue = normalize(sValue);
1075
+ }
1076
+ for (i = 0; i < aDayPeriodsVariants.length; i += 1) {
1077
+ aVariants = aDayPeriodsVariants[i];
1078
+ if (bAMPMAlternativeCase) {
1079
+ aVariants = aVariants.map(normalize);
1080
+ }
1081
+ oEntry = oParseHelper.findEntry(sValue, aVariants, oFormat.oLocaleData.sCLDRLocaleId);
1082
+ if (oEntry.index !== -1) {
1083
+ return {
1084
+ pm: oEntry.index === 1,
1085
+ length: bAMPMAlternativeCase ? aMatch[0].length : oEntry.length
1086
+ };
1087
+ }
1088
+ }
1089
+ return { valid: false };
1090
+ }
1091
+ },
1092
+ 'B': {
1093
+ name: 'flexibleDayPeriod',
1094
+ format: function (oField, oDate, bUTC, oFormat) {
1095
+ var bContainsHour = oFormat.aFormatArray.some(function (oFormatElement) {
1096
+ return 'hHKk'.includes(oFormatElement.symbol);
1097
+ }), sFlexibleDayPeriod = oFormat.oLocaleData.getFlexibleDayPeriodOfTime(oDate.getUTCHours(), oDate.getUTCMinutes());
1098
+ if (bContainsHour) {
1099
+ if (oField.digits <= 3) {
1100
+ return oFormat.oFlexibleDayPeriodsAbbrev[sFlexibleDayPeriod];
1101
+ }
1102
+ if (oField.digits === 4) {
1103
+ return oFormat.oFlexibleDayPeriodsWide[sFlexibleDayPeriod];
1104
+ }
1105
+ return oFormat.oFlexibleDayPeriodsNarrow[sFlexibleDayPeriod];
1106
+ }
1107
+ if (oField.digits <= 3) {
1108
+ return oFormat.oFlexibleDayPeriodsAbbrevSt[sFlexibleDayPeriod];
1109
+ }
1110
+ if (oField.digits === 4) {
1111
+ return oFormat.oFlexibleDayPeriodsWideSt[sFlexibleDayPeriod];
1112
+ }
1113
+ return oFormat.oFlexibleDayPeriodsNarrowSt[sFlexibleDayPeriod];
1038
1114
  },
1039
1115
  parse: function (sValue, oPart, oFormat, oConfig) {
1040
- var bPM;
1041
- var iLength;
1042
- var sAM = oFormat.aDayPeriods[0], sPM = oFormat.aDayPeriods[1];
1043
- var rAMPM = /[aApP](?:\.)?[\x20\xA0]?[mM](?:\.)?/;
1044
- var aMatch = sValue.match(rAMPM);
1045
- var bVariant = aMatch && aMatch.index === 0;
1046
- if (bVariant) {
1047
- sValue = aMatch[0];
1048
- sAM = sAM.replace(/[\x20\xA0]/g, '');
1049
- sPM = sPM.replace(/[\x20\xA0]/g, '');
1050
- sValue = sValue.replace(/[\x20\xA0]/g, '');
1051
- sAM = sAM.replace(/\./g, '').toLowerCase();
1052
- sPM = sPM.replace(/\./g, '').toLowerCase();
1053
- sValue = sValue.replace(/\./g, '').toLowerCase();
1054
- }
1055
- if (sValue.indexOf(sAM) === 0) {
1056
- bPM = false;
1057
- iLength = bVariant ? aMatch[0].length : sAM.length;
1058
- } else if (sValue.indexOf(sPM) === 0) {
1059
- bPM = true;
1060
- iLength = bVariant ? aMatch[0].length : sPM.length;
1116
+ var i, oFound, oVariant, bContainsHour = oFormat.aFormatArray.some(function (oFormatElement) {
1117
+ return 'hHKk'.includes(oFormatElement.symbol);
1118
+ }), aFlexibleDayPeriodVariants = [
1119
+ oFormat.oFlexibleDayPeriodsWide,
1120
+ oFormat.oFlexibleDayPeriodsAbbrev,
1121
+ oFormat.oFlexibleDayPeriodsNarrow
1122
+ ];
1123
+ if (bContainsHour) {
1124
+ for (i = 0; i < aFlexibleDayPeriodVariants.length; i++) {
1125
+ oVariant = aFlexibleDayPeriodVariants[i];
1126
+ oFound = oParseHelper.findEntry(sValue, Object.values(oVariant), oFormat.oLocaleData.sCLDRLocaleId);
1127
+ if (oFound.index !== -1) {
1128
+ return {
1129
+ flexDayPeriod: Object.keys(oVariant)[oFound.index],
1130
+ length: oFound.length
1131
+ };
1132
+ }
1133
+ }
1061
1134
  }
1062
- return {
1063
- pm: bPM,
1064
- length: iLength
1065
- };
1135
+ return { valid: false };
1066
1136
  }
1067
1137
  },
1068
1138
  'H': {
@@ -1338,7 +1408,7 @@ DateFormat.prototype.oSymbols = {
1338
1408
  name: 'timezoneID',
1339
1409
  format: function (oField, oDate, bUTC, oFormat, sTimezone) {
1340
1410
  if (!bUTC && oField.digits === 2) {
1341
- return sTimezone;
1411
+ return oFormat.oLocaleData.getTimezoneTranslations()[sTimezone] || sTimezone;
1342
1412
  }
1343
1413
  return '';
1344
1414
  },
@@ -1348,18 +1418,27 @@ DateFormat.prototype.oSymbols = {
1348
1418
  length: 0
1349
1419
  };
1350
1420
  if (oPart.digits === 2) {
1351
- if (sValue === sTimezone) {
1352
- oTimezoneParsed.timezone = sTimezone;
1353
- oTimezoneParsed.length = sTimezone.length;
1354
- return oTimezoneParsed;
1421
+ var mTimezoneTranslations = oFormat.oLocaleData.getTimezoneTranslations();
1422
+ if (sValue === mTimezoneTranslations[sTimezone]) {
1423
+ return {
1424
+ timezone: sTimezone,
1425
+ length: sValue.length
1426
+ };
1355
1427
  }
1356
- if (sValue) {
1357
- var rIanaTimezone = new RegExp('([A-Za-z_])+([/][A-Za-z_]+)+');
1358
- var aResult = rIanaTimezone.exec(sValue);
1359
- if (aResult && aResult[0] && TimezoneUtil.isValidTimezone(aResult[0])) {
1360
- oTimezoneParsed.timezone = aResult[0];
1361
- oTimezoneParsed.length = aResult[0].length;
1362
- return oTimezoneParsed;
1428
+ var aTimezoneTranslations = Object.values(mTimezoneTranslations);
1429
+ var oTimezoneResult = oParseHelper.findEntry(sValue, aTimezoneTranslations, oFormat.oLocaleData.sCLDRLocaleId);
1430
+ if (oTimezoneResult.index !== -1) {
1431
+ return {
1432
+ timezone: Object.keys(mTimezoneTranslations)[oTimezoneResult.index],
1433
+ length: oTimezoneResult.length
1434
+ };
1435
+ }
1436
+ var sCurrentValue = '';
1437
+ for (var i = 0; i < sValue.length; i++) {
1438
+ sCurrentValue += sValue[i];
1439
+ if (TimezoneUtil.isValidTimezone(sCurrentValue)) {
1440
+ oTimezoneParsed.timezone = sCurrentValue;
1441
+ oTimezoneParsed.length = sCurrentValue.length;
1363
1442
  }
1364
1443
  }
1365
1444
  }
@@ -1383,7 +1462,7 @@ DateFormat.prototype._format = function (oJSDate, bUTC, sTimezone) {
1383
1462
  aBuffer.push(this.oSymbols[sSymbol].format(oPart, oDate, bUTC, this, sTimezone));
1384
1463
  }
1385
1464
  sResult = aBuffer.join('');
1386
- if (Core.getConfiguration().getOriginInfo()) {
1465
+ if (Configuration.getOriginInfo()) {
1387
1466
  sResult = new String(sResult);
1388
1467
  sResult.originInfo = {
1389
1468
  source: 'Common Locale Data Repository',
@@ -1409,7 +1488,7 @@ DateFormat.prototype.format = function (vJSDate, bUTC) {
1409
1488
  if (bUTC === undefined) {
1410
1489
  bUTC = this.oFormatOptions.UTC;
1411
1490
  }
1412
- sTimezone = sTimezone || Core.getConfiguration().getTimezone();
1491
+ sTimezone = sTimezone || Configuration.getTimezone();
1413
1492
  if (Array.isArray(vJSDate)) {
1414
1493
  if (!this.oFormatOptions.interval) {
1415
1494
  Log.error('Non-interval DateFormat can\'t format more than one date instance.');
@@ -1441,7 +1520,7 @@ DateFormat.prototype.format = function (vJSDate, bUTC) {
1441
1520
  } else {
1442
1521
  if (!isValidDateObject(vJSDate)) {
1443
1522
  if (this.type === mDateFormatTypes.DATETIME_WITH_TIMEZONE && this.oFormatOptions.pattern.includes('VV')) {
1444
- return sTimezone;
1523
+ return this.oLocaleData.getTimezoneTranslations()[sTimezone] || sTimezone;
1445
1524
  }
1446
1525
  Log.error('The given date instance isn\'t valid.');
1447
1526
  return '';
@@ -1519,7 +1598,7 @@ DateFormat.prototype._getGreatestDiffField = function (aDates) {
1519
1598
  return null;
1520
1599
  };
1521
1600
  DateFormat.prototype._parse = function (sValue, aFormatArray, bUTC, bStrict, sTimezone) {
1522
- var iIndex = 0, oPart, sSubValue, oResult;
1601
+ var iIndex = 0, sFlexibleDayPeriod, oPart, bPM, sSubValue, oResult;
1523
1602
  var oDateValue = {
1524
1603
  valid: true,
1525
1604
  lastTimezonePatternSymbol: ''
@@ -1544,7 +1623,12 @@ DateFormat.prototype._parse = function (sValue, aFormatArray, bUTC, bStrict, sTi
1544
1623
  iIndex += oResult.length || 0;
1545
1624
  }
1546
1625
  oDateValue.index = iIndex;
1547
- if (oDateValue.pm) {
1626
+ bPM = oDateValue.pm;
1627
+ if (oDateValue.flexDayPeriod && oDateValue.hour * 60 + (oDateValue.minute || 0) < 720) {
1628
+ sFlexibleDayPeriod = this.oLocaleData.getFlexibleDayPeriodOfTime(oDateValue.hour + 12, oDateValue.minute || 0);
1629
+ bPM = oDateValue.flexDayPeriod === sFlexibleDayPeriod;
1630
+ }
1631
+ if (bPM) {
1548
1632
  oDateValue.hour += 12;
1549
1633
  }
1550
1634
  if (oDateValue.dayNumberOfWeek === undefined && oDateValue.dayOfWeek !== undefined) {
@@ -1601,13 +1685,24 @@ DateFormat.prototype._parseInterval = function (sValue, sCalendarType, bUTC, bSt
1601
1685
  }.bind(this));
1602
1686
  return aDateValues;
1603
1687
  };
1688
+ function getCalendarWeekParameter(oFormatOptions) {
1689
+ if (oFormatOptions.calendarWeekNumbering) {
1690
+ return oFormatOptions.calendarWeekNumbering;
1691
+ } else if (oFormatOptions.firstDayOfWeek !== undefined && oFormatOptions.minimalDaysInFirstWeek !== undefined) {
1692
+ return {
1693
+ firstDayOfWeek: oFormatOptions.firstDayOfWeek,
1694
+ minimalDaysInFirstWeek: oFormatOptions.minimalDaysInFirstWeek
1695
+ };
1696
+ }
1697
+ return undefined;
1698
+ }
1604
1699
  var convertToTimezone = function (oJSDate, sTimezone, bUTC) {
1605
1700
  if (!bUTC && isValidDateObject(oJSDate)) {
1606
1701
  return TimezoneUtil.convertToTimezone(oJSDate, sTimezone);
1607
1702
  }
1608
1703
  return oJSDate;
1609
1704
  };
1610
- var fnCreateDate = function (oDateValue, sCalendarType, bUTC, bStrict, sTimezone) {
1705
+ var fnCreateDate = function (oDateValue, sCalendarType, bUTC, bStrict, sTimezone, oFormatOptions, oLocale) {
1611
1706
  if (!oDateValue.valid) {
1612
1707
  return null;
1613
1708
  }
@@ -1628,7 +1723,7 @@ var fnCreateDate = function (oDateValue, sCalendarType, bUTC, bStrict, sTimezone
1628
1723
  oDate.setUTCWeek({
1629
1724
  year: oDateValue.weekYear || oDateValue.year,
1630
1725
  week: oDateValue.week
1631
- });
1726
+ }, oLocale, getCalendarWeekParameter(oFormatOptions));
1632
1727
  if (oDateValue.dayNumberOfWeek !== undefined) {
1633
1728
  oDate.setUTCDate(oDate.getUTCDate() + oDateValue.dayNumberOfWeek - 1);
1634
1729
  }
@@ -1643,7 +1738,7 @@ var fnCreateDate = function (oDateValue, sCalendarType, bUTC, bStrict, sTimezone
1643
1738
  }
1644
1739
  }
1645
1740
  if (oDateValue.tzDiff) {
1646
- oDate.setUTCSeconds((oDateValue.second || 0) + oDateValue.tzDiff);
1741
+ oDate.setUTCSeconds(oDate.getUTCSeconds() + oDateValue.tzDiff);
1647
1742
  }
1648
1743
  return oDate;
1649
1744
  };
@@ -1694,7 +1789,7 @@ DateFormat.prototype.parse = function (sValue, bUTC, bStrict) {
1694
1789
  sValue = sValue == null ? '' : String(sValue).trim();
1695
1790
  var oDateValue;
1696
1791
  var sCalendarType = this.oFormatOptions.calendarType;
1697
- sTimezone = sTimezone || Core.getConfiguration().getTimezone();
1792
+ sTimezone = sTimezone || Configuration.getTimezone();
1698
1793
  if (bStrict === undefined) {
1699
1794
  bStrict = this.oFormatOptions.strictParsing;
1700
1795
  }
@@ -1710,7 +1805,7 @@ DateFormat.prototype.parse = function (sValue, bUTC, bStrict) {
1710
1805
  if (oDateValue.index === 0 || oDateValue.index < sValue.length) {
1711
1806
  oDateValue.valid = false;
1712
1807
  }
1713
- oJSDate = fnCreateDate(oDateValue, sCalendarType, bUTC, bStrict, sTimezone);
1808
+ oJSDate = fnCreateDate(oDateValue, sCalendarType, bUTC, bStrict, sTimezone, this.oFormatOptions, this.oLocale);
1714
1809
  if (oJSDate) {
1715
1810
  if (this.type === mDateFormatTypes.DATETIME_WITH_TIMEZONE) {
1716
1811
  var bShowTimezone = this.oFormatOptions.showTimezone === undefined || this.oFormatOptions.showTimezone;
@@ -1738,8 +1833,8 @@ DateFormat.prototype.parse = function (sValue, bUTC, bStrict) {
1738
1833
  if (aDateValues && aDateValues.length == 2) {
1739
1834
  var oDateValue1 = mergeWithoutOverwrite(aDateValues[0], aDateValues[1]);
1740
1835
  var oDateValue2 = mergeWithoutOverwrite(aDateValues[1], aDateValues[0]);
1741
- oJSDate1 = fnCreateDate(oDateValue1, sCalendarType, bUTC, bStrict, sTimezone);
1742
- oJSDate2 = fnCreateDate(oDateValue2, sCalendarType, bUTC, bStrict, sTimezone);
1836
+ oJSDate1 = fnCreateDate(oDateValue1, sCalendarType, bUTC, bStrict, sTimezone, this.oFormatOptions, this.oLocale);
1837
+ oJSDate2 = fnCreateDate(oDateValue2, sCalendarType, bUTC, bStrict, sTimezone, this.oFormatOptions, this.oLocale);
1743
1838
  if (oJSDate1 && oJSDate2) {
1744
1839
  if (this.oFormatOptions.singleIntervalValue && oJSDate1.getTime() === oJSDate2.getTime()) {
1745
1840
  return [
@@ -2067,7 +2162,12 @@ var mRelativeDiffs = {
2067
2162
  }
2068
2163
  };
2069
2164
  DateFormat.prototype._adaptDayOfWeek = function (iDayOfWeek) {
2070
- var iFirstDayOfWeek = LocaleData.getInstance(Core.getConfiguration().getFormatSettings().getFormatLocale()).getFirstDayOfWeek();
2165
+ var vCalendarWeekParameter = getCalendarWeekParameter(this.oFormatOptions), iFirstDayOfWeek;
2166
+ if (typeof vCalendarWeekParameter === 'object') {
2167
+ iFirstDayOfWeek = vCalendarWeekParameter.firstDayOfWeek;
2168
+ } else {
2169
+ iFirstDayOfWeek = CalendarUtils.getWeekConfigurationValues(vCalendarWeekParameter, this.oLocale).firstDayOfWeek;
2170
+ }
2071
2171
  var iDayNumberOfWeek = iDayOfWeek - (iFirstDayOfWeek - 1);
2072
2172
  if (iDayNumberOfWeek <= 0) {
2073
2173
  iDayNumberOfWeek += 7;
@@ -1,5 +1,6 @@
1
1
  var TimezoneUtil = {};
2
2
  var sLocalTimezone = "";
3
+ var aSupportedTimezoneIDs;
3
4
  var oIntlDateTimeFormatCache = {
4
5
  _oCache: new Map(),
5
6
  _iCacheLimit: 10,
@@ -33,6 +34,16 @@ TimezoneUtil.isValidTimezone = function (sTimezone) {
33
34
  if (!sTimezone) {
34
35
  return false;
35
36
  }
37
+ if (Intl.supportedValuesOf) {
38
+ try {
39
+ aSupportedTimezoneIDs = aSupportedTimezoneIDs || Intl.supportedValuesOf("timeZone");
40
+ if (aSupportedTimezoneIDs.includes(sTimezone)) {
41
+ return true;
42
+ }
43
+ } catch (oError) {
44
+ aSupportedTimezoneIDs = [];
45
+ }
46
+ }
36
47
  try {
37
48
  oIntlDateTimeFormatCache.get(sTimezone);
38
49
  return true;
@@ -63,7 +74,7 @@ TimezoneUtil._getDateFromParts = function (oParts) {
63
74
  iUTCYear = iUTCYear * -1 + 1;
64
75
  }
65
76
  oDate.setUTCFullYear(iUTCYear, parseInt(oParts.month) - 1, parseInt(oParts.day));
66
- oDate.setUTCHours(parseInt(oParts.hour), parseInt(oParts.minute), parseInt(oParts.second), parseInt(oParts.fractionalSecond));
77
+ oDate.setUTCHours(parseInt(oParts.hour), parseInt(oParts.minute), parseInt(oParts.second), parseInt(oParts.fractionalSecond || 0));
67
78
  return oDate;
68
79
  };
69
80
  TimezoneUtil.calculateOffset = function (oDate, sTimezoneSource) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-localization",
3
- "version": "1.7.4",
3
+ "version": "1.7.5",
4
4
  "description": "Localization for UI5 Web Components",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -27,13 +27,13 @@
27
27
  "prepublishOnly": "npm run clean && npm run build"
28
28
  },
29
29
  "devDependencies": {
30
- "@openui5/sap.ui.core": "1.101.0",
31
- "@ui5/webcomponents-tools": "1.7.4",
32
- "chromedriver": "104.0.0",
30
+ "@openui5/sap.ui.core": "1.109.0",
31
+ "@ui5/webcomponents-tools": "1.7.5",
32
+ "chromedriver": "107.0.3",
33
33
  "mkdirp": "^1.0.4",
34
34
  "resolve": "^1.20.0"
35
35
  },
36
36
  "dependencies": {
37
- "@ui5/webcomponents-base": "1.7.4"
37
+ "@ui5/webcomponents-base": "1.7.5"
38
38
  }
39
39
  }
@@ -0,0 +1,21 @@
1
+ import { getLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
2
+ import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
3
+ import getDesigntimePropertyAsArray from "@ui5/webcomponents-base/dist/util/getDesigntimePropertyAsArray.js";
4
+ import TimezoneUtil from "./format/TimezoneUtil.js";
5
+ import FormatSettings from "./FormatSettings.js";
6
+
7
+ const emptyFn = () => { };
8
+
9
+ /**
10
+ * OpenUI5 Configuration Shim
11
+ */
12
+ const Configuration = {
13
+ getLanguage,
14
+ getCalendarType,
15
+ getSupportedLanguages: () => getDesigntimePropertyAsArray("$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi,hr,hu,it,iw,ja,ko,lt,lv,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$"),
16
+ getOriginInfo: emptyFn,
17
+ getFormatSettings: () => FormatSettings,
18
+ getTimezone: () => TimezoneUtil.getLocalTimezone(),
19
+ };
20
+
21
+ export default Configuration;
@@ -1,33 +1,8 @@
1
- import { getLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
2
- import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
3
- import getDesigntimePropertyAsArray from "@ui5/webcomponents-base/dist/util/getDesigntimePropertyAsArray.js";
4
- import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
5
- import TimezoneUtil from "./format/TimezoneUtil.js";
1
+ import FormatSettings from "./FormatSettings.js";
2
+ import Configuration from "./Configuration.js";
6
3
 
7
4
  const emptyFn = () => {};
8
5
 
9
- /**
10
- * OpenUI5 FormatSettings shim
11
- */
12
- const FormatSettings = {
13
- getFormatLocale: getLocale,
14
- getLegacyDateFormat: emptyFn,
15
- getLegacyDateCalendarCustomizing: emptyFn,
16
- getCustomLocaleData: emptyFn,
17
- };
18
-
19
- /**
20
- * OpenUI5 Configuration Shim
21
- */
22
- const Configuration = {
23
- getLanguage,
24
- getCalendarType,
25
- getSupportedLanguages: () => getDesigntimePropertyAsArray("$core-i18n-locales:,ar,bg,ca,cs,da,de,el,en,es,et,fi,fr,hi,hr,hu,it,iw,ja,ko,lt,lv,nl,no,pl,pt,ro,ru,sh,sk,sl,sv,th,tr,uk,vi,zh_CN,zh_TW$"),
26
- getOriginInfo: emptyFn,
27
- getFormatSettings: () => FormatSettings,
28
- getTimezone: () => TimezoneUtil.getLocalTimezone(),
29
- };
30
-
31
6
  /**
32
7
  * OpenUI5 Core shim
33
8
  */
@@ -0,0 +1,15 @@
1
+ import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
2
+
3
+ const emptyFn = () => {};
4
+
5
+ /**
6
+ * OpenUI5 FormatSettings shim
7
+ */
8
+ const FormatSettings = {
9
+ getFormatLocale: getLocale,
10
+ getLegacyDateFormat: emptyFn,
11
+ getLegacyDateCalendarCustomizing: emptyFn,
12
+ getCustomLocaleData: emptyFn,
13
+ };
14
+
15
+ export default FormatSettings;
package/used-modules.txt CHANGED
@@ -17,6 +17,8 @@ sap/ui/core/CalendarType.js
17
17
  sap/ui/core/Locale.js
18
18
  sap/ui/core/LocaleData.js
19
19
  sap/ui/core/date/Buddhist.js
20
+ sap/ui/core/date/CalendarUtils.js
21
+ sap/ui/core/date/CalendarWeekNumbering.js
20
22
  sap/ui/core/date/Gregorian.js
21
23
  sap/ui/core/date/Islamic.js
22
24
  sap/ui/core/date/Japanese.js
package/global.d.ts DELETED
@@ -1,105 +0,0 @@
1
- // eslint-disable-next-line
2
- import "@ui5/webcomponents-base/global";
3
- import LocaleData from "sap/ui/core/LocaleData";
4
-
5
- export {};
6
-
7
- declare global {
8
-
9
- module "*./sap/ui/core/LocaleData.js" {
10
- const content: LocaleData;
11
- export default content;
12
- }
13
-
14
-
15
- // sap/ui/core/format/DateFormat.js
16
- // type DateFormatOptions = {
17
- // calendarType: string
18
- // strictParsing?: boolean,
19
- // pattern?: string,
20
- // style?: string,
21
- // }
22
-
23
- // type DateFormatInstance = {
24
- // format: (JSDate: Date, bUTC: boolean) => string,
25
- // parse: (value: string, bUTC: boolean, bStrict: boolean) => Date | Array<Date | null | undefined> | null,
26
- // }
27
-
28
- // type DateFormat = {
29
- // getDateInstance: (options: DateFormatOptions) => DateFormatInstance,
30
- // getInstance: (options: DateFormatOptions) => DateFormatInstance,
31
- // }
32
-
33
- // module "*./sap/ui/core/format/DateFormat.js" {
34
- // const content: DateFormat;
35
- // export default content;
36
- // }
37
-
38
- // sap/ui/core/LocaleData.js
39
- // type Locale = {
40
- // getScript: () => string,
41
- // getRegion: () => string,
42
- // getLanguage: () => string,
43
- // }
44
-
45
- // type LocaleDataInstance = {
46
- // getPreferredCalendarType: () => string,
47
- // }
48
-
49
- // type LocaleData = {
50
- // getInstance: (locale: Locale) => LocaleDataInstance,
51
- // }
52
-
53
-
54
-
55
- // sap/ui/core/date/UniversalDate.js
56
- // type UniversalDate = {
57
- // new (time: number): UniversalDate;
58
- // oDate: Date,
59
- // sCalendarType: string,
60
- // getInstance: (oDate: Date, sCalendarType: string) => UniversalDate,
61
- // getDate: () => number,
62
- // getMonth: () => number,
63
- // getFullYear: () => number,
64
- // getYear: () => number,
65
- // getDay: () => number,
66
- // getHours: () => number,
67
- // getMinutes: () => number,
68
- // getSeconds: () => number,
69
- // getMilliseconds: () => number,
70
- // getUTCDate: () => number,
71
- // getUTCMonth: () => number,
72
- // getUTCFullYear: () => number,
73
- // getUTCDay: () => number,
74
- // getUTCHours: () => number,
75
- // getUTCMinutes: () => number,
76
- // getUTCSeconds: () => number,
77
- // getUTCMilliseconds: () => number,
78
- // getTime: () => number,
79
- // valueOf: () => number,
80
- // getTimezoneOffset: () => number,
81
- // toString: () => string,
82
- // toDateString: () => string,
83
- // setDate: (dayValue: number) => number,
84
- // setFullYear: (yearValue: number, monthValue?: number, dateValue?: number) => number,
85
- // setYear: (yearValue: number) => number,
86
- // setMonth: (monthValue: number, dayValue?: number) => number,
87
- // setHours: (hoursValue: number, minutesValue?: number, secondsValue?: number, msValue?: number) => number,
88
- // setMinutes: (minutesValue: number, secondsValue?: number, msValue?: number) => number,
89
- // setSeconds: (secondsValue: number, msValue?: number) => number,
90
- // setMilliseconds: (setMilliseconds: number) => number,
91
- // setUTCDate:(dayValue: number) => number,
92
- // setUTCFullYear: (yearValue: number, monthValue?: number, dayValue?: number) => number,
93
- // setUTCMonth: (monthValue: number, dayValue?: number) => number,
94
- // setUTCHours: (hoursValue: number, minutesValue?: number, secondsValue?: number, msValue?: number) => number,
95
- // setUTCMinutes: (minutesValue: number, secondsValue?: number, msValue?: number) => number,
96
- // setUTCSeconds: (secondsValue: number, msValue?: number) => number,
97
- // setUTCMilliseconds: (setMilliseconds: number) => number,
98
- // }
99
-
100
- // module "*../sap/ui/core/date/UniversalDate.js" {
101
- // const content: UniversalDate;
102
- // export default content;
103
- // }
104
-
105
- }
package/src/DateFormat.ts DELETED
@@ -1,3 +0,0 @@
1
- import DateFormat from "./sap/ui/core/format/DateFormat.js";
2
-
3
- export default DateFormat;
package/src/LocaleData.ts DELETED
@@ -1,8 +0,0 @@
1
- import LocaleDataOpenUI5 from "./sap/ui/core/LocaleData.js";
2
- import type Locale from "sap/ui/core/Locale";
3
-
4
- type LocaleData = typeof LocaleDataOpenUI5 & {
5
- getInstance: (locale: Locale) => LocaleData,
6
- }
7
-
8
- export default LocaleData;