Chromium Code Reviews| Index: Source/web/resources/calendarPicker.js |
| diff --git a/Source/web/resources/calendarPicker.js b/Source/web/resources/calendarPicker.js |
| index a41876881e6622c5cd5131335dd1940a4b0c61e6..4b255534fce6aeb5e2e65f60bf1695af05105860 100644 |
| --- a/Source/web/resources/calendarPicker.js |
| +++ b/Source/web/resources/calendarPicker.js |
| @@ -75,7 +75,7 @@ function hasInaccuratePointingDevice() { |
| * @return {!string} lowercase locale name. e.g. "en-us" |
| */ |
| function getLocale() { |
| - return (global.params.locale || "en-us").toLowerCase(); |
| + 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
|
| } |
| /** |
| @@ -1560,6 +1560,7 @@ ScrollView.prototype.contentPositionForContentOffset = function(offset) { |
| */ |
| function ListCell() { |
| View.call(this, createElement("div", ListCell.ClassNameListCell)); |
| + this.element.setAttribute("role", "gridcell"); |
| /** |
| * @type {!number} |
| @@ -1659,6 +1660,7 @@ ListCell.prototype.setSelected = function(selected) { |
| function ListView() { |
| View.call(this, createElement("div", ListView.ClassNameListView)); |
| this.element.tabIndex = 0; |
| + this.element.setAttribute("role", "grid"); |
| /** |
| * @type {!number} |
| @@ -3069,10 +3071,13 @@ DayCell.prototype.throwAway = function() { |
| * @param {!boolean} highlighted |
| */ |
| DayCell.prototype.setHighlighted = function(highlighted) { |
| - if (highlighted) |
| + if (highlighted) { |
| this.element.classList.add(DayCell.ClassNameHighlighted); |
| - else |
| + this.element.setAttribute("aria-selected", "true"); |
| + } else { |
| this.element.classList.remove(DayCell.ClassNameHighlighted); |
| + this.element.setAttribute("aria-selected", "false"); |
| + } |
| }; |
| /** |
| @@ -3111,6 +3116,13 @@ DayCell.prototype.setIsToday = function(selected) { |
| DayCell.prototype.reset = function(day) { |
| this.day = day; |
| this.element.textContent = localizeNumber(this.day.date.toString()); |
| + if (!DayCell.formatter) { |
| + DayCell.formatter = new Intl.DateTimeFormat(getLocale(), { |
| + weekday: "long", year: "numeric", month: "long", day: "numeric" |
| + }); |
| + } |
| + this.element.setAttribute("aria-label", DayCell.formatter.format(this.day.startDate())); |
| + this.element.id = this.day.toString(); |
| this.show(); |
| }; |
| @@ -3226,6 +3238,7 @@ function CalendarRowCell() { |
| ListCell.call(this); |
| this.element.classList.add(CalendarRowCell.ClassNameCalendarRowCell); |
| this.element.style.height = CalendarRowCell.Height + "px"; |
| + this.element.setAttribute("role", "row"); |
| /** |
| * @type {!Array} |
| @@ -3511,7 +3524,10 @@ CalendarTableView.prototype.updateCells = function() { |
| var day = dayCell.day; |
| dayCell.setIsToday(Day.createFromToday().equals(day)); |
| dayCell.setSelected(day >= firstDayInSelection && day <= lastDayInSelection); |
| - dayCell.setHighlighted(day >= firstDayInHighlight && day <= lastDayInHighlight); |
| + var isHighlighted = day >= firstDayInHighlight && day <= lastDayInHighlight; |
| + dayCell.setHighlighted(isHighlighted); |
| + if (isHighlighted && firstDayInHighlight == lastDayInHighlight) |
| + this.element.setAttribute("aria-activedescendant", dayCell.element.id); |
| dayCell.setIsInCurrentMonth(day >= firstDayInCurrentMonth && day <= lastDayInCurrentMonth); |
| dayCell.setDisabled(!this.calendarPicker.isValidDay(day)); |
| } |