@openui5/sap.ui.unified 1.149.1 → 1.151.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 (68) hide show
  1. package/REUSE.toml +24 -0
  2. package/THIRDPARTY.txt +25 -6
  3. package/package.json +2 -2
  4. package/src/sap/ui/unified/.library +1 -1
  5. package/src/sap/ui/unified/Calendar.js +11 -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 +46 -1
  17. package/src/sap/ui/unified/ColorPickerPopover.js +1 -1
  18. package/src/sap/ui/unified/ColorPickerRenderer.js +49 -15
  19. package/src/sap/ui/unified/ContentSwitcher.js +1 -1
  20. package/src/sap/ui/unified/Currency.js +1 -1
  21. package/src/sap/ui/unified/CurrencyRenderer.js +1 -1
  22. package/src/sap/ui/unified/DateRange.js +1 -1
  23. package/src/sap/ui/unified/DateTypeRange.js +1 -1
  24. package/src/sap/ui/unified/FileUploader.js +1 -1
  25. package/src/sap/ui/unified/FileUploaderParameter.js +1 -1
  26. package/src/sap/ui/unified/FileUploaderXHRSettings.js +1 -1
  27. package/src/sap/ui/unified/Menu.js +1 -1
  28. package/src/sap/ui/unified/MenuItem.js +2 -2
  29. package/src/sap/ui/unified/MenuItemBase.js +1 -1
  30. package/src/sap/ui/unified/MenuItemGroup.js +1 -1
  31. package/src/sap/ui/unified/MenuRenderer.js +4 -2
  32. package/src/sap/ui/unified/MenuTextFieldItem.js +8 -4
  33. package/src/sap/ui/unified/MonthlyRecurrenceRule.js +1 -1
  34. package/src/sap/ui/unified/NonWorkingPeriod.js +1 -1
  35. package/src/sap/ui/unified/RecurrenceRule.js +1 -1
  36. package/src/sap/ui/unified/RecurringCalendarAppointment.js +7 -2
  37. package/src/sap/ui/unified/RecurringNonWorkingPeriod.js +15 -1
  38. package/src/sap/ui/unified/Shell.js +1 -1
  39. package/src/sap/ui/unified/ShellHeadItem.js +2 -30
  40. package/src/sap/ui/unified/ShellHeadUserItem.js +3 -31
  41. package/src/sap/ui/unified/ShellHeader.js +29 -13
  42. package/src/sap/ui/unified/ShellLayout.js +1 -1
  43. package/src/sap/ui/unified/ShellOverlay.js +1 -1
  44. package/src/sap/ui/unified/SplitContainer.js +1 -1
  45. package/src/sap/ui/unified/TimeRange.js +1 -1
  46. package/src/sap/ui/unified/WeeklyRecurrenceRule.js +1 -1
  47. package/src/sap/ui/unified/YearlyRecurrenceRule.js +1 -1
  48. package/src/sap/ui/unified/calendar/DatesRow.js +1 -1
  49. package/src/sap/ui/unified/calendar/Header.js +1 -1
  50. package/src/sap/ui/unified/calendar/HeaderRenderer.js +1 -0
  51. package/src/sap/ui/unified/calendar/IndexPicker.js +1 -1
  52. package/src/sap/ui/unified/calendar/Month.js +60 -1
  53. package/src/sap/ui/unified/calendar/MonthPicker.js +1 -1
  54. package/src/sap/ui/unified/calendar/MonthRenderer.js +23 -10
  55. package/src/sap/ui/unified/calendar/MonthsRow.js +196 -40
  56. package/src/sap/ui/unified/calendar/OneMonthDatesRow.js +1 -1
  57. package/src/sap/ui/unified/calendar/TimesRow.js +1 -1
  58. package/src/sap/ui/unified/calendar/WeeksRow.js +1 -1
  59. package/src/sap/ui/unified/calendar/YearPicker.js +1 -1
  60. package/src/sap/ui/unified/calendar/YearRangePicker.js +1 -1
  61. package/src/sap/ui/unified/library.js +2 -2
  62. package/src/sap/ui/unified/messagebundle_en_US_sappsd.properties +73 -9
  63. package/src/sap/ui/unified/messagebundle_en_US_saptrc.properties +70 -8
  64. package/src/sap/ui/unified/themes/base/Calendar.less +39 -6
  65. package/src/sap/ui/unified/themes/base/ColorPicker.less +125 -3
  66. package/src/sap/ui/unified/themes/base/FileUploader.less +5 -0
  67. package/src/sap/ui/unified/themes/base/ShellHeader.less +2 -7
  68. package/src/sap/ui/unified/themes/sap_hcb/Calendar.less +2 -1
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.24.0
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.24.0
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.24.0
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.24.0
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.24.0
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
@@ -248,7 +267,7 @@ License: MIT
248
267
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
249
268
  Contained in: src/sap.ui.core/src/sap/ui/thirdparty/punycode.js
250
269
 
251
- Component: handlebars, version: 4.7.7
270
+ Component: handlebars, version: 4.7.9
252
271
  Copyright: 2011-2019 by Yehuda Katz
253
272
  License: MIT
254
273
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.unified",
3
- "version": "1.149.1",
3
+ "version": "1.151.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.1"
17
+ "@openui5/sap.ui.core": "1.151.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.1</version>
9
+ <version>1.151.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.1
83
+ * @version 1.151.0
84
84
  *
85
85
  * @constructor
86
86
  * @public
@@ -201,6 +201,15 @@ sap.ui.define([
201
201
  */
202
202
  showWeekNumbers : {type : "boolean", group : "Appearance", defaultValue : true},
203
203
 
204
+ /**
205
+ * Determines whether the header of the week numbers column is displayed.
206
+ * The column header text is translated according to the active language.
207
+ *
208
+ * <b>Note:</b> Takes effect only when <code>showWeekNumbers</code> is set to <code>true</code>.
209
+ * @since 1.151
210
+ */
211
+ showWeekNumbersHeader : {type : "boolean", group : "Appearance", defaultValue : false},
212
+
204
213
  /**
205
214
  * Determines whether there is a shortcut navigation to Today. When used in Month, Year or
206
215
  * Year-range picker view, the calendar navigates to Day picker view.
@@ -620,6 +629,7 @@ sap.ui.define([
620
629
  }
621
630
  aMonths[i].displayDate(oDisplayDate.toLocalJSDate());
622
631
  aMonths[i].setShowWeekNumbers(this.getShowWeekNumbers());
632
+ aMonths[i].setShowWeekNumbersHeader(this.getShowWeekNumbersHeader());
623
633
  }
624
634
 
625
635
  if (this._getMonthPicker()) {
@@ -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.1
51
+ * @version 1.151.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.1
67
+ * @version 1.151.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.1
60
+ * @version 1.151.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.1
24
+ * @version 1.151.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.1
68
+ * @version 1.151.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.1
60
+ * @version 1.151.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.1
87
+ * @version 1.151.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.1
81
+ * @version 1.151.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.1
42
+ * @version 1.151.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.1
75
+ * @version 1.151.0
76
76
  *
77
77
  * @constructor
78
78
  * @public
@@ -1212,10 +1212,12 @@ sap.ui.define([
1212
1212
  };
1213
1213
 
1214
1214
  ColorPicker.prototype.exit = function() {
1215
+ this._stopZoomWatch();
1215
1216
  this._cleanup();
1216
1217
  };
1217
1218
 
1218
1219
  ColorPicker.prototype.onBeforeRendering = function() {
1220
+ this._stopZoomWatch();
1219
1221
  this._cleanup();
1220
1222
  // Create the layout controls
1221
1223
  this._createLayout();
@@ -2438,6 +2440,9 @@ sap.ui.define([
2438
2440
  // toggle fields - HEX field will be visible initially on mobile
2439
2441
  this._toggleFields();
2440
2442
  }
2443
+
2444
+ this._bLastHighZoom = this._isHighZoom();
2445
+ this._startZoomWatch();
2441
2446
  };
2442
2447
 
2443
2448
  /**
@@ -2652,6 +2657,46 @@ sap.ui.define([
2652
2657
  }
2653
2658
  };
2654
2659
 
2660
+ ColorPicker.prototype._getViewportWidth = function() {
2661
+ return (window.visualViewport && window.visualViewport.width) || window.innerWidth;
2662
+ };
2663
+
2664
+ ColorPicker.prototype._isHighZoom = function() {
2665
+ return this._getViewportWidth() <= 320;
2666
+ };
2667
+
2668
+ ColorPicker.prototype._startZoomWatch = function() {
2669
+ this._fnWindowResizeListener = function() {
2670
+ if (!this.getDomRef()) { return; }
2671
+ var bHighZoom = this._isHighZoom();
2672
+ if (bHighZoom !== this._bLastHighZoom) {
2673
+ this._bLastHighZoom = bHighZoom;
2674
+ this.invalidate();
2675
+ }
2676
+ }.bind(this);
2677
+ if (window.visualViewport) {
2678
+ window.visualViewport.addEventListener("resize", this._fnWindowResizeListener);
2679
+ }
2680
+ window.addEventListener("resize", this._fnWindowResizeListener);
2681
+ };
2682
+
2683
+ ColorPicker.prototype._stopZoomWatch = function() {
2684
+ if (this._fnWindowResizeListener) {
2685
+ window.removeEventListener("resize", this._fnWindowResizeListener);
2686
+ if (window.visualViewport) {
2687
+ window.visualViewport.removeEventListener("resize", this._fnWindowResizeListener);
2688
+ }
2689
+ this._fnWindowResizeListener = null;
2690
+ }
2691
+ };
2692
+
2693
+ ColorPicker.prototype._getEffectiveDisplayMode = function() {
2694
+ if (this._isHighZoom()) {
2695
+ return ColorPickerDisplayMode.Simplified;
2696
+ }
2697
+ return this.getDisplayMode();
2698
+ };
2699
+
2655
2700
  return ColorPicker;
2656
2701
 
2657
2702
  });
@@ -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.1
52
+ * @version 1.151.0
53
53
  *
54
54
  * @constructor
55
55
  * @public
@@ -28,8 +28,9 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
28
28
  * @param {sap.ui.unified.ColorPicker} oControl an object representation of the control that should be rendered
29
29
  */
30
30
  ColorPickerRenderer.render = function(oRm, oControl){
31
- var sDisplayMode = oControl.getDisplayMode(),
32
- bResponsive = oControl.bResponsive;
31
+ var sDisplayMode = oControl._getEffectiveDisplayMode(),
32
+ bResponsive = oControl.bResponsive,
33
+ bHighZoom = oControl._isHighZoom();
33
34
 
34
35
  oRm.openStart("div", oControl);
35
36
 
@@ -49,6 +50,9 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
49
50
  if (Device.system.phone) {
50
51
  oRm.class("sapUiCPPhone");
51
52
  }
53
+ if (bHighZoom) {
54
+ oRm.class("sapUiCPHighZoom");
55
+ }
52
56
  oRm.openEnd();
53
57
 
54
58
  if (!bResponsive) {
@@ -85,8 +89,9 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
85
89
  };
86
90
 
87
91
  ColorPickerRenderer.renderDefaultColorPicker = function(oRm, oControl) {
92
+ var bHighZoom = oControl._isHighZoom();
88
93
  oRm.renderControl(oControl.getAggregation("_oCPBox"));
89
- if (Device.system.phone) { //mobile
94
+ if (Device.system.phone && !bHighZoom) { //mobile
90
95
  oRm.openStart("div");
91
96
  oRm.class("sapUiCPPhoneContent");
92
97
  oRm.openEnd();
@@ -97,6 +102,9 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
97
102
  oRm.close("div");
98
103
  this.renderMobileSwatches(oRm, oControl);
99
104
  oRm.close("div");
105
+ } else if (bHighZoom) { //mobile 200% zoom
106
+ this.renderSliders(oRm, oControl);
107
+ this.renderDesktopSwatchesAndHexFields(oRm, oControl);
100
108
  } else { //desktop or tablet
101
109
  this.renderSliders(oRm, oControl);
102
110
  this.renderDesktopSwatchesAndHexFields(oRm, oControl);
@@ -105,7 +113,7 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
105
113
  oRm.openStart("div");
106
114
  oRm.class("sapUiCPDefaultWrapper");
107
115
  oRm.openEnd();
108
- if (Device.system.phone) {
116
+ if (Device.system.phone && !bHighZoom) {
109
117
  oRm.renderControl(oControl.getAggregation("_oHexField"));
110
118
  oRm.openStart("div");
111
119
  oRm.class("sapUiCPHexText");
@@ -210,8 +218,9 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
210
218
  };
211
219
 
212
220
  ColorPickerRenderer.renderSimplifiedColorPicker = function(oRm, oControl) {
221
+ var bHighZoom = oControl._isHighZoom();
213
222
  oRm.renderControl(oControl.getAggregation("_oCPBox"));
214
- if (Device.system.phone) {
223
+ if (Device.system.phone && !bHighZoom) {
215
224
  oRm.openStart("div");
216
225
  oRm.class("sapUiCPPhoneContent");
217
226
  oRm.openEnd();
@@ -232,6 +241,9 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
232
241
  oRm.close("div");
233
242
  oRm.close("div");
234
243
  oRm.close("div");
244
+ } else if (bHighZoom) { //mobile 200% zoom
245
+ oRm.renderControl(oControl.getAggregation("_oSlider"));
246
+ this.renderDesktopSwatchesAndHexFields(oRm, oControl);
235
247
  } else {
236
248
  oRm.renderControl(oControl.getAggregation("_oSlider"));
237
249
  this.renderDesktopSwatchesAndHexFields(oRm, oControl);
@@ -245,6 +257,14 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
245
257
  * @param {sap.ui.unified.ColorPicker} oControl an object representation of the control that should be rendered
246
258
  */
247
259
  ColorPickerRenderer.renderDesktopSwatchesAndHexFields = function(oRm, oControl) {
260
+ var bHighZoom = oControl._isHighZoom();
261
+
262
+ if (bHighZoom) {
263
+ oRm.openStart("div");
264
+ oRm.class("sapUiCPHexRow");
265
+ oRm.openEnd();
266
+ }
267
+
248
268
  oRm.openStart("div");
249
269
  oRm.class("sapUiCPComparisonWrapper");
250
270
  oRm.openEnd();
@@ -259,17 +279,31 @@ sap.ui.define(['./ColorPickerDisplayMode', "sap/ui/Device", "sap/ui/core/Lib"],
259
279
  oRm.openEnd();
260
280
  oRm.close("div");
261
281
  oRm.close("div");
262
- oRm.openStart("div");
263
- oRm.class("sapUiCPHexWrapper");
264
- oRm.openEnd();
265
- oRm.openStart("span");
266
- oRm.class("sapUiCPHexText");
267
- oRm.openEnd();
268
- oRm.text("Hex");
269
- oRm.close("span");
270
- oRm.close("div");
271
- oRm.renderControl(oControl.getAggregation("_oHexField"));
272
282
 
283
+ if (bHighZoom) {
284
+ oRm.openStart("div");
285
+ oRm.class("sapUiCPHexWrapper");
286
+ oRm.openEnd();
287
+ oRm.renderControl(oControl.getAggregation("_oHexField"));
288
+ oRm.openStart("span");
289
+ oRm.class("sapUiCPHexText");
290
+ oRm.openEnd();
291
+ oRm.text("Hex");
292
+ oRm.close("span");
293
+ oRm.close("div");
294
+ oRm.close("div"); // close sapUiCPHexRow
295
+ } else {
296
+ oRm.openStart("div");
297
+ oRm.class("sapUiCPHexWrapper");
298
+ oRm.openEnd();
299
+ oRm.openStart("span");
300
+ oRm.class("sapUiCPHexText");
301
+ oRm.openEnd();
302
+ oRm.text("Hex");
303
+ oRm.close("span");
304
+ oRm.close("div");
305
+ oRm.renderControl(oControl.getAggregation("_oHexField"));
306
+ }
273
307
  };
274
308
 
275
309
  /**