Skip to content

Commit 43191e5

Browse files
authored
refactor!: remove obsolete date-picker overlay header parts (#9370)
1 parent 407a35e commit 43191e5

9 files changed

+22
-166
lines changed

packages/date-picker/src/vaadin-date-picker-overlay-content-mixin.js

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,7 @@ import { Debouncer } from '@vaadin/component-base/src/debounce.js';
88
import { addListener } from '@vaadin/component-base/src/gestures.js';
99
import { MediaQueryController } from '@vaadin/component-base/src/media-query-controller.js';
1010
import { SlotController } from '@vaadin/component-base/src/slot-controller.js';
11-
import {
12-
dateAfterXMonths,
13-
dateAllowed,
14-
dateEquals,
15-
extractDateParts,
16-
getClosestDate,
17-
} from './vaadin-date-picker-helper.js';
11+
import { dateAfterXMonths, dateAllowed, dateEquals, getClosestDate } from './vaadin-date-picker-helper.js';
1812

1913
/**
2014
* @polymerMixin
@@ -170,17 +164,6 @@ export const DatePickerOverlayContentMixin = (superClass) =>
170164
return this.calendars.map((calendar) => calendar.focusableDateElement).find(Boolean);
171165
}
172166

173-
/** @protected */
174-
_addListeners() {
175-
addListener(this.shadowRoot.querySelector('[part="clear-button"]'), 'tap', this._clear.bind(this));
176-
addListener(this.shadowRoot.querySelector('[part="toggle-button"]'), 'tap', this._cancel.bind(this));
177-
addListener(
178-
this.shadowRoot.querySelector('[part="years-toggle-button"]'),
179-
'tap',
180-
this._toggleYearScroller.bind(this),
181-
);
182-
}
183-
184167
/** @protected */
185168
_initControllers() {
186169
this.addController(
@@ -195,7 +178,7 @@ export const DatePickerOverlayContentMixin = (superClass) =>
195178
initializer: (btn) => {
196179
btn.setAttribute('theme', 'tertiary');
197180
btn.addEventListener('keydown', (e) => this.__onTodayButtonKeyDown(e));
198-
addListener(btn, 'tap', this._onTodayTap.bind(this));
181+
btn.addEventListener('click', this._onTodayTap.bind(this));
199182
this._todayButton = btn;
200183
},
201184
}),
@@ -207,7 +190,7 @@ export const DatePickerOverlayContentMixin = (superClass) =>
207190
initializer: (btn) => {
208191
btn.setAttribute('theme', 'tertiary');
209192
btn.addEventListener('keydown', (e) => this.__onCancelButtonKeyDown(e));
210-
addListener(btn, 'tap', this._cancel.bind(this));
193+
btn.addEventListener('click', this._cancel.bind(this));
211194
this._cancelButton = btn;
212195
},
213196
}),
@@ -515,14 +498,6 @@ export const DatePickerOverlayContentMixin = (superClass) =>
515498
});
516499
}
517500

518-
/** @protected */
519-
_formatDisplayed(date, i18n, label) {
520-
if (date && i18n && typeof i18n.formatDate === 'function') {
521-
return i18n.formatDate(extractDateParts(date));
522-
}
523-
return label;
524-
}
525-
526501
/** @private */
527502
_onTodayTap() {
528503
const today = this._getTodayMidnight();
@@ -672,11 +647,6 @@ export const DatePickerOverlayContentMixin = (superClass) =>
672647
this._close();
673648
}
674649

675-
/** @protected */
676-
_preventDefault(e) {
677-
e.preventDefault();
678-
}
679-
680650
/** @private */
681651
__toggleDate(date) {
682652
if (dateEquals(date, this.selectedDate)) {

packages/date-picker/src/vaadin-date-picker-overlay-content-styles.js

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,6 @@ export const overlayContentStyles = css`
2525
grid-template-columns: minmax(0, 1fr) auto;
2626
}
2727
28-
:host([fullscreen]) :is([part='toggle-button'], [part='clear-button'], [part='label']) {
29-
display: none;
30-
}
31-
32-
[part='overlay-header'] {
33-
display: none;
34-
grid-area: header;
35-
align-items: center;
36-
justify-content: center;
37-
}
38-
39-
:host([fullscreen]) [part='overlay-header'] {
40-
display: flex;
41-
}
42-
43-
[part='label'] {
44-
flex-grow: 1;
45-
}
46-
4728
[hidden] {
4829
display: none !important;
4930
}
@@ -65,8 +46,6 @@ export const overlayContentStyles = css`
6546
display: flex;
6647
grid-area: toolbar;
6748
justify-content: space-between;
68-
z-index: 2;
69-
flex-shrink: 0;
7049
}
7150
7251
:host([fullscreen]) [part='toolbar'] {

packages/date-picker/src/vaadin-date-picker-overlay-content.js

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,19 @@ class DatePickerOverlayContent extends DatePickerOverlayContentMixin(
3636
/** @protected */
3737
render() {
3838
return html`
39-
<div part="overlay-header" @touchend="${this._preventDefault}" aria-hidden="true">
40-
<div part="label">${this._formatDisplayed(this.selectedDate, this.i18n, this.label)}</div>
41-
<div part="clear-button" ?hidden="${!this.selectedDate}"></div>
42-
<div part="toggle-button"></div>
43-
44-
<div part="years-toggle-button" ?hidden="${this._desktopMode}" aria-hidden="true">
45-
${this._yearAfterXMonths(this._visibleMonthIndex)}
46-
</div>
47-
</div>
48-
4939
<slot name="months"></slot>
5040
<slot name="years"></slot>
5141
52-
<div @touchend="${this._preventDefault}" role="toolbar" part="toolbar">
42+
<div role="toolbar" part="toolbar">
5343
<slot name="today-button"></slot>
44+
<div
45+
part="years-toggle-button"
46+
?hidden="${this._desktopMode}"
47+
aria-hidden="true"
48+
@click="${this._toggleYearScroller}"
49+
>
50+
${this._yearAfterXMonths(this._visibleMonthIndex)}
51+
</div>
5452
<slot name="cancel-button"></slot>
5553
</div>
5654
`;
@@ -62,7 +60,6 @@ class DatePickerOverlayContent extends DatePickerOverlayContentMixin(
6260

6361
this.setAttribute('role', 'dialog');
6462

65-
this._addListeners();
6663
this._initControllers();
6764
}
6865
}

packages/date-picker/src/vaadin-date-picker.d.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,8 @@ export interface DatePickerEventMap extends HTMLElementEventMap, DatePickerCusto
110110
*
111111
* Part name | Description
112112
* ----------------------|--------------------
113-
* `overlay-header` | Fullscreen mode header
114-
* `label` | Fullscreen mode value/label
115-
* `clear-button` | Fullscreen mode clear button
116-
* `toggle-button` | Fullscreen mode toggle button
117113
* `years-toggle-button` | Fullscreen mode years scroller toggle
118-
* `toolbar` | Footer bar with slotted buttons
114+
* `toolbar` | Toolbar with slotted buttons
119115
*
120116
* The following state attributes are available on the `<vaadin-date-picker-overlay-content>` element:
121117
*

packages/date-picker/src/vaadin-date-picker.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,8 @@ import { datePickerStyles } from './vaadin-date-picker-styles.js';
7474
*
7575
* Part name | Description
7676
* ----------------------|--------------------
77-
* `overlay-header` | Fullscreen mode header
78-
* `label` | Fullscreen mode value/label
79-
* `clear-button` | Fullscreen mode clear button
80-
* `toggle-button` | Fullscreen mode toggle button
8177
* `years-toggle-button` | Fullscreen mode years scroller toggle
82-
* `toolbar` | Footer bar with slotted buttons
78+
* `toolbar` | Toolbar with slotted buttons
8379
*
8480
* The following state attributes are available on the `<vaadin-date-picker-overlay-content>` element:
8581
*

packages/date-picker/test/basic.test.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,6 @@ describe('basic features', () => {
223223
expect(weekdayTitles).to.eql(['ma', 'ti', 'ke', 'to', 'pe', 'la', 'su']);
224224
});
225225

226-
it('should reflect value in overlay header', () => {
227-
datePicker.value = '2000-02-01';
228-
expect(overlayContent.shadowRoot.querySelector('[part="label"]').textContent.trim()).to.equal('1.2.2000');
229-
});
230-
231226
it('should display buttons in correct locale', () => {
232227
expect(overlayContent._todayButton.textContent.trim()).to.equal('Tänään');
233228
expect(overlayContent._cancelButton.textContent.trim()).to.equal('Peruuta');

packages/date-picker/test/overlay-content.test.js

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -124,50 +124,11 @@ describe('overlay', () => {
124124
});
125125
});
126126

127-
describe('header', () => {
128-
let header, clearButton;
129-
130-
beforeEach(() => {
131-
header = overlay.shadowRoot.querySelector('[part="overlay-header"]');
132-
clearButton = overlay.shadowRoot.querySelector('[part="clear-button"]');
133-
});
134-
135-
it('should be visible', () => {
136-
overlay.setAttribute('fullscreen', '');
137-
expect(window.getComputedStyle(header).display).to.equal('flex');
138-
});
139-
140-
it('should be invisible', () => {
141-
expect(window.getComputedStyle(header).display).to.equal('none');
142-
});
143-
144-
it('should reflect value in label', () => {
145-
overlay.i18n = { ...overlay.i18n, formatDate: (date) => `${date.month + 1}/${date.day}/${date.year}` };
146-
overlay.selectedDate = new Date(2000, 1, 1);
147-
expect(overlay.shadowRoot.querySelector('[part="label"]').textContent.trim()).to.equal('2/1/2000');
148-
});
149-
150-
it('should not show clear button if not value is set', () => {
151-
expect(window.getComputedStyle(clearButton).display).to.equal('none');
152-
});
153-
154-
it('should show clear button if value is set', () => {
155-
overlay.selectedDate = new Date();
156-
expect(window.getComputedStyle(clearButton).display).to.not.equal('none');
157-
});
158-
159-
it('should clear the value', () => {
160-
overlay.selectedDate = new Date();
161-
click(clearButton);
162-
expect(overlay.selectedDate).to.equal('');
163-
});
164-
});
165-
166127
describe('footer', () => {
167128
it('should fire close on cancel click', () => {
168129
const spy = sinon.spy();
169130
overlay.addEventListener('close', spy);
170-
tap(overlay._cancelButton);
131+
click(overlay._cancelButton);
171132
expect(spy.calledOnce).to.be.true;
172133
});
173134

@@ -178,7 +139,7 @@ describe('overlay', () => {
178139

179140
const today = new Date();
180141
const spy = sinon.spy(overlay, 'scrollToDate');
181-
tap(overlay._todayButton);
142+
click(overlay._todayButton);
182143
await untilOverlayScrolled(overlay);
183144

184145
expect(spy.calledOnce).to.be.true;
@@ -195,7 +156,7 @@ describe('overlay', () => {
195156

196157
const spy = sinon.spy();
197158
overlay.addEventListener('close', spy);
198-
tap(overlay._todayButton);
159+
click(overlay._todayButton);
199160

200161
expect(overlay.selectedDate.getFullYear()).to.equal(today.getFullYear());
201162
expect(overlay.selectedDate.getMonth()).to.equal(today.getMonth());
@@ -212,7 +173,7 @@ describe('overlay', () => {
212173
overlay.addEventListener('close', spy);
213174

214175
overlay._monthScroller.$.scroller.scrollTop -= 1;
215-
tap(overlay._todayButton);
176+
click(overlay._todayButton);
216177

217178
expect(overlay.selectedDate).to.be.not.ok;
218179
expect(spy.called).to.be.false;
@@ -228,7 +189,7 @@ describe('overlay', () => {
228189
const lastScrollPos = overlay._monthScroller.position;
229190

230191
overlay._todayButton.disabled = true;
231-
tap(overlay._todayButton);
192+
click(overlay._todayButton);
232193

233194
expect(overlay._monthScroller.position).to.equal(lastScrollPos);
234195
expect(closeSpy.called).to.be.false;
@@ -286,7 +247,7 @@ describe('overlay', () => {
286247
overlay.scrollToDate(todayMidnight);
287248
await untilOverlayScrolled(overlay);
288249

289-
tap(overlay._todayButton);
250+
click(overlay._todayButton);
290251

291252
expect(overlay.selectedDate.getFullYear()).to.equal(todayMidnight.getFullYear());
292253
expect(overlay.selectedDate.getMonth()).to.equal(todayMidnight.getMonth());

packages/date-picker/theme/lumo/vaadin-date-picker-overlay-content-styles.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,21 +98,14 @@ registerStyles(
9898
margin-inline-end: 57px;
9999
}
100100
101-
:host([fullscreen]) [part='overlay-header'] {
102-
height: var(--lumo-size-m);
103-
padding: var(--lumo-space-s);
104-
justify-content: center;
105-
}
106-
107101
/* Very narrow screen (year scroller initially hidden) */
108102
109103
[part='years-toggle-button'] {
110104
display: flex;
111105
align-items: center;
112-
height: var(--lumo-size-s);
106+
height: var(--lumo-size-m);
113107
padding: 0 0.5em;
114108
border-radius: var(--lumo-border-radius-m);
115-
z-index: 3;
116109
color: var(--lumo-primary-text-color);
117110
font-weight: 500;
118111
-webkit-font-smoothing: antialiased;

packages/vaadin-lumo-styles/src/components/date-picker-overlay-content.css

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@
3333
grid-template-columns: minmax(0, 1fr) auto;
3434
}
3535

36-
[part='label'] {
37-
flex-grow: 1;
38-
}
39-
4036
[hidden] {
4137
display: none !important;
4238
}
@@ -111,8 +107,6 @@
111107
display: flex;
112108
grid-area: toolbar;
113109
justify-content: space-between;
114-
z-index: 2;
115-
flex-shrink: 0;
116110
padding: var(--lumo-space-s);
117111
border-bottom-left-radius: var(--lumo-border-radius-l);
118112
}
@@ -128,43 +122,18 @@
128122

129123
/* Narrow viewport mode (fullscreen) */
130124

131-
[part='overlay-header'] {
132-
display: none;
133-
grid-area: header;
134-
align-items: center;
135-
justify-content: center;
136-
}
137-
138-
:host([fullscreen]) :is([part='toggle-button'], [part='clear-button'], [part='label']) {
139-
display: none;
140-
}
141-
142125
:host([fullscreen]) [part='toolbar'] {
143126
background-color: var(--lumo-base-color);
144127
}
145128

146-
:host([fullscreen]) [part='overlay-header'] {
147-
display: flex;
148-
height: var(--lumo-size-m);
149-
padding: var(--lumo-space-s);
150-
justify-content: center;
151-
}
152-
153-
:host([fullscreen]) [part='toggle-button'],
154-
:host([fullscreen]) [part='clear-button'],
155-
[part='overlay-header'] [part='label'] {
156-
display: none;
157-
}
158-
159129
/* Very narrow screen (year scroller initially hidden) */
160130

161131
[part='years-toggle-button'] {
162132
display: flex;
163133
align-items: center;
164-
height: var(--lumo-size-s);
134+
height: var(--lumo-size-m);
165135
padding: 0 0.5em;
166136
border-radius: var(--lumo-border-radius-m);
167-
z-index: 3;
168137
color: var(--lumo-primary-text-color);
169138
font-weight: 500;
170139
-webkit-font-smoothing: antialiased;

0 commit comments

Comments
 (0)