@vaadin/date-picker 23.1.0-alpha2 → 23.1.0-beta1

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/date-picker",
3
- "version": "23.1.0-alpha2",
3
+ "version": "23.1.0-beta1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -34,21 +34,21 @@
34
34
  "dependencies": {
35
35
  "@open-wc/dedupe-mixin": "^1.3.0",
36
36
  "@polymer/polymer": "^3.2.0",
37
- "@vaadin/button": "23.1.0-alpha2",
38
- "@vaadin/component-base": "23.1.0-alpha2",
39
- "@vaadin/field-base": "23.1.0-alpha2",
40
- "@vaadin/input-container": "23.1.0-alpha2",
41
- "@vaadin/vaadin-lumo-styles": "23.1.0-alpha2",
42
- "@vaadin/vaadin-material-styles": "23.1.0-alpha2",
43
- "@vaadin/vaadin-overlay": "23.1.0-alpha2",
44
- "@vaadin/vaadin-themable-mixin": "23.1.0-alpha2"
37
+ "@vaadin/button": "23.1.0-beta1",
38
+ "@vaadin/component-base": "23.1.0-beta1",
39
+ "@vaadin/field-base": "23.1.0-beta1",
40
+ "@vaadin/input-container": "23.1.0-beta1",
41
+ "@vaadin/vaadin-lumo-styles": "23.1.0-beta1",
42
+ "@vaadin/vaadin-material-styles": "23.1.0-beta1",
43
+ "@vaadin/vaadin-overlay": "23.1.0-beta1",
44
+ "@vaadin/vaadin-themable-mixin": "23.1.0-beta1"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@esm-bundle/chai": "^4.3.4",
48
- "@vaadin/dialog": "23.1.0-alpha2",
49
- "@vaadin/polymer-legacy-adapter": "23.1.0-alpha2",
48
+ "@vaadin/dialog": "23.1.0-beta1",
49
+ "@vaadin/polymer-legacy-adapter": "23.1.0-beta1",
50
50
  "@vaadin/testing-helpers": "^0.3.2",
51
- "sinon": "^9.2.0"
51
+ "sinon": "^13.0.2"
52
52
  },
53
- "gitHead": "6842dcb8b163d4512fae8d3d12a6559077a4aee6"
53
+ "gitHead": "8be43cf83102a6b9ccf309687446e590ce0164e8"
54
54
  }
@@ -100,6 +100,6 @@ export function extractDateParts(date) {
100
100
  return {
101
101
  day: date.getDate(),
102
102
  month: date.getMonth(),
103
- year: date.getFullYear()
103
+ year: date.getFullYear(),
104
104
  };
105
105
  }
@@ -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
 
@@ -114,7 +114,7 @@ class DatePickerLight extends ThemableMixin(DatePickerMixin(PolymerElement)) {
114
114
  */
115
115
  attrForValue: {
116
116
  type: String,
117
- value: 'value'
117
+ value: 'value',
118
118
  },
119
119
 
120
120
  /**
@@ -123,8 +123,8 @@ class DatePickerLight extends ThemableMixin(DatePickerMixin(PolymerElement)) {
123
123
  */
124
124
  _overlayInitialized: {
125
125
  type: Boolean,
126
- value: true
127
- }
126
+ value: true,
127
+ },
128
128
  };
129
129
  }
130
130
 
@@ -32,7 +32,7 @@ export interface DatePickerI18n {
32
32
  }
33
33
 
34
34
  export declare function DatePickerMixin<T extends Constructor<HTMLElement>>(
35
- base: T
35
+ base: T,
36
36
  ): T &
37
37
  Constructor<DatePickerMixinClass> &
38
38
  Constructor<DelegateFocusMixinClass> &
@@ -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'],
@@ -247,10 +247,10 @@ export const DatePickerMixin = (subclass) =>
247
247
  }
248
248
  },
249
249
  formatTitle: (monthName, fullYear) => {
250
- return monthName + ' ' + fullYear;
251
- }
250
+ return `${monthName} ${fullYear}`;
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
 
@@ -380,7 +380,9 @@ export const DatePickerMixin = (subclass) =>
380
380
  _onFocus(event) {
381
381
  super._onFocus(event);
382
382
 
383
- this._noInput && event.target.blur();
383
+ if (this._noInput) {
384
+ event.target.blur();
385
+ }
384
386
  }
385
387
 
386
388
  /**
@@ -421,7 +423,7 @@ export const DatePickerMixin = (subclass) =>
421
423
  this.addController(
422
424
  new MediaQueryController(this._fullscreenMediaQuery, (matches) => {
423
425
  this._fullscreen = matches;
424
- })
426
+ }),
425
427
  );
426
428
 
427
429
  this.addController(new VirtualKeyboardController(this));
@@ -662,7 +664,9 @@ export const DatePickerMixin = (subclass) =>
662
664
  }
663
665
  const value = this._formatISO(selectedDate);
664
666
 
665
- this.__keepInputValue || this._applyInputValue(selectedDate);
667
+ if (!this.__keepInputValue) {
668
+ this._applyInputValue(selectedDate);
669
+ }
666
670
 
667
671
  if (value !== this.value) {
668
672
  this.validate();
@@ -704,7 +708,9 @@ export const DatePickerMixin = (subclass) =>
704
708
  }
705
709
  if (!dateEquals(this[property], date)) {
706
710
  this[property] = date;
707
- this.value && this.validate();
711
+ if (this.value) {
712
+ this.validate();
713
+ }
708
714
  }
709
715
  }
710
716
 
@@ -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
  }
@@ -848,7 +854,9 @@ export const DatePickerMixin = (subclass) =>
848
854
  /** @protected */
849
855
  _focus() {
850
856
  if (this._noInput) {
851
- this._overlayInitialized && this._overlayContent.focus();
857
+ if (this._overlayInitialized) {
858
+ this._overlayContent.focus();
859
+ }
852
860
  } else {
853
861
  this.inputElement.focus();
854
862
  }
@@ -924,7 +932,7 @@ export const DatePickerMixin = (subclass) =>
924
932
  // the required attribute. Both are not allowed on an input element.
925
933
  // Therefore we prevent default on most keydown events.
926
934
  var allowedKeys = [
927
- 9 // tab
935
+ 9, // tab
928
936
  ];
929
937
  if (allowedKeys.indexOf(e.keyCode) === -1) {
930
938
  e.preventDefault();
@@ -1001,8 +1009,7 @@ export const DatePickerMixin = (subclass) =>
1001
1009
  /** @private */
1002
1010
  _getParsedDate(inputValue = this._inputValue) {
1003
1011
  const dateObject = this.i18n.parseDate && this.i18n.parseDate(inputValue);
1004
- const parsedDate =
1005
- dateObject && this._parseDate(dateObject.year + '-' + (dateObject.month + 1) + '-' + dateObject.day);
1012
+ const parsedDate = dateObject && this._parseDate(`${dateObject.year}-${dateObject.month + 1}-${dateObject.day}`);
1006
1013
  return parsedDate;
1007
1014
  }
1008
1015
 
@@ -237,7 +237,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
237
237
  * The value for this element.
238
238
  */
239
239
  selectedDate: {
240
- type: Date
240
+ type: Date,
241
241
  },
242
242
 
243
243
  /**
@@ -246,7 +246,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
246
246
  focusedDate: {
247
247
  type: Date,
248
248
  notify: true,
249
- observer: '_focusedDateChanged'
249
+ observer: '_focusedDateChanged',
250
250
  },
251
251
 
252
252
  _focusedMonthDate: Number,
@@ -256,11 +256,11 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
256
256
  */
257
257
  initialPosition: {
258
258
  type: Date,
259
- observer: '_initialPositionChanged'
259
+ observer: '_initialPositionChanged',
260
260
  },
261
261
 
262
262
  _originDate: {
263
- value: new Date()
263
+ value: new Date(),
264
264
  },
265
265
 
266
266
  _visibleMonthIndex: Number,
@@ -269,23 +269,23 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
269
269
 
270
270
  _desktopMediaQuery: {
271
271
  type: String,
272
- value: '(min-width: 375px)'
272
+ value: '(min-width: 375px)',
273
273
  },
274
274
 
275
275
  _translateX: {
276
- observer: '_translateXChanged'
276
+ observer: '_translateXChanged',
277
277
  },
278
278
 
279
279
  _yearScrollerWidth: {
280
- value: 50
280
+ value: 50,
281
281
  },
282
282
 
283
283
  i18n: {
284
- type: Object
284
+ type: Object,
285
285
  },
286
286
 
287
287
  showWeekNumbers: {
288
- type: Boolean
288
+ type: Boolean,
289
289
  },
290
290
 
291
291
  _ignoreTaps: Boolean,
@@ -305,7 +305,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
305
305
  /**
306
306
  * Input label
307
307
  */
308
- label: String
308
+ label: String,
309
309
  };
310
310
  }
311
311
 
@@ -331,13 +331,13 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
331
331
  addListener(
332
332
  this.shadowRoot.querySelector('[part="years-toggle-button"]'),
333
333
  'tap',
334
- this._toggleYearScroller.bind(this)
334
+ this._toggleYearScroller.bind(this),
335
335
  );
336
336
 
337
337
  this.addController(
338
338
  new MediaQueryController(this._desktopMediaQuery, (matches) => {
339
339
  this._desktopMode = matches;
340
- })
340
+ }),
341
341
  );
342
342
  }
343
343
 
@@ -376,7 +376,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
376
376
  _selectDate(dateToSelect) {
377
377
  this.selectedDate = dateToSelect;
378
378
  this.dispatchEvent(
379
- new CustomEvent('date-selected', { detail: { date: dateToSelect }, bubbles: true, composed: true })
379
+ new CustomEvent('date-selected', { detail: { date: dateToSelect }, bubbles: true, composed: true }),
380
380
  );
381
381
  }
382
382
 
@@ -404,7 +404,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
404
404
 
405
405
  const visibleArea = Math.max(
406
406
  this.$.monthScroller.itemHeight,
407
- this.$.monthScroller.clientHeight - this.$.monthScroller.bufferOffset * 2
407
+ this.$.monthScroller.clientHeight - this.$.monthScroller.bufferOffset * 2,
408
408
  );
409
409
  const visibleItems = visibleArea / this.$.monthScroller.itemHeight;
410
410
  const scrolledBelowViewport = this.$.monthScroller.position + visibleItems - 1 < diff;
@@ -543,9 +543,9 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
543
543
  composed: true,
544
544
  detail: {
545
545
  position: this._targetPosition,
546
- oldPosition: initialPosition
547
- }
548
- })
546
+ oldPosition: initialPosition,
547
+ },
548
+ }),
549
549
  );
550
550
 
551
551
  this.$.monthScroller.position = this._targetPosition;
@@ -579,7 +579,7 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
579
579
  var newTranslateX = this._translateX + e.detail.ddx;
580
580
  this._translateX = this._limit(newTranslateX, {
581
581
  min: 0,
582
- max: this._yearScrollerWidth
582
+ max: this._yearScrollerWidth,
583
583
  });
584
584
  }
585
585
 
@@ -618,7 +618,11 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
618
618
  }
619
619
 
620
620
  _toggleYearScroller() {
621
- this._isYearScrollerVisible() ? this._closeYearScroller() : this._openYearScroller();
621
+ if (this._isYearScrollerVisible()) {
622
+ this._closeYearScroller();
623
+ } else {
624
+ this._openYearScroller();
625
+ }
622
626
  }
623
627
 
624
628
  _openYearScroller() {
@@ -637,8 +641,8 @@ class DatePickerOverlayContent extends ControllerMixin(ThemableMixin(DirMixin(Po
637
641
 
638
642
  _translateXChanged(x) {
639
643
  if (!this._desktopMode) {
640
- this.$.monthScroller.style.transform = 'translateX(' + (x - this._yearScrollerWidth) + 'px)';
641
- this.$.yearScroller.style.transform = 'translateX(' + x + 'px)';
644
+ this.$.monthScroller.style.transform = `translateX(${x - this._yearScrollerWidth}px)`;
645
+ this.$.yearScroller.style.transform = `translateX(${x}px)`;
642
646
  }
643
647
  }
644
648
 
@@ -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
 
@@ -113,6 +113,7 @@ registerStyles('vaadin-date-picker', [inputFieldShared, datePickerStyles], { mod
113
113
  * @mixes ElementMixin
114
114
  * @mixes ThemableMixin
115
115
  * @mixes InputControlMixin
116
+ * @mixes DatePickerMixin
116
117
  */
117
118
  class DatePicker extends DatePickerMixin(InputControlMixin(ThemableMixin(ElementMixin(PolymerElement)))) {
118
119
  static get is() {
@@ -206,7 +207,7 @@ class DatePicker extends DatePickerMixin(InputControlMixin(ThemableMixin(Element
206
207
  this._setFocusElement(input);
207
208
  this.stateTarget = input;
208
209
  this.ariaTarget = input;
209
- })
210
+ }),
210
211
  );
211
212
  this.addController(new LabelledInputController(this.inputElement, this._labelController));
212
213
 
@@ -221,7 +222,7 @@ class DatePicker extends DatePickerMixin(InputControlMixin(ThemableMixin(Element
221
222
  } else if (!this.hasAttribute('focused')) {
222
223
  this.blur();
223
224
  }
224
- if (e.detail.sourceEvent && e.detail.sourceEvent.composedPath().indexOf(this) !== -1) {
225
+ if (e.detail.sourceEvent && e.detail.sourceEvent.composedPath().includes(this)) {
225
226
  e.preventDefault();
226
227
  }
227
228
  }
@@ -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
 
@@ -121,7 +121,7 @@ class InfiniteScroller extends PolymerElement {
121
121
 
122
122
  this._buffers = Array.prototype.slice.call(this.root.querySelectorAll('.buffer'));
123
123
 
124
- this.$.fullHeight.style.height = this._initialScroll * 2 + 'px';
124
+ this.$.fullHeight.style.height = `${this._initialScroll * 2}px`;
125
125
 
126
126
  const tpl = this.querySelector('template');
127
127
  this._TemplateClass = templatize(tpl, this, {
@@ -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
@@ -168,7 +168,7 @@ class InfiniteScroller extends PolymerElement {
168
168
  _translateBuffer(up) {
169
169
  const index = up ? 1 : 0;
170
170
  this._buffers[index].translateY = this._buffers[index ? 0 : 1].translateY + this._bufferHeight * (index ? -1 : 1);
171
- this._buffers[index].style.transform = 'translate3d(0, ' + this._buffers[index].translateY + 'px, 0)';
171
+ this._buffers[index].style.transform = `translate3d(0, ${this._buffers[index].translateY}px, 0)`;
172
172
  this._buffers[index].updated = false;
173
173
  this._buffers.reverse();
174
174
  }
@@ -279,7 +279,7 @@ class InfiniteScroller extends PolymerElement {
279
279
  this._buffers[0].translateY = this._initialScroll - this._bufferHeight;
280
280
  this._buffers[1].translateY = this._initialScroll;
281
281
  this._buffers.forEach((buffer) => {
282
- buffer.style.transform = 'translate3d(0, ' + buffer.translateY + 'px, 0)';
282
+ buffer.style.transform = `translate3d(0, ${buffer.translateY}px, 0)`;
283
283
  });
284
284
  this._buffers[0].updated = this._buffers[1].updated = false;
285
285
  this._updateClones(true);
@@ -297,11 +297,11 @@ class InfiniteScroller extends PolymerElement {
297
297
  this._buffers.forEach((buffer) => {
298
298
  for (let i = 0; i < this.bufferSize; i++) {
299
299
  const itemWrapper = document.createElement('div');
300
- itemWrapper.style.height = this.itemHeight + 'px';
300
+ itemWrapper.style.height = `${this.itemHeight}px`;
301
301
  itemWrapper.instance = {};
302
302
 
303
303
  const contentId = (InfiniteScroller._contentIndex = InfiniteScroller._contentIndex + 1 || 0);
304
- const slotName = 'vaadin-infinite-scroller-item-content-' + contentId;
304
+ const slotName = `vaadin-infinite-scroller-item-content-${contentId}`;
305
305
 
306
306
  const insertionPoint = document.createElement('slot');
307
307
  insertionPoint.setAttribute('name', slotName);
@@ -23,18 +23,8 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
23
23
  }
24
24
 
25
25
  #monthGrid {
26
- display: block;
27
- }
28
-
29
- #monthGrid thead,
30
- #monthGrid tbody {
31
- display: block;
32
26
  width: 100%;
33
- }
34
-
35
- [part='weekdays'] {
36
- display: flex;
37
- flex-grow: 1;
27
+ border-collapse: collapse;
38
28
  }
39
29
 
40
30
  #days-container tr,
@@ -53,9 +43,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
53
43
 
54
44
  [part='weekday'],
55
45
  [part='date'] {
56
- display: block;
57
- /* Would use calc(100% / 7) but it doesn't work nice on IE */
58
- width: 14.285714286%;
46
+ width: calc(100% / 7);
59
47
  padding: 0;
60
48
  font-weight: normal;
61
49
  }
@@ -64,6 +52,12 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
64
52
  [part='week-number'] {
65
53
  width: 12.5%;
66
54
  flex-shrink: 0;
55
+ padding: 0;
56
+ }
57
+
58
+ :host([week-numbers]) [part='weekday']:not(:empty),
59
+ :host([week-numbers]) [part='date'] {
60
+ width: 12.5%;
67
61
  }
68
62
  </style>
69
63
 
@@ -135,7 +129,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
135
129
  */
136
130
  month: {
137
131
  type: Date,
138
- value: new Date()
132
+ value: new Date(),
139
133
  },
140
134
 
141
135
  /**
@@ -143,7 +137,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
143
137
  */
144
138
  selectedDate: {
145
139
  type: Date,
146
- notify: true
140
+ notify: true,
147
141
  },
148
142
 
149
143
  /**
@@ -153,11 +147,11 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
153
147
 
154
148
  showWeekNumbers: {
155
149
  type: Boolean,
156
- value: false
150
+ value: false,
157
151
  },
158
152
 
159
153
  i18n: {
160
- type: Object
154
+ type: Object,
161
155
  },
162
156
 
163
157
  /**
@@ -172,7 +166,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
172
166
  */
173
167
  minDate: {
174
168
  type: Date,
175
- value: null
169
+ value: null,
176
170
  },
177
171
 
178
172
  /**
@@ -180,31 +174,31 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
180
174
  */
181
175
  maxDate: {
182
176
  type: Date,
183
- value: null
177
+ value: null,
184
178
  },
185
179
 
186
180
  _days: {
187
181
  type: Array,
188
- computed: '_getDays(month, i18n.firstDayOfWeek, minDate, maxDate)'
182
+ computed: '_getDays(month, i18n.firstDayOfWeek, minDate, maxDate)',
189
183
  },
190
184
 
191
185
  _weeks: {
192
186
  type: Array,
193
- computed: '_getWeeks(_days)'
187
+ computed: '_getWeeks(_days)',
194
188
  },
195
189
 
196
190
  disabled: {
197
191
  type: Boolean,
198
192
  reflectToAttribute: true,
199
- computed: '_isDisabled(month, minDate, maxDate)'
200
- }
193
+ computed: '_isDisabled(month, minDate, maxDate)',
194
+ },
201
195
  };
202
196
  }
203
197
 
204
198
  static get observers() {
205
199
  return [
206
200
  '_showWeekNumbersChanged(showWeekNumbers, i18n.firstDayOfWeek)',
207
- '__focusedDateChanged(focusedDate, _days)'
201
+ '__focusedDateChanged(focusedDate, _days)',
208
202
  ];
209
203
  }
210
204
 
@@ -285,7 +279,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
285
279
  weekDayNames = weekDayNames.map((day, index) => {
286
280
  return {
287
281
  weekDay: day,
288
- weekDayShort: weekDayNamesShort[index]
282
+ weekDayShort: weekDayNamesShort[index],
289
283
  };
290
284
  });
291
285
 
@@ -362,7 +356,7 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
362
356
  if (!this.ignoreTaps && !this._notTapping && e.target.date && !e.target.hasAttribute('disabled')) {
363
357
  this.selectedDate = e.target.date;
364
358
  this.dispatchEvent(
365
- 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 }),
366
360
  );
367
361
  }
368
362
  }
@@ -412,17 +406,12 @@ class MonthCalendar extends FocusMixin(ThemableMixin(PolymerElement)) {
412
406
  return '';
413
407
  }
414
408
 
415
- var ariaLabel =
416
- this._getDate(date) +
417
- ' ' +
418
- this.i18n.monthNames[date.getMonth()] +
419
- ' ' +
420
- date.getFullYear() +
421
- ', ' +
422
- this.i18n.weekdays[date.getDay()];
409
+ var ariaLabel = `${this._getDate(date)} ${this.i18n.monthNames[date.getMonth()]} ${date.getFullYear()}, ${
410
+ this.i18n.weekdays[date.getDay()]
411
+ }`;
423
412
 
424
413
  if (this._isToday(date)) {
425
- ariaLabel += ', ' + this.i18n.today;
414
+ ariaLabel += `, ${this.i18n.today}`;
426
415
  }
427
416
 
428
417
  return ariaLabel;
@@ -211,5 +211,5 @@ registerStyles(
211
211
  }
212
212
  }
213
213
  `,
214
- { moduleId: 'lumo-date-picker-overlay-content' }
214
+ { moduleId: 'lumo-date-picker-overlay-content' },
215
215
  );
@@ -54,5 +54,5 @@ const datePickerOverlay = css`
54
54
  `;
55
55
 
56
56
  registerStyles('vaadin-date-picker-overlay', [menuOverlay, datePickerOverlay], {
57
- moduleId: 'lumo-date-picker-overlay'
57
+ moduleId: 'lumo-date-picker-overlay',
58
58
  });
@@ -68,6 +68,11 @@ registerStyles(
68
68
  cursor: var(--lumo-clickable-cursor);
69
69
  }
70
70
 
71
+ :host([week-numbers]) [part='weekday']:not(:empty),
72
+ :host([week-numbers]) [part='date'] {
73
+ width: calc((100% - var(--lumo-size-xs)) / 7);
74
+ }
75
+
71
76
  /* Today date */
72
77
 
73
78
  [part='date'][today] {
@@ -143,7 +148,7 @@ registerStyles(
143
148
  color: var(--lumo-disabled-text-color) !important;
144
149
  }
145
150
  `,
146
- { moduleId: 'lumo-month-calendar' }
151
+ { moduleId: 'lumo-month-calendar' },
147
152
  );
148
153
 
149
154
  const $_documentContainer = document.createElement('template');
@@ -172,5 +172,5 @@ registerStyles(
172
172
  margin: 0 4px;
173
173
  }
174
174
  `,
175
- { moduleId: 'material-date-picker-overlay-content' }
175
+ { moduleId: 'material-date-picker-overlay-content' },
176
176
  );
@@ -41,5 +41,5 @@ const datePickerOverlay = css`
41
41
  `;
42
42
 
43
43
  registerStyles('vaadin-date-picker-overlay', [overlay, datePickerOverlay], {
44
- moduleId: 'material-date-picker-overlay'
44
+ moduleId: 'material-date-picker-overlay',
45
45
  });
@@ -116,5 +116,5 @@ registerStyles(
116
116
  opacity: 1;
117
117
  }
118
118
  `,
119
- { moduleId: 'material-date-picker-month-calendar' }
119
+ { moduleId: 'material-date-picker-month-calendar' },
120
120
  );