Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 126x 126x 126x 1x 1x 126x 126x 126x 1x 1x 2712x 2712x 2712x 1x 1x 165x 165x 165x 1x 1x 1x 1x 1x 1x 126x 126x 1x 1x 1x 1x 1x 46x 46x 1x 1x 1x 20x 20x 1x 1x 1x 1x 67x 67x 1x | import {
Directive,
EventEmitter,
HostBinding,
HostListener,
Input,
Output,
} from '@angular/core';
import { Converter, Item, Key } from '../utils/util.types';
import { VirtualListboxService } from './virtual-listbox.service';
export interface ListboxSelectEvent {
key: Key;
open: boolean;
}
/**
* Aria Support for ListBox using a virtual focus with aria-activedescendant
*/
@Directive({
selector: '[data-gc-virtual-listbox]',
standalone: false,
})
export class VirtualListBoxDirective {
@HostBinding('attr.role')
protected readonly role = 'listbox';
@HostBinding('tabindex')
protected readonly tabindex = 0;
@Output()
public get onSelect(): EventEmitter<ListboxSelectEvent> {
return this.vls.onSelect;
}
@Output()
public get onKeypress(): EventEmitter<KeyboardEvent> {
return this.vls.onKeypress;
}
@HostBinding('attr.aria-activedescendant')
public get activeDescendant(): string | null {
return this.vls.activeDescendant;
}
@Input()
public set value(value: Key | undefined) {
this.vls.value = value;
}
public get value(): Key | undefined {
return this.vls.value;
}
@Input()
public get itemIdComputer(): Converter<Item, string> {
return this.vls.itemIdComputer;
}
public set itemIdComputer(itemIdComputer: Converter<Item, string>) {
this.vls.itemIdComputer = itemIdComputer;
}
constructor(private readonly vls: VirtualListboxService) {}
@HostListener('focus')
public onFocus(): void {
this.vls.onFocus();
}
@HostListener('blur')
public onBlur(): void {
this.vls.onBlur();
}
/** @ignore */
@HostListener('keydown', ['$event'])
public onKeyDown(event: KeyboardEvent): void {
this.vls.onKeyDown(event);
}
}
|