diff --git a/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts b/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts index 9d0d465b63b1de9dcfa8710d18551f5ea0a95eb9..07817947cbb0d6bc9b0ca3f9c14c0a4a1d4face6 100644 --- a/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts +++ b/src/vs/base/parts/quickopen/browser/quickOpenViewer.ts @@ -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 { diff --git a/src/vs/base/parts/tree/browser/tree.ts b/src/vs/base/parts/tree/browser/tree.ts index 30435a9ddb070e17c218feba604672f849416bba..4206026b17922cb7adf8bca4a2ba76a2fa224e87 100644 --- a/src/vs/base/parts/tree/browser/tree.ts +++ b/src/vs/base/parts/tree/browser/tree.ts @@ -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 { diff --git a/src/vs/base/parts/tree/browser/treeView.ts b/src/vs/base/parts/tree/browser/treeView.ts index 659c5360b7d53e03514f4d787db0830adb1313cb..02a5ce62343793bae67bbc228ab3914bc1bcb076 100644 --- a/src/vs/base/parts/tree/browser/treeView.ts +++ b/src/vs/base/parts/tree/browser/treeView.ts @@ -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);