OLD | NEW |
1 "use strict"; | 1 "use strict"; |
2 /* | 2 /* |
3 * Copyright (C) 2012 Google Inc. All rights reserved. | 3 * Copyright (C) 2012 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 3501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3512 if (highlight) { | 3512 if (highlight) { |
3513 firstDayInHighlight = highlight.firstDay().valueOf(); | 3513 firstDayInHighlight = highlight.firstDay().valueOf(); |
3514 lastDayInHighlight = highlight.lastDay().valueOf(); | 3514 lastDayInHighlight = highlight.lastDay().valueOf(); |
3515 } else { | 3515 } else { |
3516 firstDayInHighlight = Infinity; | 3516 firstDayInHighlight = Infinity; |
3517 lastDayInHighlight = Infinity; | 3517 lastDayInHighlight = Infinity; |
3518 } | 3518 } |
3519 var currentMonth = this.calendarPicker.currentMonth(); | 3519 var currentMonth = this.calendarPicker.currentMonth(); |
3520 var firstDayInCurrentMonth = currentMonth.firstDay().valueOf(); | 3520 var firstDayInCurrentMonth = currentMonth.firstDay().valueOf(); |
3521 var lastDayInCurrentMonth = currentMonth.lastDay().valueOf(); | 3521 var lastDayInCurrentMonth = currentMonth.lastDay().valueOf(); |
| 3522 var activeDayCell = null; |
3522 for (var dayString in this._dayCells) { | 3523 for (var dayString in this._dayCells) { |
3523 var dayCell = this._dayCells[dayString]; | 3524 var dayCell = this._dayCells[dayString]; |
3524 var day = dayCell.day; | 3525 var day = dayCell.day; |
3525 dayCell.setIsToday(Day.createFromToday().equals(day)); | 3526 dayCell.setIsToday(Day.createFromToday().equals(day)); |
3526 dayCell.setSelected(day >= firstDayInSelection && day <= lastDayInSelect
ion); | 3527 dayCell.setSelected(day >= firstDayInSelection && day <= lastDayInSelect
ion); |
3527 var isHighlighted = day >= firstDayInHighlight && day <= lastDayInHighli
ght; | 3528 var isHighlighted = day >= firstDayInHighlight && day <= lastDayInHighli
ght; |
3528 dayCell.setHighlighted(isHighlighted); | 3529 dayCell.setHighlighted(isHighlighted); |
3529 if (isHighlighted && firstDayInHighlight == lastDayInHighlight) | 3530 if (isHighlighted && firstDayInHighlight == lastDayInHighlight) |
3530 this.element.setAttribute("aria-activedescendant", dayCell.element.i
d); | 3531 activeDayCell = dayCell; |
3531 dayCell.setIsInCurrentMonth(day >= firstDayInCurrentMonth && day <= last
DayInCurrentMonth); | 3532 dayCell.setIsInCurrentMonth(day >= firstDayInCurrentMonth && day <= last
DayInCurrentMonth); |
3532 dayCell.setDisabled(!this.calendarPicker.isValidDay(day)); | 3533 dayCell.setDisabled(!this.calendarPicker.isValidDay(day)); |
3533 } | 3534 } |
3534 if (this.hasWeekNumberColumn) { | 3535 if (this.hasWeekNumberColumn) { |
3535 for (var weekString in this._weekNumberCells) { | 3536 for (var weekString in this._weekNumberCells) { |
3536 var weekNumberCell = this._weekNumberCells[weekString]; | 3537 var weekNumberCell = this._weekNumberCells[weekString]; |
3537 var week = weekNumberCell.week; | 3538 var week = weekNumberCell.week; |
3538 weekNumberCell.setSelected(selection && selection.equals(week)); | 3539 weekNumberCell.setSelected(selection && selection.equals(week)); |
3539 weekNumberCell.setHighlighted(highlight && highlight.equals(week)); | 3540 weekNumberCell.setHighlighted(highlight && highlight.equals(week)); |
3540 weekNumberCell.setDisabled(!this.calendarPicker.isValid(week)); | 3541 weekNumberCell.setDisabled(!this.calendarPicker.isValid(week)); |
3541 } | 3542 } |
3542 } | 3543 } |
| 3544 if (activeDayCell) { |
| 3545 // Ensure a renderer because an element with no renderer doesn't post |
| 3546 // activedescendant events. This shouldn't run in the above |for| loop |
| 3547 // to avoid CSS transition. |
| 3548 activeDayCell.element.offsetLeft; |
| 3549 this.element.setAttribute("aria-activedescendant", activeDayCell.element
.id); |
| 3550 } |
3543 }; | 3551 }; |
3544 | 3552 |
3545 /** | 3553 /** |
3546 * @param {!Day} day | 3554 * @param {!Day} day |
3547 * @return {!DayCell} | 3555 * @return {!DayCell} |
3548 */ | 3556 */ |
3549 CalendarTableView.prototype.prepareNewDayCell = function(day) { | 3557 CalendarTableView.prototype.prepareNewDayCell = function(day) { |
3550 var dayCell = DayCell.recycleOrCreate(); | 3558 var dayCell = DayCell.recycleOrCreate(); |
3551 dayCell.reset(day); | 3559 dayCell.reset(day); |
3552 this._dayCells[dayCell.day.toString()] = dayCell; | 3560 this._dayCells[dayCell.day.toString()] = dayCell; |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4054 event.stopPropagation(); | 4062 event.stopPropagation(); |
4055 event.preventDefault(); | 4063 event.preventDefault(); |
4056 } | 4064 } |
4057 }; | 4065 }; |
4058 | 4066 |
4059 if (window.dialogArguments) { | 4067 if (window.dialogArguments) { |
4060 initialize(dialogArguments); | 4068 initialize(dialogArguments); |
4061 } else { | 4069 } else { |
4062 window.addEventListener("message", handleMessage, false); | 4070 window.addEventListener("message", handleMessage, false); |
4063 } | 4071 } |
OLD | NEW |