Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 733431b

Browse files
Michael Chenjelbourn
authored andcommitted
feat(calendar): Add metaKey keyboard shortcuts
Add apple+down/up keyboard shortcuts equivalent to PgUp and PgDn.
1 parent c68d92f commit 733431b

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/components/calendar/calendar.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
// PRE RELEASE
1717
// TODO(jelbourn): read-only state.
1818
// TODO(jelbourn): Date "isComplete" logic
19-
// TODO(jelbourn): Apple + up / down == PgDown and PgUp
2019
// TODO(jelbourn): Fix NVDA stealing key presses (IE) ???
2120

2221
// POST RELEASE
@@ -325,8 +324,14 @@
325324
switch (event.which) {
326325
case keyCode.RIGHT_ARROW: return dateUtil.incrementDays(this.displayDate, 1);
327326
case keyCode.LEFT_ARROW: return dateUtil.incrementDays(this.displayDate, -1);
328-
case keyCode.DOWN_ARROW: return dateUtil.incrementDays(this.displayDate, 7);
329-
case keyCode.UP_ARROW: return dateUtil.incrementDays(this.displayDate, -7);
327+
case keyCode.DOWN_ARROW:
328+
return event.metaKey ?
329+
dateUtil.incrementMonths(this.displayDate, 1) :
330+
dateUtil.incrementDays(this.displayDate, 7);
331+
case keyCode.UP_ARROW:
332+
return event.metaKey ?
333+
dateUtil.incrementMonths(this.displayDate, -1) :
334+
dateUtil.incrementDays(this.displayDate, -7);
330335
case keyCode.PAGE_DOWN: return dateUtil.incrementMonths(this.displayDate, 1);
331336
case keyCode.PAGE_UP: return dateUtil.incrementMonths(this.displayDate, -1);
332337
case keyCode.HOME: return dateUtil.getFirstDateOfMonth(this.displayDate);

src/components/calendar/calendar.spec.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ describe('md-calendar', function() {
8282
which: keyCode,
8383
ctrlKey: mod.ctrl,
8484
altKey: mod.alt,
85+
metaKey: mod.meta,
8586
shortKey: mod.shift
8687
});
8788
}
@@ -255,6 +256,14 @@ describe('md-calendar', function() {
255256
expect(document.activeElement.textContent).toBe('1');
256257
expect(getMonthLabelForDateCell(document.activeElement)).toBe('Mar 2014');
257258

259+
dispatchKeyEvent(keyCodes.UP_ARROW, {meta: true});
260+
expect(document.activeElement.textContent).toBe('1');
261+
expect(getMonthLabelForDateCell(document.activeElement)).toBe('Feb 2014');
262+
263+
dispatchKeyEvent(keyCodes.DOWN_ARROW, {meta: true});
264+
expect(document.activeElement.textContent).toBe('1');
265+
expect(getMonthLabelForDateCell(document.activeElement)).toBe('Mar 2014');
266+
258267
dispatchKeyEvent(keyCodes.ENTER);
259268
applyDateChange();
260269
expect(dateUtil.isSameDay(controller.selectedDate, new Date(2014, MAR, 1))).toBe(true);

0 commit comments

Comments
 (0)