@openui5/sap.ui.unified 1.111.2 → 1.112.2

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 (97) hide show
  1. package/package.json +2 -2
  2. package/src/sap/ui/unified/.library +1 -1
  3. package/src/sap/ui/unified/Calendar.js +29 -21
  4. package/src/sap/ui/unified/CalendarAppointment.js +34 -48
  5. package/src/sap/ui/unified/CalendarDateInterval.js +10 -7
  6. package/src/sap/ui/unified/CalendarLegend.js +1 -1
  7. package/src/sap/ui/unified/CalendarLegendItem.js +1 -1
  8. package/src/sap/ui/unified/CalendarMonthInterval.js +1 -1
  9. package/src/sap/ui/unified/CalendarOneMonthInterval.js +1 -1
  10. package/src/sap/ui/unified/CalendarRow.js +38 -57
  11. package/src/sap/ui/unified/CalendarRowRenderer.js +16 -12
  12. package/src/sap/ui/unified/CalendarTimeInterval.js +8 -6
  13. package/src/sap/ui/unified/CalendarWeekInterval.js +1 -1
  14. package/src/sap/ui/unified/ColorPicker.js +1 -1
  15. package/src/sap/ui/unified/ColorPickerPopover.js +1 -1
  16. package/src/sap/ui/unified/ContentSwitcher.js +1 -1
  17. package/src/sap/ui/unified/Currency.js +1 -1
  18. package/src/sap/ui/unified/CurrencyRenderer.js +1 -1
  19. package/src/sap/ui/unified/DateRange.js +1 -1
  20. package/src/sap/ui/unified/DateTypeRange.js +1 -1
  21. package/src/sap/ui/unified/FileUploader.js +29 -1
  22. package/src/sap/ui/unified/FileUploaderParameter.js +1 -1
  23. package/src/sap/ui/unified/FileUploaderXHRSettings.js +1 -1
  24. package/src/sap/ui/unified/Menu.js +1 -1
  25. package/src/sap/ui/unified/MenuItem.js +1 -1
  26. package/src/sap/ui/unified/MenuItemBase.js +1 -1
  27. package/src/sap/ui/unified/MenuRenderer.js +1 -1
  28. package/src/sap/ui/unified/MenuTextFieldItem.js +15 -14
  29. package/src/sap/ui/unified/Shell.js +1 -1
  30. package/src/sap/ui/unified/ShellHeadItem.js +1 -1
  31. package/src/sap/ui/unified/ShellHeadUserItem.js +1 -1
  32. package/src/sap/ui/unified/ShellLayout.js +1 -1
  33. package/src/sap/ui/unified/ShellOverlay.js +1 -1
  34. package/src/sap/ui/unified/SplitContainer.js +1 -1
  35. package/src/sap/ui/unified/calendar/CalendarUtils.js +13 -12
  36. package/src/sap/ui/unified/calendar/DatesRow.js +1 -1
  37. package/src/sap/ui/unified/calendar/DatesRowRenderer.js +8 -1
  38. package/src/sap/ui/unified/calendar/Header.js +1 -1
  39. package/src/sap/ui/unified/calendar/IndexPicker.js +1 -1
  40. package/src/sap/ui/unified/calendar/Month.js +1 -1
  41. package/src/sap/ui/unified/calendar/MonthPicker.js +1 -1
  42. package/src/sap/ui/unified/calendar/MonthRenderer.js +4 -0
  43. package/src/sap/ui/unified/calendar/MonthsRow.js +8 -7
  44. package/src/sap/ui/unified/calendar/OneMonthDatesRow.js +1 -1
  45. package/src/sap/ui/unified/calendar/TimesRow.js +6 -4
  46. package/src/sap/ui/unified/calendar/TimesRowRenderer.js +21 -23
  47. package/src/sap/ui/unified/calendar/YearPicker.js +1 -1
  48. package/src/sap/ui/unified/calendar/YearRangePicker.js +1 -1
  49. package/src/sap/ui/unified/library.js +2 -2
  50. package/src/sap/ui/unified/messagebundle.properties +3 -0
  51. package/src/sap/ui/unified/messagebundle_ar.properties +2 -0
  52. package/src/sap/ui/unified/messagebundle_bg.properties +2 -0
  53. package/src/sap/ui/unified/messagebundle_ca.properties +2 -0
  54. package/src/sap/ui/unified/messagebundle_cs.properties +2 -0
  55. package/src/sap/ui/unified/messagebundle_cy.properties +2 -0
  56. package/src/sap/ui/unified/messagebundle_da.properties +2 -0
  57. package/src/sap/ui/unified/messagebundle_de.properties +2 -0
  58. package/src/sap/ui/unified/messagebundle_el.properties +2 -0
  59. package/src/sap/ui/unified/messagebundle_en.properties +2 -0
  60. package/src/sap/ui/unified/messagebundle_en_GB.properties +2 -0
  61. package/src/sap/ui/unified/messagebundle_en_US_sappsd.properties +2 -0
  62. package/src/sap/ui/unified/messagebundle_en_US_saptrc.properties +2 -0
  63. package/src/sap/ui/unified/messagebundle_es.properties +2 -0
  64. package/src/sap/ui/unified/messagebundle_es_MX.properties +2 -0
  65. package/src/sap/ui/unified/messagebundle_et.properties +2 -0
  66. package/src/sap/ui/unified/messagebundle_fi.properties +2 -0
  67. package/src/sap/ui/unified/messagebundle_fr.properties +2 -0
  68. package/src/sap/ui/unified/messagebundle_fr_CA.properties +2 -0
  69. package/src/sap/ui/unified/messagebundle_hi.properties +2 -0
  70. package/src/sap/ui/unified/messagebundle_hr.properties +2 -0
  71. package/src/sap/ui/unified/messagebundle_hu.properties +2 -0
  72. package/src/sap/ui/unified/messagebundle_id.properties +2 -0
  73. package/src/sap/ui/unified/messagebundle_it.properties +2 -0
  74. package/src/sap/ui/unified/messagebundle_iw.properties +2 -0
  75. package/src/sap/ui/unified/messagebundle_ja.properties +4 -2
  76. package/src/sap/ui/unified/messagebundle_kk.properties +2 -0
  77. package/src/sap/ui/unified/messagebundle_ko.properties +2 -0
  78. package/src/sap/ui/unified/messagebundle_lt.properties +2 -0
  79. package/src/sap/ui/unified/messagebundle_lv.properties +2 -0
  80. package/src/sap/ui/unified/messagebundle_ms.properties +2 -0
  81. package/src/sap/ui/unified/messagebundle_nl.properties +2 -0
  82. package/src/sap/ui/unified/messagebundle_no.properties +2 -0
  83. package/src/sap/ui/unified/messagebundle_pl.properties +2 -0
  84. package/src/sap/ui/unified/messagebundle_pt.properties +2 -0
  85. package/src/sap/ui/unified/messagebundle_pt_PT.properties +2 -0
  86. package/src/sap/ui/unified/messagebundle_ro.properties +6 -4
  87. package/src/sap/ui/unified/messagebundle_ru.properties +2 -0
  88. package/src/sap/ui/unified/messagebundle_sh.properties +2 -0
  89. package/src/sap/ui/unified/messagebundle_sk.properties +2 -0
  90. package/src/sap/ui/unified/messagebundle_sl.properties +2 -0
  91. package/src/sap/ui/unified/messagebundle_sv.properties +2 -0
  92. package/src/sap/ui/unified/messagebundle_th.properties +2 -0
  93. package/src/sap/ui/unified/messagebundle_tr.properties +2 -0
  94. package/src/sap/ui/unified/messagebundle_uk.properties +2 -0
  95. package/src/sap/ui/unified/messagebundle_vi.properties +2 -0
  96. package/src/sap/ui/unified/messagebundle_zh_CN.properties +2 -0
  97. package/src/sap/ui/unified/messagebundle_zh_TW.properties +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.unified",
3
- "version": "1.111.2",
3
+ "version": "1.112.2",
4
4
  "description": "OpenUI5 UI Library sap.ui.unified",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,6 +14,6 @@
14
14
  "url": "https://github.com/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.ui.core": "1.111.2"
17
+ "@openui5/sap.ui.core": "1.112.2"
18
18
  }
19
19
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.111.2</version>
9
+ <version>1.112.2</version>
10
10
 
11
11
  <documentation>Unified controls intended for both, mobile and desktop scenarios</documentation>
12
12
 
@@ -76,7 +76,7 @@ sap.ui.define([
76
76
  * Basic Calendar.
77
77
  * This calendar is used for DatePickers
78
78
  * @extends sap.ui.core.Control
79
- * @version 1.111.2
79
+ * @version 1.112.2
80
80
  *
81
81
  * @constructor
82
82
  * @public
@@ -569,6 +569,7 @@ sap.ui.define([
569
569
  this._updateHeader(oCalDate);
570
570
 
571
571
  this._updateHeadersButtons();
572
+ this._adjustYearRangeDisplay();
572
573
 
573
574
  this._updateLegendParent();
574
575
  if (this.getInitialFocusedDate()) {
@@ -864,7 +865,6 @@ sap.ui.define([
864
865
  i;
865
866
 
866
867
  this.setProperty("primaryCalendarType", sCalendarType);
867
- this._adjustYearRangeDisplay();
868
868
 
869
869
  this._oYearFormat = DateFormat.getDateInstance({format: "y", calendarType: sCalendarType});
870
870
 
@@ -2142,15 +2142,19 @@ sap.ui.define([
2142
2142
  oMonthPicker = this._getMonthPicker(),
2143
2143
  iFocusedMonth = oMonthPicker.getProperty("_focusedMonth"),
2144
2144
  iMonth = (iFocusedMonth || iFocusedMonth === 0) ? iFocusedMonth : oMonthPicker.getMonth(),
2145
- oSecondDate = oMonthPicker._iYear ?
2146
- new CalendarDate(oMonthPicker._iYear, iMonth - 1, 1) :
2145
+ oSecondCalDate = CalendarDate.fromLocalJSDate(UI5Date.getInstance(), this.getPrimaryCalendarType());
2146
+
2147
+ oSecondCalDate = oMonthPicker._iYear ?
2148
+ oSecondCalDate
2149
+ .setYear(oMonthPicker._iYear)
2150
+ .setMonth(iMonth - 1, 1) :
2147
2151
  new CalendarDate(this._getFocusedDate().getYear(), iMonth - 1, 1);
2148
2152
 
2149
2153
  if (_getMonths.call(this) > 1) {
2150
- if (this._bActionTriggeredFromSecondHeader && oSecondDate.getYear() >= CalendarUtils._minDate().getYear()) {
2151
- oFocusedDate.setYear(oSecondDate.getYear());
2152
- iMonth = oSecondDate.getMonth();
2153
- } else if (oFocusedDate.getYear() === CalendarUtils._maxDate().getYear() && iMonth === 11) {
2154
+ if (this._bActionTriggeredFromSecondHeader && oSecondCalDate.getYear() >= CalendarUtils._minDate(this.getPrimaryCalendarType()).getYear()) {
2155
+ oFocusedDate.setYear(oSecondCalDate.getYear());
2156
+ iMonth = oSecondCalDate.getMonth();
2157
+ } else if (oFocusedDate.getYear() === CalendarUtils._maxDate(this.getPrimaryCalendarType()).getYear() && iMonth === 11) {
2154
2158
  iMonth -= 1;
2155
2159
  }
2156
2160
  }
@@ -2489,21 +2493,25 @@ sap.ui.define([
2489
2493
  };
2490
2494
 
2491
2495
  Calendar.prototype._adjustYearRangeDisplay = function() {
2492
- var oYearRangePicker = this.getAggregation("yearRangePicker");
2496
+ var oYearRangePicker = this.getAggregation("yearRangePicker"),
2497
+ sLang = sap.ui.getCore().getConfiguration().getLanguage().toLocaleLowerCase(),
2498
+ sPrimaryCalendarType = this.getPrimaryCalendarType();
2493
2499
 
2494
2500
  if (!this._getSucessorsPickerPopup()) {
2495
- switch (this.getPrimaryCalendarType()) {
2496
- case CalendarType.Japanese:
2497
- oYearRangePicker.setColumns(1);
2498
- oYearRangePicker.setYears(4);
2499
- break;
2500
- case CalendarType.Gregorian:
2501
- oYearRangePicker.setColumns(3);
2502
- oYearRangePicker.setYears(9);
2503
- break;
2504
- default:
2505
- oYearRangePicker.setColumns(2);
2506
- oYearRangePicker.setYears(8);
2501
+ // An evaluation about the count of year cells that could fit in the sap.ui.unified.calendar.YearRangePicker
2502
+ // has to be made based not only on the sap.ui.core.CalendarType, but also on the language configuration.
2503
+ // Based on those two criteria a couple of groups with different year cells count would be indicated and we
2504
+ // could cover those scenarios with visual tests afterwards. Currently only the scenario with korean language
2505
+ // is covered.
2506
+ if (sPrimaryCalendarType == CalendarType.Japanese) {
2507
+ oYearRangePicker.setColumns(1);
2508
+ oYearRangePicker.setYears(4);
2509
+ } else if (sLang == "ko" || sLang == "ko-kr" || sPrimaryCalendarType != CalendarType.Gregorian) {
2510
+ oYearRangePicker.setColumns(2);
2511
+ oYearRangePicker.setYears(8);
2512
+ } else if (sPrimaryCalendarType == CalendarType.Gregorian) {
2513
+ oYearRangePicker.setColumns(3);
2514
+ oYearRangePicker.setYears(9);
2507
2515
  }
2508
2516
  }
2509
2517
  };
@@ -5,8 +5,30 @@
5
5
  */
6
6
 
7
7
  // Provides control sap.ui.unified.CalendarAppointment.
8
- sap.ui.define(['./DateTypeRange', 'sap/ui/core/format/DateFormat', 'sap/ui/core/format/NumberFormat', 'sap/ui/core/format/TimezoneUtil', 'sap/ui/core/Core', './calendar/CalendarUtils', './library', "sap/base/Log", "sap/ui/core/Configuration"],
9
- function(DateTypeRange, DateFormat, NumberFormat, TimezoneUtil, Core, CalendarUtils, library, Log, Configuration) {
8
+ sap.ui.define([
9
+ './DateTypeRange',
10
+ 'sap/ui/core/format/DateFormat',
11
+ 'sap/ui/core/format/NumberFormat',
12
+ 'sap/ui/core/format/TimezoneUtil',
13
+ 'sap/ui/core/Core',
14
+ './calendar/CalendarUtils',
15
+ './library',
16
+ "sap/base/Log",
17
+ "sap/ui/core/Configuration",
18
+ "sap/ui/core/date/UI5Date"
19
+ ],
20
+ function(
21
+ DateTypeRange,
22
+ DateFormat,
23
+ NumberFormat,
24
+ TimezoneUtil,
25
+ Core,
26
+ CalendarUtils,
27
+ library,
28
+ Log,
29
+ Configuration,
30
+ UI5Date
31
+ ) {
10
32
  "use strict";
11
33
 
12
34
  /**
@@ -21,7 +43,7 @@ sap.ui.define(['./DateTypeRange', 'sap/ui/core/format/DateFormat', 'sap/ui/core/
21
43
  *
22
44
  * Applications could inherit from this element to add own fields.
23
45
  * @extends sap.ui.unified.DateTypeRange
24
- * @version 1.111.2
46
+ * @version 1.112.2
25
47
  *
26
48
  * @constructor
27
49
  * @public
@@ -124,12 +146,12 @@ sap.ui.define(['./DateTypeRange', 'sap/ui/core/format/DateFormat', 'sap/ui/core/
124
146
  * @private
125
147
  */
126
148
  CalendarAppointment.prototype._getDateRangeIntersectionText = function (oCurrentlyDisplayedDate) {
127
- var oStartDate = this._getStartDateWithTimezoneAdaptation(),
128
- oEndDate = this._getEndDateWithTimezoneAdaptation() ? this._getEndDateWithTimezoneAdaptation() : new Date(864000000000000), //in case of emergency call this number
149
+ var oStartDate = this.getStartDate(),
150
+ oEndDate = this.getEndDate() ? this.getEndDate() : UI5Date.getInstance(864000000000000), //in case of emergency call this number
129
151
  sFirstLineText,
130
152
  sSecondLineText,
131
- oCurrentDayStart = new Date(oCurrentlyDisplayedDate.getFullYear(), oCurrentlyDisplayedDate.getMonth(), oCurrentlyDisplayedDate.getDate(), 0, 0, 0),
132
- oNextDayStart = new Date(oCurrentDayStart.getFullYear(), oCurrentDayStart.getMonth(), oCurrentDayStart.getDate() + 1),
153
+ oCurrentDayStart = UI5Date.getInstance(oCurrentlyDisplayedDate.getFullYear(), oCurrentlyDisplayedDate.getMonth(), oCurrentlyDisplayedDate.getDate(), 0, 0, 0),
154
+ oNextDayStart = UI5Date.getInstance(oCurrentDayStart.getFullYear(), oCurrentDayStart.getMonth(), oCurrentDayStart.getDate() + 1),
133
155
  oTimeFormat = DateFormat.getTimeInstance({pattern: "HH:mm"}),
134
156
  oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.m"),
135
157
  oHourFormat = NumberFormat.getUnitInstance({
@@ -180,14 +202,14 @@ sap.ui.define(['./DateTypeRange', 'sap/ui/core/format/DateFormat', 'sap/ui/core/
180
202
  */
181
203
  CalendarAppointment._getComparer = function(oDate) {
182
204
  var ONE_DAY = 24 * 60 * 60 * 1000,
183
- iCurrentDayStartTime = new Date(oDate.getFullYear(), oDate.getMonth(), oDate.getDate(), 0, 0, 0).getTime(),
205
+ iCurrentDayStartTime = UI5Date.getInstance(oDate.getFullYear(), oDate.getMonth(), oDate.getDate(), 0, 0, 0).getTime(),
184
206
  iNextDayStart = iCurrentDayStartTime + ONE_DAY;
185
207
 
186
208
  return function(oAppInfo1, oAppInfo2) {
187
- var iStartDateTime1 = oAppInfo1.appointment._getStartDateWithTimezoneAdaptation().getTime(),
188
- iStartDateTime2 = oAppInfo2.appointment._getStartDateWithTimezoneAdaptation().getTime(),
189
- iEndDateTime1 = oAppInfo1.appointment._getEndDateWithTimezoneAdaptation() ? oAppInfo1.appointment._getEndDateWithTimezoneAdaptation().getTime() : 864000000000000, //this is max date in case of no max date
190
- iEndDateTime2 = oAppInfo2.appointment._getEndDateWithTimezoneAdaptation() ? oAppInfo2.appointment._getEndDateWithTimezoneAdaptation().getTime() : 864000000000000,
209
+ var iStartDateTime1 = oAppInfo1.appointment.getStartDate().getTime(),
210
+ iStartDateTime2 = oAppInfo2.appointment.getStartDate().getTime(),
211
+ iEndDateTime1 = oAppInfo1.appointment.getEndDate() ? oAppInfo1.appointment.getEndDate().getTime() : 864000000000000, //this is max date in case of no max date
212
+ iEndDateTime2 = oAppInfo2.appointment.getEndDate() ? oAppInfo2.appointment.getEndDate().getTime() : 864000000000000,
191
213
  bWholeDay1 = iStartDateTime1 <= iCurrentDayStartTime && iEndDateTime1 >= iNextDayStart,
192
214
  bWholeDay2 = iStartDateTime2 <= iCurrentDayStartTime && iEndDateTime2 >= iNextDayStart,
193
215
  iResult;
@@ -252,42 +274,6 @@ sap.ui.define(['./DateTypeRange', 'sap/ui/core/format/DateFormat', 'sap/ui/core/
252
274
  return oAppointmentParts.length > 0 ? oAppointmentParts[0] : null;
253
275
  };
254
276
 
255
- CalendarAppointment.prototype._getEndDateWithTimezoneAdaptation = function() {
256
- if (!this.getProperty("endDate")) {
257
- return null;
258
- }
259
-
260
- var oEndDate = this._convertToTimezone(this.getEndDate());
261
-
262
- return oEndDate;
263
- };
264
-
265
- CalendarAppointment.prototype._getStartDateWithTimezoneAdaptation = function() {
266
- if (!this.getProperty("startDate")) {
267
- return null;
268
- }
269
-
270
- var oStartDate = this._convertToTimezone(this.getStartDate());
271
-
272
- return oStartDate;
273
- };
274
-
275
- /**
276
- * Aligns a date to the timezone from the configuration.
277
- *
278
- * @returns {Object} <code>oNewDate</code> aligned to the configured timezone.
279
- * @private
280
- */
281
- CalendarAppointment.prototype._convertToTimezone = function(oDate) {
282
- var sConfigTimezone = Core.getConfiguration().getTimezone();
283
- var sLocalTimezone = TimezoneUtil.getLocalTimezone();
284
-
285
- var iConfigOffsetMillis = TimezoneUtil.calculateOffset(oDate, sConfigTimezone) * 1000;
286
- var iLocalOffsetMillis = TimezoneUtil.calculateOffset(oDate, sLocalTimezone) * 1000;
287
-
288
- return new Date(oDate.getTime() - iConfigOffsetMillis + iLocalOffsetMillis);
289
- };
290
-
291
277
  return CalendarAppointment;
292
278
 
293
279
  });
@@ -21,7 +21,9 @@ sap.ui.define([
21
21
  "sap/ui/core/CalendarType",
22
22
  "sap/ui/core/Core",
23
23
  "sap/base/Log",
24
- "./DateRange"
24
+ "./DateRange",
25
+ "sap/ui/core/date/UI5Date"
26
+
25
27
  ], function(
26
28
  CalendarUtils,
27
29
  Calendar,
@@ -38,7 +40,8 @@ sap.ui.define([
38
40
  CalendarType,
39
41
  Core,
40
42
  Log,
41
- DateRange
43
+ DateRange,
44
+ UI5Date
42
45
  ) {
43
46
  "use strict";
44
47
 
@@ -56,7 +59,7 @@ sap.ui.define([
56
59
  * @class
57
60
  * <code>CalendarDateInterval</code> only visualizes the dates in a one-line interval and allows the selection of a single day.
58
61
  * @extends sap.ui.unified.Calendar
59
- * @version 1.111.2
62
+ * @version 1.112.2
60
63
  *
61
64
  * @constructor
62
65
  * @public
@@ -321,7 +324,7 @@ sap.ui.define([
321
324
  sAriaLabel = oTexts.sAriaLabel,
322
325
  oHeader = this.getAggregation("header");
323
326
  var oLocaleData = this._getLocaleData();
324
- var oEndDate = CalendarDate.fromLocalJSDate(new Date(oDate.toLocalJSDate().getTime() + (this._getDays() - 1) * 24 * 60 * 60 * 1000), this.getPrimaryCalendarType());
327
+ var oEndDate = CalendarDate.fromLocalJSDate(UI5Date.getInstance(oDate.toLocalJSDate().getTime() + (this._getDays() - 1) * 24 * 60 * 60 * 1000), this.getPrimaryCalendarType());
325
328
  oEndDate.setDate(1); // always use the first of the month to have stable year in Japanese calendar
326
329
  var sDelimiter = oLocaleData.getIntervalPattern().replace("{0}", "").replace("{1}", "");
327
330
  var sEndYear = this._oYearFormat.format(oEndDate.toUTCJSDate(), true);
@@ -352,7 +355,7 @@ sap.ui.define([
352
355
  var oStartDate = this.getStartDate(),
353
356
  oCalPicker = this._getCalendar(),
354
357
  oSelectedRange = new DateRange(),
355
- oEndDate = new Date(oStartDate.getTime());
358
+ oEndDate = UI5Date.getInstance(oStartDate.getTime());
356
359
 
357
360
  oEndDate.setDate(oEndDate.getDate() + this._getDays() - 1);
358
361
  oSelectedRange.setStartDate(oStartDate);
@@ -432,13 +435,13 @@ sap.ui.define([
432
435
  var oMinDate = this.getMinDate();
433
436
  if (oMinDate && oStartDate.getTime() < oMinDate.getTime()) {
434
437
  Log.warning("startDate < minDate -> minDate as startDate set", this);
435
- oStartDate = new Date(oMinDate.getTime());
438
+ oStartDate = UI5Date.getInstance(oMinDate.getTime());
436
439
  }
437
440
 
438
441
  var oMaxDate = this.getMaxDate();
439
442
  if (oMaxDate && oStartDate.getTime() > oMaxDate.getTime()) {
440
443
  Log.warning("startDate > maxDate -> maxDate as startDate set", this);
441
- oStartDate = new Date(oMaxDate.getTime());
444
+ oStartDate = UI5Date.getInstance(oMaxDate.getTime());
442
445
  }
443
446
 
444
447
  this.setProperty("startDate", oStartDate, true);
@@ -56,7 +56,7 @@ sap.ui.define([
56
56
  * @extends sap.ui.core.Control
57
57
  *
58
58
  * @author SAP SE
59
- * @version 1.111.2
59
+ * @version 1.112.2
60
60
  *
61
61
  * @constructor
62
62
  * @public
@@ -21,7 +21,7 @@ sap.ui.define(['sap/ui/core/Element', './library'],
21
21
  * @class
22
22
  * Item to be displayed in a CalendarLegend.
23
23
  * @extends sap.ui.core.Element
24
- * @version 1.111.2
24
+ * @version 1.112.2
25
25
  *
26
26
  * @constructor
27
27
  * @public
@@ -65,7 +65,7 @@ sap.ui.define([
65
65
  * <b>Note:</b> JavaScript Date objects are used to set and return the months, mark them as selected or as a special type.
66
66
  * But the date part of the Date object is not used. If a Date object is returned the date will be set to the 1st of the corresponding month.
67
67
  * @extends sap.ui.core.Control
68
- * @version 1.111.2
68
+ * @version 1.112.2
69
69
  *
70
70
  * @constructor
71
71
  * @public
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  * Navigation via year picker switches to the corresponding year and the same month as before the navigation.
58
58
  *
59
59
  * @extends sap.ui.unified.CalendarDateInterval
60
- * @version 1.111.2
60
+ * @version 1.112.2
61
61
  *
62
62
  * @constructor
63
63
  * @private
@@ -24,7 +24,8 @@ sap.ui.define([
24
24
  "sap/ui/unified/CalendarAppointment",
25
25
  'sap/ui/core/InvisibleMessage',
26
26
  'sap/ui/core/library',
27
- 'sap/ui/core/Configuration'
27
+ 'sap/ui/core/Configuration',
28
+ "sap/ui/core/date/UI5Date"
28
29
  ], function(
29
30
  Control,
30
31
  Device,
@@ -44,7 +45,8 @@ sap.ui.define([
44
45
  CalendarAppointment,
45
46
  InvisibleMessage,
46
47
  corelibrary,
47
- Configuration
48
+ Configuration,
49
+ UI5Date
48
50
  ) {
49
51
  "use strict";
50
52
 
@@ -86,7 +88,7 @@ sap.ui.define([
86
88
  * @class
87
89
  * A calendar row with a header and appointments. The Appointments will be placed in the defined interval.
88
90
  * @extends sap.ui.core.Control
89
- * @version 1.111.2
91
+ * @version 1.112.2
90
92
  *
91
93
  * @constructor
92
94
  * @public
@@ -369,7 +371,7 @@ sap.ui.define([
369
371
  this._aVisibleAppointments = [];
370
372
  this._aVisibleIntervalHeaders = [];
371
373
 
372
- this.setStartDate(new Date());
374
+ this.setStartDate(UI5Date.getInstance());
373
375
 
374
376
  this._resizeProxy = jQuery.proxy(this.handleResize, this);
375
377
 
@@ -472,7 +474,7 @@ sap.ui.define([
472
474
 
473
475
  if (!oStartDate) {
474
476
  //set default value
475
- oStartDate = new Date();
477
+ oStartDate = UI5Date.getInstance();
476
478
  }
477
479
 
478
480
  CalendarUtils._checkJSDateObject(oStartDate);
@@ -615,19 +617,19 @@ sap.ui.define([
615
617
  CalendarRow.prototype.onsapselect = function(oEvent){
616
618
  // focused appointment must be selected
617
619
  var aVisibleAppointments = this._getVisibleAppointments(),
618
- sBundleKey;
620
+ oAppointment, sBundleKey;
619
621
 
620
622
 
621
623
  for (var i = 0; i < aVisibleAppointments.length; i++) {
622
- var oAppointment = aVisibleAppointments[i].appointment;
624
+ oAppointment = aVisibleAppointments[i].appointment;
623
625
  if (containsOrEquals(oAppointment.getDomRef(), oEvent.target)) {
624
626
  var bRemoveOldSelection = !(this.getMultipleAppointmentsSelection() || oEvent.ctrlKey || oEvent.metaKey);
625
627
  _selectAppointment.call(this, oAppointment, bRemoveOldSelection);
626
- sBundleKey = oAppointment.getSelected() ? "APPOINTMENT_SELECTED" : "APPOINTMENT_UNSELECTED";
627
628
  break;
628
629
  }
629
630
  }
630
631
 
632
+ sBundleKey = oAppointment.getSelected() ? "APPOINTMENT_SELECTED" : "APPOINTMENT_UNSELECTED";
631
633
  this._oInvisibleMessage.announce(this._oRb.getText(sBundleKey), InvisibleMessageMode.Polite);
632
634
 
633
635
  //To prevent bubbling into PlanningCalendar.
@@ -711,9 +713,8 @@ sap.ui.define([
711
713
  * @public
712
714
  */
713
715
  CalendarRow.prototype.updateCurrentTimeVisualization = function() {
714
-
715
716
  var $Now = this.$("Now");
716
- var oNowDate = CalendarUtils._createUniversalUTCDate(new Date(), undefined, true);
717
+ var oNowDate = CalendarUtils._createUniversalUTCDate(UI5Date.getInstance(), undefined, true);
717
718
  var iIntervals = this.getIntervals();
718
719
  var sIntervalType = this.getIntervalType();
719
720
  var oStartDate = this._getStartDate();
@@ -723,8 +724,6 @@ sap.ui.define([
723
724
 
724
725
  this._sUpdateCurrentTime = undefined;
725
726
 
726
- oNowDate = this._convertToTimezone(oNowDate);
727
-
728
727
  if (oNowDate.getTime() <= iEndTime && oNowDate.getTime() >= iStartTime) {
729
728
  var iBegin = _calculateBegin.call(this, sIntervalType, iIntervals, oStartDate, oEndDate, iStartTime, oNowDate);
730
729
  var iTime = 0;
@@ -766,23 +765,6 @@ sap.ui.define([
766
765
 
767
766
  };
768
767
 
769
- /**
770
- * Aligns a date to the timezone from the configuration.
771
- *
772
- * @returns {Object} <code>oNewDate</code> aligned to the configured timezone.
773
- * @private
774
- */
775
- CalendarRow.prototype._convertToTimezone = function(oDate) {
776
- var sTimezone = Core.getConfiguration().getTimezone();
777
- var oNewDate = CalendarUtils._createUniversalUTCDate(oDate, undefined, true);
778
-
779
- oNewDate = new Date(oDate.getUTCFullYear(), oDate.getUTCMonth(), oDate.getUTCDate(), oDate.getUTCHours(), oDate.getUTCMinutes(), oDate.getUTCSeconds());
780
- oNewDate.setUTCFullYear(oDate.getUTCFullYear());
781
- oNewDate = TimezoneUtil.convertToTimezone(oNewDate, sTimezone);
782
-
783
- return oNewDate;
784
- };
785
-
786
768
  /**
787
769
  * Returns the focused <code>CalendarAppointment</code> of the <code>CalendarRow</code>.
788
770
  *
@@ -862,7 +844,7 @@ sap.ui.define([
862
844
 
863
845
  for (var i = 0; i < aAppointments.length; i++) {
864
846
  oNextAppointment = aAppointments[i];
865
- if (oNextAppointment._getStartDateWithTimezoneAdaptation() > oDate) {
847
+ if (oNextAppointment.getStartDate() > oDate) {
866
848
  if (i > 0) {
867
849
  oPrevAppointment = aAppointments[i - 1];
868
850
  } else {
@@ -873,7 +855,7 @@ sap.ui.define([
873
855
  }
874
856
 
875
857
  if (oNextAppointment) {
876
- if (oPrevAppointment && Math.abs(oNextAppointment._getStartDateWithTimezoneAdaptation() - oDate) >= Math.abs(oPrevAppointment._getStartDateWithTimezoneAdaptation() - oDate)) {
858
+ if (oPrevAppointment && Math.abs(oNextAppointment.getStartDate() - oDate) >= Math.abs(oPrevAppointment.getStartDate() - oDate)) {
877
859
  oAppointment = oPrevAppointment;
878
860
  } else {
879
861
  oAppointment = oNextAppointment;
@@ -972,8 +954,8 @@ sap.ui.define([
972
954
  };
973
955
  }
974
956
 
975
- var oAppStartDate = oAppointment._getStartDateWithTimezoneAdaptation(),
976
- oAppEndDate = oAppointment._getEndDateWithTimezoneAdaptation(),
957
+ var oAppStartDate = oAppointment.getStartDate(),
958
+ oAppEndDate = oAppointment.getEndDate(),
977
959
  oUniversalAppStartDate = new UniversalDate(oAppStartDate.getFullYear(), oAppStartDate.getMonth(), oAppStartDate.getDate(), oAppStartDate.getHours(), oAppStartDate.getMinutes()),
978
960
  oUniversalAppEndDate = new UniversalDate(oAppEndDate.getFullYear(), oAppEndDate.getMonth(), oAppEndDate.getDate(), oAppEndDate.getHours(), oAppEndDate.getMinutes()),
979
961
  sIntervalType = this.getIntervalType(),
@@ -1182,13 +1164,13 @@ sap.ui.define([
1182
1164
 
1183
1165
  for (i = 0; i < aAppointments.length; i++) {
1184
1166
  oAppointment = aAppointments[i];
1185
- var oAppointmentStartDate = CalendarUtils._createUniversalUTCDate(oAppointment._getStartDateWithTimezoneAdaptation(), undefined, true);
1167
+ var oAppointmentStartDate = CalendarUtils._createUniversalUTCDate(oAppointment.getStartDate(), undefined, true);
1186
1168
  var oAppointmentStartDateTime = oAppointmentStartDate.getTime();
1187
1169
  oAppointmentStartDate.setUTCSeconds(0); // ignore seconds
1188
1170
  oAppointmentStartDate.setUTCMilliseconds(0); // ignore milliseconds
1189
- var oAppointmentEndDate = oAppointment._getEndDateWithTimezoneAdaptation()
1190
- ? CalendarUtils._createUniversalUTCDate(oAppointment._getEndDateWithTimezoneAdaptation(), undefined, true)
1191
- : CalendarUtils._createUniversalUTCDate(new Date(864000000000000), undefined, true); //max date
1171
+ var oAppointmentEndDate = oAppointment.getEndDate()
1172
+ ? CalendarUtils._createUniversalUTCDate(oAppointment.getEndDate(), undefined, true)
1173
+ : CalendarUtils._createUniversalUTCDate(UI5Date.getInstance(864000000000000), undefined, true); //max date
1192
1174
  var oAppointmentEndDateTime = oAppointmentEndDate.getTime();
1193
1175
  oAppointmentEndDate.setUTCSeconds(0); // ignore seconds
1194
1176
  oAppointmentEndDate.setUTCMilliseconds(0); // ignore milliseconds
@@ -1226,7 +1208,7 @@ sap.ui.define([
1226
1208
  // in month mode, group appointment < one week
1227
1209
 
1228
1210
  oGroupAppointment = _getGroupAppointment.call(this, oAppointmentStartDate, oAppointment, sIntervalType, iIntervals, oStartDate, oEndDate, iStartTime, aVisibleAppointments);
1229
- var oGroupEndDate = CalendarUtils._createUniversalUTCDate(oGroupAppointment._getEndDateWithTimezoneAdaptation(), undefined, true);
1211
+ var oGroupEndDate = CalendarUtils._createUniversalUTCDate(oGroupAppointment.getEndDate(), undefined, true);
1230
1212
 
1231
1213
  if (oAppointmentEndDate.getTime() > oGroupEndDate.getTime()) {
1232
1214
  // appointment ends in next group
@@ -1355,7 +1337,7 @@ sap.ui.define([
1355
1337
 
1356
1338
  for (var j = 0; j < aGroupAppointments.length; j++) {
1357
1339
  oGroupAppointment = aGroupAppointments[j];
1358
- var oGroupAppointmentStartDate = CalendarUtils._createUniversalUTCDate(oGroupAppointment._getStartDateWithTimezoneAdaptation(), undefined, true);
1340
+ var oGroupAppointmentStartDate = CalendarUtils._createUniversalUTCDate(oGroupAppointment.getStartDate(), undefined, true);
1359
1341
  if (oGroupAppointmentStartDate.getTime() == oGroupStartDate.getTime()) {
1360
1342
  break;
1361
1343
  }
@@ -1368,8 +1350,8 @@ sap.ui.define([
1368
1350
  oGroupEndDate.setMilliseconds(-1);
1369
1351
  oGroupAppointment = new CalendarAppointment(this.getId() + "-Group" + aGroupAppointments.length, {
1370
1352
  type: oAppointment.getType(),
1371
- startDate: CalendarUtils._createLocalDate(new Date(oGroupStartDate.getTime()), true),
1372
- endDate: CalendarUtils._createLocalDate(new Date(oGroupEndDate.getTime()), true)
1353
+ startDate: CalendarUtils._createLocalDate(UI5Date.getInstance(oGroupStartDate.getTime()), true),
1354
+ endDate: CalendarUtils._createLocalDate(UI5Date.getInstance(oGroupEndDate.getTime()), true)
1373
1355
  });
1374
1356
  oGroupAppointment._aAppointments = [];
1375
1357
  this.addAggregation("groupAppointments", oGroupAppointment, true);
@@ -1479,12 +1461,12 @@ sap.ui.define([
1479
1461
 
1480
1462
  for (i = 0; i < aAppointments.length; i++) {
1481
1463
  oAppointment = aAppointments[i];
1482
- var oAppointmentStartDate = CalendarUtils._createUniversalUTCDate(oAppointment._getStartDateWithTimezoneAdaptation(), undefined, true);
1464
+ var oAppointmentStartDate = CalendarUtils._createUniversalUTCDate(oAppointment.getStartDate(), undefined, true);
1483
1465
  oAppointmentStartDate.setUTCSeconds(0); // ignore seconds
1484
1466
  oAppointmentStartDate.setUTCMilliseconds(0); // ignore milliseconds
1485
- var oAppointmentEndDate = oAppointment._getEndDateWithTimezoneAdaptation()
1486
- ? CalendarUtils._createUniversalUTCDate(oAppointment._getEndDateWithTimezoneAdaptation(), undefined, true)
1487
- : CalendarUtils._createUniversalUTCDate(new Date(864000000000000), undefined, true); //max date;
1467
+ var oAppointmentEndDate = oAppointment.getEndDate()
1468
+ ? CalendarUtils._createUniversalUTCDate(oAppointment.getEndDate(), undefined, true)
1469
+ : CalendarUtils._createUniversalUTCDate(UI5Date.getInstance(864000000000000), undefined, true); //max date;
1488
1470
  oAppointmentEndDate.setUTCSeconds(0); // ignore seconds
1489
1471
  oAppointmentEndDate.setUTCMilliseconds(0); // ignore milliseconds
1490
1472
 
@@ -1701,6 +1683,7 @@ sap.ui.define([
1701
1683
  var sAriaLabelNotSelected;
1702
1684
  var sAriaLabelSelected;
1703
1685
  var sSelectedTextId = InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT_SELECTED");
1686
+ var sUnselectedTextId = InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT_UNSELECTED");
1704
1687
  var bSelect = !oAppointment.getSelected();
1705
1688
 
1706
1689
  if (bRemoveOldSelection) {
@@ -1720,14 +1703,14 @@ sap.ui.define([
1720
1703
  }
1721
1704
  }
1722
1705
  sAriaLabel = oApp.$().attr("aria-labelledby");
1723
- sAriaLabelNotSelected = sAriaLabel ? sAriaLabel.replace(sSelectedTextId, "") : "";
1706
+ sAriaLabelNotSelected = sAriaLabel ? sAriaLabel.replace(sSelectedTextId, sUnselectedTextId) : "";
1724
1707
  oApp.$().attr("aria-labelledby", sAriaLabelNotSelected);
1725
1708
  }
1726
1709
  }
1727
1710
  }
1728
1711
 
1729
- sAriaLabelSelected = oAppointment.$().attr("aria-labelledby") + " " + sSelectedTextId;
1730
- sAriaLabelNotSelected = oAppointment.$().attr("aria-labelledby").replace(sSelectedTextId, "").trim();
1712
+ sAriaLabelSelected = oAppointment.$().attr("aria-labelledby").replace(sUnselectedTextId, sSelectedTextId).trim();
1713
+ sAriaLabelNotSelected = oAppointment.$().attr("aria-labelledby").replace(sSelectedTextId, sUnselectedTextId).trim();
1731
1714
 
1732
1715
  if (oAppointment.getSelected()) {
1733
1716
  oAppointment.setProperty("selected", false, true); // do not invalidate CalendarRow
@@ -1748,8 +1731,6 @@ sap.ui.define([
1748
1731
  for (i = 0; i < oAppointment._aAppointments.length; i++) {
1749
1732
  oApp = oAppointment._aAppointments[i];
1750
1733
  oApp.setProperty("selected", bSelect, true); // do not invalidate CalendarRow
1751
- sAriaLabelSelected = oApp.$().attr("aria-labelledby") + " " + sSelectedTextId;
1752
- oApp.$().attr("aria-labelledby", sAriaLabelSelected);
1753
1734
  }
1754
1735
  this.fireSelect({
1755
1736
  appointments: oAppointment._aAppointments,
@@ -1809,13 +1790,13 @@ sap.ui.define([
1809
1790
  var iNewStartHour,
1810
1791
  iNewEndHour;
1811
1792
 
1812
- iNewStartHour = oAppointment._getStartDateWithTimezoneAdaptation().getHours() - oAppointment._getStartDateWithTimezoneAdaptation().getHours() % iRound;
1793
+ iNewStartHour = oAppointment.getStartDate().getHours() - oAppointment.getStartDate().getHours() % iRound;
1813
1794
  oAppointmentStartDate.setUTCHours(iNewStartHour);
1814
1795
  oAppointmentStartDate.setUTCMinutes(0);
1815
1796
  oAppointmentStartDate.setUTCSeconds(0);
1816
1797
  oAppointmentStartDate.setUTCMilliseconds(0);
1817
1798
 
1818
- iNewEndHour = oAppointment._getEndDateWithTimezoneAdaptation().getHours() - oAppointment._getEndDateWithTimezoneAdaptation().getHours() % iRound + iRound;
1799
+ iNewEndHour = oAppointment.getEndDate().getHours() - oAppointment.getEndDate().getHours() % iRound + iRound;
1819
1800
  oAppointmentEndDate.setUTCHours(iNewEndHour);
1820
1801
  oAppointmentEndDate.setUTCMinutes(0);
1821
1802
  oAppointmentEndDate.setUTCSeconds(0);
@@ -1976,7 +1957,7 @@ sap.ui.define([
1976
1957
 
1977
1958
  if (oAppointment) {
1978
1959
  this._sFocusedAppointmentId = oAppointment.getId();
1979
- var oUTCStartDate = _calculateStartDate.call(this, oAppointment._getStartDateWithTimezoneAdaptation());
1960
+ var oUTCStartDate = _calculateStartDate.call(this, oAppointment.getStartDate());
1980
1961
  this.setStartDate(CalendarUtils._createLocalDate(oUTCStartDate, true));
1981
1962
  if (!containsOrEquals(this.getDomRef(), document.activeElement)) {
1982
1963
  // focus is outside control -> set focus after rerendering
@@ -2086,13 +2067,13 @@ sap.ui.define([
2086
2067
  var oLocalStartDate = CalendarUtils._createLocalDate(oStartDate, true);
2087
2068
  var oLocalEndDate = CalendarUtils._createLocalDate(oEndDate, true);
2088
2069
  for (var i = 0; i < aAppointments.length; i++) {
2089
- if (aAppointments[i]._getStartDateWithTimezoneAdaptation() >= oLocalStartDate && aAppointments[i]._getStartDateWithTimezoneAdaptation() <= oLocalEndDate) {
2070
+ if (aAppointments[i].getStartDate() >= oLocalStartDate && aAppointments[i].getStartDate() <= oLocalEndDate) {
2090
2071
  oAppointment = aAppointments[i];
2091
2072
  sId = oAppointment.getId();
2092
2073
  if (oEvent.type == "saphome") {
2093
2074
  break;
2094
2075
  }
2095
- } else if (aAppointments[i]._getStartDateWithTimezoneAdaptation() > oLocalEndDate) {
2076
+ } else if (aAppointments[i].getStartDate() > oLocalEndDate) {
2096
2077
  break;
2097
2078
  }
2098
2079
  }
@@ -2193,10 +2174,10 @@ sap.ui.define([
2193
2174
  }
2194
2175
 
2195
2176
  function _fnDefaultAppointmentsSorter(oApp1, oApp2) {
2196
- var iResult = oApp1._getStartDateWithTimezoneAdaptation() - oApp2._getStartDateWithTimezoneAdaptation();
2177
+ var iResult = oApp1.getStartDate() - oApp2.getStartDate();
2197
2178
  if (iResult == 0) {
2198
2179
  // same start date -> longest appointment should be on top
2199
- iResult = oApp2._getEndDateWithTimezoneAdaptation() - oApp1._getEndDateWithTimezoneAdaptation();
2180
+ iResult = oApp2.getEndDate() - oApp1.getEndDate();
2200
2181
  }
2201
2182
  return iResult;
2202
2183
  }