@vaadin/date-picker 23.0.9 → 23.0.12
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.
- package/package.json +11 -12
- package/src/vaadin-date-picker-helper.js +1 -1
- package/src/vaadin-date-picker-light.d.ts +2 -2
- package/src/vaadin-date-picker-light.js +10 -6
- package/src/vaadin-date-picker-mixin.d.ts +1 -1
- package/src/vaadin-date-picker-mixin.js +55 -44
- package/src/vaadin-date-picker-overlay-content.js +31 -44
- package/src/vaadin-date-picker-overlay.js +1 -1
- package/src/vaadin-date-picker.d.ts +2 -2
- package/src/vaadin-date-picker.js +8 -4
- package/src/vaadin-infinite-scroller.js +6 -6
- package/src/vaadin-month-calendar.js +13 -13
- package/theme/lumo/vaadin-date-picker-overlay-content-styles.js +1 -1
- package/theme/lumo/vaadin-date-picker-overlay-styles.js +2 -1
- package/theme/lumo/vaadin-month-calendar-styles.js +1 -1
- package/theme/material/vaadin-date-picker-overlay-content-styles.js +1 -1
- package/theme/material/vaadin-date-picker-overlay-styles.js +2 -1
- package/theme/material/vaadin-month-calendar-styles.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/date-picker",
|
|
3
|
-
"version": "23.0.
|
|
3
|
+
"version": "23.0.12",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -34,21 +34,20 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
36
36
|
"@polymer/polymer": "^3.2.0",
|
|
37
|
-
"@vaadin/button": "^23.0.
|
|
38
|
-
"@vaadin/component-base": "^23.0.
|
|
39
|
-
"@vaadin/field-base": "^23.0.
|
|
40
|
-
"@vaadin/input-container": "^23.0.
|
|
41
|
-
"@vaadin/vaadin-lumo-styles": "^23.0.
|
|
42
|
-
"@vaadin/vaadin-material-styles": "^23.0.
|
|
43
|
-
"@vaadin/vaadin-overlay": "^23.0.
|
|
44
|
-
"@vaadin/vaadin-themable-mixin": "^23.0.
|
|
37
|
+
"@vaadin/button": "^23.0.12",
|
|
38
|
+
"@vaadin/component-base": "^23.0.12",
|
|
39
|
+
"@vaadin/field-base": "^23.0.12",
|
|
40
|
+
"@vaadin/input-container": "^23.0.12",
|
|
41
|
+
"@vaadin/vaadin-lumo-styles": "^23.0.12",
|
|
42
|
+
"@vaadin/vaadin-material-styles": "^23.0.12",
|
|
43
|
+
"@vaadin/vaadin-overlay": "^23.0.12",
|
|
44
|
+
"@vaadin/vaadin-themable-mixin": "^23.0.12"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@esm-bundle/chai": "^4.3.4",
|
|
48
|
-
"@vaadin/dialog": "^23.0.
|
|
49
|
-
"@vaadin/polymer-legacy-adapter": "^23.0.9",
|
|
48
|
+
"@vaadin/dialog": "^23.0.12",
|
|
50
49
|
"@vaadin/testing-helpers": "^0.3.2",
|
|
51
50
|
"sinon": "^9.2.0"
|
|
52
51
|
},
|
|
53
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "717908c222c1e241259e30b4144cd5ba32734819"
|
|
54
53
|
}
|
|
@@ -90,13 +90,13 @@ declare class DatePickerLight extends ThemableMixin(DatePickerMixin(HTMLElement)
|
|
|
90
90
|
addEventListener<K extends keyof DatePickerLightEventMap>(
|
|
91
91
|
type: K,
|
|
92
92
|
listener: (this: DatePickerLight, ev: DatePickerLightEventMap[K]) => void,
|
|
93
|
-
options?: boolean | AddEventListenerOptions
|
|
93
|
+
options?: boolean | AddEventListenerOptions,
|
|
94
94
|
): void;
|
|
95
95
|
|
|
96
96
|
removeEventListener<K extends keyof DatePickerLightEventMap>(
|
|
97
97
|
type: K,
|
|
98
98
|
listener: (this: DatePickerLight, ev: DatePickerLightEventMap[K]) => void,
|
|
99
|
-
options?: boolean | EventListenerOptions
|
|
99
|
+
options?: boolean | EventListenerOptions,
|
|
100
100
|
): void;
|
|
101
101
|
}
|
|
102
102
|
|
|
@@ -84,13 +84,10 @@ class DatePickerLight extends ThemableMixin(DatePickerMixin(PolymerElement)) {
|
|
|
84
84
|
fullscreen$="[[_fullscreen]]"
|
|
85
85
|
label="[[label]]"
|
|
86
86
|
selected-date="[[_selectedDate]]"
|
|
87
|
-
slot="dropdown-content"
|
|
88
87
|
focused-date="{{_focusedDate}}"
|
|
89
88
|
show-week-numbers="[[showWeekNumbers]]"
|
|
90
89
|
min-date="[[_minDate]]"
|
|
91
90
|
max-date="[[_maxDate]]"
|
|
92
|
-
on-date-tap="_close"
|
|
93
|
-
role="dialog"
|
|
94
91
|
part="overlay-content"
|
|
95
92
|
theme$="[[__getOverlayTheme(theme, _overlayInitialized)]]"
|
|
96
93
|
>
|
|
@@ -114,7 +111,7 @@ class DatePickerLight extends ThemableMixin(DatePickerMixin(PolymerElement)) {
|
|
|
114
111
|
*/
|
|
115
112
|
attrForValue: {
|
|
116
113
|
type: String,
|
|
117
|
-
value: 'value'
|
|
114
|
+
value: 'value',
|
|
118
115
|
},
|
|
119
116
|
|
|
120
117
|
/**
|
|
@@ -123,11 +120,18 @@ class DatePickerLight extends ThemableMixin(DatePickerMixin(PolymerElement)) {
|
|
|
123
120
|
*/
|
|
124
121
|
_overlayInitialized: {
|
|
125
122
|
type: Boolean,
|
|
126
|
-
value: true
|
|
127
|
-
}
|
|
123
|
+
value: true,
|
|
124
|
+
},
|
|
128
125
|
};
|
|
129
126
|
}
|
|
130
127
|
|
|
128
|
+
/** @protected */
|
|
129
|
+
ready() {
|
|
130
|
+
super.ready();
|
|
131
|
+
|
|
132
|
+
this._initOverlay();
|
|
133
|
+
}
|
|
134
|
+
|
|
131
135
|
/** @protected */
|
|
132
136
|
connectedCallback() {
|
|
133
137
|
super.connectedCallback();
|
|
@@ -26,7 +26,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
26
26
|
* @protected
|
|
27
27
|
*/
|
|
28
28
|
_selectedDate: {
|
|
29
|
-
type: Date
|
|
29
|
+
type: Date,
|
|
30
30
|
},
|
|
31
31
|
|
|
32
32
|
/**
|
|
@@ -48,7 +48,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
48
48
|
type: String,
|
|
49
49
|
observer: '_valueChanged',
|
|
50
50
|
notify: true,
|
|
51
|
-
value: ''
|
|
51
|
+
value: '',
|
|
52
52
|
},
|
|
53
53
|
|
|
54
54
|
/**
|
|
@@ -66,7 +66,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
66
66
|
type: Boolean,
|
|
67
67
|
reflectToAttribute: true,
|
|
68
68
|
notify: true,
|
|
69
|
-
observer: '_openedChanged'
|
|
69
|
+
observer: '_openedChanged',
|
|
70
70
|
},
|
|
71
71
|
|
|
72
72
|
/**
|
|
@@ -82,7 +82,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
82
82
|
* @attr {boolean} show-week-numbers
|
|
83
83
|
*/
|
|
84
84
|
showWeekNumbers: {
|
|
85
|
-
type: Boolean
|
|
85
|
+
type: Boolean,
|
|
86
86
|
},
|
|
87
87
|
|
|
88
88
|
/**
|
|
@@ -91,7 +91,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
91
91
|
*/
|
|
92
92
|
_fullscreen: {
|
|
93
93
|
type: Boolean,
|
|
94
|
-
value: false
|
|
94
|
+
value: false,
|
|
95
95
|
},
|
|
96
96
|
|
|
97
97
|
/**
|
|
@@ -99,7 +99,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
99
99
|
* @protected
|
|
100
100
|
*/
|
|
101
101
|
_fullscreenMediaQuery: {
|
|
102
|
-
value: '(max-width: 420px), (max-height: 420px)'
|
|
102
|
+
value: '(max-width: 420px), (max-height: 420px)',
|
|
103
103
|
},
|
|
104
104
|
|
|
105
105
|
/**
|
|
@@ -208,7 +208,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
208
208
|
'September',
|
|
209
209
|
'October',
|
|
210
210
|
'November',
|
|
211
|
-
'December'
|
|
211
|
+
'December',
|
|
212
212
|
],
|
|
213
213
|
weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
|
214
214
|
weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
|
@@ -248,9 +248,9 @@ export const DatePickerMixin = (subclass) =>
|
|
|
248
248
|
},
|
|
249
249
|
formatTitle: (monthName, fullYear) => {
|
|
250
250
|
return monthName + ' ' + fullYear;
|
|
251
|
-
}
|
|
251
|
+
},
|
|
252
252
|
};
|
|
253
|
-
}
|
|
253
|
+
},
|
|
254
254
|
},
|
|
255
255
|
|
|
256
256
|
/**
|
|
@@ -264,7 +264,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
264
264
|
*/
|
|
265
265
|
min: {
|
|
266
266
|
type: String,
|
|
267
|
-
observer: '_minChanged'
|
|
267
|
+
observer: '_minChanged',
|
|
268
268
|
},
|
|
269
269
|
|
|
270
270
|
/**
|
|
@@ -278,7 +278,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
278
278
|
*/
|
|
279
279
|
max: {
|
|
280
280
|
type: String,
|
|
281
|
-
observer: '_maxChanged'
|
|
281
|
+
observer: '_maxChanged',
|
|
282
282
|
},
|
|
283
283
|
|
|
284
284
|
/**
|
|
@@ -289,7 +289,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
289
289
|
_minDate: {
|
|
290
290
|
type: Date,
|
|
291
291
|
// null does not work here because minimizer passes undefined to overlay (#351)
|
|
292
|
-
value: ''
|
|
292
|
+
value: '',
|
|
293
293
|
},
|
|
294
294
|
|
|
295
295
|
/**
|
|
@@ -299,39 +299,39 @@ export const DatePickerMixin = (subclass) =>
|
|
|
299
299
|
*/
|
|
300
300
|
_maxDate: {
|
|
301
301
|
type: Date,
|
|
302
|
-
value: ''
|
|
302
|
+
value: '',
|
|
303
303
|
},
|
|
304
304
|
|
|
305
305
|
/** @private */
|
|
306
306
|
_noInput: {
|
|
307
307
|
type: Boolean,
|
|
308
|
-
computed: '_isNoInput(inputElement, _fullscreen, _ios, i18n, opened, autoOpenDisabled)'
|
|
308
|
+
computed: '_isNoInput(inputElement, _fullscreen, _ios, i18n, opened, autoOpenDisabled)',
|
|
309
309
|
},
|
|
310
310
|
|
|
311
311
|
/** @private */
|
|
312
312
|
_ios: {
|
|
313
313
|
type: Boolean,
|
|
314
|
-
value: isIOS
|
|
314
|
+
value: isIOS,
|
|
315
315
|
},
|
|
316
316
|
|
|
317
317
|
/** @private */
|
|
318
318
|
_webkitOverflowScroll: {
|
|
319
319
|
type: Boolean,
|
|
320
|
-
value: document.createElement('div').style.webkitOverflowScrolling === ''
|
|
320
|
+
value: document.createElement('div').style.webkitOverflowScrolling === '',
|
|
321
321
|
},
|
|
322
322
|
|
|
323
323
|
/** @private */
|
|
324
324
|
_focusOverlayOnOpen: Boolean,
|
|
325
325
|
|
|
326
326
|
/** @protected */
|
|
327
|
-
_overlayInitialized: Boolean
|
|
327
|
+
_overlayInitialized: Boolean,
|
|
328
328
|
};
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
static get observers() {
|
|
332
332
|
return [
|
|
333
333
|
'_selectedDateChanged(_selectedDate, i18n.formatDate)',
|
|
334
|
-
'_focusedDateChanged(_focusedDate, i18n.formatDate)'
|
|
334
|
+
'_focusedDateChanged(_focusedDate, i18n.formatDate)',
|
|
335
335
|
];
|
|
336
336
|
}
|
|
337
337
|
|
|
@@ -421,7 +421,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
421
421
|
this.addController(
|
|
422
422
|
new MediaQueryController(this._fullscreenMediaQuery, (matches) => {
|
|
423
423
|
this._fullscreen = matches;
|
|
424
|
-
})
|
|
424
|
+
}),
|
|
425
425
|
);
|
|
426
426
|
|
|
427
427
|
this.addController(new VirtualKeyboardController(this));
|
|
@@ -471,13 +471,18 @@ export const DatePickerMixin = (subclass) =>
|
|
|
471
471
|
}
|
|
472
472
|
}
|
|
473
473
|
|
|
474
|
-
/** @
|
|
474
|
+
/** @protected */
|
|
475
475
|
_initOverlay() {
|
|
476
476
|
this.$.overlay.removeAttribute('disable-upgrade');
|
|
477
477
|
this._overlayInitialized = true;
|
|
478
478
|
|
|
479
479
|
this.$.overlay.addEventListener('opened-changed', (e) => (this.opened = e.detail.value));
|
|
480
480
|
|
|
481
|
+
this.$.overlay.addEventListener('vaadin-overlay-escape-press', () => {
|
|
482
|
+
this._focusedDate = this._selectedDate;
|
|
483
|
+
this._close();
|
|
484
|
+
});
|
|
485
|
+
|
|
481
486
|
this._overlayContent.addEventListener('close', this._close.bind(this));
|
|
482
487
|
this._overlayContent.addEventListener('focus-input', this._focusAndSelect.bind(this));
|
|
483
488
|
|
|
@@ -486,6 +491,8 @@ export const DatePickerMixin = (subclass) =>
|
|
|
486
491
|
this.__userConfirmedDate = true;
|
|
487
492
|
|
|
488
493
|
this._selectDate(e.detail.date);
|
|
494
|
+
|
|
495
|
+
this._close(e);
|
|
489
496
|
});
|
|
490
497
|
|
|
491
498
|
// User confirmed selected date by pressing Enter or Today.
|
|
@@ -496,12 +503,10 @@ export const DatePickerMixin = (subclass) =>
|
|
|
496
503
|
});
|
|
497
504
|
|
|
498
505
|
// Keep focus attribute in focusElement for styling
|
|
499
|
-
this._overlayContent.addEventListener('
|
|
506
|
+
this._overlayContent.addEventListener('focusin', () => {
|
|
500
507
|
this._setFocused(true);
|
|
501
508
|
});
|
|
502
509
|
|
|
503
|
-
this.$.overlay.addEventListener('vaadin-overlay-close', this._onVaadinOverlayClose.bind(this));
|
|
504
|
-
|
|
505
510
|
this.addEventListener('mousedown', () => this.__bringToFront());
|
|
506
511
|
this.addEventListener('touchstart', () => this.__bringToFront());
|
|
507
512
|
}
|
|
@@ -761,6 +766,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
761
766
|
|
|
762
767
|
if (this._noInput && this.focusElement) {
|
|
763
768
|
this.focusElement.blur();
|
|
769
|
+
this._overlayContent.focusDateElement();
|
|
764
770
|
}
|
|
765
771
|
}
|
|
766
772
|
|
|
@@ -775,7 +781,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
775
781
|
element.style.webkitOverflowScrolling = 'auto';
|
|
776
782
|
result.push({
|
|
777
783
|
element: element,
|
|
778
|
-
oldInlineValue: oldInlineValue
|
|
784
|
+
oldInlineValue: oldInlineValue,
|
|
779
785
|
});
|
|
780
786
|
}
|
|
781
787
|
element = element.parentElement;
|
|
@@ -811,7 +817,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
811
817
|
|
|
812
818
|
if (this._touchPrevented) {
|
|
813
819
|
this._touchPrevented.forEach(
|
|
814
|
-
(prevented) => (prevented.element.style.webkitOverflowScrolling = prevented.oldInlineValue)
|
|
820
|
+
(prevented) => (prevented.element.style.webkitOverflowScrolling = prevented.oldInlineValue),
|
|
815
821
|
);
|
|
816
822
|
this._touchPrevented = [];
|
|
817
823
|
}
|
|
@@ -847,9 +853,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
847
853
|
|
|
848
854
|
/** @protected */
|
|
849
855
|
_focus() {
|
|
850
|
-
if (this._noInput) {
|
|
851
|
-
this._overlayInitialized && this._overlayContent.focus();
|
|
852
|
-
} else {
|
|
856
|
+
if (!this._noInput) {
|
|
853
857
|
this.inputElement.focus();
|
|
854
858
|
}
|
|
855
859
|
}
|
|
@@ -924,7 +928,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
924
928
|
// the required attribute. Both are not allowed on an input element.
|
|
925
929
|
// Therefore we prevent default on most keydown events.
|
|
926
930
|
var allowedKeys = [
|
|
927
|
-
9 // tab
|
|
931
|
+
9, // tab
|
|
928
932
|
];
|
|
929
933
|
if (allowedKeys.indexOf(e.keyCode) === -1) {
|
|
930
934
|
e.preventDefault();
|
|
@@ -965,21 +969,7 @@ export const DatePickerMixin = (subclass) =>
|
|
|
965
969
|
break;
|
|
966
970
|
}
|
|
967
971
|
case 'Escape':
|
|
968
|
-
|
|
969
|
-
this._focusedDate = this._selectedDate;
|
|
970
|
-
this._close();
|
|
971
|
-
} else if (this.clearButtonVisible) {
|
|
972
|
-
this._onClearButtonClick();
|
|
973
|
-
} else if (this.autoOpenDisabled) {
|
|
974
|
-
// Do not restore selected date if Esc was pressed after clearing input field
|
|
975
|
-
if (this.inputElement.value === '') {
|
|
976
|
-
this._selectDate(null);
|
|
977
|
-
}
|
|
978
|
-
this._applyInputValue(this._selectedDate);
|
|
979
|
-
} else {
|
|
980
|
-
this._focusedDate = this._selectedDate;
|
|
981
|
-
this._selectParsedOrFocusedDate();
|
|
982
|
-
}
|
|
972
|
+
this._onEscape();
|
|
983
973
|
break;
|
|
984
974
|
case 'Tab':
|
|
985
975
|
if (this.opened) {
|
|
@@ -998,6 +988,27 @@ export const DatePickerMixin = (subclass) =>
|
|
|
998
988
|
}
|
|
999
989
|
}
|
|
1000
990
|
|
|
991
|
+
/** @private */
|
|
992
|
+
_onEscape() {
|
|
993
|
+
// Closing overlay is handled in vaadin-overlay-escape-press event listener.
|
|
994
|
+
if (this.opened) {
|
|
995
|
+
return;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
if (this.clearButtonVisible) {
|
|
999
|
+
this._onClearButtonClick();
|
|
1000
|
+
} else if (this.autoOpenDisabled) {
|
|
1001
|
+
// Do not restore selected date if Esc was pressed after clearing input field
|
|
1002
|
+
if (this.inputElement.value === '') {
|
|
1003
|
+
this._selectDate(null);
|
|
1004
|
+
}
|
|
1005
|
+
this._applyInputValue(this._selectedDate);
|
|
1006
|
+
} else {
|
|
1007
|
+
this._focusedDate = this._selectedDate;
|
|
1008
|
+
this._selectParsedOrFocusedDate();
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1001
1012
|
/** @private */
|
|
1002
1013
|
_getParsedDate(inputValue = this._inputValue) {
|
|
1003
1014
|
const dateObject = this.i18n.parseDate && this.i18n.parseDate(inputValue);
|
|
@@ -235,14 +235,14 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
235
235
|
return {
|
|
236
236
|
scrollDuration: {
|
|
237
237
|
type: Number,
|
|
238
|
-
default: 300
|
|
238
|
+
default: 300,
|
|
239
239
|
},
|
|
240
240
|
|
|
241
241
|
/**
|
|
242
242
|
* The value for this element.
|
|
243
243
|
*/
|
|
244
244
|
selectedDate: {
|
|
245
|
-
type: Date
|
|
245
|
+
type: Date,
|
|
246
246
|
},
|
|
247
247
|
|
|
248
248
|
/**
|
|
@@ -251,7 +251,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
251
251
|
focusedDate: {
|
|
252
252
|
type: Date,
|
|
253
253
|
notify: true,
|
|
254
|
-
observer: '_focusedDateChanged'
|
|
254
|
+
observer: '_focusedDateChanged',
|
|
255
255
|
},
|
|
256
256
|
|
|
257
257
|
_focusedMonthDate: Number,
|
|
@@ -261,11 +261,11 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
261
261
|
*/
|
|
262
262
|
initialPosition: {
|
|
263
263
|
type: Date,
|
|
264
|
-
observer: '_initialPositionChanged'
|
|
264
|
+
observer: '_initialPositionChanged',
|
|
265
265
|
},
|
|
266
266
|
|
|
267
267
|
_originDate: {
|
|
268
|
-
value: new Date()
|
|
268
|
+
value: new Date(),
|
|
269
269
|
},
|
|
270
270
|
|
|
271
271
|
_visibleMonthIndex: Number,
|
|
@@ -274,23 +274,23 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
274
274
|
|
|
275
275
|
_desktopMediaQuery: {
|
|
276
276
|
type: String,
|
|
277
|
-
value: '(min-width: 375px)'
|
|
277
|
+
value: '(min-width: 375px)',
|
|
278
278
|
},
|
|
279
279
|
|
|
280
280
|
_translateX: {
|
|
281
|
-
observer: '_translateXChanged'
|
|
281
|
+
observer: '_translateXChanged',
|
|
282
282
|
},
|
|
283
283
|
|
|
284
284
|
_yearScrollerWidth: {
|
|
285
|
-
value: 50
|
|
285
|
+
value: 50,
|
|
286
286
|
},
|
|
287
287
|
|
|
288
288
|
i18n: {
|
|
289
|
-
type: Object
|
|
289
|
+
type: Object,
|
|
290
290
|
},
|
|
291
291
|
|
|
292
292
|
showWeekNumbers: {
|
|
293
|
-
type: Boolean
|
|
293
|
+
type: Boolean,
|
|
294
294
|
},
|
|
295
295
|
|
|
296
296
|
_ignoreTaps: Boolean,
|
|
@@ -310,7 +310,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
310
310
|
/**
|
|
311
311
|
* Input label
|
|
312
312
|
*/
|
|
313
|
-
label: String
|
|
313
|
+
label: String,
|
|
314
314
|
};
|
|
315
315
|
}
|
|
316
316
|
|
|
@@ -326,6 +326,9 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
326
326
|
|
|
327
327
|
ready() {
|
|
328
328
|
super.ready();
|
|
329
|
+
|
|
330
|
+
this.setAttribute('role', 'dialog');
|
|
331
|
+
|
|
329
332
|
addListener(this, 'tap', this._stopPropagation);
|
|
330
333
|
addListener(this.$.scrollers, 'track', this._track.bind(this));
|
|
331
334
|
addListener(this.shadowRoot.querySelector('[part="clear-button"]'), 'tap', this._clear.bind(this));
|
|
@@ -336,13 +339,13 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
336
339
|
addListener(
|
|
337
340
|
this.shadowRoot.querySelector('[part="years-toggle-button"]'),
|
|
338
341
|
'tap',
|
|
339
|
-
this._toggleYearScroller.bind(this)
|
|
342
|
+
this._toggleYearScroller.bind(this),
|
|
340
343
|
);
|
|
341
344
|
|
|
342
345
|
this.addController(
|
|
343
346
|
new MediaQueryController(this._desktopMediaQuery, (matches) => {
|
|
344
347
|
this._desktopMode = matches;
|
|
345
|
-
})
|
|
348
|
+
}),
|
|
346
349
|
);
|
|
347
350
|
}
|
|
348
351
|
|
|
@@ -381,7 +384,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
381
384
|
_selectDate(dateToSelect) {
|
|
382
385
|
this.selectedDate = dateToSelect;
|
|
383
386
|
this.dispatchEvent(
|
|
384
|
-
new CustomEvent('date-selected', { detail: { date: dateToSelect }, bubbles: true, composed: true })
|
|
387
|
+
new CustomEvent('date-selected', { detail: { date: dateToSelect }, bubbles: true, composed: true }),
|
|
385
388
|
);
|
|
386
389
|
}
|
|
387
390
|
|
|
@@ -409,7 +412,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
409
412
|
|
|
410
413
|
const visibleArea = Math.max(
|
|
411
414
|
this.$.monthScroller.itemHeight,
|
|
412
|
-
this.$.monthScroller.clientHeight - this.$.monthScroller.bufferOffset * 2
|
|
415
|
+
this.$.monthScroller.clientHeight - this.$.monthScroller.bufferOffset * 2,
|
|
413
416
|
);
|
|
414
417
|
const visibleItems = visibleArea / this.$.monthScroller.itemHeight;
|
|
415
418
|
const scrolledBelowViewport = this.$.monthScroller.position + visibleItems - 1 < diff;
|
|
@@ -541,7 +544,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
541
544
|
currentTime,
|
|
542
545
|
initialPosition,
|
|
543
546
|
this._targetPosition - initialPosition,
|
|
544
|
-
this.scrollDuration
|
|
547
|
+
this.scrollDuration,
|
|
545
548
|
);
|
|
546
549
|
this.$.monthScroller.position = currentPos;
|
|
547
550
|
window.requestAnimationFrame(smoothScroll);
|
|
@@ -552,9 +555,9 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
552
555
|
composed: true,
|
|
553
556
|
detail: {
|
|
554
557
|
position: this._targetPosition,
|
|
555
|
-
oldPosition: initialPosition
|
|
556
|
-
}
|
|
557
|
-
})
|
|
558
|
+
oldPosition: initialPosition,
|
|
559
|
+
},
|
|
560
|
+
}),
|
|
558
561
|
);
|
|
559
562
|
|
|
560
563
|
this.$.monthScroller.position = this._targetPosition;
|
|
@@ -588,7 +591,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
588
591
|
var newTranslateX = this._translateX + e.detail.ddx;
|
|
589
592
|
this._translateX = this._limit(newTranslateX, {
|
|
590
593
|
min: 0,
|
|
591
|
-
max: this._yearScrollerWidth
|
|
594
|
+
max: this._yearScrollerWidth,
|
|
592
595
|
});
|
|
593
596
|
}
|
|
594
597
|
|
|
@@ -682,12 +685,6 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
682
685
|
}
|
|
683
686
|
|
|
684
687
|
_close() {
|
|
685
|
-
const overlayContent = this.getRootNode().host;
|
|
686
|
-
const overlay = overlayContent ? overlayContent.getRootNode().host : null;
|
|
687
|
-
if (overlay) {
|
|
688
|
-
overlay.opened = false;
|
|
689
|
-
}
|
|
690
|
-
|
|
691
688
|
this.dispatchEvent(new CustomEvent('close', { bubbles: true, composed: true }));
|
|
692
689
|
}
|
|
693
690
|
|
|
@@ -754,10 +751,6 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
754
751
|
this._moveFocusByMonths(event.shiftKey ? -12 : -1);
|
|
755
752
|
handled = true;
|
|
756
753
|
break;
|
|
757
|
-
case 'Escape':
|
|
758
|
-
this._cancel();
|
|
759
|
-
handled = true;
|
|
760
|
-
break;
|
|
761
754
|
default:
|
|
762
755
|
break;
|
|
763
756
|
}
|
|
@@ -770,7 +763,10 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
770
763
|
|
|
771
764
|
__onTodayButtonKeyDown(event) {
|
|
772
765
|
if (this.hasAttribute('fullscreen')) {
|
|
773
|
-
|
|
766
|
+
// Do not prevent closing on Esc
|
|
767
|
+
if (event.key !== 'Escape') {
|
|
768
|
+
event.stopPropagation();
|
|
769
|
+
}
|
|
774
770
|
return;
|
|
775
771
|
}
|
|
776
772
|
|
|
@@ -781,17 +777,14 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
781
777
|
// We need to move the scroll to focused date.
|
|
782
778
|
setTimeout(() => this.revealDate(this.focusedDate), 1);
|
|
783
779
|
}
|
|
784
|
-
|
|
785
|
-
if (event.key === 'Escape') {
|
|
786
|
-
this._cancel();
|
|
787
|
-
event.preventDefault();
|
|
788
|
-
event.stopPropagation();
|
|
789
|
-
}
|
|
790
780
|
}
|
|
791
781
|
|
|
792
782
|
__onCancelButtonKeyDown(event) {
|
|
793
783
|
if (this.hasAttribute('fullscreen')) {
|
|
794
|
-
|
|
784
|
+
// Do not prevent closing on Esc
|
|
785
|
+
if (event.key !== 'Escape') {
|
|
786
|
+
event.stopPropagation();
|
|
787
|
+
}
|
|
795
788
|
return;
|
|
796
789
|
}
|
|
797
790
|
|
|
@@ -801,12 +794,6 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
|
|
|
801
794
|
event.stopPropagation();
|
|
802
795
|
this.dispatchEvent(new CustomEvent('focus-input', { bubbles: true, composed: true }));
|
|
803
796
|
}
|
|
804
|
-
|
|
805
|
-
if (event.key === 'Escape') {
|
|
806
|
-
this._cancel();
|
|
807
|
-
event.preventDefault();
|
|
808
|
-
event.stopPropagation();
|
|
809
|
-
}
|
|
810
797
|
}
|
|
811
798
|
|
|
812
799
|
__tryFocusDate() {
|
|
@@ -10,7 +10,7 @@ import { registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mi
|
|
|
10
10
|
import { datePickerOverlayStyles } from './vaadin-date-picker-styles.js';
|
|
11
11
|
|
|
12
12
|
registerStyles('vaadin-date-picker-overlay', datePickerOverlayStyles, {
|
|
13
|
-
moduleId: 'vaadin-date-picker-overlay-styles'
|
|
13
|
+
moduleId: 'vaadin-date-picker-overlay-styles',
|
|
14
14
|
});
|
|
15
15
|
|
|
16
16
|
let memoizedTemplate;
|
|
@@ -138,13 +138,13 @@ declare class DatePicker extends DatePickerMixin(InputControlMixin(ThemableMixin
|
|
|
138
138
|
addEventListener<K extends keyof DatePickerEventMap>(
|
|
139
139
|
type: K,
|
|
140
140
|
listener: (this: DatePicker, ev: DatePickerEventMap[K]) => void,
|
|
141
|
-
options?: boolean | AddEventListenerOptions
|
|
141
|
+
options?: boolean | AddEventListenerOptions,
|
|
142
142
|
): void;
|
|
143
143
|
|
|
144
144
|
removeEventListener<K extends keyof DatePickerEventMap>(
|
|
145
145
|
type: K,
|
|
146
146
|
listener: (this: DatePicker, ev: DatePickerEventMap[K]) => void,
|
|
147
|
-
options?: boolean | EventListenerOptions
|
|
147
|
+
options?: boolean | EventListenerOptions,
|
|
148
148
|
): void;
|
|
149
149
|
}
|
|
150
150
|
|
|
@@ -173,13 +173,10 @@ class DatePicker extends DatePickerMixin(InputControlMixin(ThemableMixin(Element
|
|
|
173
173
|
fullscreen$="[[_fullscreen]]"
|
|
174
174
|
label="[[label]]"
|
|
175
175
|
selected-date="[[_selectedDate]]"
|
|
176
|
-
slot="dropdown-content"
|
|
177
176
|
focused-date="{{_focusedDate}}"
|
|
178
177
|
show-week-numbers="[[showWeekNumbers]]"
|
|
179
178
|
min-date="[[_minDate]]"
|
|
180
179
|
max-date="[[_maxDate]]"
|
|
181
|
-
role="dialog"
|
|
182
|
-
on-date-tap="_close"
|
|
183
180
|
part="overlay-content"
|
|
184
181
|
theme$="[[__getOverlayTheme(theme, _overlayInitialized)]]"
|
|
185
182
|
></vaadin-date-picker-overlay-content>
|
|
@@ -207,7 +204,7 @@ class DatePicker extends DatePickerMixin(InputControlMixin(ThemableMixin(Element
|
|
|
207
204
|
this._setFocusElement(input);
|
|
208
205
|
this.stateTarget = input;
|
|
209
206
|
this.ariaTarget = input;
|
|
210
|
-
})
|
|
207
|
+
}),
|
|
211
208
|
);
|
|
212
209
|
this.addController(new LabelledInputController(this.inputElement, this._labelController));
|
|
213
210
|
|
|
@@ -215,6 +212,13 @@ class DatePicker extends DatePickerMixin(InputControlMixin(ThemableMixin(Element
|
|
|
215
212
|
toggleButton.addEventListener('mousedown', (e) => e.preventDefault());
|
|
216
213
|
}
|
|
217
214
|
|
|
215
|
+
/** @protected */
|
|
216
|
+
_initOverlay() {
|
|
217
|
+
super._initOverlay();
|
|
218
|
+
|
|
219
|
+
this.$.overlay.addEventListener('vaadin-overlay-close', this._onVaadinOverlayClose.bind(this));
|
|
220
|
+
}
|
|
221
|
+
|
|
218
222
|
/** @private */
|
|
219
223
|
_onVaadinOverlayClose(e) {
|
|
220
224
|
if (this._openedWithFocusRing && this.hasAttribute('focused')) {
|
|
@@ -83,7 +83,7 @@ class InfiniteScroller extends PolymerElement {
|
|
|
83
83
|
*/
|
|
84
84
|
bufferSize: {
|
|
85
85
|
type: Number,
|
|
86
|
-
value: 20
|
|
86
|
+
value: 20,
|
|
87
87
|
},
|
|
88
88
|
|
|
89
89
|
/**
|
|
@@ -91,14 +91,14 @@ class InfiniteScroller extends PolymerElement {
|
|
|
91
91
|
* user to be able to scroll backwards.
|
|
92
92
|
*/
|
|
93
93
|
_initialScroll: {
|
|
94
|
-
value: 500000
|
|
94
|
+
value: 500000,
|
|
95
95
|
},
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
98
|
* The index/position mapped at _initialScroll point.
|
|
99
99
|
*/
|
|
100
100
|
_initialIndex: {
|
|
101
|
-
value: 0
|
|
101
|
+
value: 0,
|
|
102
102
|
},
|
|
103
103
|
|
|
104
104
|
_buffers: Array,
|
|
@@ -111,8 +111,8 @@ class InfiniteScroller extends PolymerElement {
|
|
|
111
111
|
|
|
112
112
|
active: {
|
|
113
113
|
type: Boolean,
|
|
114
|
-
observer: '_activated'
|
|
115
|
-
}
|
|
114
|
+
observer: '_activated',
|
|
115
|
+
},
|
|
116
116
|
};
|
|
117
117
|
}
|
|
118
118
|
|
|
@@ -133,7 +133,7 @@ class InfiniteScroller extends PolymerElement {
|
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
|
-
}
|
|
136
|
+
},
|
|
137
137
|
});
|
|
138
138
|
|
|
139
139
|
// Firefox interprets elements with overflow:auto as focusable
|
|
@@ -129,7 +129,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
129
129
|
*/
|
|
130
130
|
month: {
|
|
131
131
|
type: Date,
|
|
132
|
-
value: new Date()
|
|
132
|
+
value: new Date(),
|
|
133
133
|
},
|
|
134
134
|
|
|
135
135
|
/**
|
|
@@ -137,7 +137,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
137
137
|
*/
|
|
138
138
|
selectedDate: {
|
|
139
139
|
type: Date,
|
|
140
|
-
notify: true
|
|
140
|
+
notify: true,
|
|
141
141
|
},
|
|
142
142
|
|
|
143
143
|
/**
|
|
@@ -147,11 +147,11 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
147
147
|
|
|
148
148
|
showWeekNumbers: {
|
|
149
149
|
type: Boolean,
|
|
150
|
-
value: false
|
|
150
|
+
value: false,
|
|
151
151
|
},
|
|
152
152
|
|
|
153
153
|
i18n: {
|
|
154
|
-
type: Object
|
|
154
|
+
type: Object,
|
|
155
155
|
},
|
|
156
156
|
|
|
157
157
|
/**
|
|
@@ -166,7 +166,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
166
166
|
*/
|
|
167
167
|
minDate: {
|
|
168
168
|
type: Date,
|
|
169
|
-
value: null
|
|
169
|
+
value: null,
|
|
170
170
|
},
|
|
171
171
|
|
|
172
172
|
/**
|
|
@@ -174,31 +174,31 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
174
174
|
*/
|
|
175
175
|
maxDate: {
|
|
176
176
|
type: Date,
|
|
177
|
-
value: null
|
|
177
|
+
value: null,
|
|
178
178
|
},
|
|
179
179
|
|
|
180
180
|
_days: {
|
|
181
181
|
type: Array,
|
|
182
|
-
computed: '_getDays(month, i18n.firstDayOfWeek, minDate, maxDate)'
|
|
182
|
+
computed: '_getDays(month, i18n.firstDayOfWeek, minDate, maxDate)',
|
|
183
183
|
},
|
|
184
184
|
|
|
185
185
|
_weeks: {
|
|
186
186
|
type: Array,
|
|
187
|
-
computed: '_getWeeks(_days)'
|
|
187
|
+
computed: '_getWeeks(_days)',
|
|
188
188
|
},
|
|
189
189
|
|
|
190
190
|
disabled: {
|
|
191
191
|
type: Boolean,
|
|
192
192
|
reflectToAttribute: true,
|
|
193
|
-
computed: '_isDisabled(month, minDate, maxDate)'
|
|
194
|
-
}
|
|
193
|
+
computed: '_isDisabled(month, minDate, maxDate)',
|
|
194
|
+
},
|
|
195
195
|
};
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
static get observers() {
|
|
199
199
|
return [
|
|
200
200
|
'_showWeekNumbersChanged(showWeekNumbers, i18n.firstDayOfWeek)',
|
|
201
|
-
'__focusedDateChanged(focusedDate, _days)'
|
|
201
|
+
'__focusedDateChanged(focusedDate, _days)',
|
|
202
202
|
];
|
|
203
203
|
}
|
|
204
204
|
|
|
@@ -279,7 +279,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
279
279
|
weekDayNames = weekDayNames.map((day, index) => {
|
|
280
280
|
return {
|
|
281
281
|
weekDay: day,
|
|
282
|
-
weekDayShort: weekDayNamesShort[index]
|
|
282
|
+
weekDayShort: weekDayNamesShort[index],
|
|
283
283
|
};
|
|
284
284
|
});
|
|
285
285
|
|
|
@@ -356,7 +356,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
356
356
|
if (!this.ignoreTaps && !this._notTapping && e.target.date && !e.target.hasAttribute('disabled')) {
|
|
357
357
|
this.selectedDate = e.target.date;
|
|
358
358
|
this.dispatchEvent(
|
|
359
|
-
new CustomEvent('date-tap', { detail: { date: e.target.date }, bubbles: true, composed: true })
|
|
359
|
+
new CustomEvent('date-tap', { detail: { date: e.target.date }, bubbles: true, composed: true }),
|
|
360
360
|
);
|
|
361
361
|
}
|
|
362
362
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '@vaadin/vaadin-lumo-styles/sizing.js';
|
|
2
2
|
import '@vaadin/vaadin-lumo-styles/spacing.js';
|
|
3
|
+
import '@vaadin/vaadin-overlay/theme/lumo/vaadin-overlay.js';
|
|
3
4
|
import { menuOverlay } from '@vaadin/vaadin-lumo-styles/mixins/menu-overlay.js';
|
|
4
5
|
import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
5
6
|
|
|
@@ -54,5 +55,5 @@ const datePickerOverlay = css`
|
|
|
54
55
|
`;
|
|
55
56
|
|
|
56
57
|
registerStyles('vaadin-date-picker-overlay', [menuOverlay, datePickerOverlay], {
|
|
57
|
-
moduleId: 'lumo-date-picker-overlay'
|
|
58
|
+
moduleId: 'lumo-date-picker-overlay',
|
|
58
59
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import '@vaadin/vaadin-overlay/theme/material/vaadin-overlay.js';
|
|
1
2
|
import { overlay } from '@vaadin/vaadin-material-styles/mixins/overlay.js';
|
|
2
3
|
import { css, registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
3
4
|
|
|
@@ -41,5 +42,5 @@ const datePickerOverlay = css`
|
|
|
41
42
|
`;
|
|
42
43
|
|
|
43
44
|
registerStyles('vaadin-date-picker-overlay', [overlay, datePickerOverlay], {
|
|
44
|
-
moduleId: 'material-date-picker-overlay'
|
|
45
|
+
moduleId: 'material-date-picker-overlay',
|
|
45
46
|
});
|