Skip to content

Commit 4d7586d

Browse files
authored
feat(ui5-datepicker): set value attribute through date object (#1624)
1 parent afec3fe commit 4d7586d

8 files changed

+92
-4
lines changed

packages/main/src/DatePicker.js

+14-3
Original file line numberDiff line numberDiff line change
@@ -423,9 +423,10 @@ class DatePicker extends UI5Element {
423423
}
424424

425425
_getTimeStampFromString(value) {
426-
if (this.getFormat().parse(value)) {
427-
const jsDate = new Date(this.getFormat().parse(value).getFullYear(), this.getFormat().parse(value).getMonth(), this.getFormat().parse(value).getDate());
428-
const oCalDate = CalendarDate.fromTimestamp(jsDate.getTime(), this._primaryCalendarType);
426+
const jsDate = this.getFormat().parse(value);
427+
if (jsDate) {
428+
const jsDateTimeNow = new Date(jsDate.getFullYear(), jsDate.getMonth(), jsDate.getDate());
429+
const oCalDate = CalendarDate.fromTimestamp(jsDateTimeNow.getTime(), this._primaryCalendarType);
429430
return oCalDate.valueOf();
430431
}
431432
return undefined;
@@ -697,6 +698,16 @@ class DatePicker extends UI5Element {
697698
);
698699
}
699700

701+
/**
702+
* Formats a Java Script date object into a string representing a locale date
703+
* according to the <code>formatPattern</code> property of the DatePicker instance
704+
* @param {object} oDate A Java Script date object to be formatted as string
705+
* @public
706+
*/
707+
formatValue(oDate) {
708+
return this.getFormat().format(oDate);
709+
}
710+
700711
/**
701712
* Closes the picker.
702713
* @public

packages/main/src/TimePicker.js

+10
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,16 @@ class TimePicker extends UI5Element {
696696
}
697697
}
698698

699+
/**
700+
* Formats a Java Script date object into a string representing a locale date and time
701+
* according to the <code>formatPattern</code> property of the TimePicker instance
702+
* @param {object} oDate A Java Script date object to be formatted as string
703+
* @public
704+
*/
705+
formatValue(oDate) {
706+
return this.getFormat().format(oDate);
707+
}
708+
699709
_getSlidersContained() {
700710
const formatArray = this.getFormat().aFormatArray;
701711
return getTimeControlsByFormat(formatArray, this._hoursParameters);

packages/main/test/pages/DatePicker.html

+11
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ <h3>format-pattern - 'EEE, M/d/yyyy'</h3>
7272
<h3>Try the value - 'today'</h3>
7373
<ui5-datepicker id='dp10'></ui5-datepicker>
7474

75+
<h3>Value is set using Java Script Date object</h3>
76+
<ui5-datepicker id="dp11" value="11/11/2018" format-pattern="long"></ui5-datepicker>
77+
<ui5-button id="b1" design="Default">Set date</ui5-button>
78+
7579
<h3>disabled</h3>
7680
<ui5-datepicker id='dp2' value='11/11/2018' disabled></ui5-datepicker>
7781

@@ -158,6 +162,13 @@ <h3>DatePicker in Compact</h3>
158162
dp.openPicker({ focusInput: true });
159163
}
160164
});
165+
166+
var dp11 = document.getElementById('dp11');
167+
168+
document.getElementById('b1').addEventListener("click", function(e) {
169+
dp11.setAttribute("value", dp11.formatValue(new Date(2018, 11, 11)));
170+
});
171+
161172
</script>
162173
</body>
163174
</html>

packages/main/test/pages/DatePicker_test_page.html

+9
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
<ui5-datepicker id="dp10" disabled></ui5-datepicker>
3939
<ui5-datepicker id="dp11"></ui5-datepicker>
4040
<ui5-datepicker id="dp13"></ui5-datepicker>
41+
<ui5-datepicker id="dp16" format-pattern="long"></ui5-datepicker>
42+
<ui5-button id="b1" design="Default">Set date</ui5-button>
43+
4144

4245
<label id='lbl'>0</label>
4346
<label for="inputTimezone">Timezone:</label>
@@ -93,6 +96,12 @@ <h3>DatePicker with valueStateMessage</h3>
9396
document.querySelector('#lblTomorrow').innerHTML = ++counterTomorrow;
9497
document.querySelector('#lblTomorrowDate').innerHTML = e.target.value;
9598
});
99+
100+
var dp16 = document.getElementById('dp16');
101+
102+
document.getElementById('b1').addEventListener("click", function(e) {
103+
dp16.setAttribute("value", dp16.formatValue(new Date(2018, 11, 11)));
104+
});
96105
</script>
97106
</body>
98107
</html>

packages/main/test/pages/DateTimePicker.html

+16
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@
3131

3232
<section>
3333
<ui5-title wrap>DateTimePicker format pattern</ui5-title>
34+
35+
<br><ui5-label>Default format pattern</ui5-label><br>
36+
<ui5-datetime-picker
37+
id="defaultPattern"
38+
value="13/04/2020, 03:16:16 AM"
39+
></ui5-datetime-picker>
40+
<ui5-button id="setButton" design="Default">Set date</ui5-button>
41+
42+
<br>
43+
3444
<br><ui5-label>d/MM/yyyy, hh:mm aa</ui5-label><br>
3545
<ui5-datetime-picker
3646
id="dtMinutes"
@@ -160,6 +170,12 @@
160170
input3.value = ++counter2;
161171
input4.value = "{ value: " + dt2.value + " , valid: " + event.detail.valid + " }";
162172
});
173+
174+
var dtp = document.getElementById('defaultPattern');
175+
document.getElementById('setButton').addEventListener("click", function(e) {
176+
dtp.setAttribute("value", dtp.formatValue(new Date(2020, 3, 13, 3, 16, 16)));
177+
});
178+
163179
</script>
164180
</body>
165181
</html>

packages/main/test/pages/TimePicker.html

+9
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@
4242
<ui5-button id="testBtn">btn for testing</ui5-button>
4343

4444
<br /><br />
45+
<ui5-title>Test set time value</ui5-title>
46+
<ui5-timepicker id="timepickerSetTime" value=""></ui5-timepicker>
47+
<ui5-button id="setTimeButton">Set time</ui5-button>
48+
4549
<ui5-title>Test valueStateMessage slot</ui5-title>
4650
<ui5-timepicker id="timepickerValueStateMessage" value-state="Error">
4751
<div slot="valueStateMessage" id="customValueStateMessage">Please provide valid value</div>
@@ -58,6 +62,11 @@
5862
timepickerInput.addEventListener("input", function() {
5963
inputResult.value = ++inputCounter;
6064
});
65+
66+
var tp = document.getElementById('timepickerSetTime');
67+
document.getElementById('setTimeButton').addEventListener("click", function(e) {
68+
tp.setAttribute("value", tp.formatValue(new Date(2020, 3, 13, 3, 16, 16)));
69+
});
6170
</script>
6271
</body>
6372
</html>

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

+12
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,19 @@ describe("Date Picker Tests", () => {
2323
assert.equal(date.getFullYear(), 2011);
2424
});
2525

26+
it("input receives value in format pattern depending on the set language", () => {
27+
browser.url("http://localhost:8080/test-resources/pages/DatePicker_test_page.html?sap-ui-language=bg");
28+
datepicker.id = "#dp16";
29+
30+
const setDateButton = browser.$("#b1");
31+
32+
setDateButton.click();
33+
34+
assert.equal(datepicker.innerInput.getValue(), "11 декември 2018 г.");
35+
});
36+
2637
it("custom formatting", () => {
38+
datepicker.open();
2739
datepicker.id = "#dp2";
2840

2941
assert.ok(datepicker.isValid("2018, 05/05"), "custom value is valid");

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

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
const assert = require("chai").assert;
22

33
describe("TimePicker general interaction", () => {
4-
browser.url("http://localhost:8080/test-resources/pages/TimePicker.html");
4+
it("input receives value in format pattern depending on the set language", () => {
5+
browser.url("http://localhost:8080/test-resources/pages/TimePicker.html?sap-ui-language=bg");
6+
7+
const timepicker = browser.$("#timepickerSetTime");
8+
const setTimeButton = browser.$("#setTimeButton");
9+
10+
setTimeButton.click();
11+
12+
assert.equal(timepicker.shadow$("ui5-input").getValue(), "3:16:16 ч.");
13+
});
514

615
it("tests sliders value", () => {
16+
browser.url("http://localhost:8080/test-resources/pages/TimePicker.html");
717
const timepicker = browser.$("#timepicker");
818
const staticAreaItemClassName = browser.getStaticAreaItemClassName("#timepicker");
919
const timepickerPopover = browser.$(`.${staticAreaItemClassName}`).shadow$("ui5-responsive-popover");

0 commit comments

Comments
 (0)