@vaadin/date-picker 24.2.0-alpha5 → 24.2.0-alpha7
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 +15 -11
- package/src/vaadin-date-picker-mixin.js +50 -25
- package/src/vaadin-date-picker-month-scroller.js +6 -19
- package/src/vaadin-date-picker-overlay-content-mixin.js +1032 -0
- package/src/vaadin-date-picker-overlay-content-styles.js +68 -0
- package/src/vaadin-date-picker-overlay-content.js +14 -1012
- package/src/vaadin-date-picker-overlay-styles.js +23 -0
- package/src/vaadin-date-picker-overlay.js +7 -19
- package/src/vaadin-date-picker-styles.js +21 -0
- package/src/vaadin-date-picker-year-scroller.js +6 -20
- package/src/vaadin-date-picker.js +2 -16
- package/src/vaadin-infinite-scroller.js +118 -117
- package/src/vaadin-month-calendar-mixin.js +303 -0
- package/src/vaadin-month-calendar-styles.js +64 -0
- package/src/vaadin-month-calendar.js +27 -319
- package/web-types.json +2 -2
- package/web-types.lit.json +2 -2
|
@@ -5,76 +5,23 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import '@polymer/polymer/lib/elements/dom-repeat.js';
|
|
7
7
|
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
8
|
+
import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
|
|
9
|
+
import { dateAllowed, dateEquals } from './vaadin-date-picker-helper.js';
|
|
10
|
+
import { MonthCalendarMixin } from './vaadin-month-calendar-mixin.js';
|
|
11
|
+
import { monthCalendarStyles } from './vaadin-month-calendar-styles.js';
|
|
12
|
+
|
|
13
|
+
registerStyles('vaadin-month-calendar', monthCalendarStyles, {
|
|
14
|
+
moduleId: 'vaadin-month-calendar-styles',
|
|
15
|
+
});
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* @extends HTMLElement
|
|
15
19
|
* @private
|
|
16
20
|
*/
|
|
17
|
-
class MonthCalendar extends
|
|
21
|
+
class MonthCalendar extends MonthCalendarMixin(ThemableMixin(PolymerElement)) {
|
|
18
22
|
static get template() {
|
|
19
23
|
return html`
|
|
20
|
-
<
|
|
21
|
-
:host {
|
|
22
|
-
display: block;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
#monthGrid {
|
|
26
|
-
width: 100%;
|
|
27
|
-
border-collapse: collapse;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
#days-container tr,
|
|
31
|
-
#weekdays-container tr {
|
|
32
|
-
display: flex;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
[part~='date'] {
|
|
36
|
-
outline: none;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
[part~='disabled'] {
|
|
40
|
-
pointer-events: none;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
[part='week-number'][hidden],
|
|
44
|
-
[part='weekday'][hidden] {
|
|
45
|
-
display: none;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
[part='weekday'],
|
|
49
|
-
[part~='date'] {
|
|
50
|
-
width: calc(100% / 7);
|
|
51
|
-
padding: 0;
|
|
52
|
-
font-weight: normal;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
[part='weekday']:empty,
|
|
56
|
-
[part='week-number'] {
|
|
57
|
-
width: 12.5%;
|
|
58
|
-
flex-shrink: 0;
|
|
59
|
-
padding: 0;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
:host([week-numbers]) [part='weekday']:not(:empty),
|
|
63
|
-
:host([week-numbers]) [part~='date'] {
|
|
64
|
-
width: 12.5%;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
@media (forced-colors: active) {
|
|
68
|
-
[part~='date'][part~='focused'] {
|
|
69
|
-
outline: 1px solid;
|
|
70
|
-
}
|
|
71
|
-
[part~='date'][part~='selected'] {
|
|
72
|
-
outline: 3px solid;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
</style>
|
|
76
|
-
|
|
77
|
-
<div part="month-header" id="month-header" aria-hidden="true">[[_getTitle(month, i18n.monthNames)]]</div>
|
|
24
|
+
<div part="month-header" id="month-header" aria-hidden="true">[[_getTitle(month, i18n)]]</div>
|
|
78
25
|
<table
|
|
79
26
|
id="monthGrid"
|
|
80
27
|
role="grid"
|
|
@@ -84,15 +31,8 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
84
31
|
>
|
|
85
32
|
<thead id="weekdays-container">
|
|
86
33
|
<tr role="row" part="weekdays">
|
|
87
|
-
<th
|
|
88
|
-
|
|
89
|
-
aria-hidden="true"
|
|
90
|
-
hidden$="[[!_showWeekSeparator(showWeekNumbers, i18n.firstDayOfWeek)]]"
|
|
91
|
-
></th>
|
|
92
|
-
<template
|
|
93
|
-
is="dom-repeat"
|
|
94
|
-
items="[[_getWeekDayNames(i18n.weekdays, i18n.weekdaysShort, showWeekNumbers, i18n.firstDayOfWeek)]]"
|
|
95
|
-
>
|
|
34
|
+
<th part="weekday" aria-hidden="true" hidden$="[[!_showWeekSeparator(showWeekNumbers, i18n)]]"></th>
|
|
35
|
+
<template is="dom-repeat" items="[[_getWeekDayNames(i18n, showWeekNumbers)]]">
|
|
96
36
|
<th role="columnheader" part="weekday" scope="col" abbr$="[[item.weekDay]]" aria-hidden="true">
|
|
97
37
|
[[item.weekDayShort]]
|
|
98
38
|
</th>
|
|
@@ -102,11 +42,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
102
42
|
<tbody id="days-container">
|
|
103
43
|
<template is="dom-repeat" items="[[_weeks]]" as="week">
|
|
104
44
|
<tr role="row">
|
|
105
|
-
<td
|
|
106
|
-
part="week-number"
|
|
107
|
-
aria-hidden="true"
|
|
108
|
-
hidden$="[[!_showWeekSeparator(showWeekNumbers, i18n.firstDayOfWeek)]]"
|
|
109
|
-
>
|
|
45
|
+
<td part="week-number" aria-hidden="true" hidden$="[[!_showWeekSeparator(showWeekNumbers, i18n)]]">
|
|
110
46
|
[[__getWeekNumber(week)]]
|
|
111
47
|
</td>
|
|
112
48
|
<template is="dom-repeat" items="[[week]]">
|
|
@@ -135,65 +71,13 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
135
71
|
|
|
136
72
|
static get properties() {
|
|
137
73
|
return {
|
|
138
|
-
/**
|
|
139
|
-
* A `Date` object defining the month to be displayed. Only year and
|
|
140
|
-
* month properties are actually used.
|
|
141
|
-
*/
|
|
142
|
-
month: {
|
|
143
|
-
type: Date,
|
|
144
|
-
value: new Date(),
|
|
145
|
-
},
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* A `Date` object for the currently selected date.
|
|
149
|
-
*/
|
|
150
|
-
selectedDate: {
|
|
151
|
-
type: Date,
|
|
152
|
-
notify: true,
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* A `Date` object for the currently focused date.
|
|
157
|
-
*/
|
|
158
|
-
focusedDate: Date,
|
|
159
|
-
|
|
160
|
-
showWeekNumbers: {
|
|
161
|
-
type: Boolean,
|
|
162
|
-
value: false,
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
i18n: {
|
|
166
|
-
type: Object,
|
|
167
|
-
},
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Flag stating whether taps on the component should be ignored.
|
|
171
|
-
*/
|
|
172
|
-
ignoreTaps: Boolean,
|
|
173
|
-
|
|
174
|
-
_notTapping: Boolean,
|
|
175
|
-
|
|
176
|
-
/**
|
|
177
|
-
* The earliest date that can be selected. All earlier dates will be disabled.
|
|
178
|
-
*/
|
|
179
|
-
minDate: {
|
|
180
|
-
type: Date,
|
|
181
|
-
value: null,
|
|
182
|
-
},
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* The latest date that can be selected. All later dates will be disabled.
|
|
186
|
-
*/
|
|
187
|
-
maxDate: {
|
|
188
|
-
type: Date,
|
|
189
|
-
value: null,
|
|
190
|
-
},
|
|
191
|
-
|
|
74
|
+
/** @protected */
|
|
192
75
|
_days: {
|
|
193
76
|
type: Array,
|
|
194
|
-
computed: '_getDays(month, i18n
|
|
77
|
+
computed: '_getDays(month, i18n, minDate, maxDate)',
|
|
195
78
|
},
|
|
196
79
|
|
|
80
|
+
/** @protected */
|
|
197
81
|
_weeks: {
|
|
198
82
|
type: Array,
|
|
199
83
|
computed: '_getWeeks(_days)',
|
|
@@ -208,177 +92,19 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
208
92
|
}
|
|
209
93
|
|
|
210
94
|
static get observers() {
|
|
211
|
-
return [
|
|
212
|
-
'_showWeekNumbersChanged(showWeekNumbers, i18n.firstDayOfWeek)',
|
|
213
|
-
'__focusedDateChanged(focusedDate, _days)',
|
|
214
|
-
];
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
get focusableDateElement() {
|
|
218
|
-
return [...this.shadowRoot.querySelectorAll('[part~=date]')].find((datePart) => {
|
|
219
|
-
return dateEquals(datePart.date, this.focusedDate);
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/** @protected */
|
|
224
|
-
ready() {
|
|
225
|
-
super.ready();
|
|
226
|
-
addListener(this.$.monthGrid, 'tap', this._handleTap.bind(this));
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
/* Returns true if all the dates in the month are out of the allowed range */
|
|
230
|
-
_isDisabled(month, minDate, maxDate) {
|
|
231
|
-
// First day of the month
|
|
232
|
-
const firstDate = new Date(0, 0);
|
|
233
|
-
firstDate.setFullYear(month.getFullYear());
|
|
234
|
-
firstDate.setMonth(month.getMonth());
|
|
235
|
-
firstDate.setDate(1);
|
|
236
|
-
|
|
237
|
-
// Last day of the month
|
|
238
|
-
const lastDate = new Date(0, 0);
|
|
239
|
-
lastDate.setFullYear(month.getFullYear());
|
|
240
|
-
lastDate.setMonth(month.getMonth() + 1);
|
|
241
|
-
lastDate.setDate(0);
|
|
242
|
-
|
|
243
|
-
if (
|
|
244
|
-
minDate &&
|
|
245
|
-
maxDate &&
|
|
246
|
-
minDate.getMonth() === maxDate.getMonth() &&
|
|
247
|
-
minDate.getMonth() === month.getMonth() &&
|
|
248
|
-
maxDate.getDate() - minDate.getDate() >= 0
|
|
249
|
-
) {
|
|
250
|
-
return false;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return !dateAllowed(firstDate, minDate, maxDate) && !dateAllowed(lastDate, minDate, maxDate);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
_getTitle(month, monthNames) {
|
|
257
|
-
if (month === undefined || monthNames === undefined) {
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
return this.i18n.formatTitle(monthNames[month.getMonth()], month.getFullYear());
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
_onMonthGridTouchStart() {
|
|
264
|
-
this._notTapping = false;
|
|
265
|
-
setTimeout(() => {
|
|
266
|
-
this._notTapping = true;
|
|
267
|
-
}, 300);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
_dateAdd(date, delta) {
|
|
271
|
-
date.setDate(date.getDate() + delta);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
_applyFirstDayOfWeek(weekDayNames, firstDayOfWeek) {
|
|
275
|
-
if (weekDayNames === undefined || firstDayOfWeek === undefined) {
|
|
276
|
-
return;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
return weekDayNames.slice(firstDayOfWeek).concat(weekDayNames.slice(0, firstDayOfWeek));
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
_getWeekDayNames(weekDayNames, weekDayNamesShort, showWeekNumbers, firstDayOfWeek) {
|
|
283
|
-
if (
|
|
284
|
-
weekDayNames === undefined ||
|
|
285
|
-
weekDayNamesShort === undefined ||
|
|
286
|
-
showWeekNumbers === undefined ||
|
|
287
|
-
firstDayOfWeek === undefined
|
|
288
|
-
) {
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
weekDayNames = this._applyFirstDayOfWeek(weekDayNames, firstDayOfWeek);
|
|
292
|
-
weekDayNamesShort = this._applyFirstDayOfWeek(weekDayNamesShort, firstDayOfWeek);
|
|
293
|
-
weekDayNames = weekDayNames.map((day, index) => {
|
|
294
|
-
return {
|
|
295
|
-
weekDay: day,
|
|
296
|
-
weekDayShort: weekDayNamesShort[index],
|
|
297
|
-
};
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
return weekDayNames;
|
|
95
|
+
return ['_showWeekNumbersChanged(showWeekNumbers, i18n)'];
|
|
301
96
|
}
|
|
302
97
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
} else {
|
|
307
|
-
this.setAttribute('aria-hidden', 'true');
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
_getDate(date) {
|
|
312
|
-
return date ? date.getDate() : '';
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
_showWeekNumbersChanged(showWeekNumbers, firstDayOfWeek) {
|
|
316
|
-
if (showWeekNumbers && firstDayOfWeek === 1) {
|
|
98
|
+
/** @private */
|
|
99
|
+
_showWeekNumbersChanged(showWeekNumbers, i18n) {
|
|
100
|
+
if (showWeekNumbers && i18n && i18n.firstDayOfWeek === 1) {
|
|
317
101
|
this.setAttribute('week-numbers', '');
|
|
318
102
|
} else {
|
|
319
103
|
this.removeAttribute('week-numbers');
|
|
320
104
|
}
|
|
321
105
|
}
|
|
322
106
|
|
|
323
|
-
|
|
324
|
-
// Currently only supported for locales that start the week on Monday.
|
|
325
|
-
return showWeekNumbers && firstDayOfWeek === 1;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
_isToday(date) {
|
|
329
|
-
return dateEquals(new Date(), date);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
_getDays(month, firstDayOfWeek) {
|
|
333
|
-
if (month === undefined || firstDayOfWeek === undefined) {
|
|
334
|
-
return;
|
|
335
|
-
}
|
|
336
|
-
// First day of the month (at midnight).
|
|
337
|
-
const date = new Date(0, 0);
|
|
338
|
-
date.setFullYear(month.getFullYear());
|
|
339
|
-
date.setMonth(month.getMonth());
|
|
340
|
-
date.setDate(1);
|
|
341
|
-
|
|
342
|
-
// Rewind to first day of the week.
|
|
343
|
-
while (date.getDay() !== firstDayOfWeek) {
|
|
344
|
-
this._dateAdd(date, -1);
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
const days = [];
|
|
348
|
-
const startMonth = date.getMonth();
|
|
349
|
-
const targetMonth = month.getMonth();
|
|
350
|
-
while (date.getMonth() === targetMonth || date.getMonth() === startMonth) {
|
|
351
|
-
days.push(date.getMonth() === targetMonth ? new Date(date.getTime()) : null);
|
|
352
|
-
|
|
353
|
-
// Advance to next day.
|
|
354
|
-
this._dateAdd(date, 1);
|
|
355
|
-
}
|
|
356
|
-
return days;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
_getWeeks(days) {
|
|
360
|
-
return days.reduce((acc, day, i) => {
|
|
361
|
-
if (i % 7 === 0) {
|
|
362
|
-
acc.push([]);
|
|
363
|
-
}
|
|
364
|
-
acc[acc.length - 1].push(day);
|
|
365
|
-
return acc;
|
|
366
|
-
}, []);
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
_handleTap(e) {
|
|
370
|
-
if (!this.ignoreTaps && !this._notTapping && e.target.date && !e.target.hasAttribute('disabled')) {
|
|
371
|
-
this.selectedDate = e.target.date;
|
|
372
|
-
this.dispatchEvent(
|
|
373
|
-
new CustomEvent('date-tap', { detail: { date: e.target.date }, bubbles: true, composed: true }),
|
|
374
|
-
);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
_preventDefault(e) {
|
|
379
|
-
e.preventDefault();
|
|
380
|
-
}
|
|
381
|
-
|
|
107
|
+
/** @private */
|
|
382
108
|
__getDatePart(date, focusedDate, selectedDate, minDate, maxDate) {
|
|
383
109
|
const result = ['date'];
|
|
384
110
|
|
|
@@ -401,32 +127,29 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
401
127
|
return result.join(' ');
|
|
402
128
|
}
|
|
403
129
|
|
|
404
|
-
|
|
405
|
-
const date = days.reduce((acc, d) => {
|
|
406
|
-
return !acc && d ? d : acc;
|
|
407
|
-
});
|
|
408
|
-
|
|
409
|
-
return getISOWeekNumber(date);
|
|
410
|
-
}
|
|
411
|
-
|
|
130
|
+
/** @private */
|
|
412
131
|
__isDayFocused(date, focusedDate) {
|
|
413
132
|
return dateEquals(date, focusedDate);
|
|
414
133
|
}
|
|
415
134
|
|
|
135
|
+
/** @private */
|
|
416
136
|
__isDaySelected(date, selectedDate) {
|
|
417
137
|
return dateEquals(date, selectedDate);
|
|
418
138
|
}
|
|
419
139
|
|
|
140
|
+
/** @private */
|
|
420
141
|
__getDayAriaSelected(date, selectedDate) {
|
|
421
142
|
if (this.__isDaySelected(date, selectedDate)) {
|
|
422
143
|
return 'true';
|
|
423
144
|
}
|
|
424
145
|
}
|
|
425
146
|
|
|
147
|
+
/** @private */
|
|
426
148
|
__isDayDisabled(date, minDate, maxDate) {
|
|
427
149
|
return !dateAllowed(date, minDate, maxDate);
|
|
428
150
|
}
|
|
429
151
|
|
|
152
|
+
/** @private */
|
|
430
153
|
__getDayAriaDisabled(date, min, max) {
|
|
431
154
|
if (date === undefined || min === undefined || max === undefined) {
|
|
432
155
|
return;
|
|
@@ -437,22 +160,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
|
|
|
437
160
|
}
|
|
438
161
|
}
|
|
439
162
|
|
|
440
|
-
|
|
441
|
-
if (!date) {
|
|
442
|
-
return '';
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
let ariaLabel = `${this._getDate(date)} ${this.i18n.monthNames[date.getMonth()]} ${date.getFullYear()}, ${
|
|
446
|
-
this.i18n.weekdays[date.getDay()]
|
|
447
|
-
}`;
|
|
448
|
-
|
|
449
|
-
if (this._isToday(date)) {
|
|
450
|
-
ariaLabel += `, ${this.i18n.today}`;
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
return ariaLabel;
|
|
454
|
-
}
|
|
455
|
-
|
|
163
|
+
/** @private */
|
|
456
164
|
__getDayTabindex(date, focusedDate) {
|
|
457
165
|
if (this.__isDayFocused(date, focusedDate)) {
|
|
458
166
|
return '0';
|
package/web-types.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/date-picker",
|
|
4
|
-
"version": "24.2.0-
|
|
4
|
+
"version": "24.2.0-alpha7",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"contributions": {
|
|
7
7
|
"html": {
|
|
@@ -334,7 +334,7 @@
|
|
|
334
334
|
},
|
|
335
335
|
{
|
|
336
336
|
"name": "vaadin-date-picker",
|
|
337
|
-
"description": "`<vaadin-date-picker>` is an input field that allows to enter a date by typing or by selecting from a calendar overlay.\n\n```html\n<vaadin-date-picker label=\"Birthday\"></vaadin-date-picker>\n```\n```js\ndatePicker.value = '2016-03-02';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n-------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n\n`<vaadin-date-picker>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-
|
|
337
|
+
"description": "`<vaadin-date-picker>` is an input field that allows to enter a date by typing or by selecting from a calendar overlay.\n\n```html\n<vaadin-date-picker label=\"Birthday\"></vaadin-date-picker>\n```\n```js\ndatePicker.value = '2016-03-02';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n-------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n\n`<vaadin-date-picker>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-text-field) for the styling documentation.\n\nIn addition to `<vaadin-text-field>` parts, the following parts are available for theming:\n\nPart name | Description\n----------------------|--------------------\n`toggle-button` | Toggle button\n\nIn addition to `<vaadin-text-field>` state attributes, the following state attributes are available for theming:\n\nAttribute | Description | Part name\n-----------|--------------------------------------------------|-----------\n`opened` | Set when the date selector overlay is opened | :host\n\nIf you want to replace the default `<input>` and its container with a custom implementation to get full control\nover the input field, consider using the [`<vaadin-date-picker-light>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-date-picker-light) element.\n\n### Internal components\n\nIn addition to `<vaadin-date-picker>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-date-picker-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-overlay).\n- `<vaadin-date-picker-overlay-content>`\n- `<vaadin-date-picker-month-scroller>`\n- `<vaadin-date-picker-year-scroller>`\n- `<vaadin-date-picker-year>`\n- `<vaadin-month-calendar>`\n- [`<vaadin-input-container>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-input-container) - an internal element wrapping the input.\n\nIn order to style the overlay content, use `<vaadin-date-picker-overlay-content>` shadow DOM parts:\n\nPart name | Description\n----------------------|--------------------\n`overlay-header` | Fullscreen mode header\n`label` | Fullscreen mode value/label\n`clear-button` | Fullscreen mode clear button\n`toggle-button` | Fullscreen mode toggle button\n`years-toggle-button` | Fullscreen mode years scroller toggle\n`toolbar` | Footer bar with slotted buttons\n\nThe following state attributes are available on the `<vaadin-date-picker-overlay-content>` element:\n\nAttribute | Description\n----------------|-------------------------------------------------\n`desktop` | Set when the overlay content is in desktop mode\n`fullscreen` | Set when the overlay content is in fullscreen mode\n`years-visible` | Set when the year scroller is visible in fullscreen mode\n\nIn order to style the month calendar, use `<vaadin-month-calendar>` shadow DOM parts:\n\nPart name | Description\n----------------------|--------------------\n`month-header` | Month title\n`weekdays` | Weekday container\n`weekday` | Weekday element\n`week-numbers` | Week numbers container\n`week-number` | Week number element\n`date` | Date element\n`disabled` | Disabled date element\n`focused` | Focused date element\n`selected` | Selected date element\n`today` | Date element corresponding to the current day\n\nIn order to style year scroller elements, use `<vaadin-date-picker-year>` shadow DOM parts:\n\nPart name | Description\n----------------------|--------------------\n`year-number` | Year number\n`year-separator` | Year separator\n\nNote: the `theme` attribute value set on `<vaadin-date-picker>` is\npropagated to the internal components listed above.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
338
338
|
"attributes": [
|
|
339
339
|
{
|
|
340
340
|
"name": "disabled",
|
package/web-types.lit.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/web-types",
|
|
3
3
|
"name": "@vaadin/date-picker",
|
|
4
|
-
"version": "24.2.0-
|
|
4
|
+
"version": "24.2.0-alpha7",
|
|
5
5
|
"description-markup": "markdown",
|
|
6
6
|
"framework": "lit",
|
|
7
7
|
"framework-config": {
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
"name": "vaadin-date-picker",
|
|
159
|
-
"description": "`<vaadin-date-picker>` is an input field that allows to enter a date by typing or by selecting from a calendar overlay.\n\n```html\n<vaadin-date-picker label=\"Birthday\"></vaadin-date-picker>\n```\n```js\ndatePicker.value = '2016-03-02';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n-------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n\n`<vaadin-date-picker>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-
|
|
159
|
+
"description": "`<vaadin-date-picker>` is an input field that allows to enter a date by typing or by selecting from a calendar overlay.\n\n```html\n<vaadin-date-picker label=\"Birthday\"></vaadin-date-picker>\n```\n```js\ndatePicker.value = '2016-03-02';\n```\n\nWhen the selected `value` is changed, a `value-changed` event is triggered.\n\n### Styling\n\nThe following custom properties are available for styling:\n\nCustom property | Description | Default\n-------------------------------|----------------------------|---------\n`--vaadin-field-default-width` | Default width of the field | `12em`\n\n`<vaadin-date-picker>` provides the same set of shadow DOM parts and state attributes as `<vaadin-text-field>`.\nSee [`<vaadin-text-field>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-text-field) for the styling documentation.\n\nIn addition to `<vaadin-text-field>` parts, the following parts are available for theming:\n\nPart name | Description\n----------------------|--------------------\n`toggle-button` | Toggle button\n\nIn addition to `<vaadin-text-field>` state attributes, the following state attributes are available for theming:\n\nAttribute | Description | Part name\n-----------|--------------------------------------------------|-----------\n`opened` | Set when the date selector overlay is opened | :host\n\nIf you want to replace the default `<input>` and its container with a custom implementation to get full control\nover the input field, consider using the [`<vaadin-date-picker-light>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-date-picker-light) element.\n\n### Internal components\n\nIn addition to `<vaadin-date-picker>` itself, the following internal\ncomponents are themable:\n\n- `<vaadin-date-picker-overlay>` - has the same API as [`<vaadin-overlay>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-overlay).\n- `<vaadin-date-picker-overlay-content>`\n- `<vaadin-date-picker-month-scroller>`\n- `<vaadin-date-picker-year-scroller>`\n- `<vaadin-date-picker-year>`\n- `<vaadin-month-calendar>`\n- [`<vaadin-input-container>`](https://cdn.vaadin.com/vaadin-web-components/24.2.0-alpha7/#/elements/vaadin-input-container) - an internal element wrapping the input.\n\nIn order to style the overlay content, use `<vaadin-date-picker-overlay-content>` shadow DOM parts:\n\nPart name | Description\n----------------------|--------------------\n`overlay-header` | Fullscreen mode header\n`label` | Fullscreen mode value/label\n`clear-button` | Fullscreen mode clear button\n`toggle-button` | Fullscreen mode toggle button\n`years-toggle-button` | Fullscreen mode years scroller toggle\n`toolbar` | Footer bar with slotted buttons\n\nThe following state attributes are available on the `<vaadin-date-picker-overlay-content>` element:\n\nAttribute | Description\n----------------|-------------------------------------------------\n`desktop` | Set when the overlay content is in desktop mode\n`fullscreen` | Set when the overlay content is in fullscreen mode\n`years-visible` | Set when the year scroller is visible in fullscreen mode\n\nIn order to style the month calendar, use `<vaadin-month-calendar>` shadow DOM parts:\n\nPart name | Description\n----------------------|--------------------\n`month-header` | Month title\n`weekdays` | Weekday container\n`weekday` | Weekday element\n`week-numbers` | Week numbers container\n`week-number` | Week number element\n`date` | Date element\n`disabled` | Disabled date element\n`focused` | Focused date element\n`selected` | Selected date element\n`today` | Date element corresponding to the current day\n\nIn order to style year scroller elements, use `<vaadin-date-picker-year>` shadow DOM parts:\n\nPart name | Description\n----------------------|--------------------\n`year-number` | Year number\n`year-separator` | Year separator\n\nNote: the `theme` attribute value set on `<vaadin-date-picker>` is\npropagated to the internal components listed above.\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
160
160
|
"extension": true,
|
|
161
161
|
"attributes": [
|
|
162
162
|
{
|