Skip to content

Commit 47eb735

Browse files
committed
Merge pull request #363 from Tyriar/320_aria_attributes
Add HTML aria attribute autocomplete
2 parents cc3b472 + 98c7d62 commit 47eb735

File tree

2 files changed

+75
-5
lines changed

2 files changed

+75
-5
lines changed

src/vs/languages/html/common/htmlTags.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,13 @@ export function getHTML5TagProvider(): IHTMLTagProvider {
137137
dialog: ['open:v']
138138
};
139139

140-
var globalAttributes = ['accesskey', 'class', 'contenteditable:b', 'contextmenu', 'dir:d', 'draggable:a', 'dropzone', 'hidden:v', 'id', 'inert:v', 'itemid', 'itemprop', 'itemref', 'itemscope:v', 'itemtype',
141-
'lang', 'role', 'spellcheck:b', 'style', 'tabindex', 'title', 'translate'];
142-
143-
// todo@Martin: aria
140+
var globalAttributes = [
141+
'aria-activedescendant', 'aria-atomic:b', 'aria-autocomplete:autocomplete', 'aria-busy:b', 'aria-checked:tristate', 'aria-controls', 'aria-describedby', 'aria-disabled:b',
142+
'aria-dropeffect:dropeffect', 'aria-expanded:u', 'aria-flowto', 'aria-grabbed:u', 'aria-haspopup:b', 'aria-hidden:b', 'aria-invalid:invalid', 'aria-label', 'aria-labelledby',
143+
'aria-level', 'aria-live:live', 'aria-multiline:b', 'aria-multiselectable:b', 'aria-orientation:orientation', 'aria-owns', 'aria-posinset', 'aria-pressed:tristate', 'aria-readonly:b',
144+
'aria-relevant:relevant', 'aria-required:b', 'aria-selected:u', 'aria-setsize', 'aria-sort:sort', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext', 'accesskey',
145+
'class', 'contenteditable:b', 'contextmenu', 'dir:d', 'draggable:a', 'dropzone', 'hidden:v', 'id', 'inert:v', 'itemid', 'itemprop', 'itemref', 'itemscope:v', 'itemtype', 'lang', 'role',
146+
'spellcheck:b', 'style', 'tabindex', 'title', 'translate'];
144147

145148
var eventHandlers = ['onabort', 'onblur', 'oncanplay', 'oncanplaythrough', 'onchange', 'onclick', 'oncontextmenu', 'ondblclick', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart',
146149
'ondrop', 'ondurationchange', 'onemptied', 'onended', 'onerror', 'onfocus', 'onformchange', 'onforminput', 'oninput', 'oninvalid', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onloadeddata', 'onloadedmetadata',
@@ -150,12 +153,21 @@ export function getHTML5TagProvider(): IHTMLTagProvider {
150153
var valueSets : { [tag:string]: string[]} = {
151154
b: ['true', 'false'],
152155
a: ['true', 'false', 'auto'],
156+
u: ['true', 'false', 'undefined'],
153157
d: ['ltr', 'rtl'],
154158
m: ['get', 'post'],
155159
o: ['on', 'off'],
156160
t: ['hidden', 'text', 'search', 'tel', 'url', 'email', 'password', 'datetime', 'date', 'month', 'week', 'time', 'datetime-local', 'number', 'range', 'color', 'checkbox', 'radio', 'file', 'submit', 'image', 'reset', 'button'],
157161
bt: ['button', 'submit', 'reset'],
158-
xo: ['anonymous', 'use-credentials']
162+
xo: ['anonymous', 'use-credentials'],
163+
tristate: ['true', 'false', 'mixed', 'undefined'],
164+
autocomplete: ['inline', 'list', 'both', 'none'],
165+
dropeffect: ['copy', 'move', 'link', 'execute', 'popup', 'none'],
166+
invalid: ['grammar', 'false', 'spelling', 'true'],
167+
live: ['off', 'polite', 'assertive'],
168+
orientation: ['vertical', 'horizontal'],
169+
relevant: ['additions', 'removals', 'text', 'all', 'additions text'],
170+
sort: ['ascending', 'descending', 'none', 'other']
159171
};
160172

161173
return {

src/vs/languages/html/test/common/html-worker.test.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,64 @@ suite('HTML - worker', () => {
230230
});
231231
});
232232

233+
test('Intellisense aria', function(testDone): any {
234+
function assertAriaAttributes(completion) {
235+
assertSuggestion(completion, 'aria-activedescendant');
236+
assertSuggestion(completion, 'aria-atomic');
237+
assertSuggestion(completion, 'aria-autocomplete');
238+
assertSuggestion(completion, 'aria-busy');
239+
assertSuggestion(completion, 'aria-checked');
240+
assertSuggestion(completion, 'aria-controls');
241+
assertSuggestion(completion, 'aria-describedby');
242+
assertSuggestion(completion, 'aria-disabled');
243+
assertSuggestion(completion, 'aria-dropeffect');
244+
assertSuggestion(completion, 'aria-expanded');
245+
assertSuggestion(completion, 'aria-flowto');
246+
assertSuggestion(completion, 'aria-grabbed');
247+
assertSuggestion(completion, 'aria-haspopup');
248+
assertSuggestion(completion, 'aria-hidden');
249+
assertSuggestion(completion, 'aria-invalid');
250+
assertSuggestion(completion, 'aria-label');
251+
assertSuggestion(completion, 'aria-labelledby');
252+
assertSuggestion(completion, 'aria-level');
253+
assertSuggestion(completion, 'aria-live');
254+
assertSuggestion(completion, 'aria-multiline');
255+
assertSuggestion(completion, 'aria-multiselectable');
256+
assertSuggestion(completion, 'aria-orientation');
257+
assertSuggestion(completion, 'aria-owns');
258+
assertSuggestion(completion, 'aria-posinset');
259+
assertSuggestion(completion, 'aria-pressed');
260+
assertSuggestion(completion, 'aria-readonly');
261+
assertSuggestion(completion, 'aria-relevant');
262+
assertSuggestion(completion, 'aria-required');
263+
assertSuggestion(completion, 'aria-selected');
264+
assertSuggestion(completion, 'aria-setsize');
265+
assertSuggestion(completion, 'aria-sort');
266+
assertSuggestion(completion, 'aria-valuemax');
267+
assertSuggestion(completion, 'aria-valuemin');
268+
assertSuggestion(completion, 'aria-valuenow');
269+
assertSuggestion(completion, 'aria-valuetext');
270+
}
271+
WinJS.Promise.join([
272+
testSuggestionsFor('<div |> </div >').then((completion) => {
273+
assert.equal(completion.currentWord, '');
274+
assertAriaAttributes(completion);
275+
}),
276+
277+
testSuggestionsFor('<span |> </span >').then((completion) => {
278+
assert.equal(completion.currentWord, '');
279+
assertAriaAttributes(completion);
280+
}),
281+
282+
testSuggestionsFor('<input |> </input >').then((completion) => {
283+
assert.equal(completion.currentWord, '');
284+
assertAriaAttributes(completion);
285+
})
286+
]).done(() => testDone(), (errors:any[]) => {
287+
testDone(errors.reduce((e1, e2) => e1 || e2));
288+
});
289+
});
290+
233291
test('Intellisense Angular', function(testDone): any {
234292
WinJS.Promise.join([
235293
testSuggestionsFor('<body |> </body >').then((completion) => {

0 commit comments

Comments
 (0)