@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.
- package/package.json +2 -2
- package/src/sap/ui/unified/.library +1 -1
- package/src/sap/ui/unified/Calendar.js +1 -1
- package/src/sap/ui/unified/CalendarAppointment.js +1 -1
- package/src/sap/ui/unified/CalendarDateInterval.js +1 -1
- package/src/sap/ui/unified/CalendarLegend.js +1 -1
- package/src/sap/ui/unified/CalendarLegendItem.js +1 -1
- package/src/sap/ui/unified/CalendarMonthInterval.js +1 -1
- package/src/sap/ui/unified/CalendarOneMonthInterval.js +1 -1
- package/src/sap/ui/unified/CalendarRow.js +20 -8
- package/src/sap/ui/unified/CalendarRowRenderer.js +57 -6
- package/src/sap/ui/unified/CalendarTimeInterval.js +1 -1
- package/src/sap/ui/unified/CalendarWeekInterval.js +1 -1
- package/src/sap/ui/unified/ColorPicker.js +1 -1
- package/src/sap/ui/unified/ColorPickerPopover.js +1 -1
- package/src/sap/ui/unified/ContentSwitcher.js +1 -1
- package/src/sap/ui/unified/Currency.js +1 -1
- package/src/sap/ui/unified/CurrencyRenderer.js +1 -1
- package/src/sap/ui/unified/DateRange.js +1 -1
- package/src/sap/ui/unified/DateTypeRange.js +1 -1
- package/src/sap/ui/unified/FileUploader.js +1 -1
- package/src/sap/ui/unified/FileUploaderParameter.js +1 -1
- package/src/sap/ui/unified/FileUploaderXHRSettings.js +1 -1
- package/src/sap/ui/unified/Menu.js +1 -1
- package/src/sap/ui/unified/MenuItem.js +1 -1
- package/src/sap/ui/unified/MenuItemBase.js +1 -1
- package/src/sap/ui/unified/MenuItemGroup.js +1 -1
- package/src/sap/ui/unified/MenuRenderer.js +1 -1
- package/src/sap/ui/unified/MenuTextFieldItem.js +1 -1
- package/src/sap/ui/unified/NonWorkingPeriod.js +110 -0
- package/src/sap/ui/unified/RecurringNonWorkingPeriod.js +82 -0
- package/src/sap/ui/unified/Shell.js +1 -1
- package/src/sap/ui/unified/ShellHeadItem.js +1 -1
- package/src/sap/ui/unified/ShellHeadUserItem.js +1 -1
- package/src/sap/ui/unified/ShellLayout.js +1 -1
- package/src/sap/ui/unified/ShellOverlay.js +1 -1
- package/src/sap/ui/unified/SplitContainer.js +1 -1
- package/src/sap/ui/unified/TimeRange.js +81 -0
- package/src/sap/ui/unified/calendar/DatesRow.js +1 -1
- package/src/sap/ui/unified/calendar/Header.js +1 -1
- package/src/sap/ui/unified/calendar/IndexPicker.js +1 -1
- package/src/sap/ui/unified/calendar/Month.js +1 -1
- package/src/sap/ui/unified/calendar/MonthPicker.js +1 -1
- package/src/sap/ui/unified/calendar/MonthsRow.js +1 -1
- package/src/sap/ui/unified/calendar/OneMonthDatesRow.js +1 -1
- package/src/sap/ui/unified/calendar/RecurrenceUtils.js +146 -0
- package/src/sap/ui/unified/calendar/TimesRow.js +1 -1
- package/src/sap/ui/unified/calendar/YearPicker.js +1 -1
- package/src/sap/ui/unified/calendar/YearRangePicker.js +1 -1
- package/src/sap/ui/unified/library.js +42 -3
- 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.
|
|
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.
|
|
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.
|
|
9
|
+
<version>1.128.0</version>
|
|
10
10
|
|
|
11
11
|
<documentation>Unified controls intended for both, mobile and desktop scenarios</documentation>
|
|
12
12
|
|
|
@@ -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.
|
|
62
|
+
* @version 1.128.0
|
|
63
63
|
*
|
|
64
64
|
* @constructor
|
|
65
65
|
* @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.
|
|
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.
|
|
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.
|
|
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
|
|
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,
|
|
1712
|
+
sAriaDescribedByNotSelected = sAriaDescribedBy ? sAriaDescribedBy.replace(sSelectedTextId, "") : "";
|
|
1706
1713
|
oApp.$().attr("aria-describedby", sAriaDescribedByNotSelected);
|
|
1707
1714
|
}
|
|
1708
1715
|
}
|
|
1709
1716
|
}
|
|
1710
1717
|
|
|
1711
|
-
|
|
1712
|
-
|
|
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
|
-
|
|
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",
|
|
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
|
-
|
|
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: {
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
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
|
|
@@ -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.
|
|
42
|
+
* @version 1.128.0
|
|
43
43
|
*
|
|
44
44
|
* @constructor
|
|
45
45
|
* @private
|
|
@@ -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.
|
|
28
|
+
* @version 1.128.0
|
|
29
29
|
*
|
|
30
30
|
* @constructor
|
|
31
31
|
* @public
|
|
@@ -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
|
+
});
|
|
@@ -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.
|
|
41
|
+
* @version 1.128.0
|
|
42
42
|
*
|
|
43
43
|
* @constructor
|
|
44
44
|
* @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.
|
|
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.
|
|
86
|
+
* @version 1.128.0
|
|
87
87
|
*
|
|
88
88
|
* @constructor
|
|
89
89
|
* @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.
|
|
69
|
+
* @version 1.128.0
|
|
70
70
|
*
|
|
71
71
|
* @constructor
|
|
72
72
|
* @public
|
|
@@ -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);
|
|
@@ -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.
|
|
65
|
+
* @version 1.128.0
|
|
66
66
|
*
|
|
67
67
|
* @constructor
|
|
68
68
|
* @public
|
|
@@ -32,14 +32,14 @@ sap.ui.define([
|
|
|
32
32
|
* @namespace
|
|
33
33
|
* @alias sap.ui.unified
|
|
34
34
|
* @author SAP SE
|
|
35
|
-
* @version 1.
|
|
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.
|
|
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
|
*
|