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 1542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1553 ScrollView.prototype.contentPositionForContentOffset = function(offset) { | 1553 ScrollView.prototype.contentPositionForContentOffset = function(offset) { |
1554 return offset - this._partitionNumber * ScrollView.PartitionHeight; | 1554 return offset - this._partitionNumber * ScrollView.PartitionHeight; |
1555 }; | 1555 }; |
1556 | 1556 |
1557 /** | 1557 /** |
1558 * @constructor | 1558 * @constructor |
1559 * @extends View | 1559 * @extends View |
1560 */ | 1560 */ |
1561 function ListCell() { | 1561 function ListCell() { |
1562 View.call(this, createElement("div", ListCell.ClassNameListCell)); | 1562 View.call(this, createElement("div", ListCell.ClassNameListCell)); |
1563 this.element.setAttribute("role", "gridcell"); | |
1564 | 1563 |
1565 /** | 1564 /** |
1566 * @type {!number} | 1565 * @type {!number} |
1567 */ | 1566 */ |
1568 this.row = NaN; | 1567 this.row = NaN; |
1569 /** | 1568 /** |
1570 * @type {!number} | 1569 * @type {!number} |
1571 */ | 1570 */ |
1572 this._width = 0; | 1571 this._width = 0; |
1573 /** | 1572 /** |
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2137 this.label.style.lineHeight = (YearListCell.Height - YearListCell.BorderBott
omWidth) + "px"; | 2136 this.label.style.lineHeight = (YearListCell.Height - YearListCell.BorderBott
omWidth) + "px"; |
2138 | 2137 |
2139 /** | 2138 /** |
2140 * @type {!Array} Array of the 12 month button elements. | 2139 * @type {!Array} Array of the 12 month button elements. |
2141 * @const | 2140 * @const |
2142 */ | 2141 */ |
2143 this.monthButtons = []; | 2142 this.monthButtons = []; |
2144 var monthChooserElement = createElement("div", YearListCell.ClassNameMonthCh
ooser); | 2143 var monthChooserElement = createElement("div", YearListCell.ClassNameMonthCh
ooser); |
2145 for (var r = 0; r < YearListCell.ButtonRows; ++r) { | 2144 for (var r = 0; r < YearListCell.ButtonRows; ++r) { |
2146 var buttonsRow = createElement("div", YearListCell.ClassNameMonthButtons
Row); | 2145 var buttonsRow = createElement("div", YearListCell.ClassNameMonthButtons
Row); |
| 2146 buttonsRow.setAttribute("role", "row"); |
2147 for (var c = 0; c < YearListCell.ButtonColumns; ++c) { | 2147 for (var c = 0; c < YearListCell.ButtonColumns; ++c) { |
2148 var month = c + r * YearListCell.ButtonColumns; | 2148 var month = c + r * YearListCell.ButtonColumns; |
2149 var button = createElement("div", YearListCell.ClassNameMonthButton,
shortMonthLabels[month]); | 2149 var button = createElement("div", YearListCell.ClassNameMonthButton,
shortMonthLabels[month]); |
| 2150 button.setAttribute("role", "gridcell"); |
2150 button.dataset.month = month; | 2151 button.dataset.month = month; |
2151 buttonsRow.appendChild(button); | 2152 buttonsRow.appendChild(button); |
2152 this.monthButtons.push(button); | 2153 this.monthButtons.push(button); |
2153 } | 2154 } |
2154 monthChooserElement.appendChild(buttonsRow); | 2155 monthChooserElement.appendChild(buttonsRow); |
2155 } | 2156 } |
2156 this.element.appendChild(monthChooserElement); | 2157 this.element.appendChild(monthChooserElement); |
2157 | 2158 |
2158 /** | 2159 /** |
2159 * @type {!boolean} | 2160 * @type {!boolean} |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2468 | 2469 |
2469 /** | 2470 /** |
2470 * @param {!number} row | 2471 * @param {!number} row |
2471 * @return {!YearListCell} | 2472 * @return {!YearListCell} |
2472 * @override | 2473 * @override |
2473 */ | 2474 */ |
2474 YearListView.prototype.prepareNewCell = function(row) { | 2475 YearListView.prototype.prepareNewCell = function(row) { |
2475 var cell = YearListCell._recycleBin.pop() || new YearListCell(global.params.
shortMonthLabels); | 2476 var cell = YearListCell._recycleBin.pop() || new YearListCell(global.params.
shortMonthLabels); |
2476 cell.reset(row); | 2477 cell.reset(row); |
2477 cell.setSelected(this.selectedRow === row); | 2478 cell.setSelected(this.selectedRow === row); |
2478 if (this.highlightedMonth && row === this.highlightedMonth.year - 1) { | |
2479 cell.monthButtons[this.highlightedMonth.month].classList.add(YearListCel
l.ClassNameHighlighted); | |
2480 } | |
2481 for (var i = 0; i < cell.monthButtons.length; ++i) { | 2479 for (var i = 0; i < cell.monthButtons.length; ++i) { |
2482 var month = new Month(row + 1, i); | 2480 var month = new Month(row + 1, i); |
| 2481 cell.monthButtons[i].id = month.toString(); |
2483 cell.monthButtons[i].setAttribute("aria-disabled", this._minimumMonth >
month || this._maximumMonth < month ? "true" : "false"); | 2482 cell.monthButtons[i].setAttribute("aria-disabled", this._minimumMonth >
month || this._maximumMonth < month ? "true" : "false"); |
| 2483 cell.monthButtons[i].setAttribute("aria-label", month.toLocaleString()); |
| 2484 } |
| 2485 if (this.highlightedMonth && row === this.highlightedMonth.year - 1) { |
| 2486 var monthButton = cell.monthButtons[this.highlightedMonth.month]; |
| 2487 monthButton.classList.add(YearListCell.ClassNameHighlighted); |
| 2488 // aira-activedescendant assumes both elements have renderers, and |
| 2489 // |monthButton| might have no renderer yet. |
| 2490 var element = this.element; |
| 2491 setTimeout(function() { |
| 2492 element.setAttribute("aria-activedescendant", monthButton.id); |
| 2493 }, 0); |
2484 } | 2494 } |
2485 var animator = this._runningAnimators[row]; | 2495 var animator = this._runningAnimators[row]; |
2486 if (animator) | 2496 if (animator) |
2487 cell.setHeight(animator.currentValue); | 2497 cell.setHeight(animator.currentValue); |
2488 else if (row === this.selectedRow) | 2498 else if (row === this.selectedRow) |
2489 cell.setHeight(YearListCell.SelectedHeight); | 2499 cell.setHeight(YearListCell.SelectedHeight); |
2490 else | 2500 else |
2491 cell.setHeight(YearListCell.Height); | 2501 cell.setHeight(YearListCell.Height); |
2492 return cell; | 2502 return cell; |
2493 }; | 2503 }; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2599 }; | 2609 }; |
2600 | 2610 |
2601 YearListView.prototype.dehighlightMonth = function() { | 2611 YearListView.prototype.dehighlightMonth = function() { |
2602 if (!this.highlightedMonth) | 2612 if (!this.highlightedMonth) |
2603 return; | 2613 return; |
2604 var monthButton = this.buttonForMonth(this.highlightedMonth); | 2614 var monthButton = this.buttonForMonth(this.highlightedMonth); |
2605 if (monthButton) { | 2615 if (monthButton) { |
2606 monthButton.classList.remove(YearListCell.ClassNameHighlighted); | 2616 monthButton.classList.remove(YearListCell.ClassNameHighlighted); |
2607 } | 2617 } |
2608 this.highlightedMonth = null; | 2618 this.highlightedMonth = null; |
| 2619 this.element.removeAttribute("aria-activedescendant"); |
2609 }; | 2620 }; |
2610 | 2621 |
2611 /** | 2622 /** |
2612 * @param {!Month} month | 2623 * @param {!Month} month |
2613 */ | 2624 */ |
2614 YearListView.prototype.highlightMonth = function(month) { | 2625 YearListView.prototype.highlightMonth = function(month) { |
2615 if (this.highlightedMonth && this.highlightedMonth.equals(month)) | 2626 if (this.highlightedMonth && this.highlightedMonth.equals(month)) |
2616 return; | 2627 return; |
2617 this.dehighlightMonth(); | 2628 this.dehighlightMonth(); |
2618 this.highlightedMonth = month; | 2629 this.highlightedMonth = month; |
2619 if (!this.highlightedMonth) | 2630 if (!this.highlightedMonth) |
2620 return; | 2631 return; |
2621 var monthButton = this.buttonForMonth(this.highlightedMonth); | 2632 var monthButton = this.buttonForMonth(this.highlightedMonth); |
2622 if (monthButton) { | 2633 if (monthButton) { |
2623 monthButton.classList.add(YearListCell.ClassNameHighlighted); | 2634 monthButton.classList.add(YearListCell.ClassNameHighlighted); |
| 2635 this.element.setAttribute("aria-activedescendant", monthButton.id); |
2624 } | 2636 } |
2625 }; | 2637 }; |
2626 | 2638 |
2627 /** | 2639 /** |
2628 * @param {!Month} month | 2640 * @param {!Month} month |
2629 */ | 2641 */ |
2630 YearListView.prototype.show = function(month) { | 2642 YearListView.prototype.show = function(month) { |
2631 this._ignoreMouseOutUntillNextMouseOver = true; | 2643 this._ignoreMouseOutUntillNextMouseOver = true; |
2632 | 2644 |
2633 this.scrollToRow(month.year - 1, false); | 2645 this.scrollToRow(month.year - 1, false); |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3025 /** | 3037 /** |
3026 * @constructor | 3038 * @constructor |
3027 * @extends ListCell | 3039 * @extends ListCell |
3028 */ | 3040 */ |
3029 function DayCell() { | 3041 function DayCell() { |
3030 ListCell.call(this); | 3042 ListCell.call(this); |
3031 this.element.classList.add(DayCell.ClassNameDayCell); | 3043 this.element.classList.add(DayCell.ClassNameDayCell); |
3032 this.element.style.width = DayCell.Width + "px"; | 3044 this.element.style.width = DayCell.Width + "px"; |
3033 this.element.style.height = DayCell.Height + "px"; | 3045 this.element.style.height = DayCell.Height + "px"; |
3034 this.element.style.lineHeight = (DayCell.Height - DayCell.PaddingSize * 2) +
"px"; | 3046 this.element.style.lineHeight = (DayCell.Height - DayCell.PaddingSize * 2) +
"px"; |
| 3047 this.element.setAttribute("role", "gridcell"); |
3035 /** | 3048 /** |
3036 * @type {?Day} | 3049 * @type {?Day} |
3037 */ | 3050 */ |
3038 this.day = null; | 3051 this.day = null; |
3039 }; | 3052 }; |
3040 | 3053 |
3041 DayCell.prototype = Object.create(ListCell.prototype); | 3054 DayCell.prototype = Object.create(ListCell.prototype); |
3042 | 3055 |
3043 DayCell.Width = 34; | 3056 DayCell.Width = 34; |
3044 DayCell.Height = hasInaccuratePointingDevice() ? 34 : 20; | 3057 DayCell.Height = hasInaccuratePointingDevice() ? 34 : 20; |
(...skipping 1021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4066 event.stopPropagation(); | 4079 event.stopPropagation(); |
4067 event.preventDefault(); | 4080 event.preventDefault(); |
4068 } | 4081 } |
4069 }; | 4082 }; |
4070 | 4083 |
4071 if (window.dialogArguments) { | 4084 if (window.dialogArguments) { |
4072 initialize(dialogArguments); | 4085 initialize(dialogArguments); |
4073 } else { | 4086 } else { |
4074 window.addEventListener("message", handleMessage, false); | 4087 window.addEventListener("message", handleMessage, false); |
4075 } | 4088 } |
OLD | NEW |