diff --git a/packages/date-picker/src/vaadin-date-picker-helper.js b/packages/date-picker/src/vaadin-date-picker-helper.js
index b6b8d39c2ac..22ed6782ed4 100644
--- a/packages/date-picker/src/vaadin-date-picker-helper.js
+++ b/packages/date-picker/src/vaadin-date-picker-helper.js
@@ -36,6 +36,18 @@ export function getISOWeekNumber(date) {
return Math.floor(daysSinceFirstOfJanuary / 7 + 1);
}
+/**
+ * Creates a new object with the same date, but sets the hours, minutes, seconds and milliseconds to 0.
+ *
+ * @param {Date} date
+ * @return {Date} The same date time elements set to 0.
+ */
+export function normalizeDate(date) {
+ const normalizedDate = new Date(date);
+ normalizedDate.setHours(0, 0, 0, 0);
+ return normalizedDate;
+}
+
/**
* Check if two dates are equal.
*
@@ -45,11 +57,7 @@ export function getISOWeekNumber(date) {
*/
export function dateEquals(date1, date2) {
return (
- date1 instanceof Date &&
- date2 instanceof Date &&
- date1.getFullYear() === date2.getFullYear() &&
- date1.getMonth() === date2.getMonth() &&
- date1.getDate() === date2.getDate()
+ date1 instanceof Date && date2 instanceof Date && normalizeDate(date1).getTime() === normalizeDate(date2).getTime()
);
}
diff --git a/packages/date-picker/src/vaadin-lit-month-calendar.js b/packages/date-picker/src/vaadin-lit-month-calendar.js
index 2a72fbeb7e0..64d78e9f8e9 100644
--- a/packages/date-picker/src/vaadin-lit-month-calendar.js
+++ b/packages/date-picker/src/vaadin-lit-month-calendar.js
@@ -7,7 +7,7 @@ import { html, LitElement } from 'lit';
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
import { PolylitMixin } from '@vaadin/component-base/src/polylit-mixin.js';
import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
-import { dateAllowed, dateEquals } from './vaadin-date-picker-helper.js';
+import { dateAllowed, dateEquals, normalizeDate } from './vaadin-date-picker-helper.js';
import { MonthCalendarMixin } from './vaadin-month-calendar-mixin.js';
import { monthCalendarStyles } from './vaadin-month-calendar-styles.js';
@@ -62,6 +62,8 @@ class MonthCalendar extends MonthCalendarMixin(ThemableMixin(PolylitMixin(LitEle
const isFocused = dateEquals(date, this.focusedDate);
const isSelected = dateEquals(date, this.selectedDate);
const isDisabled = !dateAllowed(date, this.minDate, this.maxDate, this.isDateDisabled);
+ const greaterThanToday = date > normalizeDate(new Date());
+ const lessThanToday = date < normalizeDate(new Date());
const parts = [
'date',
@@ -69,6 +71,8 @@ class MonthCalendar extends MonthCalendarMixin(ThemableMixin(PolylitMixin(LitEle
isFocused && 'focused',
isSelected && 'selected',
this._isToday(date) && 'today',
+ greaterThanToday && 'future',
+ lessThanToday && 'past',
].filter(Boolean);
return html`
diff --git a/packages/date-picker/src/vaadin-month-calendar.js b/packages/date-picker/src/vaadin-month-calendar.js
index 2715d720812..f733d66ace8 100644
--- a/packages/date-picker/src/vaadin-month-calendar.js
+++ b/packages/date-picker/src/vaadin-month-calendar.js
@@ -7,7 +7,7 @@ import '@polymer/polymer/lib/elements/dom-repeat.js';
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
import { registerStyles, ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
-import { dateAllowed, dateEquals } from './vaadin-date-picker-helper.js';
+import { dateAllowed, dateEquals, normalizeDate } from './vaadin-date-picker-helper.js';
import { MonthCalendarMixin } from './vaadin-month-calendar-mixin.js';
import { monthCalendarStyles } from './vaadin-month-calendar-styles.js';
@@ -110,6 +110,8 @@ class MonthCalendar extends MonthCalendarMixin(ThemableMixin(PolymerElement)) {
// eslint-disable-next-line @typescript-eslint/max-params
__getDatePart(date, focusedDate, selectedDate, minDate, maxDate, isDateDisabled) {
const result = ['date'];
+ const greaterThanToday = date > normalizeDate(new Date());
+ const lessThanToday = date < normalizeDate(new Date());
if (this.__isDayDisabled(date, minDate, maxDate, isDateDisabled)) {
result.push('disabled');
@@ -127,6 +129,14 @@ class MonthCalendar extends MonthCalendarMixin(ThemableMixin(PolymerElement)) {
result.push('today');
}
+ if (lessThanToday) {
+ result.push('past');
+ }
+
+ if (greaterThanToday) {
+ result.push('future');
+ }
+
return result.join(' ');
}
diff --git a/packages/date-picker/test/dom/__snapshots__/month-calendar.test.snap.js b/packages/date-picker/test/dom/__snapshots__/month-calendar.test.snap.js
index 2b2707d0581..f4ccd39cae0 100644
--- a/packages/date-picker/test/dom/__snapshots__/month-calendar.test.snap.js
+++ b/packages/date-picker/test/dom/__snapshots__/month-calendar.test.snap.js
@@ -138,14 +138,14 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -153,7 +153,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -161,7 +161,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -169,15 +169,15 @@ snapshots["vaadin-month-calendar shadow default"] =
|
4
|
@@ -185,7 +185,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -202,7 +202,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -210,7 +210,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -218,7 +218,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -226,7 +226,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -234,7 +234,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -242,7 +242,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -250,7 +250,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -267,7 +267,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -275,7 +275,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -283,7 +283,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -291,7 +291,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -299,7 +299,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -307,7 +307,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -315,7 +315,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -332,7 +332,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -340,7 +340,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -348,7 +348,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -356,7 +356,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -364,7 +364,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -372,7 +372,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -380,7 +380,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -397,7 +397,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -405,7 +405,7 @@ snapshots["vaadin-month-calendar shadow default"] =
|
@@ -548,14 +548,14 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
|
@@ -563,7 +563,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
@@ -571,7 +571,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
@@ -579,15 +579,15 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
4
|
@@ -595,7 +595,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
@@ -612,7 +612,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
@@ -620,7 +620,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
@@ -628,7 +628,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
@@ -636,7 +636,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
|
@@ -646,7 +646,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="11 February 2016, Thursday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -656,7 +656,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="12 February 2016, Friday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -666,7 +666,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="13 February 2016, Saturday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -685,7 +685,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="14 February 2016, Sunday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -695,7 +695,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="15 February 2016, Monday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -705,7 +705,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="16 February 2016, Tuesday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -715,7 +715,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="17 February 2016, Wednesday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -725,7 +725,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="18 February 2016, Thursday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -735,7 +735,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="19 February 2016, Friday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -745,7 +745,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="20 February 2016, Saturday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -764,7 +764,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="21 February 2016, Sunday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -774,7 +774,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="22 February 2016, Monday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -784,7 +784,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="23 February 2016, Tuesday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -794,7 +794,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="24 February 2016, Wednesday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -804,7 +804,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="25 February 2016, Thursday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -814,7 +814,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="26 February 2016, Friday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -824,7 +824,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="27 February 2016, Saturday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -843,7 +843,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="28 February 2016, Sunday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -853,7 +853,7 @@ snapshots["vaadin-month-calendar shadow max date"] =
aria-disabled="true"
aria-label="29 February 2016, Monday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -994,7 +994,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1002,7 +1002,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1010,7 +1010,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1018,15 +1018,15 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
4
|
@@ -1034,7 +1034,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1042,7 +1042,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1058,7 +1058,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1066,7 +1066,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1074,7 +1074,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1082,7 +1082,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1090,7 +1090,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1098,7 +1098,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1106,7 +1106,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1122,7 +1122,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1130,7 +1130,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1138,7 +1138,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1146,7 +1146,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1154,7 +1154,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1162,7 +1162,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1170,7 +1170,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1186,7 +1186,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1194,7 +1194,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1202,7 +1202,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1210,7 +1210,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1218,7 +1218,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1226,7 +1226,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1234,7 +1234,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1250,7 +1250,7 @@ snapshots["vaadin-month-calendar shadow week numbers"] =
|
@@ -1393,7 +1393,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1402,7 +1402,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="1 February 2016, Monday"
disabled=""
- part="date disabled"
+ part="date disabled past"
role="gridcell"
tabindex="-1"
>
@@ -1410,7 +1410,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1420,7 +1420,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="3 February 2016, Wednesday"
disabled=""
- part="date disabled"
+ part="date disabled past"
role="gridcell"
tabindex="-1"
>
@@ -1428,7 +1428,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1436,9 +1436,9 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1446,7 +1446,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1465,7 +1465,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="7 February 2016, Sunday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1473,7 +1473,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1483,7 +1483,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="9 February 2016, Tuesday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1491,7 +1491,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1501,7 +1501,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="11 February 2016, Thursday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1509,7 +1509,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1519,7 +1519,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="13 February 2016, Saturday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1536,7 +1536,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1546,7 +1546,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="15 February 2016, Monday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1554,7 +1554,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1564,7 +1564,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="17 February 2016, Wednesday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1572,7 +1572,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1582,7 +1582,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="19 February 2016, Friday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1590,7 +1590,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1609,7 +1609,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="21 February 2016, Sunday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1617,7 +1617,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1627,7 +1627,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="23 February 2016, Tuesday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1635,7 +1635,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1645,7 +1645,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="25 February 2016, Thursday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1653,7 +1653,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1663,7 +1663,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="27 February 2016, Saturday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
@@ -1680,7 +1680,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
|
@@ -1690,7 +1690,7 @@ snapshots["vaadin-month-calendar shadow disabled dates"] =
aria-disabled="true"
aria-label="29 February 2016, Monday"
disabled=""
- part="date disabled"
+ part="date disabled future"
role="gridcell"
tabindex="-1"
>
diff --git a/packages/date-picker/test/dom/month-calendar.test.js b/packages/date-picker/test/dom/month-calendar.test.js
index e003fbae4e7..9fb7c420fbe 100644
--- a/packages/date-picker/test/dom/month-calendar.test.js
+++ b/packages/date-picker/test/dom/month-calendar.test.js
@@ -1,20 +1,30 @@
import { expect } from '@vaadin/chai-plugins';
import { fixtureSync, nextFrame } from '@vaadin/testing-helpers';
+import sinon from 'sinon';
import '../../src/vaadin-month-calendar.js';
import { resetUniqueId } from '@vaadin/component-base/src/unique-id-utils.js';
import { getDefaultI18n } from '../helpers.js';
describe('vaadin-month-calendar', () => {
- let monthCalendar;
+ let monthCalendar, clock;
beforeEach(async () => {
resetUniqueId();
+ clock = sinon.useFakeTimers({
+ now: new Date(2016, 1, 5),
+ toFake: ['Date'],
+ });
+
monthCalendar = fixtureSync('');
monthCalendar.i18n = getDefaultI18n();
monthCalendar.month = new Date(2016, 1, 1);
await nextFrame();
});
+ afterEach(() => {
+ clock.restore();
+ });
+
describe('host', () => {
it('default', async () => {
await expect(monthCalendar).dom.to.equalSnapshot();
|