@openui5/sap.ui.unified 1.149.0 → 1.150.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.
Files changed (59) hide show
  1. package/REUSE.toml +24 -0
  2. package/THIRDPARTY.txt +24 -5
  3. package/package.json +2 -2
  4. package/src/sap/ui/unified/.library +1 -1
  5. package/src/sap/ui/unified/Calendar.js +1 -1
  6. package/src/sap/ui/unified/CalendarAppointment.js +23 -4
  7. package/src/sap/ui/unified/CalendarDateInterval.js +1 -1
  8. package/src/sap/ui/unified/CalendarLegend.js +1 -1
  9. package/src/sap/ui/unified/CalendarLegendItem.js +1 -1
  10. package/src/sap/ui/unified/CalendarMonthInterval.js +5 -1
  11. package/src/sap/ui/unified/CalendarOneMonthInterval.js +1 -1
  12. package/src/sap/ui/unified/CalendarRow.js +1 -1
  13. package/src/sap/ui/unified/CalendarRowRenderer.js +39 -24
  14. package/src/sap/ui/unified/CalendarTimeInterval.js +1 -1
  15. package/src/sap/ui/unified/CalendarWeekInterval.js +1 -1
  16. package/src/sap/ui/unified/ColorPicker.js +1 -1
  17. package/src/sap/ui/unified/ColorPickerPopover.js +1 -1
  18. package/src/sap/ui/unified/ContentSwitcher.js +1 -1
  19. package/src/sap/ui/unified/Currency.js +1 -1
  20. package/src/sap/ui/unified/CurrencyRenderer.js +1 -1
  21. package/src/sap/ui/unified/DateRange.js +1 -1
  22. package/src/sap/ui/unified/DateTypeRange.js +1 -1
  23. package/src/sap/ui/unified/FileUploader.js +1 -1
  24. package/src/sap/ui/unified/FileUploaderParameter.js +1 -1
  25. package/src/sap/ui/unified/FileUploaderXHRSettings.js +1 -1
  26. package/src/sap/ui/unified/Menu.js +1 -1
  27. package/src/sap/ui/unified/MenuItem.js +1 -1
  28. package/src/sap/ui/unified/MenuItemBase.js +1 -1
  29. package/src/sap/ui/unified/MenuItemGroup.js +1 -1
  30. package/src/sap/ui/unified/MenuRenderer.js +1 -1
  31. package/src/sap/ui/unified/MenuTextFieldItem.js +2 -2
  32. package/src/sap/ui/unified/MonthlyRecurrenceRule.js +1 -1
  33. package/src/sap/ui/unified/NonWorkingPeriod.js +1 -1
  34. package/src/sap/ui/unified/RecurrenceRule.js +1 -1
  35. package/src/sap/ui/unified/RecurringCalendarAppointment.js +7 -2
  36. package/src/sap/ui/unified/RecurringNonWorkingPeriod.js +15 -1
  37. package/src/sap/ui/unified/Shell.js +1 -1
  38. package/src/sap/ui/unified/ShellHeadItem.js +1 -1
  39. package/src/sap/ui/unified/ShellHeadUserItem.js +1 -1
  40. package/src/sap/ui/unified/ShellLayout.js +1 -1
  41. package/src/sap/ui/unified/ShellOverlay.js +1 -1
  42. package/src/sap/ui/unified/SplitContainer.js +1 -1
  43. package/src/sap/ui/unified/TimeRange.js +1 -1
  44. package/src/sap/ui/unified/WeeklyRecurrenceRule.js +1 -1
  45. package/src/sap/ui/unified/YearlyRecurrenceRule.js +1 -1
  46. package/src/sap/ui/unified/calendar/DatesRow.js +1 -1
  47. package/src/sap/ui/unified/calendar/Header.js +1 -1
  48. package/src/sap/ui/unified/calendar/IndexPicker.js +1 -1
  49. package/src/sap/ui/unified/calendar/Month.js +2 -1
  50. package/src/sap/ui/unified/calendar/MonthPicker.js +1 -1
  51. package/src/sap/ui/unified/calendar/MonthsRow.js +196 -40
  52. package/src/sap/ui/unified/calendar/OneMonthDatesRow.js +1 -1
  53. package/src/sap/ui/unified/calendar/TimesRow.js +1 -1
  54. package/src/sap/ui/unified/calendar/WeeksRow.js +1 -1
  55. package/src/sap/ui/unified/calendar/YearPicker.js +1 -1
  56. package/src/sap/ui/unified/calendar/YearRangePicker.js +1 -1
  57. package/src/sap/ui/unified/library.js +2 -2
  58. package/src/sap/ui/unified/messagebundle_en_US_sappsd.properties +73 -9
  59. package/src/sap/ui/unified/messagebundle_en_US_saptrc.properties +70 -8
package/REUSE.toml CHANGED
@@ -225,6 +225,16 @@ SPDX-FileCopyrightText = "jQuery Foundation and other contributors"
225
225
  SPDX-License-Identifier = "MIT"
226
226
  SPDX-FileComment = "these files belong to: QUnit 2.18"
227
227
 
228
+ [[annotations]]
229
+ path = [
230
+ "src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/qunit-2.26.0.css",
231
+ "src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/qunit-2.26.0.js"
232
+ ]
233
+ precedence = "aggregate"
234
+ SPDX-FileCopyrightText = "OpenJS Foundation and other contributors"
235
+ SPDX-License-Identifier = "MIT"
236
+ SPDX-FileComment = "these files belong to: QUnit 2.26.0"
237
+
228
238
  [[annotations]]
229
239
  path = "src/sap.ui.core/src/sap/ui/thirdparty/jquery-compat.js"
230
240
  precedence = "aggregate"
@@ -349,6 +359,20 @@ SPDX-FileCopyrightText = "2010-2022, Christian Johansen, christian@cjohansen.no"
349
359
  SPDX-License-Identifier = "BSD-3-Clause"
350
360
  SPDX-FileComment = "these files belong to: SinonJS 14"
351
361
 
362
+ [[annotations]]
363
+ path = "src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/sinon-22.0.0.js"
364
+ precedence = "aggregate"
365
+ SPDX-FileCopyrightText = "2010-2024, Christian Johansen, christian@cjohansen.no"
366
+ SPDX-License-Identifier = "BSD-3-Clause"
367
+ SPDX-FileComment = "these files belong to: SinonJS 22"
368
+
369
+ [[annotations]]
370
+ path = "src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/nise-6.1.5.js"
371
+ precedence = "aggregate"
372
+ SPDX-FileCopyrightText = "2010-2017, Christian Johansen, christian@cjohansen.no"
373
+ SPDX-License-Identifier = "BSD-3-Clause"
374
+ SPDX-FileComment = "these files belong to: nise"
375
+
352
376
  [[annotations]]
353
377
  path = "src/sap.ui.core/src/sap/ui/thirdparty/sinon-qunit.js"
354
378
  precedence = "aggregate"
package/THIRDPARTY.txt CHANGED
@@ -6,31 +6,31 @@ The full text of all referenced licenses is appended at the end of this file.
6
6
 
7
7
  Library: sap.f:
8
8
 
9
- Component: UI5 Web Components, version: 2.19.2
9
+ Component: UI5 Web Components, version: 2.23.2
10
10
  Copyright: SAP
11
11
  License: Apache-2.0
12
12
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
13
13
  Contained in: src/sap.f/src/sap/f/thirdparty/**
14
14
 
15
- Component: UI5 Web Components Fiori, version: 2.19.2
15
+ Component: UI5 Web Components Fiori, version: 2.23.2
16
16
  Copyright: SAP
17
17
  License: Apache-2.0
18
18
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
19
19
  Contained in: src/sap.f/src/sap/f/thirdparty/**
20
20
 
21
- Component: UI5 Web Components Icons, version: 2.19.2
21
+ Component: UI5 Web Components Icons, version: 2.23.2
22
22
  Copyright: SAP
23
23
  License: Apache-2.0
24
24
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
25
25
  Contained in: src/sap.f/src/sap/f/thirdparty/**
26
26
 
27
- Component: UI5 Web Components Icons Business Suite, version: 2.19.2
27
+ Component: UI5 Web Components Icons Business Suite, version: 2.23.1
28
28
  Copyright: SAP
29
29
  License: Apache-2.0
30
30
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
31
31
  Contained in: src/sap.f/src/sap/f/thirdparty/**
32
32
 
33
- Component: UI5 Web Components Icons TNT, version: 2.19.2
33
+ Component: UI5 Web Components Icons TNT, version: 2.23.1
34
34
  Copyright: SAP
35
35
  License: Apache-2.0
36
36
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
@@ -134,6 +134,13 @@ License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
134
134
  Contained in: src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/qunit-2.18.css
135
135
  src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/qunit-2.18.js
136
136
 
137
+ Component: QUnit 2.26.0, version: 2.26.0
138
+ Copyright: OpenJS Foundation and other contributors
139
+ License: MIT
140
+ License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
141
+ Contained in: src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/qunit-2.26.0.css
142
+ src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/qunit-2.26.0.js
143
+
137
144
  Component: jQuery-Migrate, version: 3.3.1
138
145
  Copyright: OpenJS Foundation and other contributors
139
146
  License: MIT
@@ -227,6 +234,18 @@ License: BSD-3-Clause
227
234
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/BSD-3-Clause.txt
228
235
  Contained in: src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/sinon-14.0.js
229
236
 
237
+ Component: SinonJS 22, version: 22.0.0
238
+ Copyright: 2010-2024, Christian Johansen, christian@cjohansen.no
239
+ License: BSD-3-Clause
240
+ License Text: https://github.com/UI5/openui5/blob/master/LICENSES/BSD-3-Clause.txt
241
+ Contained in: src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/sinon-22.0.0.js
242
+
243
+ Component: nise, version: 6.1.5
244
+ Copyright: 2010-2017, Christian Johansen, christian@cjohansen.no
245
+ License: BSD-3-Clause
246
+ License Text: https://github.com/UI5/openui5/blob/master/LICENSES/BSD-3-Clause.txt
247
+ Contained in: src/sap.ui.core/test/sap/ui/core/qunit/thirdparty/nise-6.1.5.js
248
+
230
249
  Component: Sinon-qunit, version: 2.0.0
231
250
  Copyright: 2010-2011, Christian Johansen
232
251
  License: BSD-3-Clause
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.unified",
3
- "version": "1.149.0",
3
+ "version": "1.150.0",
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/UI5/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.ui.core": "1.149.0"
17
+ "@openui5/sap.ui.core": "1.150.0"
18
18
  }
19
19
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2026 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.149.0</version>
9
+ <version>1.150.0</version>
10
10
 
11
11
  <documentation>Unified controls intended for both, mobile and desktop scenarios</documentation>
12
12
 
@@ -80,7 +80,7 @@ sap.ui.define([
80
80
  * Basic Calendar.
81
81
  * This calendar is used for DatePickers
82
82
  * @extends sap.ui.core.Control
83
- * @version 1.149.0
83
+ * @version 1.150.0
84
84
  *
85
85
  * @constructor
86
86
  * @public
@@ -15,7 +15,8 @@ sap.ui.define([
15
15
  './calendar/CalendarUtils',
16
16
  './library',
17
17
  "sap/base/Log",
18
- "sap/ui/core/date/UI5Date"
18
+ "sap/ui/core/date/UI5Date",
19
+ "sap/ui/core/library"
19
20
  ],
20
21
  function(
21
22
  DateTypeRange,
@@ -27,10 +28,14 @@ sap.ui.define([
27
28
  CalendarUtils,
28
29
  library,
29
30
  Log,
30
- UI5Date
31
+ UI5Date,
32
+ coreLibrary
31
33
  ) {
32
34
  "use strict";
33
35
 
36
+ // shortcut for sap.ui.core.aria.HasPopup
37
+ const AriaHasPopup = coreLibrary.aria.HasPopup;
38
+
34
39
  /**
35
40
  * Constructor for a new <code>CalendarAppointment</code>.
36
41
  *
@@ -43,7 +48,7 @@ sap.ui.define([
43
48
  *
44
49
  * Applications could inherit from this element to add own fields.
45
50
  * @extends sap.ui.unified.DateTypeRange
46
- * @version 1.149.0
51
+ * @version 1.150.0
47
52
  *
48
53
  * @constructor
49
54
  * @public
@@ -98,7 +103,21 @@ sap.ui.define([
98
103
  * This property will work only with full hex color with pound symbol, e.g.: #FF0000.
99
104
  * @since 1.46.0
100
105
  */
101
- color: {type : "sap.ui.core.CSSColor", group : "Appearance", defaultValue : null}
106
+ color: {type : "sap.ui.core.CSSColor", group : "Appearance", defaultValue : null},
107
+
108
+ /**
109
+ * Specifies the value of the <code>aria-haspopup</code> attribute
110
+ *
111
+ * If the value is <code>None</code>, the attribute will not be rendered. Otherwise it will be rendered with the selected value.
112
+ *
113
+ * NOTE: Use this property only when an <code>sap.ui.unified.CalendarAppointment</code> instance is active and related to a popover/popup.
114
+ * The value needs to be equal to the main/root role of the popup - e.g. dialog,
115
+ * menu or list (examples: if you have dialog -> dialog, if you have menu -> menu; if you have list -> list; if you have dialog containing a list -> dialog).
116
+ * Do not use it, if you open a standard sap.m.Dialog, MessageBox or other type of modal dialogs.
117
+ *
118
+ * @since 1.150.0
119
+ */
120
+ ariaHasPopup: { type: "sap.ui.core.aria.HasPopup", group: "Accessibility", defaultValue: AriaHasPopup.None }
102
121
  },
103
122
  aggregations: {
104
123
  /**
@@ -64,7 +64,7 @@ sap.ui.define([
64
64
  * @class
65
65
  * <code>CalendarDateInterval</code> only visualizes the dates in a one-line interval and allows the selection of a single day.
66
66
  * @extends sap.ui.unified.Calendar
67
- * @version 1.149.0
67
+ * @version 1.150.0
68
68
  *
69
69
  * @constructor
70
70
  * @public
@@ -57,7 +57,7 @@ sap.ui.define([
57
57
  * @extends sap.ui.core.Control
58
58
  *
59
59
  * @author SAP SE
60
- * @version 1.149.0
60
+ * @version 1.150.0
61
61
  *
62
62
  * @constructor
63
63
  * @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.149.0
24
+ * @version 1.150.0
25
25
  *
26
26
  * @constructor
27
27
  * @public
@@ -65,7 +65,7 @@ sap.ui.define([
65
65
  * <b>Note:</b> UI5Date or 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.149.0
68
+ * @version 1.150.0
69
69
  *
70
70
  * @constructor
71
71
  * @public
@@ -1218,6 +1218,10 @@ sap.ui.define([
1218
1218
  var oDate = CalendarDate.fromLocalJSDate(oEvent.getParameter("date"));
1219
1219
  var bNotVisible = oEvent.getParameter("notVisible");
1220
1220
 
1221
+ if (this.getIntervalSelection()) {
1222
+ this.getAggregation("monthsRow").setProperty("_focusedDate", oDate.toLocalJSDate());
1223
+ }
1224
+
1221
1225
  _focusDate.call(this, oDate, bNotVisible);
1222
1226
 
1223
1227
  }
@@ -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.149.0
60
+ * @version 1.150.0
61
61
  *
62
62
  * @constructor
63
63
  * @private
@@ -84,7 +84,7 @@ sap.ui.define([
84
84
  * @class
85
85
  * A calendar row with a header and appointments. The Appointments will be placed in the defined interval.
86
86
  * @extends sap.ui.core.Control
87
- * @version 1.149.0
87
+ * @version 1.150.0
88
88
  *
89
89
  * @constructor
90
90
  * @public
@@ -17,7 +17,8 @@ sap.ui.define([
17
17
  'sap/ui/unified/calendar/RecurrenceUtils',
18
18
  'sap/base/Log',
19
19
  // side effect: required by RenderManager#icon
20
- 'sap/ui/core/IconPool'
20
+ 'sap/ui/core/IconPool',
21
+ 'sap/ui/core/library'
21
22
  ],
22
23
  function(
23
24
  Element,
@@ -30,30 +31,35 @@ sap.ui.define([
30
31
  InvisibleText,
31
32
  UI5Date,
32
33
  RecurrenceUtils,
33
- Log
34
+ Log,
35
+ IconPool,
36
+ coreLibrary
34
37
  ) {
35
38
  "use strict";
36
39
 
37
40
 
38
41
  // shortcut for sap.ui.unified.CalendarDayType
39
- var CalendarDayType = library.CalendarDayType;
42
+ const CalendarDayType = library.CalendarDayType;
40
43
 
41
44
  // shortcut for sap.ui.unified.CalendarIntervalType
42
- var CalendarIntervalType = library.CalendarIntervalType;
45
+ const CalendarIntervalType = library.CalendarIntervalType;
43
46
 
44
47
  // shortcut for sap.ui.unified.CalendarAppointmentVisualization
45
- var CalendarAppointmentVisualization = library.CalendarAppointmentVisualization;
48
+ const CalendarAppointmentVisualization = library.CalendarAppointmentVisualization;
46
49
 
47
50
  // shortcut for sap.ui.unified.CalendarAppointmentHeight
48
- var CalendarAppointmentHeight = library.CalendarAppointmentHeight;
51
+ const CalendarAppointmentHeight = library.CalendarAppointmentHeight;
49
52
  /**
50
53
  * CalendarRow renderer.
51
54
  * @namespace
52
55
  */
53
- var CalendarRowRenderer = {
56
+ const CalendarRowRenderer = {
54
57
  apiVersion: 2
55
58
  };
56
59
 
60
+ // shortcut for sap.ui.core.aria.HasPopup
61
+ const AriaHasPopup = coreLibrary.aria.HasPopup;
62
+
57
63
  /**
58
64
  * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}.
59
65
  *
@@ -105,6 +111,7 @@ sap.ui.define([
105
111
  oRm.openStart("div", sId + "-Apps");
106
112
  oRm.class("sapUiCalendarRowApps");
107
113
  oRm.attr("role", "list");
114
+ oRm.attr("tabindex", "-1");
108
115
  oRm.openEnd();
109
116
 
110
117
  this.renderBeforeAppointments(oRm, oRow);
@@ -283,8 +290,7 @@ sap.ui.define([
283
290
  if (!oPeriod.isRecurring()) {
284
291
  return oPeriod.hasNonWorkingAtDate(oStartDateInterval);
285
292
  }
286
- const hasOccurrenceOnDate = RecurrenceUtils.hasOccurrenceOnDate.bind(oPeriod);
287
- return hasOccurrenceOnDate(oStartDateInterval);
293
+ return RecurrenceUtils.hasOccurrenceOnDateCached.call(oPeriod, oStartDateInterval);
288
294
  });
289
295
 
290
296
  const aFilteredItemsForCurrentHours = aFilteredNonWorkingRange.filter((oPeriod) => {
@@ -467,6 +473,11 @@ sap.ui.define([
467
473
 
468
474
  oRm.accessibilityState(oIntervalHeader.appointment, mAccProps);
469
475
 
476
+ var sAriaHasPopup = oIntervalHeader.appointment.getAriaHasPopup();
477
+ if (sAriaHasPopup !== AriaHasPopup.None) {
478
+ oRm.attr("aria-haspopup", sAriaHasPopup.toLowerCase());
479
+ }
480
+
470
481
  oRm.openEnd(); //div element
471
482
  oRm.openStart("div");
472
483
 
@@ -536,21 +547,21 @@ sap.ui.define([
536
547
 
537
548
  CalendarRowRenderer.renderAppointment = function(oRm, oRow, oAppointmentInfo, aTypes, bRelativePos){
538
549
 
539
- var oAppointment = oAppointmentInfo.appointment;
540
- var sTooltip = oAppointment.getTooltip_AsString();
541
- var sType = oAppointment.getType();
542
- var sColor = oAppointment.getColor();
543
- var sTitle = oAppointment.getTitle();
544
- var sText = oAppointment.getText();
545
- var sDescription = oAppointment.getDescription();
546
- var sIcon = oAppointment.getIcon();
547
- var sId = oAppointment.getId();
548
- var bReducedHeight = oRow._getAppointmentReducedHeight(oAppointmentInfo);
549
- var bAppointmentSelected = oAppointment.getSelected();
550
- var bHasCustomContent = !!oAppointment.getCustomContent().length;
551
-
552
- var aLabelledByIds = [InvisibleText.getStaticId("sap.m", "ACC_CTR_TYPE_LISTITEM"), InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT")];
553
-
550
+ const oAppointment = oAppointmentInfo.appointment;
551
+ const sTooltip = oAppointment.getTooltip_AsString();
552
+ const sType = oAppointment.getType();
553
+ const sColor = oAppointment.getColor();
554
+ const sTitle = oAppointment.getTitle();
555
+ const sText = oAppointment.getText();
556
+ const sDescription = oAppointment.getDescription();
557
+ const sIcon = oAppointment.getIcon();
558
+ const sId = oAppointment.getId();
559
+ const bReducedHeight = oRow._getAppointmentReducedHeight(oAppointmentInfo);
560
+ const bAppointmentSelected = oAppointment.getSelected();
561
+ const bHasCustomContent = !!oAppointment.getCustomContent().length;
562
+ const sAriaHasPopup = oAppointment.getAriaHasPopup();
563
+
564
+ let aLabelledByIds = [InvisibleText.getStaticId("sap.m", "ACC_CTR_TYPE_LISTITEM"), InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT")];
554
565
  if (sTitle && !bHasCustomContent) {
555
566
  aLabelledByIds.push(`${sId}-Title`);
556
567
  }
@@ -634,6 +645,10 @@ sap.ui.define([
634
645
  }
635
646
  }
636
647
 
648
+ if (sAriaHasPopup !== AriaHasPopup.None) {
649
+ oRm.attr("aria-haspopup", sAriaHasPopup.toLowerCase());
650
+ }
651
+
637
652
  oRm.accessibilityState(oAppointment, mAccProps);
638
653
  oRm.openEnd(); //div element
639
654
 
@@ -78,7 +78,7 @@ sap.ui.define([
78
78
  * @class
79
79
  * Calendar with granularity of time items displayed in one line.
80
80
  * @extends sap.ui.core.Control
81
- * @version 1.149.0
81
+ * @version 1.150.0
82
82
  *
83
83
  * @constructor
84
84
  * @public
@@ -39,7 +39,7 @@ sap.ui.define(['sap/ui/unified/calendar/CalendarUtils', 'sap/ui/unified/calendar
39
39
  * its start date to the first date of the same week as the date the user chose.
40
40
  *
41
41
  * @extends sap.ui.unified.CalendarDateInterval
42
- * @version 1.149.0
42
+ * @version 1.150.0
43
43
  *
44
44
  * @constructor
45
45
  * @private
@@ -72,7 +72,7 @@ sap.ui.define([
72
72
  * @extends sap.ui.core.Control
73
73
  *
74
74
  * @author SAP SE
75
- * @version 1.149.0
75
+ * @version 1.150.0
76
76
  *
77
77
  * @constructor
78
78
  * @public
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  * A thin wrapper over {@link sap.ui.unified.ColorPicker} allowing the latter to be used in a popover.
50
50
  *
51
51
  * @extends sap.ui.core.Control
52
- * @version 1.149.0
52
+ * @version 1.150.0
53
53
  *
54
54
  * @constructor
55
55
  * @public
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * @extends sap.ui.core.Control
32
32
  *
33
33
  * @author SAP SE
34
- * @version 1.149.0
34
+ * @version 1.150.0
35
35
  *
36
36
  * @constructor
37
37
  * @public
@@ -58,7 +58,7 @@ sap.ui.define([
58
58
  * @extends sap.ui.core.Control
59
59
  *
60
60
  * @author SAP SE
61
- * @version 1.149.0
61
+ * @version 1.150.0
62
62
  *
63
63
  * @constructor
64
64
  * @public
@@ -14,7 +14,7 @@ sap.ui.define(["sap/m/library", "sap/ui/core/Lib"],
14
14
  /**
15
15
  * Currency renderer.
16
16
  *
17
- * @version 1.149.0
17
+ * @version 1.150.0
18
18
  * @namespace
19
19
  */
20
20
  var CurrencyRenderer = {
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/core/Element', './library', 'sap/ui/unified/calendar/Cale
20
20
  * @class
21
21
  * Date range for use in DatePicker
22
22
  * @extends sap.ui.core.Element
23
- * @version 1.149.0
23
+ * @version 1.150.0
24
24
  *
25
25
  * @constructor
26
26
  * @public
@@ -25,7 +25,7 @@ sap.ui.define(['./DateRange', './library'],
25
25
  * @class
26
26
  * Date range with calendar day type information. Used to visualize special days in the Calendar.
27
27
  * @extends sap.ui.unified.DateRange
28
- * @version 1.149.0
28
+ * @version 1.150.0
29
29
  *
30
30
  * @constructor
31
31
  * @public
@@ -79,7 +79,7 @@ sap.ui.define([
79
79
  * @implements sap.ui.core.IFormContent, sap.ui.unified.IProcessableBlobs
80
80
  *
81
81
  * @author SAP SE
82
- * @version 1.149.0
82
+ * @version 1.150.0
83
83
  *
84
84
  * @constructor
85
85
  * @public
@@ -22,7 +22,7 @@ sap.ui.define(['sap/ui/core/Element', './library'],
22
22
  * @extends sap.ui.core.Element
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.149.0
25
+ * @version 1.150.0
26
26
  *
27
27
  * @constructor
28
28
  * @public
@@ -20,7 +20,7 @@ sap.ui.define(['sap/ui/core/Element', './library'],
20
20
  * @extends sap.ui.core.Element
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.149.0
23
+ * @version 1.150.0
24
24
  *
25
25
  * @constructor
26
26
  * @since 1.52
@@ -70,7 +70,7 @@ sap.ui.define([
70
70
  * @implements sap.ui.core.IContextMenu
71
71
  *
72
72
  * @author SAP SE
73
- * @version 1.149.0
73
+ * @version 1.150.0
74
74
  * @since 1.21.0
75
75
  *
76
76
  * @constructor
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * @implements sap.ui.unified.IMenuItem
40
40
  *
41
41
  * @author SAP SE
42
- * @version 1.149.0
42
+ * @version 1.150.0
43
43
  * @since 1.21.0
44
44
  *
45
45
  * @constructor
@@ -23,7 +23,7 @@ sap.ui.define(['sap/ui/core/Element', './library', 'sap/ui/core/IconPool', 'sap/
23
23
  * @extends sap.ui.core.Element
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.149.0
26
+ * @version 1.150.0
27
27
  * @since 1.21.0
28
28
  *
29
29
  * @constructor
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @implements sap.ui.unified.IMenuItem
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.149.0
33
+ * @version 1.150.0
34
34
  * @since 1.127.0
35
35
  *
36
36
  * @constructor
@@ -15,7 +15,7 @@ sap.ui.define(["sap/ui/core/ControlBehavior"],
15
15
  * Menu renderer.
16
16
  * @author SAP - TD Core UI&AM UI Infra
17
17
  *
18
- * @version 1.149.0
18
+ * @version 1.150.0
19
19
  * @namespace
20
20
  */
21
21
  var MenuRenderer = {
@@ -53,7 +53,7 @@ sap.ui.define([
53
53
  * @implements sap.ui.unified.IMenuItem
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.149.0
56
+ * @version 1.150.0
57
57
  * @since 1.21.0
58
58
  *
59
59
  * @constructor
@@ -360,7 +360,7 @@ sap.ui.define([
360
360
  sCountInfo = oUnifiedBundle.getText("UNIFIED_MENU_ITEM_COUNT_TEXT", [oInfo.iItemNo, oInfo.iTotalItems]);
361
361
  sTypeInfo = oUnifiedBundle.getText("UNIFIED_MENU_ITEM_HINT_TEXT");
362
362
  this._invisibleDescription = new InvisibleText({
363
- text: sCountInfo + " " + sTypeInfo
363
+ text: `${sTypeInfo} ${sCountInfo}`
364
364
  }).toStatic();
365
365
  }
366
366
 
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * </ul>
29
29
  *
30
30
  * @extends sap.ui.unified.RecurrenceRule
31
- * @version 1.149.0
31
+ * @version 1.150.0
32
32
  *
33
33
  * @constructor
34
34
  * @private
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @class
25
25
  * NonWorkingPeriod
26
26
  * @extends sap.ui.core.Element
27
- * @version 1.149.0
27
+ * @version 1.150.0
28
28
  *
29
29
  * @constructor
30
30
  * @public
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * </pre>
43
43
  *
44
44
  * @extends sap.ui.core.Element
45
- * @version 1.149.0
45
+ * @version 1.150.0
46
46
  *
47
47
  * @constructor
48
48
  * @public
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  *
37
37
  * Applications could inherit from this element to add own fields.
38
38
  * @extends sap.ui.unified.CalendarAppointment
39
- * @version 1.149.0
39
+ * @version 1.150.0
40
40
  *
41
41
  * @constructor
42
42
  * @public
@@ -124,7 +124,12 @@ sap.ui.define([
124
124
  RecurringCalendarAppointment.prototype.createOccurrenceClones = function(oRangeStart, oRangeEnd) {
125
125
  const oAppStartDate = this.getStartDate();
126
126
  const iDuration = this.getDuration();
127
- const aOccurrences = RecurrenceUtils.getOccurrencesInRange.call(this, oRangeStart, oRangeEnd);
127
+
128
+ let aOccurrences = RecurrenceUtils.getCachedOccurrences.call(this, oRangeStart, oRangeEnd);
129
+ if (!aOccurrences) {
130
+ aOccurrences = RecurrenceUtils.getOccurrencesInRange.call(this, oRangeStart, oRangeEnd);
131
+ RecurrenceUtils.setCachedOccurrences.call(this, oRangeStart, oRangeEnd, aOccurrences);
132
+ }
128
133
 
129
134
  return aOccurrences.map((oOccurrenceDate) => {
130
135
  const oOccurrenceStart = UI5Date.getInstance(oOccurrenceDate);