提交 d405e646 编写于 作者: I Isidor Nikolic 提交者: GitHub

Merge pull request #29118 from Microsoft/isidorn/tree-aria

AccessibilityProvider getPosInSet and getSetSize
......@@ -55,6 +55,16 @@ export class AccessibilityProvider implements IAccessibilityProvider {
return model.accessibilityProvider && model.accessibilityProvider.getAriaLabel(element);
}
public getPosInSet(tree: ITree, element: any): string {
const model = this.modelProvider.getModel();
return String(model.entries.indexOf(element) + 1);
}
public getSetSize(): string {
const model = this.modelProvider.getModel();
return String(model.entries.length);
}
}
export class Filter implements IFilter {
......
......@@ -428,6 +428,10 @@ export interface IAccessibilityProvider {
* See also: https://www.w3.org/TR/wai-aria/states_and_properties#aria-label
*/
getAriaLabel(tree: ITree, element: any): string;
getPosInSet?(tree: ITree, element: any): string;
getSetSize?(): string;
}
export /* abstract */ class ContextMenuEvent {
......
......@@ -197,10 +197,15 @@ export class ViewItem implements IViewItem {
// ARIA
this.element.setAttribute('role', 'treeitem');
const ariaLabel = this.context.accessibilityProvider.getAriaLabel(this.context.tree, this.model.getElement());
const accessibility = this.context.accessibilityProvider;
const ariaLabel = accessibility.getAriaLabel(this.context.tree, this.model.getElement());
if (ariaLabel) {
this.element.setAttribute('aria-label', ariaLabel);
}
if (accessibility.getPosInSet && accessibility.getSetSize) {
this.element.setAttribute('aria-setsize', accessibility.getSetSize());
this.element.setAttribute('aria-posinset', accessibility.getPosInSet(this.context.tree, this.model.getElement()));
}
if (this.model.hasTrait('focused')) {
const base64Id = strings.safeBtoa(this.model.id);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册