@ui5/webcomponents-localization 0.0.0-1b568f22b → 0.0.0-1cc5f5e54

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 (204) hide show
  1. package/.eslintignore +1 -0
  2. package/CHANGELOG.md +370 -0
  3. package/README.md +36 -6
  4. package/dist/Assets-static.d.ts +1 -0
  5. package/dist/Assets-static.js +3 -0
  6. package/dist/Assets-static.js.map +1 -0
  7. package/dist/Assets.d.ts +1 -0
  8. package/dist/Assets.js +1 -0
  9. package/dist/Assets.js.map +1 -0
  10. package/dist/DateFormat.d.ts +6 -0
  11. package/dist/DateFormat.js +6 -2
  12. package/dist/DateFormat.js.map +1 -0
  13. package/dist/LocaleData.d.ts +6 -0
  14. package/dist/LocaleData.js +6 -2
  15. package/dist/LocaleData.js.map +1 -0
  16. package/dist/dates/CalendarDate.d.ts +41 -0
  17. package/dist/dates/CalendarDate.js +170 -181
  18. package/dist/dates/CalendarDate.js.map +1 -0
  19. package/dist/dates/ExtremeDates.d.ts +5 -0
  20. package/dist/dates/ExtremeDates.js +29 -0
  21. package/dist/dates/ExtremeDates.js.map +1 -0
  22. package/dist/dates/UniversalDate.d.ts +46 -0
  23. package/dist/dates/UniversalDate.js +5 -0
  24. package/dist/dates/UniversalDate.js.map +1 -0
  25. package/dist/dates/calculateWeekNumber.d.ts +4 -0
  26. package/dist/dates/calculateWeekNumber.js +42 -48
  27. package/dist/dates/calculateWeekNumber.js.map +1 -0
  28. package/dist/dates/convertMonthNumbersToMonthNames.d.ts +16 -0
  29. package/dist/dates/convertMonthNumbersToMonthNames.js +30 -0
  30. package/dist/dates/convertMonthNumbersToMonthNames.js.map +1 -0
  31. package/dist/dates/getDaysInMonth.d.ts +3 -0
  32. package/dist/dates/getDaysInMonth.js +10 -0
  33. package/dist/dates/getDaysInMonth.js.map +1 -0
  34. package/dist/dates/getRoundedTimestamp.d.ts +7 -0
  35. package/dist/dates/getRoundedTimestamp.js +14 -0
  36. package/dist/dates/getRoundedTimestamp.js.map +1 -0
  37. package/dist/dates/getTodayUTCTimestamp.d.ts +7 -0
  38. package/dist/dates/getTodayUTCTimestamp.js +8 -0
  39. package/dist/dates/getTodayUTCTimestamp.js.map +1 -0
  40. package/dist/dates/modifyDateBy.d.ts +13 -0
  41. package/dist/dates/modifyDateBy.js +40 -0
  42. package/dist/dates/modifyDateBy.js.map +1 -0
  43. package/dist/dates/transformDateToSecondaryType.d.ts +7 -0
  44. package/dist/dates/transformDateToSecondaryType.js +17 -0
  45. package/dist/dates/transformDateToSecondaryType.js.map +1 -0
  46. package/dist/features/calendar/Buddhist.js +1 -0
  47. package/dist/features/calendar/Buddhist.js.map +1 -0
  48. package/dist/features/calendar/Gregorian.js +1 -0
  49. package/dist/features/calendar/Gregorian.js.map +1 -0
  50. package/dist/features/calendar/Islamic.js +1 -0
  51. package/dist/features/calendar/Islamic.js.map +1 -0
  52. package/dist/features/calendar/Japanese.js +1 -0
  53. package/dist/features/calendar/Japanese.js.map +1 -0
  54. package/dist/features/calendar/Persian.js +1 -0
  55. package/dist/features/calendar/Persian.js.map +1 -0
  56. package/dist/generated/assets/cldr/ar.json +2804 -5904
  57. package/dist/generated/assets/cldr/ar_EG.json +2804 -5904
  58. package/dist/generated/assets/cldr/ar_SA.json +2804 -5904
  59. package/dist/generated/assets/cldr/bg.json +2727 -4977
  60. package/dist/generated/assets/cldr/ca.json +2670 -4994
  61. package/dist/generated/assets/cldr/cs.json +2710 -5496
  62. package/dist/generated/assets/cldr/cy.json +2793 -0
  63. package/dist/generated/assets/cldr/da.json +2591 -4886
  64. package/dist/generated/assets/cldr/de.json +2608 -4914
  65. package/dist/generated/assets/cldr/de_AT.json +2608 -4915
  66. package/dist/generated/assets/cldr/de_CH.json +2608 -4913
  67. package/dist/generated/assets/cldr/el.json +2589 -4881
  68. package/dist/generated/assets/cldr/el_CY.json +2589 -4881
  69. package/dist/generated/assets/cldr/en.json +2577 -4968
  70. package/dist/generated/assets/cldr/en_AU.json +2586 -4960
  71. package/dist/generated/assets/cldr/en_GB.json +2578 -4969
  72. package/dist/generated/assets/cldr/en_HK.json +2584 -4975
  73. package/dist/generated/assets/cldr/en_IE.json +2578 -4969
  74. package/dist/generated/assets/cldr/en_IN.json +2579 -4970
  75. package/dist/generated/assets/cldr/en_NZ.json +2578 -4969
  76. package/dist/generated/assets/cldr/en_PG.json +2578 -4970
  77. package/dist/generated/assets/cldr/en_SG.json +2579 -4971
  78. package/dist/generated/assets/cldr/en_ZA.json +2578 -4970
  79. package/dist/generated/assets/cldr/es.json +2633 -4910
  80. package/dist/generated/assets/cldr/es_AR.json +2638 -4912
  81. package/dist/generated/assets/cldr/es_BO.json +2638 -4911
  82. package/dist/generated/assets/cldr/es_CL.json +2638 -4912
  83. package/dist/generated/assets/cldr/es_CO.json +2637 -4911
  84. package/dist/generated/assets/cldr/es_MX.json +2638 -4913
  85. package/dist/generated/assets/cldr/es_PE.json +2638 -4911
  86. package/dist/generated/assets/cldr/es_UY.json +2638 -4913
  87. package/dist/generated/assets/cldr/es_VE.json +2638 -4912
  88. package/dist/generated/assets/cldr/et.json +2593 -4965
  89. package/dist/generated/assets/cldr/fa.json +2606 -4881
  90. package/dist/generated/assets/cldr/fi.json +2635 -5006
  91. package/dist/generated/assets/cldr/fr.json +2583 -4977
  92. package/dist/generated/assets/cldr/fr_BE.json +2583 -4977
  93. package/dist/generated/assets/cldr/fr_CA.json +2598 -4971
  94. package/dist/generated/assets/cldr/fr_CH.json +2600 -4995
  95. package/dist/generated/assets/cldr/fr_LU.json +2583 -4977
  96. package/dist/generated/assets/cldr/he.json +2699 -5376
  97. package/dist/generated/assets/cldr/hi.json +2593 -4827
  98. package/dist/generated/assets/cldr/hr.json +2646 -4917
  99. package/dist/generated/assets/cldr/hu.json +2592 -4854
  100. package/dist/generated/assets/cldr/id.json +2538 -4656
  101. package/dist/generated/assets/cldr/it.json +2583 -4948
  102. package/dist/generated/assets/cldr/it_CH.json +2583 -4948
  103. package/dist/generated/assets/cldr/ja.json +2655 -4828
  104. package/dist/generated/assets/cldr/kk.json +2583 -4723
  105. package/dist/generated/assets/cldr/ko.json +2632 -4736
  106. package/dist/generated/assets/cldr/lt.json +2714 -5479
  107. package/dist/generated/assets/cldr/lv.json +2638 -5110
  108. package/dist/generated/assets/cldr/ms.json +2532 -4513
  109. package/dist/generated/assets/cldr/nb.json +2615 -4975
  110. package/dist/generated/assets/cldr/nl.json +2595 -4882
  111. package/dist/generated/assets/cldr/nl_BE.json +2595 -4882
  112. package/dist/generated/assets/cldr/pl.json +2717 -5174
  113. package/dist/generated/assets/cldr/pt.json +2600 -4803
  114. package/dist/generated/assets/cldr/pt_PT.json +2651 -4938
  115. package/dist/generated/assets/cldr/ro.json +2639 -5088
  116. package/dist/generated/assets/cldr/ru.json +2698 -5405
  117. package/dist/generated/assets/cldr/ru_UA.json +2698 -5405
  118. package/dist/generated/assets/cldr/sk.json +2720 -5368
  119. package/dist/generated/assets/cldr/sl.json +2682 -5338
  120. package/dist/generated/assets/cldr/sr.json +2657 -5124
  121. package/dist/generated/assets/cldr/sr_Latn.json +2660 -0
  122. package/dist/generated/assets/cldr/sv.json +2625 -5009
  123. package/dist/generated/assets/cldr/th.json +2626 -4795
  124. package/dist/generated/assets/cldr/tr.json +2606 -4977
  125. package/dist/generated/assets/cldr/uk.json +2678 -5351
  126. package/dist/generated/assets/cldr/vi.json +2549 -4671
  127. package/dist/generated/assets/cldr/zh_CN.json +2541 -4630
  128. package/dist/generated/assets/cldr/zh_HK.json +2549 -4638
  129. package/dist/generated/assets/cldr/zh_SG.json +2548 -4638
  130. package/dist/generated/assets/cldr/zh_TW.json +2556 -4726
  131. package/dist/generated/json-imports/LocaleData-static.js +90 -0
  132. package/dist/generated/json-imports/LocaleData.js +88 -91
  133. package/dist/getCachedLocaleDataInstance.d.ts +4 -0
  134. package/dist/getCachedLocaleDataInstance.js +10 -0
  135. package/dist/getCachedLocaleDataInstance.js.map +1 -0
  136. package/dist/locale/getLocaleData.d.ts +11 -0
  137. package/dist/locale/getLocaleData.js +13 -17
  138. package/dist/locale/getLocaleData.js.map +1 -0
  139. package/dist/sap/base/Log.js +28 -37
  140. package/dist/sap/base/assert.js +5 -10
  141. package/dist/sap/base/util/LoaderExtensions.d.ts +4 -0
  142. package/dist/sap/base/util/LoaderExtensions.js +11 -4
  143. package/dist/sap/base/util/LoaderExtensions.js.map +1 -0
  144. package/dist/sap/base/util/array/uniqueSort.js +7 -7
  145. package/dist/sap/base/util/deepEqual.js +1 -5
  146. package/dist/sap/ui/base/Interface.js +3 -5
  147. package/dist/sap/ui/base/Metadata.js +1 -3
  148. package/dist/sap/ui/base/Object.js +26 -2
  149. package/dist/sap/ui/core/Configuration.d.ts +17 -0
  150. package/dist/sap/ui/core/Configuration.js +20 -0
  151. package/dist/sap/ui/core/Configuration.js.map +1 -0
  152. package/dist/sap/ui/core/Core.d.ts +26 -0
  153. package/dist/sap/ui/core/Core.js +7 -32
  154. package/dist/sap/ui/core/Core.js.map +1 -0
  155. package/dist/sap/ui/core/FormatSettings.d.ts +10 -0
  156. package/dist/sap/ui/core/FormatSettings.js +14 -0
  157. package/dist/sap/ui/core/FormatSettings.js.map +1 -0
  158. package/dist/sap/ui/core/Locale.js +70 -31
  159. package/dist/sap/ui/core/LocaleData.js +133 -1506
  160. package/dist/sap/ui/core/date/Buddhist.js +0 -6
  161. package/dist/sap/ui/core/date/CalendarUtils.js +36 -0
  162. package/dist/sap/ui/core/date/CalendarWeekNumbering.js +7 -0
  163. package/dist/sap/ui/core/date/Islamic.js +3 -3
  164. package/dist/sap/ui/core/date/Japanese.js +4 -4
  165. package/dist/sap/ui/core/date/UniversalDate.js +82 -23
  166. package/dist/sap/ui/core/format/DateFormat.js +530 -222
  167. package/dist/sap/ui/core/format/TimezoneUtil.js +94 -0
  168. package/package-scripts.js +15 -8
  169. package/package.json +13 -14
  170. package/src/Assets-static.ts +2 -0
  171. package/src/DateFormat.ts +8 -0
  172. package/src/LocaleData.ts +8 -0
  173. package/src/dates/{CalendarDate.js → CalendarDate.ts} +64 -35
  174. package/src/dates/ExtremeDates.ts +40 -0
  175. package/src/dates/UniversalDate.ts +51 -0
  176. package/src/dates/{calculateWeekNumber.js → calculateWeekNumber.ts} +5 -3
  177. package/src/dates/convertMonthNumbersToMonthNames.ts +34 -0
  178. package/src/dates/getDaysInMonth.ts +11 -0
  179. package/src/dates/getRoundedTimestamp.ts +14 -0
  180. package/src/dates/getTodayUTCTimestamp.ts +10 -0
  181. package/src/dates/modifyDateBy.ts +42 -0
  182. package/src/dates/transformDateToSecondaryType.ts +21 -0
  183. package/src/features/calendar/Buddhist.ts +1 -0
  184. package/src/features/calendar/Gregorian.ts +1 -0
  185. package/src/features/calendar/Islamic.ts +1 -0
  186. package/src/features/calendar/Japanese.ts +1 -0
  187. package/src/features/calendar/Persian.ts +1 -0
  188. package/src/getCachedLocaleDataInstance.ts +15 -0
  189. package/src/locale/{getLocaleData.js → getLocaleData.ts} +9 -8
  190. package/src/sap/base/util/LoaderExtensions.ts +17 -0
  191. package/src/sap/ui/core/{Core.js → Configuration.ts} +5 -21
  192. package/src/sap/ui/core/Core.ts +15 -0
  193. package/src/sap/ui/core/FormatSettings.ts +16 -0
  194. package/tsconfig.json +13 -0
  195. package/used-modules.txt +4 -1
  196. package/src/DateFormat.js +0 -3
  197. package/src/LocaleData.js +0 -3
  198. package/src/sap/base/util/LoaderExtensions.js +0 -7
  199. /package/{src/features/calendar/Buddhist.js → dist/features/calendar/Buddhist.d.ts} +0 -0
  200. /package/{src/features/calendar/Gregorian.js → dist/features/calendar/Gregorian.d.ts} +0 -0
  201. /package/{src/features/calendar/Islamic.js → dist/features/calendar/Islamic.d.ts} +0 -0
  202. /package/{src/features/calendar/Japanese.js → dist/features/calendar/Japanese.d.ts} +0 -0
  203. /package/{src/features/calendar/Persian.js → dist/features/calendar/Persian.d.ts} +0 -0
  204. /package/src/{Assets.js → Assets.ts} +0 -0
@@ -1,193 +1,182 @@
1
- import UniversalDate from "../sap/ui/core/date/UniversalDate.js";
2
-
1
+ import UniversalDate from "./UniversalDate.js";
3
2
  class CalendarDate {
4
- constructor() {
5
- let aArgs = arguments, // eslint-disable-line
6
- oJSDate,
7
- oNow,
8
- sCalendarType;
9
-
10
- switch (aArgs.length) {
11
- case 0: // defaults to the current date
12
- oNow = new Date();
13
- return this.constructor(oNow.getFullYear(), oNow.getMonth(), oNow.getDate());
14
-
15
- case 1: // CalendarDate
16
- case 2: // CalendarDate, sCalendarType
17
- if (!(aArgs[0] instanceof CalendarDate)) {
18
- throw new Error("Invalid arguments: the first argument must be of type sap.ui.unified.calendar.CalendarDate.");
19
- }
20
- sCalendarType = aArgs[1] ? aArgs[1] : aArgs[0]._oUDate.sCalendarType;
21
- // Use source.valueOf() (returns the same point of time regardless calendar type) instead of
22
- // source's getters to avoid non-gregorian Year, Month and Date may be used to construct a Gregorian date
23
- oJSDate = new Date(aArgs[0].valueOf());
24
-
25
- // Make this date really local. Now getters are safe.
26
- oJSDate.setFullYear(oJSDate.getUTCFullYear(), oJSDate.getUTCMonth(), oJSDate.getUTCDate());
27
- oJSDate.setHours(oJSDate.getUTCHours(), oJSDate.getUTCMinutes(), oJSDate.getUTCSeconds(), oJSDate.getUTCMilliseconds());
28
-
29
- this._oUDate = createUniversalUTCDate(oJSDate, sCalendarType);
30
- break;
31
-
32
- case 3: // year, month, date
33
- case 4: // year, month, date, sCalendarType
34
- checkNumericLike(aArgs[0], `Invalid year: ${aArgs[0]}`);
35
- checkNumericLike(aArgs[1], `Invalid month: ${aArgs[1]}`);
36
- checkNumericLike(aArgs[2], `Invalid date: ${aArgs[2]}`);
37
-
38
- oJSDate = new Date(0, 0, 1);
39
- oJSDate.setFullYear(aArgs[0], aArgs[1], aArgs[2]); // 2 digits year is not supported. If so, it is considered as full year as well.
40
-
41
- if (aArgs[3]) {
42
- sCalendarType = aArgs[3];
43
- }
44
- this._oUDate = createUniversalUTCDate(oJSDate, sCalendarType);
45
- break;
46
-
47
- default:
48
- throw new Error(`${"Invalid arguments. Accepted arguments are: 1) oCalendarDate, (optional)calendarType"
49
- + "or 2) year, month, date, (optional) calendarType"}${aArgs}`);
50
- }
51
- }
52
-
53
- getYear() {
54
- return this._oUDate.getUTCFullYear();
55
- }
56
-
57
- setYear(year) {
58
- checkNumericLike(year, `Invalid year: ${year}`);
59
- this._oUDate.setUTCFullYear(year);
60
- return this;
61
- }
62
-
63
- getMonth() {
64
- return this._oUDate.getUTCMonth();
65
- }
66
-
67
- setMonth(month) {
68
- checkNumericLike(month, `Invalid month: ${month}`);
69
- this._oUDate.setUTCMonth(month);
70
- return this;
71
- }
72
-
73
- getDate() {
74
- return this._oUDate.getUTCDate();
75
- }
76
-
77
- setDate(date) {
78
- checkNumericLike(date, `Invalid date: ${date}`);
79
- this._oUDate.setUTCDate(date);
80
- return this;
81
- }
82
-
83
- getDay() {
84
- return this._oUDate.getUTCDay();
85
- }
86
-
87
- getCalendarType() {
88
- return this._oUDate.sCalendarType;
89
- }
90
-
91
- isBefore(oCalendarDate) {
92
- checkCalendarDate(oCalendarDate);
93
- return this.valueOf() < oCalendarDate.valueOf();
94
- }
95
-
96
- isAfter(oCalendarDate) {
97
- checkCalendarDate(oCalendarDate);
98
- return this.valueOf() > oCalendarDate.valueOf();
99
- }
100
-
101
- isSameOrBefore(oCalendarDate) {
102
- checkCalendarDate(oCalendarDate);
103
- return this.valueOf() <= oCalendarDate.valueOf();
104
- }
105
-
106
- isSameOrAfter(oCalendarDate) {
107
- checkCalendarDate(oCalendarDate);
108
- return this.valueOf() >= oCalendarDate.valueOf();
109
- }
110
-
111
- isSame(oCalendarDate) {
112
- checkCalendarDate(oCalendarDate);
113
- return this.valueOf() === oCalendarDate.valueOf();
114
- }
115
-
116
- toLocalJSDate() {
117
- // Use this._oUDate.getTime()(returns the same point of time regardless calendar type) instead of
118
- // this._oUDate's getters to avoid non-gregorian Year, Month and Date to be used to construct a Gregorian date
119
- const oLocalDate = new Date(this._oUDate.getTime());
120
-
121
- // Make this date really local. Now getters are safe.
122
- oLocalDate.setFullYear(oLocalDate.getUTCFullYear(), oLocalDate.getUTCMonth(), oLocalDate.getUTCDate());
123
- oLocalDate.setHours(0, 0, 0, 0);
124
-
125
- return oLocalDate;
126
- }
127
-
128
- toUTCJSDate() {
129
- // Use this._oUDate.getTime()(returns the same point of time regardless calendar type) instead of
130
- // this._oUDate's getters to avoid non-gregorian Year, Month and Date to be used to construct a Gregorian date
131
- const oUTCDate = new Date(this._oUDate.getTime());
132
- oUTCDate.setUTCHours(0, 0, 0, 0);
133
-
134
- return oUTCDate;
135
- }
136
-
137
- toString() {
138
- return `${this._oUDate.sCalendarType}: ${this.getYear()}/${this.getMonth() + 1}/${this.getDate()}`;
139
- }
140
-
141
- valueOf() {
142
- return this._oUDate.getTime();
143
- }
144
-
145
- static fromLocalJSDate(oJSDate, sCalendarType) {
146
- // Cross frame check for a date should be performed here otherwise setDateValue would fail in OPA tests
147
- // because Date object in the test is different than the Date object in the application (due to the iframe).
148
- // We can use jQuery.type or this method:
149
- function isValidDate(date) {
150
- return date && Object.prototype.toString.call(date) === "[object Date]" && !isNaN(date); // eslint-disable-line
151
- }
152
- if (!isValidDate(oJSDate)) {
153
- throw new Error(`Date parameter must be a JavaScript Date object: [${oJSDate}].`);
154
- }
155
- return new CalendarDate(oJSDate.getFullYear(), oJSDate.getMonth(), oJSDate.getDate(), sCalendarType);
156
- }
157
-
158
- static fromTimestamp(iTimestamp, sCalendarType) {
159
- const oCalDate = new CalendarDate(0, 0, 1);
160
- oCalDate._oUDate = UniversalDate.getInstance(new Date(iTimestamp), sCalendarType);
161
- return oCalDate;
162
- }
3
+ constructor(year, month, date, calendarType) {
4
+ let aArgs = arguments, // eslint-disable-line
5
+ oJSDate, oNow, sCalendarType;
6
+ switch (aArgs.length) {
7
+ case 0: // defaults to the current date
8
+ oNow = new Date();
9
+ return this.constructor(oNow.getFullYear(), oNow.getMonth(), oNow.getDate());
10
+ case 1: // CalendarDate
11
+ case 2: // CalendarDate, sCalendarType
12
+ if (!(aArgs[0] instanceof CalendarDate)) {
13
+ throw new Error("Invalid arguments: the first argument must be of type CalendarDate.");
14
+ }
15
+ sCalendarType = aArgs[1] ? aArgs[1] : aArgs[0]._oUDate.sCalendarType;
16
+ // Use source.valueOf() (returns the same point of time regardless calendar type) instead of
17
+ // source's getters to avoid non-gregorian Year, Month and Date may be used to construct a Gregorian date
18
+ oJSDate = new Date(aArgs[0].valueOf());
19
+ // Make this date really local. Now getters are safe.
20
+ oJSDate.setFullYear(oJSDate.getUTCFullYear(), oJSDate.getUTCMonth(), oJSDate.getUTCDate());
21
+ oJSDate.setHours(oJSDate.getUTCHours(), oJSDate.getUTCMinutes(), oJSDate.getUTCSeconds(), oJSDate.getUTCMilliseconds());
22
+ this._oUDate = createUniversalUTCDate(oJSDate, sCalendarType);
23
+ break;
24
+ case 3: // year, month, date
25
+ case 4: // year, month, date, sCalendarType
26
+ checkNumericLike(aArgs[0], `Invalid year: ${aArgs[0]}`);
27
+ checkNumericLike(aArgs[1], `Invalid month: ${aArgs[1]}`);
28
+ checkNumericLike(aArgs[2], `Invalid date: ${aArgs[2]}`);
29
+ oJSDate = new Date(0, 0, 1);
30
+ oJSDate.setFullYear(aArgs[0], aArgs[1], aArgs[2]); // 2 digits year is not supported. If so, it is considered as full year as well.
31
+ if (aArgs[3]) {
32
+ sCalendarType = aArgs[3];
33
+ }
34
+ this._oUDate = createUniversalUTCDate(oJSDate, sCalendarType);
35
+ break;
36
+ default:
37
+ throw new Error(`${"Invalid arguments. Accepted arguments are: 1) oCalendarDate, (optional)calendarType"
38
+ + "or 2) year, month, date, (optional) calendarType"}${aArgs}`);
39
+ }
40
+ }
41
+ getYear() {
42
+ return this._oUDate.getUTCFullYear();
43
+ }
44
+ setYear(year) {
45
+ checkNumericLike(year, `Invalid year: ${year}`);
46
+ this._oUDate.setUTCFullYear(year);
47
+ return this;
48
+ }
49
+ getMonth() {
50
+ return this._oUDate.getUTCMonth();
51
+ }
52
+ /**
53
+ * Sets the given month as ordinal month of the year.
54
+ * @param {int} month An integer between 0 and 11, representing the months January through December( or their
55
+ * equivalent month names for the given calendar).
56
+ * If the specified value is is outside of the expected range, this method attempts to update the date information
57
+ * accordingly. For example, if 12 is given as a month, the year will be incremented by 1, and 1 will be used for month.
58
+ * @param {int} [date] An integer between 1 and 31, representing the day of the month, but other values are allowed.
59
+ * 0 will result in the previous month's last day.
60
+ * -1 will result in the day before the previous month's last day.
61
+ * 32 will result in:
62
+ * - first day of the next month if the current month has 31 days.
63
+ * - second day of the next month if the current month has 30 days.
64
+ * Other value will result in adding or subtracting days according to the given value.
65
+ * @returns {sap.ui.unified.calendar.CalendarDate} <code>this</code> for method chaining.
66
+ */
67
+ setMonth(month, date) {
68
+ checkNumericLike(month, `Invalid month: ${month}`);
69
+ if (date || date === 0) {
70
+ checkNumericLike(date, `Invalid date: ${date}`);
71
+ this._oUDate.setUTCMonth(month, date);
72
+ }
73
+ else {
74
+ this._oUDate.setUTCMonth(month);
75
+ }
76
+ return this;
77
+ }
78
+ getDate() {
79
+ return this._oUDate.getUTCDate();
80
+ }
81
+ setDate(date) {
82
+ checkNumericLike(date, `Invalid date: ${date}`);
83
+ this._oUDate.setUTCDate(date);
84
+ return this;
85
+ }
86
+ getDay() {
87
+ return this._oUDate.getUTCDay();
88
+ }
89
+ getCalendarType() {
90
+ return this._oUDate.sCalendarType;
91
+ }
92
+ isBefore(oCalendarDate) {
93
+ checkCalendarDate(oCalendarDate);
94
+ return this.valueOf() < oCalendarDate.valueOf();
95
+ }
96
+ isAfter(oCalendarDate) {
97
+ checkCalendarDate(oCalendarDate);
98
+ return this.valueOf() > oCalendarDate.valueOf();
99
+ }
100
+ isSameOrBefore(oCalendarDate) {
101
+ checkCalendarDate(oCalendarDate);
102
+ return this.valueOf() <= oCalendarDate.valueOf();
103
+ }
104
+ isSameOrAfter(oCalendarDate) {
105
+ checkCalendarDate(oCalendarDate);
106
+ return this.valueOf() >= oCalendarDate.valueOf();
107
+ }
108
+ isSame(oCalendarDate) {
109
+ checkCalendarDate(oCalendarDate);
110
+ return this.valueOf() === oCalendarDate.valueOf();
111
+ }
112
+ toLocalJSDate() {
113
+ // Use this._oUDate.getTime()(returns the same point of time regardless calendar type) instead of
114
+ // this._oUDate's getters to avoid non-gregorian Year, Month and Date to be used to construct a Gregorian date
115
+ const oLocalDate = new Date(this._oUDate.getTime());
116
+ // Make this date really local. Now getters are safe.
117
+ oLocalDate.setFullYear(oLocalDate.getUTCFullYear(), oLocalDate.getUTCMonth(), oLocalDate.getUTCDate());
118
+ oLocalDate.setHours(0, 0, 0, 0);
119
+ return oLocalDate;
120
+ }
121
+ toUTCJSDate() {
122
+ // Use this._oUDate.getTime()(returns the same point of time regardless calendar type) instead of
123
+ // this._oUDate's getters to avoid non-gregorian Year, Month and Date to be used to construct a Gregorian date
124
+ const oUTCDate = new Date(this._oUDate.getTime());
125
+ oUTCDate.setUTCHours(0, 0, 0, 0);
126
+ return oUTCDate;
127
+ }
128
+ toString() {
129
+ return `${this._oUDate.sCalendarType}: ${this.getYear()}/${this.getMonth() + 1}/${this.getDate()}`;
130
+ }
131
+ valueOf() {
132
+ return this._oUDate.getTime();
133
+ }
134
+ static fromLocalJSDate(oJSDate, sCalendarType) {
135
+ // Cross frame check for a date should be performed here otherwise setDateValue would fail in OPA tests
136
+ // because Date object in the test is different than the Date object in the application (due to the iframe).
137
+ // We can use jQuery.type or this method:
138
+ function isValidDate(date) {
139
+ return date && Object.prototype.toString.call(date) === "[object Date]" && !isNaN(date); // eslint-disable-line
140
+ }
141
+ if (!isValidDate(oJSDate)) {
142
+ throw new Error(`Date parameter must be a JavaScript Date object: [${oJSDate}].`);
143
+ }
144
+ return new CalendarDate(oJSDate.getFullYear(), oJSDate.getMonth(), oJSDate.getDate(), sCalendarType);
145
+ }
146
+ static fromTimestamp(iTimestamp, sCalendarType) {
147
+ const oCalDate = new CalendarDate(0, 0, 1);
148
+ let oUDate;
149
+ try {
150
+ oUDate = UniversalDate.getInstance(new Date(iTimestamp), sCalendarType);
151
+ }
152
+ catch (e) {
153
+ oUDate = new Date(NaN); // UniversalDate.getInstance may now throw an Exception - keep the old behavior
154
+ }
155
+ oCalDate._oUDate = oUDate;
156
+ return oCalDate;
157
+ }
163
158
  }
164
-
165
159
  function createUniversalUTCDate(oDate, sCalendarType) {
166
- if (sCalendarType) {
167
- return UniversalDate.getInstance(createUTCDate(oDate), sCalendarType);
168
- }
169
- return new UniversalDate(createUTCDate(oDate).getTime());
160
+ if (sCalendarType) {
161
+ return UniversalDate.getInstance(createUTCDate(oDate), sCalendarType);
162
+ }
163
+ return new UniversalDate(createUTCDate(oDate).getTime());
170
164
  }
171
-
172
165
  /**
173
166
  * Creates a JavaScript UTC Date corresponding to the given JavaScript Date.
174
167
  * @param {Date} oDate JavaScript date object. Time related information is cut.
175
168
  * @returns {Date} JavaScript date created from the date object, but this time considered as UTC date information.
176
169
  */
177
170
  function createUTCDate(oDate) {
178
- const oUTCDate = new Date(Date.UTC(0, 0, 1));
179
-
180
- oUTCDate.setUTCFullYear(oDate.getFullYear(), oDate.getMonth(), oDate.getDate());
181
-
182
- return oUTCDate;
171
+ const oUTCDate = new Date(Date.UTC(0, 0, 1));
172
+ oUTCDate.setUTCFullYear(oDate.getFullYear(), oDate.getMonth(), oDate.getDate());
173
+ return oUTCDate;
183
174
  }
184
-
185
175
  function checkCalendarDate(oCalendarDate) {
186
- if (!(oCalendarDate instanceof CalendarDate)) {
187
- throw new Error(`Invalid calendar date: [${oCalendarDate}]. Expected: sap.ui.unified.calendar.CalendarDate`);
188
- }
176
+ if (!(oCalendarDate instanceof CalendarDate)) {
177
+ throw new Error(`Invalid calendar date: [${oCalendarDate}]. Expected: CalendarDate`);
178
+ }
189
179
  }
190
-
191
180
  /**
192
181
  * Verifies the given value is numeric like, i.e. 3, "3" and throws an error if it is not.
193
182
  * @param {any} value The value of any type to check. If null or undefined, this method throws an error.
@@ -195,9 +184,9 @@ function checkCalendarDate(oCalendarDate) {
195
184
  * @throws will throw an error if the value is null or undefined or is not like a number
196
185
  */
197
186
  function checkNumericLike(value, message) {
198
- if (value === undefined || value === Infinity || isNaN(value)) { // eslint-disable-line
199
- throw message;
200
- }
187
+ if (value === undefined || value === Infinity || isNaN(value)) { // eslint-disable-line
188
+ throw message;
189
+ }
201
190
  }
202
-
203
191
  export default CalendarDate;
192
+ //# sourceMappingURL=CalendarDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalendarDate.js","sourceRoot":"","sources":["../../src/dates/CalendarDate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
2
+ import CalendarDate from "./CalendarDate.js";
3
+ declare const getMinCalendarDate: (primaryCalendarType: CalendarType) => CalendarDate;
4
+ declare const getMaxCalendarDate: (primaryCalendarType: CalendarType) => CalendarDate;
5
+ export { getMinCalendarDate, getMaxCalendarDate, };
@@ -0,0 +1,29 @@
1
+ import CalendarDate from "./CalendarDate.js";
2
+ const cache = new Map();
3
+ const getMinCalendarDate = (primaryCalendarType) => {
4
+ const key = `min ${primaryCalendarType}`;
5
+ if (!cache.has(key)) {
6
+ const minDate = new CalendarDate(1, 0, 1, primaryCalendarType);
7
+ minDate.setYear(1);
8
+ minDate.setMonth(0);
9
+ minDate.setDate(1);
10
+ cache.set(key, minDate);
11
+ }
12
+ return cache.get(key);
13
+ };
14
+ const getMaxCalendarDate = (primaryCalendarType) => {
15
+ const key = `max ${primaryCalendarType}`;
16
+ if (!cache.has(key)) {
17
+ const maxDate = new CalendarDate(1, 0, 1, primaryCalendarType);
18
+ maxDate.setYear(9999);
19
+ maxDate.setMonth(11);
20
+ const tempDate = new CalendarDate(maxDate, primaryCalendarType);
21
+ tempDate.setDate(1);
22
+ tempDate.setMonth(tempDate.getMonth() + 1, 0);
23
+ maxDate.setDate(tempDate.getDate()); // 31st for Gregorian Calendar
24
+ cache.set(key, maxDate);
25
+ }
26
+ return cache.get(key);
27
+ };
28
+ export { getMinCalendarDate, getMaxCalendarDate, };
29
+ //# sourceMappingURL=ExtremeDates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtremeDates.js","sourceRoot":"","sources":["../../src/dates/ExtremeDates.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;AAE9C,MAAM,kBAAkB,GAAG,CAAC,mBAAiC,EAAE,EAAE;IAChE,MAAM,GAAG,GAAG,OAAO,mBAAmB,EAAE,CAAC;IAEzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACpB,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC/D,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KACxB;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,mBAAiC,EAAE,EAAE;IAChE,MAAM,GAAG,GAAG,OAAO,mBAAmB,EAAE,CAAC;IAEzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACpB,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC/D,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAChE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA,8BAA8B;QAClE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;KACxB;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;AACxB,CAAC,CAAC;AAEF,OAAO,EACN,kBAAkB,EAClB,kBAAkB,GAClB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
2
+ type UniversalDate = {
3
+ new (time: number): UniversalDate;
4
+ oDate: Date;
5
+ sCalendarType: string;
6
+ getInstance: (oDate: Date, sCalendarType?: CalendarType) => UniversalDate;
7
+ getDate: () => number;
8
+ getMonth: () => number;
9
+ getFullYear: () => number;
10
+ getYear: () => number;
11
+ getDay: () => number;
12
+ getHours: () => number;
13
+ getMinutes: () => number;
14
+ getSeconds: () => number;
15
+ getMilliseconds: () => number;
16
+ getUTCDate: () => number;
17
+ getUTCMonth: () => number;
18
+ getUTCFullYear: () => number;
19
+ getUTCDay: () => number;
20
+ getUTCHours: () => number;
21
+ getUTCMinutes: () => number;
22
+ getUTCSeconds: () => number;
23
+ getUTCMilliseconds: () => number;
24
+ getTime: () => number;
25
+ valueOf: () => number;
26
+ getTimezoneOffset: () => number;
27
+ toString: () => string;
28
+ toDateString: () => string;
29
+ setDate: (dayValue: number) => number;
30
+ setFullYear: (yearValue: number, monthValue?: number, dateValue?: number) => number;
31
+ setYear: (yearValue: number) => number;
32
+ setMonth: (monthValue: number, dayValue?: number) => number;
33
+ setHours: (hoursValue: number, minutesValue?: number, secondsValue?: number, msValue?: number) => number;
34
+ setMinutes: (minutesValue: number, secondsValue?: number, msValue?: number) => number;
35
+ setSeconds: (secondsValue: number, msValue?: number) => number;
36
+ setMilliseconds: (setMilliseconds: number) => number;
37
+ setUTCDate: (dayValue: number) => number;
38
+ setUTCFullYear: (yearValue: number, monthValue?: number, dayValue?: number) => number;
39
+ setUTCMonth: (monthValue: number, dayValue?: number) => number;
40
+ setUTCHours: (hoursValue: number, minutesValue?: number, secondsValue?: number, msValue?: number) => number;
41
+ setUTCMinutes: (minutesValue: number, secondsValue?: number, msValue?: number) => number;
42
+ setUTCSeconds: (secondsValue: number, msValue?: number) => number;
43
+ setUTCMilliseconds: (setMilliseconds: number) => number;
44
+ };
45
+ declare const UniversalDate: UniversalDate;
46
+ export default UniversalDate;
@@ -0,0 +1,5 @@
1
+ // @ts-ignore
2
+ import UniversalDateNative from "../sap/ui/core/date/UniversalDate.js";
3
+ const UniversalDate = UniversalDateNative;
4
+ export default UniversalDate;
5
+ //# sourceMappingURL=UniversalDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalDate.js","sourceRoot":"","sources":["../../src/dates/UniversalDate.ts"],"names":[],"mappings":"AACA,aAAa;AACb,OAAO,mBAAmB,MAAM,sCAAsC,CAAC;AA8CvE,MAAM,aAAa,GAAkB,mBAAmB,CAAC;AAEzD,eAAe,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type Locale from "@ui5/webcomponents-base/dist/locale/Locale.js";
2
+ import type LocaleData from "../LocaleData.js";
3
+ declare const calculateWeekNumber: (confFirstDayOfWeek: number | undefined, oDate: Date, iYear: number, oLocale: Locale, oLocaleData: LocaleData) => number;
4
+ export default calculateWeekNumber;
@@ -1,51 +1,45 @@
1
- import UniversalDate from "../sap/ui/core/date/UniversalDate.js";
2
-
1
+ import UniversalDate from "./UniversalDate.js";
3
2
  const calculateWeekNumber = (confFirstDayOfWeek, oDate, iYear, oLocale, oLocaleData) => {
4
- let iWeekNum = 0;
5
- let iWeekDay = 0;
6
- const iFirstDayOfWeek = Number.isInteger(confFirstDayOfWeek) ? confFirstDayOfWeek : oLocaleData.getFirstDayOfWeek();
7
-
8
- // search Locale for containing "en-US", since sometimes
9
- // when any user settings have been defined, subtag "sapufmt" is added to the locale name
10
- // this is described inside sap.ui.core.Configuration file
11
- if (oLocale && (oLocale.getLanguage() === "en" && oLocale.getRegion() === "US")) {
12
- /*
13
- * in US the week starts with Sunday
14
- * The first week of the year starts with January 1st. But Dec. 31 is still in the last year
15
- * So the week beginning in December and ending in January has 2 week numbers
16
- */
17
- const oJanFirst = new UniversalDate(oDate.getTime());
18
- oJanFirst.setUTCFullYear(iYear, 0, 1);
19
- iWeekDay = oJanFirst.getUTCDay();
20
-
21
- // get the date for the same weekday like jan 1.
22
- const oCheckDate = new UniversalDate(oDate.getTime());
23
- oCheckDate.setUTCDate(oCheckDate.getUTCDate() - oCheckDate.getUTCDay() + iWeekDay);
24
-
25
- iWeekNum = Math.round((oCheckDate.getTime() - oJanFirst.getTime()) / 86400000 / 7) + 1;
26
- } else {
27
- // normally the first week of the year is the one where the first Thursday of the year is
28
- // find Thursday of this week
29
- // if the checked day is before the 1. day of the week use a day of the previous week to check
30
- const oThursday = new UniversalDate(oDate.getTime());
31
- oThursday.setUTCDate(oThursday.getUTCDate() - iFirstDayOfWeek);
32
- iWeekDay = oThursday.getUTCDay();
33
- oThursday.setUTCDate(oThursday.getUTCDate() - iWeekDay + 4);
34
-
35
- const oFirstDayOfYear = new UniversalDate(oThursday.getTime());
36
- oFirstDayOfYear.setUTCMonth(0, 1);
37
- iWeekDay = oFirstDayOfYear.getUTCDay();
38
- let iAddDays = 0;
39
- if (iWeekDay > 4) {
40
- iAddDays = 7; // first day of year is after Thursday, so first Thursday is in the next week
41
- }
42
- const oFirstThursday = new UniversalDate(oFirstDayOfYear.getTime());
43
- oFirstThursday.setUTCDate(1 - iWeekDay + 4 + iAddDays);
44
-
45
- iWeekNum = Math.round((oThursday.getTime() - oFirstThursday.getTime()) / 86400000 / 7) + 1;
46
- }
47
-
48
- return iWeekNum;
3
+ let iWeekNum = 0;
4
+ let iWeekDay = 0;
5
+ const iFirstDayOfWeek = Number.isInteger(confFirstDayOfWeek) ? confFirstDayOfWeek : oLocaleData.getFirstDayOfWeek();
6
+ // search Locale for containing "en-US", since sometimes
7
+ // when any user settings have been defined, subtag "sapufmt" is added to the locale name
8
+ // this is described inside sap.ui.core.Configuration file
9
+ if (oLocale && (oLocale.getLanguage() === "en" && oLocale.getRegion() === "US")) {
10
+ /*
11
+ * in US the week starts with Sunday
12
+ * The first week of the year starts with January 1st. But Dec. 31 is still in the last year
13
+ * So the week beginning in December and ending in January has 2 week numbers
14
+ */
15
+ const oJanFirst = new UniversalDate(oDate.getTime());
16
+ oJanFirst.setUTCFullYear(iYear, 0, 1);
17
+ iWeekDay = oJanFirst.getUTCDay();
18
+ // get the date for the same weekday like jan 1.
19
+ const oCheckDate = new UniversalDate(oDate.getTime());
20
+ oCheckDate.setUTCDate(oCheckDate.getUTCDate() - oCheckDate.getUTCDay() + iWeekDay);
21
+ iWeekNum = Math.round((oCheckDate.getTime() - oJanFirst.getTime()) / 86400000 / 7) + 1;
22
+ }
23
+ else {
24
+ // normally the first week of the year is the one where the first Thursday of the year is
25
+ // find Thursday of this week
26
+ // if the checked day is before the 1. day of the week use a day of the previous week to check
27
+ const oThursday = new UniversalDate(oDate.getTime());
28
+ oThursday.setUTCDate(oThursday.getUTCDate() - iFirstDayOfWeek);
29
+ iWeekDay = oThursday.getUTCDay();
30
+ oThursday.setUTCDate(oThursday.getUTCDate() - iWeekDay + 4);
31
+ const oFirstDayOfYear = new UniversalDate(oThursday.getTime());
32
+ oFirstDayOfYear.setUTCMonth(0, 1);
33
+ iWeekDay = oFirstDayOfYear.getUTCDay();
34
+ let iAddDays = 0;
35
+ if (iWeekDay > 4) {
36
+ iAddDays = 7; // first day of year is after Thursday, so first Thursday is in the next week
37
+ }
38
+ const oFirstThursday = new UniversalDate(oFirstDayOfYear.getTime());
39
+ oFirstThursday.setUTCDate(1 - iWeekDay + 4 + iAddDays);
40
+ iWeekNum = Math.round((oThursday.getTime() - oFirstThursday.getTime()) / 86400000 / 7) + 1;
41
+ }
42
+ return iWeekNum;
49
43
  };
50
-
51
44
  export default calculateWeekNumber;
45
+ //# sourceMappingURL=calculateWeekNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculateWeekNumber.js","sourceRoot":"","sources":["../../src/dates/calculateWeekNumber.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAG/C,MAAM,mBAAmB,GAAG,CAAC,kBAAsC,EAAE,KAAW,EAAE,KAAa,EAAE,OAAe,EAAE,WAAuB,EAAE,EAAE;IAC5I,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IAErH,wDAAwD;IACxD,yFAAyF;IACzF,0DAA0D;IAC1D,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE;QAChF;;;;cAIG;QACH,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QAEjC,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC;QAEnF,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KACvF;SAAM;QACN,yFAAyF;QACzF,6BAA6B;QAC7B,8FAA8F;QAC9F,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,eAAe,CAAC,CAAC;QAC/D,QAAQ,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACjC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;QAE5D,MAAM,eAAe,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,QAAQ,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,QAAQ,GAAG,CAAC,EAAE;YACjB,QAAQ,GAAG,CAAC,CAAC,CAAC,6EAA6E;SAC3F;QACD,MAAM,cAAc,GAAG,IAAI,aAAa,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,cAAc,CAAC,UAAU,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAEvD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KAC3F;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
2
+ /**
3
+ * Convert month number to month name (text).
4
+ * If the numbers of the two months are the same you will get the name of the month,
5
+ * otherwise you will get the two names separated by a dash
6
+ *
7
+ * @param firstMonth CalendarDate Month
8
+ * @param lastMonth CalendarDate Month
9
+ * @param calendarType calendar type
10
+ * @returns {String}
11
+ */
12
+ declare const convertMonthNumbersToMonthNames: (firstMonth: number, lastMonth: number, calendarType?: CalendarType) => {
13
+ text: any;
14
+ textInfo: any;
15
+ };
16
+ export default convertMonthNumbersToMonthNames;