@openui5/sap.ui.unified 1.127.0 → 1.128.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 (51) 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 +1 -1
  4. package/src/sap/ui/unified/CalendarAppointment.js +1 -1
  5. package/src/sap/ui/unified/CalendarDateInterval.js +1 -1
  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 +20 -8
  11. package/src/sap/ui/unified/CalendarRowRenderer.js +57 -6
  12. package/src/sap/ui/unified/CalendarTimeInterval.js +1 -1
  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 +1 -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/MenuItemGroup.js +1 -1
  28. package/src/sap/ui/unified/MenuRenderer.js +1 -1
  29. package/src/sap/ui/unified/MenuTextFieldItem.js +1 -1
  30. package/src/sap/ui/unified/NonWorkingPeriod.js +110 -0
  31. package/src/sap/ui/unified/RecurringNonWorkingPeriod.js +82 -0
  32. package/src/sap/ui/unified/Shell.js +1 -1
  33. package/src/sap/ui/unified/ShellHeadItem.js +1 -1
  34. package/src/sap/ui/unified/ShellHeadUserItem.js +1 -1
  35. package/src/sap/ui/unified/ShellLayout.js +1 -1
  36. package/src/sap/ui/unified/ShellOverlay.js +1 -1
  37. package/src/sap/ui/unified/SplitContainer.js +1 -1
  38. package/src/sap/ui/unified/TimeRange.js +81 -0
  39. package/src/sap/ui/unified/calendar/DatesRow.js +1 -1
  40. package/src/sap/ui/unified/calendar/Header.js +1 -1
  41. package/src/sap/ui/unified/calendar/IndexPicker.js +1 -1
  42. package/src/sap/ui/unified/calendar/Month.js +1 -1
  43. package/src/sap/ui/unified/calendar/MonthPicker.js +1 -1
  44. package/src/sap/ui/unified/calendar/MonthsRow.js +1 -1
  45. package/src/sap/ui/unified/calendar/OneMonthDatesRow.js +1 -1
  46. package/src/sap/ui/unified/calendar/RecurrenceUtils.js +146 -0
  47. package/src/sap/ui/unified/calendar/TimesRow.js +1 -1
  48. package/src/sap/ui/unified/calendar/YearPicker.js +1 -1
  49. package/src/sap/ui/unified/calendar/YearRangePicker.js +1 -1
  50. package/src/sap/ui/unified/library.js +42 -3
  51. package/src/sap/ui/unified/themes/base/Calendar.less +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.unified",
3
- "version": "1.127.0",
3
+ "version": "1.128.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/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.ui.core": "1.127.0"
17
+ "@openui5/sap.ui.core": "1.128.0"
18
18
  }
19
19
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.127.0</version>
9
+ <version>1.128.0</version>
10
10
 
11
11
  <documentation>Unified controls intended for both, mobile and desktop scenarios</documentation>
12
12
 
@@ -78,7 +78,7 @@ sap.ui.define([
78
78
  * Basic Calendar.
79
79
  * This calendar is used for DatePickers
80
80
  * @extends sap.ui.core.Control
81
- * @version 1.127.0
81
+ * @version 1.128.0
82
82
  *
83
83
  * @constructor
84
84
  * @public
@@ -43,7 +43,7 @@ sap.ui.define([
43
43
  *
44
44
  * Applications could inherit from this element to add own fields.
45
45
  * @extends sap.ui.unified.DateTypeRange
46
- * @version 1.127.0
46
+ * @version 1.128.0
47
47
  *
48
48
  * @constructor
49
49
  * @public
@@ -59,7 +59,7 @@ sap.ui.define([
59
59
  * @class
60
60
  * <code>CalendarDateInterval</code> only visualizes the dates in a one-line interval and allows the selection of a single day.
61
61
  * @extends sap.ui.unified.Calendar
62
- * @version 1.127.0
62
+ * @version 1.128.0
63
63
  *
64
64
  * @constructor
65
65
  * @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.127.0
60
+ * @version 1.128.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.127.0
24
+ * @version 1.128.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.127.0
68
+ * @version 1.128.0
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.127.0
60
+ * @version 1.128.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.127.0
87
+ * @version 1.128.0
88
88
  *
89
89
  * @constructor
90
90
  * @public
@@ -249,6 +249,12 @@ sap.ui.define([
249
249
  */
250
250
  appointments : {type : "sap.ui.unified.CalendarAppointment", defaultClass: CalendarAppointment, multiple : true, singularName : "appointment"},
251
251
 
252
+ /**
253
+ * Sets the provided period to be displayed as a non-working.
254
+ * @since 1.128
255
+ */
256
+ nonWorkingPeriods: {type: "sap.ui.unified.NonWorkingPeriod", multiple: true},
257
+
252
258
  /**
253
259
  * Appointments to be displayed in the top of the intervals. The <code>intervalHeaders</code> are used to visualize
254
260
  * public holidays and similar things.
@@ -1680,9 +1686,10 @@ sap.ui.define([
1680
1686
  var oApp;
1681
1687
  var sAriaDescribedBy;
1682
1688
  var sAriaDescribedByNotSelected;
1683
- var sAriaDescribedBySelected;
1689
+ var sCurrentAriaDescribedBy;
1690
+ var sCurrentAriaDescribedBySelected;
1691
+ var sCurrentAriaDescribedByNotSelected;
1684
1692
  var sSelectedTextId = InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT_SELECTED");
1685
- var sUnselectedTextId = InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT_UNSELECTED");
1686
1693
  var bSelect = !oAppointment.getSelected();
1687
1694
 
1688
1695
  if (bRemoveOldSelection) {
@@ -1702,24 +1709,29 @@ sap.ui.define([
1702
1709
  }
1703
1710
  }
1704
1711
  sAriaDescribedBy = oApp.$().attr("aria-describedby");
1705
- sAriaDescribedByNotSelected = sAriaDescribedBy ? sAriaDescribedBy.replace(sSelectedTextId, sUnselectedTextId) : "";
1712
+ sAriaDescribedByNotSelected = sAriaDescribedBy ? sAriaDescribedBy.replace(sSelectedTextId, "") : "";
1706
1713
  oApp.$().attr("aria-describedby", sAriaDescribedByNotSelected);
1707
1714
  }
1708
1715
  }
1709
1716
  }
1710
1717
 
1711
- sAriaDescribedBySelected = oAppointment.$().attr("aria-describedby").replace(sUnselectedTextId, sSelectedTextId).trim();
1712
- sAriaDescribedByNotSelected = oAppointment.$().attr("aria-describedby").replace(sSelectedTextId, sUnselectedTextId).trim();
1718
+ sCurrentAriaDescribedBy = oAppointment.$().attr("aria-describedby");
1719
+ sCurrentAriaDescribedByNotSelected = (sCurrentAriaDescribedBy ? sCurrentAriaDescribedBy.replace(sSelectedTextId, "") : "").trim();
1720
+ sCurrentAriaDescribedBySelected = (sCurrentAriaDescribedByNotSelected + " " + sSelectedTextId).trim();
1713
1721
 
1714
1722
  if (oAppointment.getSelected()) {
1715
1723
  oAppointment.setProperty("selected", false, true); // do not invalidate CalendarRow
1716
1724
  oAppointment.$().removeClass("sapUiCalendarAppSel");
1717
- oAppointment.$().attr("aria-describedby", sAriaDescribedByNotSelected);
1725
+ if (sCurrentAriaDescribedByNotSelected) {
1726
+ oAppointment.$().attr("aria-describedby", sCurrentAriaDescribedByNotSelected);
1727
+ } else {
1728
+ oAppointment.$().removeAttr("aria-describedby");
1729
+ }
1718
1730
  _removeAllAppointmentSelections(this, bRemoveOldSelection);
1719
1731
  } else {
1720
1732
  oAppointment.setProperty("selected", true, true); // do not invalidate CalendarRow
1721
1733
  oAppointment.$().addClass("sapUiCalendarAppSel");
1722
- oAppointment.$().attr("aria-describedby", sAriaDescribedBySelected);
1734
+ oAppointment.$().attr("aria-describedby", sCurrentAriaDescribedBySelected);
1723
1735
  _removeAllAppointmentSelections(this, bRemoveOldSelection);
1724
1736
  }
1725
1737
  // removes or adds the selected appointments from this.aSelectedAppointments
@@ -13,7 +13,8 @@ sap.ui.define([
13
13
  'sap/ui/Device',
14
14
  'sap/ui/unified/library',
15
15
  'sap/ui/core/InvisibleText',
16
- "sap/ui/core/date/UI5Date",
16
+ 'sap/ui/core/date/UI5Date',
17
+ 'sap/ui/unified/calendar/RecurrenceUtils',
17
18
  'sap/base/Log',
18
19
  // side effect: required by RenderManager#icon
19
20
  'sap/ui/core/IconPool'
@@ -28,6 +29,7 @@ sap.ui.define([
28
29
  library,
29
30
  InvisibleText,
30
31
  UI5Date,
32
+ RecurrenceUtils,
31
33
  Log
32
34
  ) {
33
35
  "use strict";
@@ -264,6 +266,11 @@ sap.ui.define([
264
266
  };
265
267
 
266
268
  CalendarRowRenderer.renderInterval = function(oRm, oRow, iInterval, iWidth, aIntervalHeaders, aNonWorkingItems, iStartOffset, iNonWorkingMax, aNonWorkingSubItems, iSubStartOffset, iNonWorkingSubMax, bFirstOfType, bLastOfType){
269
+ const oStartDateInterval = oRow.getStartDate();
270
+ const oEndDate = UI5Date.getInstance(oRow.getStartDate());
271
+ oEndDate.setDate(oEndDate.getDate() + 1);
272
+ const oCellStartDate = UI5Date.getInstance(oStartDateInterval);
273
+ oCellStartDate.setHours(iInterval + iStartOffset);
267
274
 
268
275
  var sId = oRow.getId() + "-AppsInt" + iInterval;
269
276
  var i;
@@ -271,6 +278,17 @@ sap.ui.define([
271
278
  var iMonth = oRow.getStartDate().getMonth();
272
279
  var iDaysLength = UI5Date.getInstance(oRow.getStartDate().getFullYear(), iMonth + 1, 0).getDate();
273
280
 
281
+ const aFilteredNonWorkingRange = oRow.getIntervalType() !== CalendarIntervalType.Hour ?
282
+ [] :
283
+ oRow.getNonWorkingPeriods().filter((oPeriod) => {
284
+ const hasOccurrenceOnDate = RecurrenceUtils.hasOccurrenceOnDate.bind(oPeriod);
285
+ return hasOccurrenceOnDate(oStartDateInterval);
286
+ });
287
+
288
+ const aFilteredItemsForCurrentHours = aFilteredNonWorkingRange.filter((oPeriod) => {
289
+ return oPeriod.hasNonWorkingAtHour(oCellStartDate);
290
+ });
291
+
274
292
  oRm.openStart("div", sId);
275
293
  oRm.class("sapUiCalendarRowAppsInt");
276
294
  oRm.style("width", iWidth + "%");
@@ -298,6 +316,16 @@ sap.ui.define([
298
316
  this.writeCustomAttributes(oRm, oRow);
299
317
  oRm.openEnd(); // div element
300
318
 
319
+ if (aFilteredItemsForCurrentHours.length) {
320
+ RecurrenceUtils.getWorkingAndNonWorkingSegments(oCellStartDate, aFilteredItemsForCurrentHours).forEach((oHourParts) => {
321
+ if (oHourParts.type === "working") {
322
+ this.renderWorkingParts(oRm, oHourParts.duration);
323
+ } else {
324
+ this.renderNonWorkingParts(oRm, oHourParts.duration);
325
+ }
326
+ });
327
+ }
328
+
301
329
  if (bShowIntervalHeaders) {
302
330
  oRm.openStart("div");
303
331
  oRm.class("sapUiCalendarRowAppsIntHead");
@@ -511,11 +539,11 @@ sap.ui.define([
511
539
  var bAppointmentSelected = oAppointment.getSelected();
512
540
  var mAccProps = {
513
541
  role: "listitem",
514
- labelledby: {value: InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT") + " " + sId + "-Descr", append: true},
515
- describedby: {value: bAppointmentSelected
516
- ? InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT_SELECTED")
517
- : InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT_UNSELECTED"),
518
- append: true},
542
+ labelledby: {
543
+ value: `${InvisibleText.getStaticId("sap.m", "ACC_CTR_TYPE_LISTITEM")} ${InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT")} ${sId.concat("-Descr")}`,
544
+ append: true
545
+ },
546
+ describedby: {value: bAppointmentSelected ? InvisibleText.getStaticId("sap.ui.unified", "APPOINTMENT_SELECTED") : "", append: true},
519
547
  selected: null
520
548
  };
521
549
  var iRowCount = oRow._getAppointmentRowCount(oAppointmentInfo, bReducedHeight);
@@ -881,6 +909,29 @@ sap.ui.define([
881
909
  return aResult;
882
910
  };
883
911
 
912
+ CalendarRowRenderer.renderWorkingParts = function (oRm, iDuration){
913
+ const iWidth = iDuration / 60 * 100;
914
+
915
+ oRm.openStart("div");
916
+ oRm.style("width", `${iWidth}%`);
917
+ oRm.style("height", "inherit" );
918
+ oRm.style("display","inline-block");
919
+ oRm.openEnd();
920
+ oRm.close("div");
921
+ };
922
+
923
+ CalendarRowRenderer.renderNonWorkingParts = function (oRm, iDuration){
924
+ const iWidth = iDuration / 60 * 100;
925
+
926
+ oRm.openStart("div");
927
+ oRm.style("width", `${iWidth}%`);
928
+ oRm.class("sapUiCalendarRowAppsNoWork");
929
+ oRm.style("height", "inherit" );
930
+ oRm.style("display","inline-block");
931
+ oRm.openEnd();
932
+ oRm.close("div");
933
+ };
934
+
884
935
  /**
885
936
  * Retrieves text for given CalendarDayType based on given type and legend items.
886
937
  * @param {sap.ui.unified.CalendarDayType} sType the type to obtain information about
@@ -72,7 +72,7 @@ sap.ui.define([
72
72
  * @class
73
73
  * Calendar with granularity of time items displayed in one line.
74
74
  * @extends sap.ui.core.Control
75
- * @version 1.127.0
75
+ * @version 1.128.0
76
76
  *
77
77
  * @constructor
78
78
  * @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.127.0
42
+ * @version 1.128.0
43
43
  *
44
44
  * @constructor
45
45
  * @private
@@ -69,7 +69,7 @@ sap.ui.define([
69
69
  * @extends sap.ui.core.Control
70
70
  *
71
71
  * @author SAP SE
72
- * @version 1.127.0
72
+ * @version 1.128.0
73
73
  *
74
74
  * @constructor
75
75
  * @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.127.0
52
+ * @version 1.128.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.127.0
34
+ * @version 1.128.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.127.0
61
+ * @version 1.128.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.127.0
17
+ * @version 1.128.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.127.0
23
+ * @version 1.128.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.127.0
28
+ * @version 1.128.0
29
29
  *
30
30
  * @constructor
31
31
  * @public
@@ -73,7 +73,7 @@ sap.ui.define([
73
73
  * @implements sap.ui.core.IFormContent, sap.ui.unified.IProcessableBlobs
74
74
  *
75
75
  * @author SAP SE
76
- * @version 1.127.0
76
+ * @version 1.128.0
77
77
  *
78
78
  * @constructor
79
79
  * @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.127.0
25
+ * @version 1.128.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.127.0
23
+ * @version 1.128.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.127.0
73
+ * @version 1.128.0
74
74
  * @since 1.21.0
75
75
  *
76
76
  * @constructor
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @implements sap.ui.unified.IMenuItem
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.127.0
40
+ * @version 1.128.0
41
41
  * @since 1.21.0
42
42
  *
43
43
  * @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.127.0
26
+ * @version 1.128.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.127.0
33
+ * @version 1.128.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.127.0
18
+ * @version 1.128.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.127.0
56
+ * @version 1.128.0
57
57
  * @since 1.21.0
58
58
  *
59
59
  * @constructor
@@ -0,0 +1,110 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+ //Provides control sap.ui.unified.NonWorkingPeriod.
7
+ sap.ui.define([
8
+ 'sap/ui/core/Element',
9
+ 'sap/ui/core/date/UI5Date',
10
+ 'sap/base/Log'
11
+ ],
12
+ function(
13
+ Element,
14
+ UI5Date,
15
+ Log
16
+ ) {
17
+ "use strict";
18
+ /**
19
+ * Constructor for a new NonWorkingPeriod.
20
+ *
21
+ * @param {string} [sId] ID for the new control, generated automatically if no ID is given
22
+ * @param {object} [mSettings] initial settings for the new control
23
+ *
24
+ * @class
25
+ * NonWorkingPeriod
26
+ * @extends sap.ui.core.Element
27
+ * @version 1.128.0
28
+ *
29
+ * @constructor
30
+ * @public
31
+ * @since 1.27.0
32
+ * @experimental Since version 1.127.0.
33
+ * @alias sap.ui.unified.NonWorkingPeriod
34
+ */
35
+ var NonWorkingPeriod = Element.extend("sap.ui.unified.NonWorkingPeriod", /** @lends sap.ui.unified.NonWorkingPeriod.prototype */ { metadata : {
36
+ library : "sap.ui.unified",
37
+ properties : {
38
+ /**
39
+ * Determines the day to which the timeRange refers. This object must be a UI5Date or JavaScript Date object.
40
+ */
41
+ date : {type : "object", group : "Data"}
42
+ },
43
+ defaultAggregation: "timeRange",
44
+ aggregations: {
45
+ /**
46
+ * Defines the hours range for the non-working period.
47
+ */
48
+ timeRange: {
49
+ type: "sap.ui.unified.TimeRange",
50
+ multiple: false
51
+ }
52
+ }
53
+ }});
54
+
55
+ /**
56
+ * Returns a composed start date.
57
+ * @private
58
+ * @returns {Date|module:sap/ui/core/date/UI5Date} Returns a date that is composed of the start date to which the non-working period refers,
59
+ * replacing the hours, minutes, and seconds, respectively with the current hours, minutes, and seconds.
60
+ */
61
+ NonWorkingPeriod.prototype.getStartDate = function(){
62
+ if (!this.getDate()) {
63
+ return Log.error("Enter a valid date.");
64
+ }
65
+
66
+ const oStartDate = UI5Date.getInstance(this.getDate());
67
+ const oTimeRangeStartDate = this.getTimeRange().getStartDate();
68
+
69
+ oStartDate.setHours(oTimeRangeStartDate.getHours(), oTimeRangeStartDate.getMinutes(), oTimeRangeStartDate.getMilliseconds());
70
+ return oStartDate;
71
+ };
72
+
73
+ /**
74
+ * Returns a composed end date.
75
+ * @private
76
+ * @returns {Date|module:sap/ui/core/date/UI5Date} Returns a date that is composed of the end date to which the non-working period refers,
77
+ * replacing the hours, minutes, and seconds, respectively with the current hours, minutes, and seconds.
78
+ */
79
+ NonWorkingPeriod.prototype.getEndDate = function(){
80
+ if (!this.getDate()) {
81
+ return Log.error("Enter a valid date.");
82
+ }
83
+
84
+ const oEndDate = UI5Date.getInstance(this.getDate());
85
+ const oEndDateTimeRange = this.getTimeRange().getEndDate();
86
+
87
+ oEndDate.setHours(oEndDateTimeRange.getHours(), oEndDateTimeRange.getMinutes(), oEndDateTimeRange.getMilliseconds());
88
+ return oEndDate;
89
+ };
90
+
91
+ /**
92
+ * Returns the duration of the non-working period.
93
+ * @public
94
+ * @returns {int} returns a number that represents the duration of a calendar item in minutes
95
+ */
96
+ NonWorkingPeriod.prototype.getDurationInMinutes = function () {
97
+ return Math.abs(this.getStartDate().getTime() - this.getEndDate().getTime()) / 1000 / 60;
98
+ };
99
+
100
+ /**
101
+ * Determines whether the current instance has recurrence or not.
102
+ * @return {boolean} The result is <code>false</code> when the instance has no recurrence.
103
+ * @private
104
+ */
105
+ NonWorkingPeriod.prototype.isRecurring = function () {
106
+ return false;
107
+ };
108
+
109
+ return NonWorkingPeriod;
110
+ });
@@ -0,0 +1,82 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides control sap.ui.unified.RecurringNonWorkingPeriod.
8
+ sap.ui.define([
9
+ "./NonWorkingPeriod"
10
+ ],
11
+ function(
12
+ NonWorkingPeriod
13
+ ) {
14
+ "use strict";
15
+
16
+ /**
17
+ * Constructor for a new <code>RecurringNonWorkingPeriod</code>.
18
+ *
19
+ * @param {string} [sId] ID for the new control, generated automatically if no ID is given
20
+ * @param {object} [mSettings] Initial settings for the new control
21
+ *
22
+ * @class
23
+ * A <code>RecurringNonWorkingPeriod</code> for use in a <code>PlanningCalendar</code> and <code>SinglePlanningCalendar</code>.
24
+ *
25
+ * Applications can inherit from this element to add own fields.
26
+ * @extends sap.ui.unified.
27
+ * @version 1.128.0
28
+ *
29
+ * @constructor
30
+ * @public
31
+ * @since 1.127.0
32
+ * @experimental Since version 1.127.0.
33
+ * @alias sap.ui.unified.RecurringNonWorkingPeriod
34
+ */
35
+ var RecurringNonWorkingPeriod = NonWorkingPeriod.extend("sap.ui.unified.RecurringNonWorkingPeriod", /** @lends sap.ui.unified.RecurringNonWorkingPeriod.prototype */ { metadata : {
36
+
37
+ library : "sap.ui.unified",
38
+ properties : {
39
+ /**
40
+ * The recurrenceType determines the pattern of recurrence for a given calendar item.
41
+ */
42
+ recurrenceType: {type: "sap.ui.unified.RecurrenceType", group: "Misc"},
43
+
44
+ /**
45
+ * Determines the end date of the calendar item, as a UI5Date or JavaScript Date object. It is considered as a local date.
46
+ */
47
+ recurrenceEndDate: {type : "object", group : "Data"},
48
+
49
+ /**
50
+ * The recurrencePattern is an integer value which, in combination with the recurrenceType, sets the recurrence frequency for a calendar item.
51
+ * For example, if the recurrenceType is set to "Daily" and the recurrencePattern is set to 1, it signifies that repetition is set for every day.
52
+ * If the recurrencePattern is set to 3, this would imply the calendar item is recurring once for every three days.
53
+ */
54
+ recurrencePattern: {type : "int", group : "Behavior", defaultValue : 1}
55
+ }
56
+ }});
57
+
58
+ /**
59
+ * Evaluates whether there is an occurrence for the given date and hours.
60
+ * @param {Date|module:sap/ui/core/date/UI5Date} oDate A date instance
61
+ * @return {boolean} True if there is an occurrence for these hours
62
+ * @private
63
+ */
64
+ RecurringNonWorkingPeriod.prototype.hasNonWorkingAtHour = function (oDate) {
65
+ const iStartHours = this.getStartDate().getHours();
66
+ const iTimeCalendarItem = iStartHours + (this.getStartDate().getMinutes() + this.getDurationInMinutes()) / 60;
67
+ const iTimeData = oDate.getHours() + oDate.getMinutes() / 60;
68
+
69
+ return oDate.getHours() === iStartHours || (iTimeCalendarItem >= iTimeData && iStartHours <= oDate.getHours());
70
+ };
71
+
72
+ /**
73
+ * Determines whether the current instance has recurrence or not.
74
+ * @return {boolean} The result is <code>true</code> when the instance has recurrence.
75
+ * @private
76
+ */
77
+ RecurringNonWorkingPeriod.prototype.isRecurring = function () {
78
+ return true;
79
+ };
80
+
81
+ return RecurringNonWorkingPeriod;
82
+ });
@@ -25,7 +25,7 @@ sap.ui.define(['./ShellHeader', './ShellLayout', './library', './ShellRenderer']
25
25
  * @extends sap.ui.unified.ShellLayout
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.127.0
28
+ * @version 1.128.0
29
29
  *
30
30
  * @constructor
31
31
  * @public
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.core.Element
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.127.0
31
+ * @version 1.128.0
32
32
  *
33
33
  * @constructor
34
34
  * @public
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @extends sap.ui.core.Element
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.127.0
30
+ * @version 1.128.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -56,7 +56,7 @@ sap.ui.define([
56
56
  * @extends sap.ui.core.Control
57
57
  *
58
58
  * @author SAP SE
59
- * @version 1.127.0
59
+ * @version 1.128.0
60
60
  *
61
61
  * @constructor
62
62
  * @public
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * @extends sap.ui.core.Control
47
47
  *
48
48
  * @author SAP SE
49
- * @version 1.127.0
49
+ * @version 1.128.0
50
50
  *
51
51
  * @constructor
52
52
  * @public
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.core.Control
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.127.0
37
+ * @version 1.128.0
38
38
  *
39
39
  * @constructor
40
40
  * @public
@@ -0,0 +1,81 @@
1
+
2
+ /*!
3
+ * OpenUI5
4
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
5
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
6
+ */
7
+ //Provides control sap.ui.unified.TimeRange.
8
+ sap.ui.define([
9
+ 'sap/ui/core/Element',
10
+ 'sap/ui/core/format/DateFormat',
11
+ 'sap/ui/core/Configuration',
12
+ "sap/base/i18n/Formatting",
13
+ 'sap/ui/core/Locale'
14
+ ],
15
+ function(Element, DateFormat, Configuration, Formatting, Locale) {
16
+ "use strict";
17
+ /**
18
+ * Constructor for a new TimeRange.
19
+ *
20
+ * @param {string} [sId] ID for the new control, generated automatically if no ID is given
21
+ * @param {object} [mSettings] initial settings for the new control
22
+ *
23
+ * @class
24
+ * Time range for use in <code>NonWorkingPeriod</code>
25
+ * @extends sap.ui.core.Element
26
+ * @version 1.128.0
27
+ *
28
+ * @constructor
29
+ * @public
30
+ * @since 1.127.0
31
+ * @experimental Since version 1.127.0.
32
+ * @alias sap.ui.unified.TimeRange
33
+ */
34
+ var TimeRange = Element.extend("sap.ui.unified.TimeRange", /** @lends sap.ui.unified.TimeRange.prototype */ { metadata : {
35
+ library : "sap.ui.unified",
36
+ properties : {
37
+ /**
38
+ * Start time for a time range. This must be a String.
39
+ */
40
+ start: {type : "string", group : "Misc", defaultValue : null},
41
+ /**
42
+ * End time for a time range. This must be a String.
43
+ */
44
+ end : {type : "string", group : "Misc", defaultValue : null},
45
+ /**
46
+ * Determines the format of the startTime and endTime
47
+ *
48
+ * <b>Note:</b> a time pattern in LDML format. It is not verified whether the pattern only represents a time.
49
+ */
50
+ valueFormat : {type: "string", group : "Misc", defaultValue: "hh:mm"}
51
+ }
52
+ }});
53
+
54
+
55
+ TimeRange.prototype._getFormatInstance = function(){
56
+ const oArguments = {pattern: this.getValueFormat(), strictParsing: true};
57
+ return DateFormat.getTimeInstance(oArguments, new Locale(Formatting.getLanguageTag()));
58
+ };
59
+
60
+ /**
61
+ * Get start date for a time range.
62
+ * From this date, only hours, minutes, seconds, and milliseconds are used.
63
+ * @public
64
+ * @returns {Date|module:sap/ui/core/date/UI5Date} [oDate] A date instance
65
+ */
66
+ TimeRange.prototype.getStartDate = function () {
67
+ return this._getFormatInstance().parse(this.getStart());
68
+ };
69
+
70
+ /**
71
+ * Get end date for a time range.
72
+ * From this date, only hours, minutes, seconds, and milliseconds are used.
73
+ * @public
74
+ * @returns {Date|module:sap/ui/core/date/UI5Date} [oDate] A date instance
75
+ */
76
+ TimeRange.prototype.getEndDate = function () {
77
+ return this._getFormatInstance().parse(this.getEnd());
78
+ };
79
+
80
+ return TimeRange;
81
+ });
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * If used inside the calendar the properties and aggregation are directly taken from the parent
39
39
  * (To not duplicate and sync DateRanges and so on...)
40
40
  * @extends sap.ui.unified.calendar.Month
41
- * @version 1.127.0
41
+ * @version 1.128.0
42
42
  *
43
43
  * @constructor
44
44
  * @public
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  *
28
28
  * <b>Note:</b> This is used inside the calendar. Not for standalone usage
29
29
  * @extends sap.ui.core.Control
30
- * @version 1.127.0
30
+ * @version 1.128.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * This control serves for picking an item from a grid with items which are relative periods in Plannig Calendar.
33
33
  * This is used inside the sap.m.PlanningCalendar relative views. Not for stand alone usage.
34
34
  * @extends sap.ui.core.Control
35
- * @version 1.127.0
35
+ * @version 1.128.0
36
36
  *
37
37
  * @constructor
38
38
  * @private
@@ -83,7 +83,7 @@ sap.ui.define([
83
83
  * If used inside the calendar the properties and aggregation are directly taken from the parent
84
84
  * (To not duplicate and sync DateRanges and so on...)
85
85
  * @extends sap.ui.core.Control
86
- * @version 1.127.0
86
+ * @version 1.128.0
87
87
  *
88
88
  * @constructor
89
89
  * @public
@@ -55,7 +55,7 @@ sap.ui.define([
55
55
  * renders a MonthPicker with ItemNavigation
56
56
  * This is used inside the calendar. Not for stand alone usage
57
57
  * @extends sap.ui.core.Control
58
- * @version 1.127.0
58
+ * @version 1.128.0
59
59
  *
60
60
  * @constructor
61
61
  * @public
@@ -66,7 +66,7 @@ sap.ui.define([
66
66
  * The MontsRow works with UI5Date or JavaScript Date objects, but only the month and the year are used to display and interact.
67
67
  * As representation for a month, the 1st of the month will always be returned in the API.
68
68
  * @extends sap.ui.core.Control
69
- * @version 1.127.0
69
+ * @version 1.128.0
70
70
  *
71
71
  * @constructor
72
72
  * @public
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * Other usages are not supported.
35
35
  *
36
36
  * @extends sap.ui.unified.calendar.DatesRow
37
- * @version 1.127.0
37
+ * @version 1.128.0
38
38
  *
39
39
  * @constructor
40
40
  * @private
@@ -0,0 +1,146 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // package documentation
8
+ /**
9
+ * Collection of utility functions to handle recurrence related operations.
10
+ *
11
+ * @namespace
12
+ * @name sap.ui.unified.recurring
13
+ * @public
14
+ */
15
+
16
+ // Provides class sap.ui.unified.calendar.RecurrenceUtils
17
+ sap.ui.define([
18
+ 'sap/ui/core/date/UI5Date'
19
+ ],
20
+ function(
21
+ UI5Date
22
+ ) {
23
+ "use strict";
24
+
25
+ // Static class
26
+
27
+ /**
28
+ * @alias sap.ui.unified.RecurrenceUtils
29
+ * @namespace
30
+ * @private
31
+ */
32
+ var RecurrenceUtils = {};
33
+
34
+ const PERIOD_TYPE = {
35
+ "WORKING_PERIOD" : "working",
36
+ "NON_WORKING_PERIOD": "non-working"
37
+ };
38
+
39
+ /**
40
+ * Evaluates whether there is an occurrence for a given date.
41
+ * The method will be used by <code>RecurringNonWorkingPeriod</code> by changing
42
+ * the context to that of <code>RecurringNonWorkingPeriod</code>
43
+ * @param {Date|module:sap/ui/core/date/UI5Date} oDate A date instance
44
+ * @return {boolean} True if there is an occurrence for this day
45
+ * @private
46
+ * @ui5-restricted sap.ui.unified.RecurringNonWorkingPeriod
47
+ */
48
+ RecurrenceUtils.hasOccurrenceOnDate = function (oDate) {
49
+ if (this?.getRecurrenceType() !== "Daily") {
50
+ return false;
51
+ }
52
+
53
+ const oStartDate = UI5Date.getInstance(this.getStartDate());
54
+ const oCurrentDate = UI5Date.getInstance(oDate);
55
+ oStartDate.setHours(0,0,0);
56
+ oCurrentDate.setHours(0,0,0);
57
+
58
+ const iDayInMilliseconds = 24 * 60 * 60 * 1000;
59
+ const isDateInRange = oCurrentDate >= oStartDate && oCurrentDate <= this.getRecurrenceEndDate();
60
+ const isWithCorrectPattern = ((oCurrentDate.getTime() - oStartDate.getTime()) / iDayInMilliseconds) % this.getRecurrencePattern() === 0;
61
+
62
+ return isDateInRange && isWithCorrectPattern;
63
+ };
64
+
65
+ RecurrenceUtils.calculateDurationInCell = function (oNonWorkingPart, oCellStartDate, iCurrentPointInMinutes){
66
+ const oNonWorkingPartDate = oNonWorkingPart.getStartDate();
67
+ const iMinutesInOneHours = 60;
68
+ let iDuration = oNonWorkingPart.getDurationInMinutes();
69
+
70
+ if (oNonWorkingPartDate.getHours() < oCellStartDate.getHours()) {
71
+ const iTimeCell = oCellStartDate.getHours() * iMinutesInOneHours + oCellStartDate.getMinutes();
72
+ const iTimePart = oNonWorkingPartDate.getHours() * iMinutesInOneHours + oNonWorkingPartDate.getMinutes();
73
+ iDuration -= (iTimeCell - iTimePart);
74
+ } else if (oNonWorkingPartDate.getHours() === oCellStartDate.getHours() && oNonWorkingPartDate.getMinutes() > 0) {
75
+ iDuration = oNonWorkingPart.getDurationInMinutes() > 60 ? iMinutesInOneHours - iCurrentPointInMinutes : oNonWorkingPart.getDurationInMinutes();
76
+ } else {
77
+ iDuration = iMinutesInOneHours - iCurrentPointInMinutes;
78
+ }
79
+
80
+ return iDuration;
81
+ };
82
+
83
+ /**
84
+ * Determines what portion of a calendar cell (representing one hour) is filled with non-working time and what portion is filled with working time.
85
+ * @param {Date|module:sap/ui/core/date/UI5Date} oCellStartDate A date instance for the current cell
86
+ * @param {Array<sap.ui.unified.NonWorkingPeriod | sap.ui.unified.RecurringNonWorkingPeriod>} aNonWorkingForCurrentHours An array of non-working periods
87
+ * @return {Array} An array of objects containing information about the type and duration of each part of the cell.
88
+ * @private
89
+ * @ui5-restricted sap.ui.unified.RecurringNonWorkingPeriod
90
+ */
91
+ RecurrenceUtils.getWorkingAndNonWorkingSegments = function (oCellStartDate, aNonWorkingForCurrentHours) {
92
+ const aCellInfo = [];
93
+ const iMinutesInOneHours = 60;
94
+
95
+ let iCurrentPointInMinutes = 0;
96
+ let index = 0;
97
+
98
+ while (iCurrentPointInMinutes < iMinutesInOneHours) {
99
+ const oNonWorkingPart = aNonWorkingForCurrentHours[index];
100
+ const oNonWorkingPartDate = oNonWorkingPart?.getStartDate();
101
+
102
+ if (!oNonWorkingPart) {
103
+ const iCurrentDuration = iMinutesInOneHours - iCurrentPointInMinutes;
104
+ aCellInfo.push({
105
+ type: PERIOD_TYPE.WORKING_PERIOD,
106
+ duration: iCurrentDuration
107
+ });
108
+
109
+ return aCellInfo;
110
+ }
111
+
112
+ let iDuration = this.calculateDurationInCell(oNonWorkingPart, oCellStartDate, iCurrentPointInMinutes);
113
+ const iStartTimeInMin = oNonWorkingPartDate.getMinutes();
114
+
115
+ if (iDuration > iMinutesInOneHours && oNonWorkingPartDate.getHours() < oCellStartDate.getHours()) {
116
+ aCellInfo.push({
117
+ type: PERIOD_TYPE.NON_WORKING_PERIOD,
118
+ duration: iMinutesInOneHours
119
+ });
120
+
121
+ return aCellInfo;
122
+ }
123
+
124
+ if (iStartTimeInMin === iCurrentPointInMinutes || oNonWorkingPartDate.getHours() < oCellStartDate.getHours()) {
125
+ aCellInfo.push({
126
+ type: PERIOD_TYPE.NON_WORKING_PERIOD,
127
+ duration: iDuration
128
+ });
129
+ index++;
130
+ } else {
131
+ iDuration = iStartTimeInMin - iCurrentPointInMinutes;
132
+ aCellInfo.push({
133
+ type: PERIOD_TYPE.WORKING_PERIOD,
134
+ duration: iDuration
135
+ });
136
+ }
137
+
138
+ iCurrentPointInMinutes += iDuration;
139
+ }
140
+
141
+ return aCellInfo;
142
+ };
143
+
144
+ return RecurrenceUtils;
145
+
146
+ }, /* bExport= */ true);
@@ -67,7 +67,7 @@ sap.ui.define([
67
67
  *
68
68
  * The TimesRow works with UI5Date or JavaScript Date objects.
69
69
  * @extends sap.ui.core.Control
70
- * @version 1.127.0
70
+ * @version 1.128.0
71
71
  *
72
72
  * @constructor
73
73
  * @public
@@ -62,7 +62,7 @@ sap.ui.define([
62
62
  * As in all date-time controls, all pubic JS Date objects that are given (e.g. <code>setDate()</code>) or read
63
63
  * (e.g. <code>getFirstRenderedDate</code>) with values which are considered as date objects in browser(local) timezone.
64
64
  * @extends sap.ui.core.Control
65
- * @version 1.127.0
65
+ * @version 1.128.0
66
66
  *
67
67
  * @constructor
68
68
  * @public
@@ -45,7 +45,7 @@ sap.ui.define([
45
45
  * @extends sap.ui.unified.calendar.YearPicker
46
46
  *
47
47
  * @author SAP SE
48
- * @version 1.127.0
48
+ * @version 1.128.0
49
49
  *
50
50
  * @constructor
51
51
  * @private
@@ -32,14 +32,14 @@ sap.ui.define([
32
32
  * @namespace
33
33
  * @alias sap.ui.unified
34
34
  * @author SAP SE
35
- * @version 1.127.0
35
+ * @version 1.128.0
36
36
  * @since 1.28
37
37
  * @public
38
38
  */
39
39
  var thisLib = Library.init({
40
40
  name : "sap.ui.unified",
41
41
  apiVersion: 2,
42
- version: "1.127.0",
42
+ version: "1.128.0",
43
43
  dependencies : ["sap.ui.core"],
44
44
  designtime: "sap/ui/unified/designtime/library.designtime",
45
45
  types: [
@@ -97,8 +97,11 @@ sap.ui.define([
97
97
  "sap.ui.unified.MenuItemBase",
98
98
  "sap.ui.unified.MenuItemGroup",
99
99
  "sap.ui.unified.MenuTextFieldItem",
100
+ "sap.ui.unified.NonWorkingPeriod",
101
+ "sap.ui.unified.RecurringNonWorkingPeriod",
100
102
  "sap.ui.unified.ShellHeadItem",
101
- "sap.ui.unified.ShellHeadUserItem"
103
+ "sap.ui.unified.ShellHeadUserItem",
104
+ "sap.ui.unified.TimeRange"
102
105
  ],
103
106
  extensions: {
104
107
  //Configuration used for rule loading of Support Assistant
@@ -353,6 +356,42 @@ sap.ui.define([
353
356
 
354
357
  DataType.registerEnum("sap.ui.unified.CalendarIntervalType", thisLib.CalendarIntervalType);
355
358
 
359
+ /**
360
+ * Interval types in a <code>RecurrenceType</code>.
361
+ *
362
+ * @enum {string}
363
+ * @public
364
+ * @since 1.127.0
365
+ */
366
+ thisLib.RecurrenceType = {
367
+ /**
368
+ * Daily recurrence pattern
369
+ *
370
+ * @since 1.127.0
371
+ */
372
+ Daily: "Daily",
373
+ /**
374
+ * Weekly recurrence pattern.
375
+ *
376
+ * @since 1.127.0
377
+ */
378
+ Weekly: "Weekly",
379
+ /**
380
+ * Monthly recurrence pattern.
381
+ *
382
+ * @since 1.127.0
383
+ */
384
+ Monthly: "Monthly",
385
+ /**
386
+ * Yearly recurrence pattern.
387
+ *
388
+ * @since 1.127.0
389
+ */
390
+ Yearly: "Yearly"
391
+ };
392
+
393
+ DataType.registerEnum("sap.ui.unified.RecurrenceType", thisLib.RecurrenceType);
394
+
356
395
  /**
357
396
  * Types of a calendar appointment display mode
358
397
  *
@@ -1094,7 +1094,6 @@ html.sap-phone [data-sap-ui-popup] .sapUiCal > .sapUiCalContent > .sapUiCalYearP
1094
1094
  }
1095
1095
  .sapUiCalHeadB1,
1096
1096
  .sapUiCalHeadB2 {
1097
- margin: inherit;
1098
1097
  width: 5.75rem;
1099
1098
  }
1100
1099
  &.sapUiCalIntLarge .sapUiCalHeadB1 {