Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: Source/web/resources/calendarPicker.js

Issue 536903002: AX: Make the calendar role "grid". (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 * @return {!boolean} 68 * @return {!boolean}
69 */ 69 */
70 function hasInaccuratePointingDevice() { 70 function hasInaccuratePointingDevice() {
71 return matchMedia("(pointer: coarse)").matches; 71 return matchMedia("(pointer: coarse)").matches;
72 } 72 }
73 73
74 /** 74 /**
75 * @return {!string} lowercase locale name. e.g. "en-us" 75 * @return {!string} lowercase locale name. e.g. "en-us"
76 */ 76 */
77 function getLocale() { 77 function getLocale() {
78 return (global.params.locale || "en-us").toLowerCase(); 78 return (global.params.locale || "en-us").toLowerCase().replace(/_/, '-');
keishi 2014/09/03 12:09:35 nit: I'm not sure but could the locale have two un
tkent 2014/09/05 04:54:47 That's right. The regex should be /_/g
79 } 79 }
80 80
81 /** 81 /**
82 * @return {!string} lowercase language code. e.g. "en" 82 * @return {!string} lowercase language code. e.g. "en"
83 */ 83 */
84 function getLanguage() { 84 function getLanguage() {
85 var locale = getLocale(); 85 var locale = getLocale();
86 var result = locale.match(/^([a-z]+)/); 86 var result = locale.match(/^([a-z]+)/);
87 if (!result) 87 if (!result)
88 return "en"; 88 return "en";
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after
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");
1563 1564
1564 /** 1565 /**
1565 * @type {!number} 1566 * @type {!number}
1566 */ 1567 */
1567 this.row = NaN; 1568 this.row = NaN;
1568 /** 1569 /**
1569 * @type {!number} 1570 * @type {!number}
1570 */ 1571 */
1571 this._width = 0; 1572 this._width = 0;
1572 /** 1573 /**
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 this.element.classList.remove("selected"); 1653 this.element.classList.remove("selected");
1653 }; 1654 };
1654 1655
1655 /** 1656 /**
1656 * @constructor 1657 * @constructor
1657 * @extends View 1658 * @extends View
1658 */ 1659 */
1659 function ListView() { 1660 function ListView() {
1660 View.call(this, createElement("div", ListView.ClassNameListView)); 1661 View.call(this, createElement("div", ListView.ClassNameListView));
1661 this.element.tabIndex = 0; 1662 this.element.tabIndex = 0;
1663 this.element.setAttribute("role", "grid");
1662 1664
1663 /** 1665 /**
1664 * @type {!number} 1666 * @type {!number}
1665 * @private 1667 * @private
1666 */ 1668 */
1667 this._width = 0; 1669 this._width = 0;
1668 /** 1670 /**
1669 * @type {!Object} 1671 * @type {!Object}
1670 * @private 1672 * @private
1671 */ 1673 */
(...skipping 1390 matching lines...) Expand 10 before | Expand all | Expand 10 after
3062 */ 3064 */
3063 DayCell.prototype.throwAway = function() { 3065 DayCell.prototype.throwAway = function() {
3064 ListCell.prototype.throwAway.call(this); 3066 ListCell.prototype.throwAway.call(this);
3065 this.day = null; 3067 this.day = null;
3066 }; 3068 };
3067 3069
3068 /** 3070 /**
3069 * @param {!boolean} highlighted 3071 * @param {!boolean} highlighted
3070 */ 3072 */
3071 DayCell.prototype.setHighlighted = function(highlighted) { 3073 DayCell.prototype.setHighlighted = function(highlighted) {
3072 if (highlighted) 3074 if (highlighted) {
3073 this.element.classList.add(DayCell.ClassNameHighlighted); 3075 this.element.classList.add(DayCell.ClassNameHighlighted);
3074 else 3076 this.element.setAttribute("aria-selected", "true");
3077 } else {
3075 this.element.classList.remove(DayCell.ClassNameHighlighted); 3078 this.element.classList.remove(DayCell.ClassNameHighlighted);
3079 this.element.setAttribute("aria-selected", "false");
3080 }
3076 }; 3081 };
3077 3082
3078 /** 3083 /**
3079 * @param {!boolean} disabled 3084 * @param {!boolean} disabled
3080 */ 3085 */
3081 DayCell.prototype.setDisabled = function(disabled) { 3086 DayCell.prototype.setDisabled = function(disabled) {
3082 if (disabled) 3087 if (disabled)
3083 this.element.classList.add(DayCell.ClassNameDisabled); 3088 this.element.classList.add(DayCell.ClassNameDisabled);
3084 else 3089 else
3085 this.element.classList.remove(DayCell.ClassNameDisabled); 3090 this.element.classList.remove(DayCell.ClassNameDisabled);
(...skipping 18 matching lines...) Expand all
3104 else 3109 else
3105 this.element.classList.remove(DayCell.ClassNameToday); 3110 this.element.classList.remove(DayCell.ClassNameToday);
3106 }; 3111 };
3107 3112
3108 /** 3113 /**
3109 * @param {!Day} day 3114 * @param {!Day} day
3110 */ 3115 */
3111 DayCell.prototype.reset = function(day) { 3116 DayCell.prototype.reset = function(day) {
3112 this.day = day; 3117 this.day = day;
3113 this.element.textContent = localizeNumber(this.day.date.toString()); 3118 this.element.textContent = localizeNumber(this.day.date.toString());
3119 if (!DayCell.formatter) {
3120 DayCell.formatter = new Intl.DateTimeFormat(getLocale(), {
3121 weekday: "long", year: "numeric", month: "long", day: "numeric"
3122 });
3123 }
3124 this.element.setAttribute("aria-label", DayCell.formatter.format(this.day.st artDate()));
3125 this.element.id = this.day.toString();
3114 this.show(); 3126 this.show();
3115 }; 3127 };
3116 3128
3117 /** 3129 /**
3118 * @constructor 3130 * @constructor
3119 * @extends ListCell 3131 * @extends ListCell
3120 */ 3132 */
3121 function WeekNumberCell() { 3133 function WeekNumberCell() {
3122 ListCell.call(this); 3134 ListCell.call(this);
3123 this.element.classList.add(WeekNumberCell.ClassNameWeekNumberCell); 3135 this.element.classList.add(WeekNumberCell.ClassNameWeekNumberCell);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
3219 CalendarTableHeaderView.Height = 25; 3231 CalendarTableHeaderView.Height = 25;
3220 3232
3221 /** 3233 /**
3222 * @constructor 3234 * @constructor
3223 * @extends ListCell 3235 * @extends ListCell
3224 */ 3236 */
3225 function CalendarRowCell() { 3237 function CalendarRowCell() {
3226 ListCell.call(this); 3238 ListCell.call(this);
3227 this.element.classList.add(CalendarRowCell.ClassNameCalendarRowCell); 3239 this.element.classList.add(CalendarRowCell.ClassNameCalendarRowCell);
3228 this.element.style.height = CalendarRowCell.Height + "px"; 3240 this.element.style.height = CalendarRowCell.Height + "px";
3241 this.element.setAttribute("role", "row");
3229 3242
3230 /** 3243 /**
3231 * @type {!Array} 3244 * @type {!Array}
3232 * @protected 3245 * @protected
3233 */ 3246 */
3234 this._dayCells = []; 3247 this._dayCells = [];
3235 /** 3248 /**
3236 * @type {!number} 3249 * @type {!number}
3237 */ 3250 */
3238 this.row = 0; 3251 this.row = 0;
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
3504 lastDayInHighlight = Infinity; 3517 lastDayInHighlight = Infinity;
3505 } 3518 }
3506 var currentMonth = this.calendarPicker.currentMonth(); 3519 var currentMonth = this.calendarPicker.currentMonth();
3507 var firstDayInCurrentMonth = currentMonth.firstDay().valueOf(); 3520 var firstDayInCurrentMonth = currentMonth.firstDay().valueOf();
3508 var lastDayInCurrentMonth = currentMonth.lastDay().valueOf(); 3521 var lastDayInCurrentMonth = currentMonth.lastDay().valueOf();
3509 for (var dayString in this._dayCells) { 3522 for (var dayString in this._dayCells) {
3510 var dayCell = this._dayCells[dayString]; 3523 var dayCell = this._dayCells[dayString];
3511 var day = dayCell.day; 3524 var day = dayCell.day;
3512 dayCell.setIsToday(Day.createFromToday().equals(day)); 3525 dayCell.setIsToday(Day.createFromToday().equals(day));
3513 dayCell.setSelected(day >= firstDayInSelection && day <= lastDayInSelect ion); 3526 dayCell.setSelected(day >= firstDayInSelection && day <= lastDayInSelect ion);
3514 dayCell.setHighlighted(day >= firstDayInHighlight && day <= lastDayInHig hlight); 3527 var isHighlighted = day >= firstDayInHighlight && day <= lastDayInHighli ght;
3528 dayCell.setHighlighted(isHighlighted);
3529 if (isHighlighted && firstDayInHighlight == lastDayInHighlight)
3530 this.element.setAttribute("aria-activedescendant", dayCell.element.i d);
3515 dayCell.setIsInCurrentMonth(day >= firstDayInCurrentMonth && day <= last DayInCurrentMonth); 3531 dayCell.setIsInCurrentMonth(day >= firstDayInCurrentMonth && day <= last DayInCurrentMonth);
3516 dayCell.setDisabled(!this.calendarPicker.isValidDay(day)); 3532 dayCell.setDisabled(!this.calendarPicker.isValidDay(day));
3517 } 3533 }
3518 if (this.hasWeekNumberColumn) { 3534 if (this.hasWeekNumberColumn) {
3519 for (var weekString in this._weekNumberCells) { 3535 for (var weekString in this._weekNumberCells) {
3520 var weekNumberCell = this._weekNumberCells[weekString]; 3536 var weekNumberCell = this._weekNumberCells[weekString];
3521 var week = weekNumberCell.week; 3537 var week = weekNumberCell.week;
3522 weekNumberCell.setSelected(selection && selection.equals(week)); 3538 weekNumberCell.setSelected(selection && selection.equals(week));
3523 weekNumberCell.setHighlighted(highlight && highlight.equals(week)); 3539 weekNumberCell.setHighlighted(highlight && highlight.equals(week));
3524 weekNumberCell.setDisabled(!this.calendarPicker.isValid(week)); 3540 weekNumberCell.setDisabled(!this.calendarPicker.isValid(week));
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
4038 event.stopPropagation(); 4054 event.stopPropagation();
4039 event.preventDefault(); 4055 event.preventDefault();
4040 } 4056 }
4041 }; 4057 };
4042 4058
4043 if (window.dialogArguments) { 4059 if (window.dialogArguments) {
4044 initialize(dialogArguments); 4060 initialize(dialogArguments);
4045 } else { 4061 } else {
4046 window.addEventListener("message", handleMessage, false); 4062 window.addEventListener("message", handleMessage, false);
4047 } 4063 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698