Skip to content

Commit 6a096cb

Browse files
authored
fix(ui5-datetime-picker): enable secondary calendar type (#4970)
Secondary calendar type value is propagated to the ui5-datetime-picker component trough it's popover view. Fixes: #4959
1 parent 8919965 commit 6a096cb

File tree

5 files changed

+46
-0
lines changed

5 files changed

+46
-0
lines changed

packages/main/src/DateTimePickerPopover.hbs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
class="ui5-dt-cal {{classes.dateTimeView}}"
1919
id="{{_id}}-calendar"
2020
primary-calendar-type="{{_primaryCalendarType}}"
21+
secondary-calendar-type="{{secondaryCalendarType}}"
2122
format-pattern="{{_formatPattern}}"
2223
timestamp="{{_calendarTimestamp}}"
2324
.selectionMode="{{_calendarSelectionMode}}"
@@ -44,6 +45,7 @@
4445
value="{{_timeSelectionValue}}"
4546
format-pattern="{{_formatPattern}}"
4647
._currentSlider="{{_currentTimeSlider}}"
48+
._calendarType="{{_primaryCalendarType}}"
4749
@ui5-change="{{onTimeSelectionChange}}"
4850
@ui5-slider-change="{{onTimeSliderChange}}"
4951
></ui5-time-selection>

packages/main/src/TimeSelection.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
77
import DateFormat from "@ui5/webcomponents-localization/dist/DateFormat.js";
88
import getCachedLocaleDataInstance from "@ui5/webcomponents-localization/dist/getCachedLocaleDataInstance.js";
99
import "@ui5/webcomponents-localization/dist/features/calendar/Gregorian.js"; // default calendar for bundling
10+
import CalendarType from "@ui5/webcomponents-base/dist/types/CalendarType.js";
1011
import { fetchCldr } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
1112
import {
1213
isLeft,
@@ -136,6 +137,10 @@ const metadata = {
136137
type: String,
137138
defaultValue: "hours",
138139
},
140+
141+
_calendarType: {
142+
type: CalendarType,
143+
},
139144
},
140145
events: /** @lends sap.ui.webcomponents.main.TimeSelection.prototype */ {
141146
/**
@@ -435,10 +440,12 @@ class TimeSelection extends UI5Element {
435440
let dateFormat;
436441
if (this._isPattern) {
437442
dateFormat = DateFormat.getInstance({
443+
calendarType: this._calendarType,
438444
pattern: this._formatPattern,
439445
});
440446
} else {
441447
dateFormat = DateFormat.getInstance({
448+
calendarType: this._calendarType,
442449
style: this._formatPattern,
443450
});
444451
}

packages/main/test/pages/DateTimePicker.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,16 @@
153153
></ui5-datetime-picker>
154154
</section>
155155

156+
<section>
157+
<ui5-title wrapping-type="Normal">DateTimePicker with secondary calendar type</ui5-title>
158+
<ui5-datetime-picker
159+
id="secondaryCalendar"
160+
value="Sha. 24, 1443 AH, 10:27:26 AM"
161+
primary-calendar-type="Islamic"
162+
secondary-calendar-type="Gregorian"
163+
></ui5-datetime-picker>
164+
</section>
165+
156166
<script>
157167
var counter = 0;
158168
dt1.addEventListener("ui5-change", function(event) {

packages/main/test/samples/DateTimePicker.sample.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,17 @@ <h3>DateTimePicker in states</h3>
119119
</xmp></pre>
120120
</section>
121121

122+
<section>
123+
<h3>DateTimePicker with secondary calendar type</h3>
124+
<ui5-datetime-picker primary-calendar-type='Islamic' secondary-calendar-type='Gregorian'></ui5-date-picker>
125+
126+
<pre class="prettyprint lang-html"><xmp>
127+
<ui5-datetime-picker
128+
primary-calendar-type="Gregorian"
129+
secondary-calendar-type="Islamic"
130+
></ui5-datetime-picker>
131+
</xmp></pre>
132+
</section>
133+
134+
122135
<!-- JSDoc marker -->

packages/main/test/specs/DateTimePicker.spec.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,4 +264,18 @@ describe("DateTimePicker general interaction", () => {
264264
const newValue = await dtPicker.shadow$("ui5-input").getValue();
265265
assert.strictEqual(newValue.toUpperCase(), "13/04/2020, 12:00:00 PM", "The new date/time is correctly selected.");
266266
});
267+
268+
it("Secondary calendar type", async () => {
269+
const picker = await browser.$("#secondaryCalendar");
270+
271+
// act
272+
await openPickerById("secondaryCalendar");
273+
await browser.keys("ArrowUp");
274+
await browser.keys("Enter");
275+
const submitBtn = await getSubmitButton("secondaryCalendar");
276+
await submitBtn.click();
277+
278+
// assert
279+
assert.strictEqual(await picker.shadow$("ui5-input").getValue(), "Sha. 17, 1443 AH, 10:27:26 AM", "Value change is applied.");
280+
});
267281
});

0 commit comments

Comments
 (0)