Skip to content

Commit d11c973

Browse files
authored
feat(ui5-datepicker): Add property to hide week numbers (#1955)
Add new property to DatePicker, Calendar and DayPicker, called "hideWeekNumbers' to optionally hide the weeks numbers column. (In classic UI5 there is property "showWeekNumbers, default: true" in the Calendar, but not in the DatePicker). Note: For calendars other than Gregorian, the week numbers are not displayed regardless of what is set. Fixes: #1949
1 parent 30c357a commit d11c973

File tree

10 files changed

+136
-21
lines changed

10 files changed

+136
-21
lines changed

packages/main/src/Calendar.hbs

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
timestamp="{{_oMonth.timestamp}}"
2727
@ui5-change="{{_oMonth.onSelectedDatesChange}}"
2828
@ui5-navigate="{{_oMonth.onNavigate}}"
29+
?hide-week-numbers="{{hideWeekNumbers}}"
2930
></ui5-daypicker>
3031

3132
<ui5-monthpicker

packages/main/src/Calendar.js

+16
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,22 @@ const metadata = {
8282
type: String,
8383
},
8484

85+
/**
86+
* Defines the visibility of the week numbers column.
87+
* <br><br>
88+
*
89+
* <b>Note:<b> For calendars other than Gregorian,
90+
* the week numbers are not displayed regardless of what is set.
91+
*
92+
* @type {boolean}
93+
* @defaultvalue false
94+
* @public
95+
* @since 1.0.0-rc.8
96+
*/
97+
hideWeekNumbers: {
98+
type: Boolean,
99+
},
100+
85101
_header: {
86102
type: Object,
87103
},

packages/main/src/DatePicker.js

+16
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,22 @@ const metadata = {
188188
type: String,
189189
},
190190

191+
/**
192+
* Defines the visibility of the week numbers column.
193+
* <br><br>
194+
*
195+
* <b>Note:<b> For calendars other than Gregorian,
196+
* the week numbers are not displayed regardless of what is set.
197+
*
198+
* @type {boolean}
199+
* @defaultvalue false
200+
* @public
201+
* @since 1.0.0-rc.8
202+
*/
203+
hideWeekNumbers: {
204+
type: Boolean,
205+
},
206+
191207
_isPickerOpen: {
192208
type: Boolean,
193209
noAttribute: true,

packages/main/src/DatePickerPopover.hbs

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
.minDate="{{_calendar.minDate}}"
4949
.maxDate="{{_calendar.maxDate}}"
5050
@ui5-selected-dates-change="{{_calendar.onSelectedDatesChange}}"
51+
?hide-week-numbers="{{hideWeekNumbers}}"
5152
></ui5-calendar>
5253
{{/inline}}
5354

packages/main/src/DayPicker.hbs

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
@mouseup={{_onmouseup}}
77
>
88

9-
{{#if showWeekNumbers}}
9+
{{#unless _hideWeekNumbers}}
1010
<div class="ui5-dp-weeknumber-container">
1111
{{#each _weekNumbers}}
1212
<div class="ui5-dp-weekname-container">
1313
<span class="ui5-dp-weekname">{{this}}</span>
1414
</div>
1515
{{/each}}
1616
</div>
17-
{{/if}}
17+
{{/unless}}
1818

1919
<div id="{{_id}}-content" class="ui5-dp-content">
2020
<div role="row" class="ui5-dp-days-names-container">

packages/main/src/DayPicker.js

+57-12
Original file line numberDiff line numberDiff line change
@@ -88,29 +88,69 @@ const metadata = {
8888
type: String,
8989
},
9090

91+
/**
92+
* Determines the format, displayed in the input field.
93+
*
94+
* @type {string}
95+
* @defaultvalue ""
96+
* @public
97+
*/
98+
formatPattern: {
99+
type: String,
100+
},
101+
102+
/**
103+
* Defines the visibility of the week numbers column.
104+
* <br><br>
105+
*
106+
* <b>Note:<b> For calendars other than Gregorian,
107+
* the week numbers are not displayed regardless of what is set.
108+
*
109+
* @type {boolean}
110+
* @defaultvalue false
111+
* @public
112+
* @since 1.0.0-rc.8
113+
*/
114+
hideWeekNumbers: {
115+
type: Boolean,
116+
},
117+
118+
/**
119+
* Defines the effective weeks numbers visibility,
120+
* based on the <code>primaryCalendarType</code> and <code>hideWeekNumbers</code> property.
121+
* @type {boolean}
122+
* @private
123+
*/
124+
_hideWeekNumbers: {
125+
type: Boolean,
126+
},
127+
128+
/**
129+
* @type {Object}
130+
* @private
131+
*/
91132
_weeks: {
92133
type: Object,
93134
multiple: true,
94135
},
95136

137+
/**
138+
* @type {Object}
139+
* @private
140+
*/
96141
_weekNumbers: {
97142
type: Object,
98143
multiple: true,
99144
},
145+
146+
/**
147+
* @type {boolean}
148+
* @private
149+
*/
100150
_hidden: {
101151
type: Boolean,
102152
noAttribute: true,
103153
},
104-
/**
105-
* Determines the format, displayed in the input field.
106-
*
107-
* @type {string}
108-
* @defaultvalue ""
109-
* @public
110-
*/
111-
formatPattern: {
112-
type: String,
113-
},
114154
},
115155
events: /** @lends sap.ui.webcomponents.main.DayPicker.prototype */ {
116156
/**
@@ -314,6 +354,7 @@ class DayPicker extends UI5Element {
314354
}
315355

316356
this._dayNames[0].classes += " ui5-dp-firstday";
357+
this._hideWeekNumbers = this.shouldHideWeekNumbers;
317358
}
318359

319360
onAfterRendering() {
@@ -400,8 +441,12 @@ class DayPicker extends UI5Element {
400441
}
401442
}
402443

403-
get showWeekNumbers() {
404-
return this.primaryCalendarType === CalendarType.Gregorian;
444+
get shouldHideWeekNumbers() {
445+
if (this._primaryCalendarType !== CalendarType.Gregorian) {
446+
return true;
447+
}
448+
449+
return this.hideWeekNumbers;
405450
}
406451

407452
get _timestamp() {

packages/main/src/themes/DayPicker.css

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
width: 100%;
99
}
1010

11+
:host([_hide-week-numbers]) .ui5-dp-content {
12+
flex-basis: 100%;
13+
}
14+
1115
.ui5-dp-weekname,
1216
.ui5-dp-dayname,
1317
.ui5-dp-item {

packages/main/test/pageobjects/DatePickerTestPage.js

+4
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ class DatePickerTestPage {
6969
return browser.$(`.${this.staticAreaItemClassName}`).shadow$("ui5-calendar").shadow$(`ui5-calendar-header`).shadow$(`div[data-sap-show-picker="Month"]`);
7070
}
7171

72+
get dayPicker() {
73+
return browser.$(`.${this.staticAreaItemClassName}`).shadow$(`ui5-calendar`).shadow$(`ui5-daypicker`);
74+
}
75+
7276
getPickerDate(timestamp) {
7377
return browser.$(`.${this.staticAreaItemClassName}`).shadow$(`ui5-calendar`).shadow$(`ui5-daypicker`).shadow$(`div[data-sap-timestamp="${timestamp}"]`);
7478
}

packages/main/test/pages/DatePicker_test_page.html

+9-7
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,15 @@ <h3>Test placeholder</h3>
6060
<ui5-date-picker id="dp15" format-pattern="MMM d, y" placeholder="Delivery date"></ui5-date-picker>
6161

6262
<h3>DatePicker with valueStateMessage</h3>
63-
<ui5-date-picker
64-
id="dp17"
65-
value-state="Error">
66-
<div slot="valueStateMessage" id="coolValueStateMessage">
67-
This date is wrong
68-
</div>
69-
</ui5-date-picker>
63+
<ui5-date-picker id="dp17" value-state="Error">
64+
<div slot="valueStateMessage" id="coolValueStateMessage">
65+
This date is wrong
66+
</div>
67+
</ui5-date-picker>
68+
69+
<h3>DatePicker with hide-week-numbers=true/false</h3>
70+
<ui5-date-picker id="dp18"></ui5-date-picker>
71+
<ui5-date-picker id="dp19" hide-week-numbers></ui5-date-picker>
7072

7173
<script>
7274
var originalGetDate = Date.prototype.getDate;

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

+26
Original file line numberDiff line numberDiff line change
@@ -691,4 +691,30 @@ describe("Date Picker Tests", () => {
691691
datepicker.openPicker({ focusInput: false });
692692
assert.ok(datepicker.getDisplayedDay(14).isFocusedDeep(), "Days out of range are disabled");
693693
});
694+
695+
it("Tests week numbers column visibility", () => {
696+
// act
697+
datepicker.id = "#dp18";
698+
datepicker.valueHelpIcon.click()
699+
700+
// assert
701+
const weekNumbersCol1 = datepicker.dayPicker.shadow$(".ui5-dp-weeknumber-container");
702+
assert.equal(weekNumbersCol1.isExisting(), true, "The week numbers column is visible.");
703+
704+
// close date picker
705+
datepicker.innerInput.click();
706+
browser.keys(["Alt", "ArrowUp", "NULL"]);
707+
708+
// act
709+
datepicker.id = "#dp19";
710+
datepicker.valueHelpIcon.click()
711+
712+
// assert
713+
const weekNumbersCol2 = datepicker.dayPicker.shadow$(".ui5-dp-weeknumber-container");
714+
assert.equal(weekNumbersCol2.isExisting(), false, "The week numbers column is hidden.");
715+
716+
// close date picker
717+
datepicker.innerInput.click();
718+
browser.keys(["Alt", "ArrowUp", "NULL"]);
719+
});
694720
});

0 commit comments

Comments
 (0)