@angular/aria 22.2.0-next.3 → 22.2.0-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/fesm2022/_accordion-chunk.mjs.map +1 -1
  2. package/fesm2022/_click-event-manager-chunk.mjs.map +1 -1
  3. package/fesm2022/_deferred-content-chunk.mjs +6 -6
  4. package/fesm2022/_deferred-content-chunk.mjs.map +1 -1
  5. package/fesm2022/_expansion-chunk.mjs.map +1 -1
  6. package/fesm2022/_list-chunk.mjs.map +1 -1
  7. package/fesm2022/_list-navigation-chunk.mjs.map +1 -1
  8. package/fesm2022/_list-typeahead-chunk.mjs.map +1 -1
  9. package/fesm2022/_menu-chunk.mjs +6 -4
  10. package/fesm2022/_menu-chunk.mjs.map +1 -1
  11. package/fesm2022/_option-chunk.mjs.map +1 -1
  12. package/fesm2022/_tabs-chunk.mjs.map +1 -1
  13. package/fesm2022/_toolbar-widget-group-chunk.mjs +34 -53
  14. package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -1
  15. package/fesm2022/_transforms-chunk.mjs.map +1 -1
  16. package/fesm2022/_tree-chunk.mjs.map +1 -1
  17. package/fesm2022/_violations-chunk.mjs.map +1 -1
  18. package/fesm2022/_widget-chunk.mjs.map +1 -1
  19. package/fesm2022/accordion-testing.mjs.map +1 -1
  20. package/fesm2022/accordion.mjs +12 -12
  21. package/fesm2022/accordion.mjs.map +1 -1
  22. package/fesm2022/aria.mjs +1 -1
  23. package/fesm2022/aria.mjs.map +1 -1
  24. package/fesm2022/combobox-testing.mjs.map +1 -1
  25. package/fesm2022/combobox.mjs +11 -10
  26. package/fesm2022/combobox.mjs.map +1 -1
  27. package/fesm2022/grid-testing.mjs.map +1 -1
  28. package/fesm2022/grid.mjs +12 -12
  29. package/fesm2022/grid.mjs.map +1 -1
  30. package/fesm2022/listbox-testing.mjs.map +1 -1
  31. package/fesm2022/listbox.mjs +6 -6
  32. package/fesm2022/listbox.mjs.map +1 -1
  33. package/fesm2022/menu-testing.mjs.map +1 -1
  34. package/fesm2022/menu.mjs +18 -18
  35. package/fesm2022/menu.mjs.map +1 -1
  36. package/fesm2022/private.mjs +6 -1
  37. package/fesm2022/private.mjs.map +1 -1
  38. package/fesm2022/tabs-testing.mjs.map +1 -1
  39. package/fesm2022/tabs.mjs +15 -15
  40. package/fesm2022/tabs.mjs.map +1 -1
  41. package/fesm2022/toolbar-testing.mjs.map +1 -1
  42. package/fesm2022/toolbar.mjs +11 -86
  43. package/fesm2022/toolbar.mjs.map +1 -1
  44. package/fesm2022/tree-testing.mjs.map +1 -1
  45. package/fesm2022/tree.mjs +9 -9
  46. package/fesm2022/tree.mjs.map +1 -1
  47. package/package.json +2 -2
  48. package/types/_menu-chunk.d.ts +15 -11
  49. package/types/_toolbar-chunk.d.ts +52 -48
  50. package/types/menu.d.ts +4 -4
  51. package/types/private.d.ts +6 -0
  52. package/types/toolbar.d.ts +26 -35
@@ -1 +1 @@
1
- {"version":3,"file":"grid.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-row.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {GridCell} from './grid-cell';\nimport type {GridRow} from './grid-row';\nimport type {Grid} from './grid';\n\n/** Token used to expose a `GridCell`. */\nexport const GRID_CELL = new InjectionToken<GridCell>('GRID_CELL');\n\n/** Token used to expose a `GridRow`. */\nexport const GRID_ROW = new InjectionToken<GridRow>('GRID_ROW');\n\n/** Token used to expose a `Grid`. */\nexport const GRID = new InjectionToken<Grid>('GRID');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n Signal,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n GridPattern,\n GridCellPattern,\n GridRowPattern,\n SortedCollection,\n tabIndexTransform,\n reportViolations,\n} from '../private';\nimport {GridRow} from './grid-row';\nimport {GRID} from './grid-tokens';\n\n/**\n * The container for a grid. It provides keyboard navigation and focus management for the grid's\n * rows and cells. It manages the overall behavior of the grid, including focus\n * wrapping, selection, and disabled states.\n *\n * ```html\n * <table ngGrid [multi]=\"true\" [enableSelection]=\"true\">\n * @for (row of gridData; track row) {\n * <tr ngGridRow>\n * @for (cell of row; track cell) {\n * <td ngGridCell [disabled]=\"cell.disabled\">\n * {{cell.value}}\n * </td>\n * }\n * </tr>\n * }\n * </table>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'role': 'grid',\n '[tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-multiselectable]': '_pattern.multiSelectable()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n providers: [{provide: GRID, useExisting: Grid}],\n})\nexport class Grid implements OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of rows in the grid. */\n readonly _collection = new SortedCollection<GridRow>();\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<GridRowPattern[]> = computed(() =>\n this._collection.orderedItems().map(r => r._pattern),\n );\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether selection is enabled for the grid. */\n readonly enableSelection = input(false, {transform: booleanAttribute});\n\n /** Whether the grid is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the grid.\n * - `roving`: Focus is moved to the active cell using `tabindex`.\n * - `activedescendant`: Focus remains on the grid container, and `aria-activedescendant` is used to indicate the active cell.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The wrapping behavior for keyboard navigation along the row axis.\n * - `continuous`: Navigation wraps from the last row to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current row.\n * - `nowrap`: Navigation stops at the first/last item in the row.\n */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /**\n * The wrapping behavior for keyboard navigation along the column axis.\n * - `continuous`: Navigation wraps from the last column to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current column.\n * - `nowrap`: Navigation stops at the first/last item in the column.\n */\n readonly colWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** Whether multiple cells in the grid can be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the grid.\n * - `follow`: The focused cell is automatically selected.\n * - `explicit`: Cells are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The tabindex of the grid. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** The UI pattern for the grid. */\n readonly _pattern = new GridPattern({\n ...this,\n rows: this._rowPatterns,\n getCell: e => this._getCell(e),\n element: () => this.element,\n });\n\n /** The ID of the active descendant in the grid. */\n readonly activeDescendant = computed(() => this._pattern.activeDescendant());\n\n constructor() {\n // Use Write mode for all direct DOM focus management actions.\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n afterRenderEffect({write: () => this._pattern.resetStateEffect()});\n afterRenderEffect({write: () => this._pattern.resetFocusEffect()});\n afterRenderEffect({write: () => this._pattern.restoreFocusEffect()});\n afterRenderEffect({write: () => this._pattern.focusEffect()});\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\n },\n });\n }\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n }\n\n ngOnDestroy() {\n this._collection.stopObserving();\n }\n\n /** Scrolls the active cell into view. */\n scrollActiveCellIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.activeCell()?.element().scrollIntoView(options);\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element | null | undefined): GridCellPattern | undefined {\n let target = element;\n\n while (target) {\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (cell.element() === target) {\n return cell;\n }\n }\n }\n\n target = target.parentElement?.closest('[ngGridCell]');\n }\n\n return undefined;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n} from '@angular/core';\nimport {GridCellWidgetPattern, ElementResolver} from '../private';\nimport {GRID_CELL} from './grid-tokens';\n\n/**\n * Represents an interactive element inside a `GridCell`. It allows for pausing grid navigation to\n * interact with the widget.\n *\n * When the user interacts with the widget (e.g., by typing in an input or opening a menu), grid\n * navigation is temporarily suspended to allow the widget to handle keyboard\n * events.\n *\n * ```html\n * <td ngGridCell>\n * <button ngGridCellWidget>Click Me</button>\n * </td>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.data-active-control]': 'isActivated() ? \"widget\" : \"cell\"',\n '[tabindex]': '_tabIndex()',\n '[attr.id]': 'id()',\n },\n})\nexport class GridCellWidget {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent cell. */\n private readonly _cell = inject(GRID_CELL);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-widget-', true));\n\n /** The type of widget, which determines how it is activated. */\n readonly widgetType = input<'simple' | 'complex' | 'editable'>('simple');\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The target that will receive focus instead of the widget. */\n readonly focusTarget = input<ElementResolver<HTMLElement>>();\n\n /** Emits when the widget is activated. */\n readonly activated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** Emits when the widget is deactivated. */\n readonly deactivated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n element: () => this.element,\n cell: () => this._cell._pattern,\n onActivate: e => this.activated.emit(e),\n onDeactivate: e => this.deactivated.emit(e),\n });\n\n /** Whether the widget is activated. */\n get isActivated(): Signal<boolean> {\n return computed(() => this._pattern.isActivated());\n }\n\n constructor() {\n afterRenderEffect({\n write: () => this._pattern.activationEffect(),\n });\n\n afterRenderEffect({\n write: () => this._pattern.deactivationEffect(),\n });\n }\n\n /** Activates the widget. */\n activate(): void {\n this._pattern.activate();\n }\n\n /** Deactivates the widget. */\n deactivate(): void {\n this._pattern.deactivate();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n Signal,\n Renderer2,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridCellPattern, GridCellWidgetPattern} from '../private';\nimport {GridCellWidget} from './grid-cell-widget';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a cell within a grid row. It is the primary focusable element\n * within the grid. It can be disabled and can have its selection state managed\n * through the `selected` input.\n *\n * ```html\n * <td ngGridCell [disabled]=\"isDisabled\" [(selected)]=\"isSelected\">\n * Cell Content\n * </td>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n providers: [{provide: GRID_CELL, useExisting: GridCell}],\n})\nexport class GridCell implements OnInit, OnDestroy {\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the cell is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The widget contained within this cell, if any. */\n private readonly _widget = contentChild(GridCellWidget, {descendants: true});\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPattern: Signal<GridCellWidgetPattern | undefined> = computed(\n () => this._widget()?._pattern,\n );\n\n /** The parent row. */\n private readonly _row = inject(GRID_ROW);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** A unique identifier for the cell. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-', true));\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader' | 'rowheader'>('gridcell');\n\n /** The number of rows the cell should span. */\n readonly rowSpan = input<number>(1);\n\n /** The number of columns the cell should span. */\n readonly colSpan = input<number>(1);\n\n /** The index of this cell's row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The index of this cell's column within the grid. */\n readonly colIndex = input<number>();\n\n /** Whether the cell is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the cell is selected. */\n readonly selected = model<boolean>(false);\n\n /** Whether the cell is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n grid: this._row._gridPattern,\n row: () => this._row._pattern,\n widget: this._widgetPattern,\n getWidget: e => this._getWidget(e),\n element: () => this.element,\n });\n\n constructor() {\n // Note: we don't go through host bindings for these, because the\n // effect allows us to batch the reads together which drastically\n // improves rendering performance in large grids (see #32759).\n afterRenderEffect({\n write: () => {\n const {_pattern: pattern, _toggleAttribute: toggle} = this;\n const rowSpan = pattern.rowSpan();\n const colSpan = pattern.colSpan();\n toggle('role', this.role());\n toggle('id', pattern.id());\n toggle('rowspan', rowSpan);\n toggle('colspan', colSpan);\n toggle('aria-rowspan', rowSpan);\n toggle('aria-colspan', colSpan);\n toggle('data-active', this.active());\n toggle('data-anchor', pattern.anchor());\n toggle('aria-disabled', pattern.disabled());\n toggle('aria-rowindex', pattern.ariaRowIndex());\n toggle('aria-colindex', pattern.ariaColIndex());\n toggle('aria-selected', pattern.ariaSelected());\n toggle('tabindex', this._tabIndex());\n },\n });\n }\n\n ngOnInit() {\n this._row._collection.register(this);\n }\n\n ngOnDestroy() {\n this._row._collection.unregister(this);\n }\n\n private _toggleAttribute = (name: string, value: unknown) => {\n if (value == null) {\n this._renderer.removeAttribute(this.element, name);\n } else {\n this._renderer.setAttribute(this.element, name, value as string);\n }\n };\n\n /** Gets the cell widget pattern for a given element. */\n private _getWidget(element: Element | null | undefined): any | undefined {\n let target = element;\n const widget = this._widgetPattern();\n\n if (!widget) return undefined;\n\n while (target) {\n if (widget.element() === target) {\n return widget;\n }\n\n target = target.parentElement?.closest('[ngGridCellWidget]');\n }\n\n return undefined;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n Signal,\n} from '@angular/core';\nimport {GridPattern, GridRowPattern, SortedCollection} from '../private';\nimport {GRID_ROW, GRID} from './grid-tokens';\nimport {GridCell} from './grid-cell';\n\n/**\n * Represents a row within a grid. It is a container for `ngGridCell` directives.\n *\n * ```html\n * <tr ngGridRow>\n * <!-- ... cells ... -->\n * </tr>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'role': 'row',\n '[attr.aria-rowindex]': '_pattern.rowIndex()',\n },\n providers: [{provide: GRID_ROW, useExisting: GridRow}],\n})\nexport class GridRow implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of cells in this row. */\n readonly _collection = new SortedCollection<GridCell>();\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<any[]> = computed(() =>\n this._collection.orderedItems().map(c => c._pattern),\n );\n\n /** The parent grid. */\n private readonly _grid = inject(GRID);\n\n /** The parent grid UI pattern. */\n readonly _gridPattern = computed<GridPattern>(() => this._grid._pattern);\n\n /** The index of this row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The UI pattern for the grid row. */\n readonly _pattern = new GridRowPattern({\n ...this,\n cells: this._cellPatterns,\n grid: this._gridPattern,\n });\n\n constructor() {\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n }\n\n ngOnInit() {\n this._grid._collection.register(this);\n }\n\n ngOnDestroy() {\n this._grid._collection.unregister(this);\n this._collection.stopObserving();\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell-widget.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-cell.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/grid/grid-row.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {GridCell} from './grid-cell';\nimport type {GridRow} from './grid-row';\nimport type {Grid} from './grid';\n\n/** Token used to expose a `GridCell`. */\nexport const GRID_CELL = new InjectionToken<GridCell>('GRID_CELL');\n\n/** Token used to expose a `GridRow`. */\nexport const GRID_ROW = new InjectionToken<GridRow>('GRID_ROW');\n\n/** Token used to expose a `Grid`. */\nexport const GRID = new InjectionToken<Grid>('GRID');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n Signal,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n GridPattern,\n GridCellPattern,\n GridRowPattern,\n SortedCollection,\n tabIndexTransform,\n reportViolations,\n} from '../private';\nimport {GridRow} from './grid-row';\nimport {GRID} from './grid-tokens';\n\n/**\n * The container for a grid. It provides keyboard navigation and focus management for the grid's\n * rows and cells. It manages the overall behavior of the grid, including focus\n * wrapping, selection, and disabled states.\n *\n * ```html\n * <table ngGrid [multi]=\"true\" [enableSelection]=\"true\">\n * @for (row of gridData; track row) {\n * <tr ngGridRow>\n * @for (cell of row; track cell) {\n * <td ngGridCell [disabled]=\"cell.disabled\">\n * {{cell.value}}\n * </td>\n * }\n * </tr>\n * }\n * </table>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGrid]',\n exportAs: 'ngGrid',\n host: {\n 'role': 'grid',\n '[tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-multiselectable]': '_pattern.multiSelectable()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn($event)',\n '(focusout)': '_pattern.onFocusOut($event)',\n },\n providers: [{provide: GRID, useExisting: Grid}],\n})\nexport class Grid implements OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of rows in the grid. */\n readonly _collection = new SortedCollection<GridRow>();\n\n /** The UI patterns for the rows in the grid. */\n private readonly _rowPatterns: Signal<GridRowPattern[]> = computed(() =>\n this._collection.orderedItems().map(r => r._pattern),\n );\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** Whether selection is enabled for the grid. */\n readonly enableSelection = input(false, {transform: booleanAttribute});\n\n /** Whether the grid is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the grid.\n * - `roving`: Focus is moved to the active cell using `tabindex`.\n * - `activedescendant`: Focus remains on the grid container, and `aria-activedescendant` is used to indicate the active cell.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The wrapping behavior for keyboard navigation along the row axis.\n * - `continuous`: Navigation wraps from the last row to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current row.\n * - `nowrap`: Navigation stops at the first/last item in the row.\n */\n readonly rowWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /**\n * The wrapping behavior for keyboard navigation along the column axis.\n * - `continuous`: Navigation wraps from the last column to the first, and vice-versa.\n * - `loop`: Navigation wraps within the current column.\n * - `nowrap`: Navigation stops at the first/last item in the column.\n */\n readonly colWrap = input<'continuous' | 'loop' | 'nowrap'>('loop');\n\n /** Whether multiple cells in the grid can be selected. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /**\n * The selection strategy used by the grid.\n * - `follow`: The focused cell is automatically selected.\n * - `explicit`: Cells are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The tabindex of the grid. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** The UI pattern for the grid. */\n readonly _pattern = new GridPattern({\n ...this,\n rows: this._rowPatterns,\n getCell: e => this._getCell(e),\n element: () => this.element,\n });\n\n /** The ID of the active descendant in the grid. */\n readonly activeDescendant = computed(() => this._pattern.activeDescendant());\n\n constructor() {\n // Use Write mode for all direct DOM focus management actions.\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n afterRenderEffect({write: () => this._pattern.resetStateEffect()});\n afterRenderEffect({write: () => this._pattern.resetFocusEffect()});\n afterRenderEffect({write: () => this._pattern.restoreFocusEffect()});\n afterRenderEffect({write: () => this._pattern.focusEffect()});\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\n },\n });\n }\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n }\n\n ngOnDestroy() {\n this._collection.stopObserving();\n }\n\n /** Scrolls the active cell into view. */\n scrollActiveCellIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.activeCell()?.element().scrollIntoView(options);\n }\n\n /** Gets the cell pattern for a given element. */\n private _getCell(element: Element | null | undefined): GridCellPattern | undefined {\n let target = element;\n\n while (target) {\n for (const row of this._rowPatterns()) {\n for (const cell of row.inputs.cells()) {\n if (cell.element() === target) {\n return cell;\n }\n }\n }\n\n target = target.parentElement?.closest('[ngGridCell]');\n }\n\n return undefined;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n output,\n Signal,\n} from '@angular/core';\nimport {GridCellWidgetPattern, ElementResolver} from '../private';\nimport {GRID_CELL} from './grid-tokens';\n\n/**\n * Represents an interactive element inside a `GridCell`. It allows for pausing grid navigation to\n * interact with the widget.\n *\n * When the user interacts with the widget (e.g., by typing in an input or opening a menu), grid\n * navigation is temporarily suspended to allow the widget to handle keyboard\n * events.\n *\n * ```html\n * <td ngGridCell>\n * <button ngGridCellWidget>Click Me</button>\n * </td>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCellWidget]',\n exportAs: 'ngGridCellWidget',\n host: {\n '[attr.data-active]': 'active()',\n '[attr.data-active-control]': 'isActivated() ? \"widget\" : \"cell\"',\n '[tabindex]': '_tabIndex()',\n '[attr.id]': 'id()',\n },\n})\nexport class GridCellWidget {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the widget is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent cell. */\n private readonly _cell = inject(GRID_CELL);\n\n /** A unique identifier for the widget. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-widget-', true));\n\n /** The type of widget, which determines how it is activated. */\n readonly widgetType = input<'simple' | 'complex' | 'editable'>('simple');\n\n /** Whether the widget is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The target that will receive focus instead of the widget. */\n readonly focusTarget = input<ElementResolver<HTMLElement>>();\n\n /** Emits when the widget is activated. */\n readonly activated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** Emits when the widget is deactivated. */\n readonly deactivated = output<KeyboardEvent | FocusEvent | undefined>();\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell widget. */\n readonly _pattern = new GridCellWidgetPattern({\n ...this,\n element: () => this.element,\n cell: () => this._cell._pattern,\n onActivate: e => this.activated.emit(e),\n onDeactivate: e => this.deactivated.emit(e),\n });\n\n /** Whether the widget is activated. */\n get isActivated(): Signal<boolean> {\n return computed(() => this._pattern.isActivated());\n }\n\n constructor() {\n afterRenderEffect({\n write: () => this._pattern.activationEffect(),\n });\n\n afterRenderEffect({\n write: () => this._pattern.deactivationEffect(),\n });\n }\n\n /** Activates the widget. */\n activate(): void {\n this._pattern.activate();\n }\n\n /** Deactivates the widget. */\n deactivate(): void {\n this._pattern.deactivate();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {\n afterRenderEffect,\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n OnInit,\n Signal,\n Renderer2,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {GridCellPattern, GridCellWidgetPattern} from '../private';\nimport {GridCellWidget} from './grid-cell-widget';\nimport {GRID_CELL, GRID_ROW} from './grid-tokens';\n\n/**\n * Represents a cell within a grid row. It is the primary focusable element\n * within the grid. It can be disabled and can have its selection state managed\n * through the `selected` input.\n *\n * ```html\n * <td ngGridCell [disabled]=\"isDisabled\" [(selected)]=\"isSelected\">\n * Cell Content\n * </td>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridCell]',\n exportAs: 'ngGridCell',\n providers: [{provide: GRID_CELL, useExisting: GridCell}],\n})\nexport class GridCell implements OnInit, OnDestroy {\n private readonly _elementRef = inject(ElementRef);\n private readonly _renderer = inject(Renderer2);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** Whether the cell is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The widget contained within this cell, if any. */\n private readonly _widget = contentChild(GridCellWidget, {descendants: true});\n\n /** The UI pattern for the widget in this cell. */\n private readonly _widgetPattern: Signal<GridCellWidgetPattern | undefined> = computed(\n () => this._widget()?._pattern,\n );\n\n /** The parent row. */\n private readonly _row = inject(GRID_ROW);\n\n /** Text direction. */\n readonly textDirection = inject(Directionality).valueSignal;\n\n /** A unique identifier for the cell. */\n readonly id = input(inject(_IdGenerator).getId('ng-grid-cell-', true));\n\n /** The ARIA role for the cell. */\n readonly role = input<'gridcell' | 'columnheader' | 'rowheader'>('gridcell');\n\n /** The number of rows the cell should span. */\n readonly rowSpan = input<number>(1);\n\n /** The number of columns the cell should span. */\n readonly colSpan = input<number>(1);\n\n /** The index of this cell's row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The index of this cell's column within the grid. */\n readonly colIndex = input<number>();\n\n /** Whether the cell is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the cell is selected. */\n readonly selected = model<boolean>(false);\n\n /** Whether the cell is selectable. */\n readonly selectable = input<boolean>(true);\n\n /** The tabindex override. */\n readonly tabindex = input<number | undefined>();\n\n /**\n * The tabindex value set to the element.\n * If a focus target exists then return -1. Unless an override.\n */\n protected readonly _tabIndex: Signal<number> = computed(\n () => this.tabindex() ?? this._pattern.tabIndex(),\n );\n\n /** The UI pattern for the grid cell. */\n readonly _pattern = new GridCellPattern({\n ...this,\n grid: this._row._gridPattern,\n row: () => this._row._pattern,\n widget: this._widgetPattern,\n getWidget: e => this._getWidget(e),\n element: () => this.element,\n });\n\n constructor() {\n // Note: we don't go through host bindings for these, because the\n // effect allows us to batch the reads together which drastically\n // improves rendering performance in large grids (see #32759).\n afterRenderEffect({\n write: () => {\n const {_pattern: pattern, _toggleAttribute: toggle} = this;\n const rowSpan = pattern.rowSpan();\n const colSpan = pattern.colSpan();\n toggle('role', this.role());\n toggle('id', pattern.id());\n toggle('rowspan', rowSpan);\n toggle('colspan', colSpan);\n toggle('aria-rowspan', rowSpan);\n toggle('aria-colspan', colSpan);\n toggle('data-active', this.active());\n toggle('data-anchor', pattern.anchor());\n toggle('aria-disabled', pattern.disabled());\n toggle('aria-rowindex', pattern.ariaRowIndex());\n toggle('aria-colindex', pattern.ariaColIndex());\n toggle('aria-selected', pattern.ariaSelected());\n toggle('tabindex', this._tabIndex());\n },\n });\n }\n\n ngOnInit() {\n this._row._collection.register(this);\n }\n\n ngOnDestroy() {\n this._row._collection.unregister(this);\n }\n\n private _toggleAttribute = (name: string, value: unknown) => {\n if (value == null) {\n this._renderer.removeAttribute(this.element, name);\n } else {\n this._renderer.setAttribute(this.element, name, value as string);\n }\n };\n\n /** Gets the cell widget pattern for a given element. */\n private _getWidget(element: Element | null | undefined): any | undefined {\n let target = element;\n const widget = this._widgetPattern();\n\n if (!widget) return undefined;\n\n while (target) {\n if (widget.element() === target) {\n return widget;\n }\n\n target = target.parentElement?.closest('[ngGridCellWidget]');\n }\n\n return undefined;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n Signal,\n} from '@angular/core';\nimport {GridPattern, GridRowPattern, SortedCollection} from '../private';\nimport {GRID_ROW, GRID} from './grid-tokens';\nimport {GridCell} from './grid-cell';\n\n/**\n * Represents a row within a grid. It is a container for `ngGridCell` directives.\n *\n * ```html\n * <tr ngGridRow>\n * <!-- ... cells ... -->\n * </tr>\n * ```\n *\n * @see [Grid](guide/aria/grid)\n */\n@Directive({\n selector: '[ngGridRow]',\n exportAs: 'ngGridRow',\n host: {\n 'role': 'row',\n '[attr.aria-rowindex]': '_pattern.rowIndex()',\n },\n providers: [{provide: GRID_ROW, useExisting: GridRow}],\n})\nexport class GridRow implements OnInit, OnDestroy {\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of cells in this row. */\n readonly _collection = new SortedCollection<GridCell>();\n\n /** The UI patterns for the cells in this row. */\n private readonly _cellPatterns: Signal<any[]> = computed(() =>\n this._collection.orderedItems().map(c => c._pattern),\n );\n\n /** The parent grid. */\n private readonly _grid = inject(GRID);\n\n /** The parent grid UI pattern. */\n readonly _gridPattern = computed<GridPattern>(() => this._grid._pattern);\n\n /** The index of this row within the grid. */\n readonly rowIndex = input<number>();\n\n /** The UI pattern for the grid row. */\n readonly _pattern = new GridRowPattern({\n ...this,\n cells: this._cellPatterns,\n grid: this._gridPattern,\n });\n\n constructor() {\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n }\n\n ngOnInit() {\n this._grid._collection.register(this);\n }\n\n ngOnDestroy() {\n this._grid._collection.unregister(this);\n this._collection.stopObserving();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"listbox-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/testing/listbox-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {ListboxHarnessFilters, ListboxOptionHarnessFilters} from './listbox-harness-filters';\n\n/** Harness for interacting with a standard ngOption in tests. */\nexport class ListboxOptionHarness extends ComponentHarness {\n static hostSelector = '[ngOption]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an option\n * with specific attributes.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ListboxOptionHarnessFilters = {}): HarnessPredicate<ListboxOptionHarness> {\n return new HarnessPredicate(ListboxOptionHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Whether the option is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-selected')) === 'true';\n }\n\n /** Whether the option is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-disabled')) === 'true' ||\n (await host.getProperty('disabled')) === true\n );\n }\n\n /** Gets the option's text. */\n async getText(): Promise<string> {\n const host = await this.host();\n return host.text();\n }\n\n /** Clicks the option to toggle its selected state. */\n async click(): Promise<void> {\n const host = await this.host();\n return host.click();\n }\n}\n\n/** Harness for interacting with a standard ngListbox in tests. */\nexport class ListboxHarness extends ComponentHarness {\n static hostSelector = '[ngListbox]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a listbox\n * with specific attributes.\n * @param options Options for filtering which listbox instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ListboxHarnessFilters = {}): HarnessPredicate<ListboxHarness> {\n return new HarnessPredicate(ListboxHarness, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Gets the orientation of the listbox. */\n async getOrientation(): Promise<'vertical' | 'horizontal'> {\n const host = await this.host();\n const orientation = await host.getAttribute('aria-orientation');\n return orientation === 'horizontal' ? 'horizontal' : 'vertical';\n }\n\n /** Whether the listbox is multiselectable. */\n async isMulti(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-multiselectable')) === 'true';\n }\n\n /** Whether the listbox is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets the options inside the listbox. */\n async getOptions(filters: ListboxOptionHarnessFilters = {}): Promise<ListboxOptionHarness[]> {\n return this.locatorForAll(ListboxOptionHarness.with(filters))();\n }\n\n /** Focuses the listbox container. */\n async focus(): Promise<void> {\n await (await this.host()).focus();\n }\n\n /** Blurs the listbox container. */\n async blur(): Promise<void> {\n await (await this.host()).blur();\n }\n\n /** Gets the ID of the active option. */\n async getActiveDescendantId(): Promise<string | null> {\n const host = await this.host();\n return host.getAttribute('aria-activedescendant');\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listbox-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/testing/listbox-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {ListboxHarnessFilters, ListboxOptionHarnessFilters} from './listbox-harness-filters';\n\n/** Harness for interacting with a standard ngOption in tests. */\nexport class ListboxOptionHarness extends ComponentHarness {\n static hostSelector = '[ngOption]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an option\n * with specific attributes.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ListboxOptionHarnessFilters = {}): HarnessPredicate<ListboxOptionHarness> {\n return new HarnessPredicate(ListboxOptionHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'selected',\n options.selected,\n async (harness, selected) => (await harness.isSelected()) === selected,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Whether the option is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-selected')) === 'true';\n }\n\n /** Whether the option is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-disabled')) === 'true' ||\n (await host.getProperty('disabled')) === true\n );\n }\n\n /** Gets the option's text. */\n async getText(): Promise<string> {\n const host = await this.host();\n return host.text();\n }\n\n /** Clicks the option to toggle its selected state. */\n async click(): Promise<void> {\n const host = await this.host();\n return host.click();\n }\n}\n\n/** Harness for interacting with a standard ngListbox in tests. */\nexport class ListboxHarness extends ComponentHarness {\n static hostSelector = '[ngListbox]';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a listbox\n * with specific attributes.\n * @param options Options for filtering which listbox instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: ListboxHarnessFilters = {}): HarnessPredicate<ListboxHarness> {\n return new HarnessPredicate(ListboxHarness, options).addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Gets the orientation of the listbox. */\n async getOrientation(): Promise<'vertical' | 'horizontal'> {\n const host = await this.host();\n const orientation = await host.getAttribute('aria-orientation');\n return orientation === 'horizontal' ? 'horizontal' : 'vertical';\n }\n\n /** Whether the listbox is multiselectable. */\n async isMulti(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-multiselectable')) === 'true';\n }\n\n /** Whether the listbox is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Gets the options inside the listbox. */\n async getOptions(filters: ListboxOptionHarnessFilters = {}): Promise<ListboxOptionHarness[]> {\n return this.locatorForAll(ListboxOptionHarness.with(filters))();\n }\n\n /** Focuses the listbox container. */\n async focus(): Promise<void> {\n await (await this.host()).focus();\n }\n\n /** Blurs the listbox container. */\n async blur(): Promise<void> {\n await (await this.host()).blur();\n }\n\n /** Gets the ID of the active option. */\n async getActiveDescendantId(): Promise<string | null> {\n const host = await this.host();\n return host.getAttribute('aria-activedescendant');\n }\n}\n"],"names":[],"mappings":"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"}
@@ -145,7 +145,7 @@ class Listbox {
145
145
  }
146
146
  static ɵfac = i0.ɵɵngDeclareFactory({
147
147
  minVersion: "12.0.0",
148
- version: "22.2.0-next.3",
148
+ version: "22.2.0-next.5",
149
149
  ngImport: i0,
150
150
  type: Listbox,
151
151
  deps: [],
@@ -153,7 +153,7 @@ class Listbox {
153
153
  });
154
154
  static ɵdir = i0.ɵɵngDeclareDirective({
155
155
  minVersion: "17.1.0",
156
- version: "22.2.0-next.3",
156
+ version: "22.2.0-next.5",
157
157
  type: Listbox,
158
158
  isStandalone: true,
159
159
  selector: "[ngListbox]",
@@ -275,7 +275,7 @@ class Listbox {
275
275
  }
276
276
  i0.ɵɵngDeclareClassMetadata({
277
277
  minVersion: "12.0.0",
278
- version: "22.2.0-next.3",
278
+ version: "22.2.0-next.5",
279
279
  ngImport: i0,
280
280
  type: Listbox,
281
281
  decorators: [{
@@ -449,7 +449,7 @@ class Option {
449
449
  }
450
450
  static ɵfac = i0.ɵɵngDeclareFactory({
451
451
  minVersion: "12.0.0",
452
- version: "22.2.0-next.3",
452
+ version: "22.2.0-next.5",
453
453
  ngImport: i0,
454
454
  type: Option,
455
455
  deps: [],
@@ -457,7 +457,7 @@ class Option {
457
457
  });
458
458
  static ɵdir = i0.ɵɵngDeclareDirective({
459
459
  minVersion: "17.1.0",
460
- version: "22.2.0-next.3",
460
+ version: "22.2.0-next.5",
461
461
  type: Option,
462
462
  isStandalone: true,
463
463
  selector: "[ngOption]",
@@ -509,7 +509,7 @@ class Option {
509
509
  }
510
510
  i0.ɵɵngDeclareClassMetadata({
511
511
  minVersion: "12.0.0",
512
- version: "22.2.0-next.3",
512
+ version: "22.2.0-next.5",
513
513
  ngImport: i0,
514
514
  type: Option,
515
515
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ListboxPattern, SortedCollection, tabIndexTransform, reportViolations} from '../private';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> implements OnDestroy {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of Options. */\n readonly _collection = new SortedCollection<Option<V>>();\n\n /** A signal wrapper for directionality. */\n protected readonly textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** Whether the list is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the listbox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** The ID of the active descendant in the listbox. */\n readonly activeDescendant: Signal<string | undefined>;\n\n private readonly _orderedItemPatterns = computed(() =>\n this._collection.orderedItems().map(option => option._pattern),\n );\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this._orderedItemPatterns,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n };\n\n this._pattern = new ListboxPattern<V>(inputs);\n\n this.activeDescendant = computed(() => this._pattern.activeDescendant());\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\n },\n });\n }\n\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (activeItem && !items.some(i => i === activeItem)) {\n this._pattern.listBehavior.unfocus();\n this._pattern.setDefaultState();\n }\n },\n });\n\n // Ensure that the value is always in sync with the available options.\n // This needs to be after the render for the value to always be available.\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n },\n });\n }\n\n ngOnDestroy() {\n this._collection.stopObserving();\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n\n /** Navigates to an item at a specific index in the listbox. */\n gotoIndex(index: number) {\n const patterns = this._orderedItemPatterns();\n const item = patterns[Math.min(Math.max(index, 0), patterns.length - 1)];\n\n if (item) {\n this._pattern.listBehavior.goto(item);\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n readonly value = input.required<V>();\n\n /** Whether an item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n readonly label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.label() ?? '',\n });\n\n ngOnInit() {\n this._listbox._collection.register(this);\n }\n\n ngOnDestroy() {\n this._listbox._collection.unregister(this);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listbox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/listbox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/listbox/option.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport type {Listbox} from './listbox';\n\nexport const LISTBOX = new InjectionToken<Listbox<any>>('LISTBOX');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterRenderEffect,\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnDestroy,\n signal,\n Signal,\n untracked,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {ListboxPattern, SortedCollection, tabIndexTransform, reportViolations} from '../private';\nimport {Option} from './option';\nimport {LISTBOX} from './tokens';\n\n/**\n * Represents a container used to display a list of items for a user to select from.\n *\n * The `ngListbox` is meant to be used in conjunction with `ngOption` directives to create a\n * selectable list. It supports single and multiple selection modes, as well as various focus and\n * orientation strategies.\n *\n * ```html\n * <ul ngListbox [(value)]=\"selectedItems\" [multi]=\"true\" orientation=\"vertical\">\n * @for (item of items; track item.id) {\n * <li ngOption [value]=\"item.id\" [label]=\"item.name\" [disabled]=\"item.disabled\">\n * {{item.name}}\n * </li>\n * }\n * </ul>\n * ```\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngListbox]',\n exportAs: 'ngListbox',\n host: {\n 'role': 'listbox',\n '[attr.id]': 'id()',\n '[attr.tabindex]': 'tabIndex() !== undefined ? tabIndex() : _pattern.tabIndex()',\n '[attr.aria-readonly]': '_pattern.readonly()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-orientation]': '_pattern.orientation()',\n '[attr.aria-multiselectable]': '_pattern.multi()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(click)': '_pattern.onClick($event)',\n '(focusin)': '_pattern.onFocusIn()',\n },\n providers: [{provide: LISTBOX, useExisting: Listbox}],\n})\nexport class Listbox<V> implements OnDestroy {\n /** A unique identifier for the listbox. */\n readonly id = input(inject(_IdGenerator).getId('ng-listbox-', true));\n\n /** A reference to the host element. */\n private readonly _elementRef = inject(ElementRef);\n\n /** A reference to the host element. */\n readonly element = this._elementRef.nativeElement as HTMLElement;\n\n /** The collection of Options. */\n readonly _collection = new SortedCollection<Option<V>>();\n\n /** A signal wrapper for directionality. */\n protected readonly textDirection = inject(Directionality).valueSignal.asReadonly();\n\n /** Whether the list is vertically or horizontally oriented. */\n readonly orientation = input<'vertical' | 'horizontal'>('vertical');\n\n /** Whether multiple items in the list can be selected at once. */\n readonly multi = input(false, {transform: booleanAttribute});\n\n /** Whether focus should wrap when navigating. */\n readonly wrap = input(true, {transform: booleanAttribute});\n\n /**\n * Whether to allow disabled items to receive focus. When `true`, disabled items are\n * focusable but not interactive. When `false`, disabled items are skipped during navigation.\n */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /**\n * The focus strategy used by the list.\n * - `roving`: Focus is moved to the active item using `tabindex`.\n * - `activedescendant`: Focus remains on the listbox container, and `aria-activedescendant` is used to indicate the active item.\n */\n readonly focusMode = input<'roving' | 'activedescendant'>('roving');\n\n /**\n * The selection strategy used by the list.\n * - `follow`: The focused item is automatically selected.\n * - `explicit`: Items are selected explicitly by the user (e.g., via click or spacebar).\n */\n readonly selectionMode = input<'follow' | 'explicit'>('follow');\n\n /** The amount of time before the typeahead search is reset. */\n readonly typeaheadDelay = input<number>(500); // Picked arbitrarily.\n\n /** Whether the listbox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the listbox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the listbox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** The values of the currently selected items. */\n readonly value = model<V[]>([]);\n\n /** The Listbox UIPattern. */\n readonly _pattern: ListboxPattern<V>;\n\n /** The ID of the active descendant in the listbox. */\n readonly activeDescendant: Signal<string | undefined>;\n\n private readonly _orderedItemPatterns = computed(() =>\n this._collection.orderedItems().map(option => option._pattern),\n );\n\n constructor() {\n const inputs = {\n ...this,\n id: this.id,\n items: this._orderedItemPatterns,\n activeItem: signal(undefined),\n textDirection: this.textDirection,\n element: () => this._elementRef.nativeElement,\n };\n\n this._pattern = new ListboxPattern<V>(inputs);\n\n this.activeDescendant = computed(() => this._pattern.activeDescendant());\n\n afterNextRender(() => {\n this._collection.startObserving(this.element);\n });\n\n // Check for any violations after the DOM has been updated.\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n afterRenderEffect({\n read: () => {\n reportViolations(this._pattern.validate(), this.element);\n },\n });\n }\n\n afterRenderEffect({write: () => this._pattern.setDefaultStateEffect()});\n\n // Ensure that if the active item is removed from\n // the list, the listbox updates it's focus state.\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const activeItem = untracked(() => inputs.activeItem());\n\n if (activeItem && !items.some(i => i === activeItem)) {\n this._pattern.listBehavior.unfocus();\n this._pattern.setDefaultState();\n }\n },\n });\n\n // Ensure that the value is always in sync with the available options.\n // This needs to be after the render for the value to always be available.\n afterRenderEffect({\n write: () => {\n const items = inputs.items();\n const value = untracked(() => this.value());\n\n if (items && value.some(v => !items.some(i => i.value() === v))) {\n this.value.set(value.filter(v => items.some(i => i.value() === v)));\n }\n },\n });\n }\n\n ngOnDestroy() {\n this._collection.stopObserving();\n }\n\n scrollActiveItemIntoView(options: ScrollIntoViewOptions = {block: 'nearest'}) {\n this._pattern.inputs.activeItem()?.element()?.scrollIntoView(options);\n }\n\n /** Navigates to the first item in the listbox. */\n gotoFirst() {\n this._pattern.listBehavior.first();\n }\n\n /** Navigates to an item at a specific index in the listbox. */\n gotoIndex(index: number) {\n const patterns = this._orderedItemPatterns();\n const item = patterns[Math.min(Math.max(index, 0), patterns.length - 1)];\n\n if (item) {\n this._pattern.listBehavior.goto(item);\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {OptionPattern} from '../private';\nimport {LISTBOX} from './tokens';\n\n/**\n * A selectable option in an `ngListbox`.\n *\n * This directive should be applied to an element (e.g., `<li>`, `<div>`) within an\n * `ngListbox`. The `value` input is used to identify the option, and the `label` input provides\n * the accessible name for the option.\n *\n * ```html\n * <li ngOption value=\"item-id\" label=\"Item Name\">\n * Item Name\n * </li>\n * ```\n *\n * @see [Listbox](guide/aria/listbox)\n * @see [Autocomplete](guide/aria/autocomplete)\n * @see [Select](guide/aria/select)\n * @see [Multiselect](guide/aria/multiselect)\n */\n@Directive({\n selector: '[ngOption]',\n exportAs: 'ngOption',\n host: {\n 'role': 'option',\n '[attr.data-active]': 'active()',\n '[attr.id]': '_pattern.id()',\n '[attr.tabindex]': '_pattern.tabIndex()',\n '[attr.aria-selected]': '_pattern.selected()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n },\n})\nexport class Option<V> implements OnInit, OnDestroy {\n /** A reference to the host element. */\n readonly element = inject(ElementRef).nativeElement as HTMLElement;\n\n /** Whether the option is currently active (focused). */\n readonly active = computed(() => this._pattern.active());\n\n /** The parent Listbox. */\n private readonly _listbox = inject(LISTBOX);\n\n /** A unique identifier for the option. */\n readonly id = input(inject(_IdGenerator).getId('ng-option-', true));\n\n /** The parent Listbox UIPattern. */\n private readonly _listboxPattern = computed(() => this._listbox._pattern);\n\n /** The value of the option. */\n readonly value = input.required<V>();\n\n /** Whether an item is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** The text used by the typeahead search. */\n readonly label = input<string>();\n\n /** Whether the option is selected. */\n readonly selected = computed(() => this._pattern.selected());\n\n /** The Option UIPattern. */\n readonly _pattern = new OptionPattern<V>({\n ...this,\n id: this.id,\n value: this.value,\n listbox: this._listboxPattern,\n element: () => this.element,\n searchTerm: () => this.label() ?? '',\n });\n\n ngOnInit() {\n this._listbox._collection.register(this);\n }\n\n ngOnDestroy() {\n this._listbox._collection.unregister(this);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"menu-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/testing/menu-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarness, HarnessPredicate, TestElement} from '@angular/cdk/testing';\nimport {MenuHarnessFilters, MenuItemHarnessFilters} from './menu-harness-filters';\n\n/** Harness for interacting with a standard ngMenuItem in tests. */\nexport class MenuItemHarness extends ComponentHarness {\n static hostSelector = '[ngMenuItem]';\n\n static with(options: MenuItemHarnessFilters = {}): HarnessPredicate<MenuItemHarness> {\n return new HarnessPredicate(MenuItemHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n );\n }\n\n /** Gets the text content of the menu item. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Whether the menu item is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the menu item is expanded (contains an open submenu). */\n async isExpanded(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-expanded')) === 'true';\n }\n\n /** Clicks the menu item to trigger its action or toggle its submenu. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Resolves the nested submenu panel associated with this menu item, if any exists. */\n async getSubmenu(): Promise<MenuHarness | null> {\n const controlsId = await (await this.host()).getAttribute('aria-controls');\n if (controlsId) {\n return this.documentRootLocatorFactory().locatorFor(\n MenuHarness.with({selector: `#${controlsId}`}),\n )();\n }\n return null;\n }\n\n /** Whether the menu item has focus. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Whether the menu item acts as a submenu trigger. */\n async hasSubmenu(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-haspopup')) === 'true' ||\n !!(await host.getAttribute('aria-controls'))\n );\n }\n}\n\n/** Harness for interacting with a standard ngMenu or ngMenuBar in tests. */\nexport class MenuHarness extends ComponentHarness {\n static hostSelector = '[ngMenu], [ngMenuBar]';\n\n static with(options: MenuHarnessFilters = {}): HarnessPredicate<MenuHarness> {\n return new HarnessPredicate(MenuHarness, options).addOption(\n 'triggerText',\n options.triggerText,\n async (harness, text) => {\n const trigger = await harness._getTrigger();\n if (!trigger) return false;\n return HarnessPredicate.stringMatches(await trigger.text(), text);\n },\n );\n }\n\n /** Resolves the trigger associated with this menu container via aria-controls inversion. */\n async _getTrigger(): Promise<TestElement | null> {\n const id = await (await this.host()).getAttribute('id');\n if (!id) return null;\n return this.documentRootLocatorFactory().locatorForOptional(`[aria-controls=\"${id}\"]`)();\n }\n\n /** Checks whether the menu container is visible. */\n async isOpen(): Promise<boolean> {\n const host = await this.host();\n // Menu bars are always visible persistently.\n if (await host.matchesSelector('[ngMenuBar]')) {\n return true;\n }\n return (await host.getAttribute('data-visible')) === 'true';\n }\n\n /** Whether the menu is a menu bar. */\n async isMenuBar(): Promise<boolean> {\n const host = await this.host();\n return host.matchesSelector('[ngMenuBar]');\n }\n\n /** Opens the menu if it is currently closed. */\n async open(): Promise<void> {\n if (!(await this.isOpen())) {\n const trigger = await this._getTrigger();\n if (trigger) {\n await trigger.click();\n }\n }\n }\n\n /** Closes the menu if it is currently open. */\n async close(): Promise<void> {\n if (await this.isOpen()) {\n const trigger = await this._getTrigger();\n if (trigger) {\n await trigger.click();\n }\n }\n }\n\n /** Queries all menu items inside this menu container. */\n async getItems(filters: MenuItemHarnessFilters = {}): Promise<MenuItemHarness[]> {\n return this.locatorForAll(MenuItemHarness.with(filters))();\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/menu/testing/menu-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarness, HarnessPredicate, TestElement} from '@angular/cdk/testing';\nimport {MenuHarnessFilters, MenuItemHarnessFilters} from './menu-harness-filters';\n\n/** Harness for interacting with a standard ngMenuItem in tests. */\nexport class MenuItemHarness extends ComponentHarness {\n static hostSelector = '[ngMenuItem]';\n\n static with(options: MenuItemHarnessFilters = {}): HarnessPredicate<MenuItemHarness> {\n return new HarnessPredicate(MenuItemHarness, options)\n .addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n );\n }\n\n /** Gets the text content of the menu item. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n /** Whether the menu item is disabled. */\n async isDisabled(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-disabled')) === 'true';\n }\n\n /** Whether the menu item is expanded (contains an open submenu). */\n async isExpanded(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-expanded')) === 'true';\n }\n\n /** Clicks the menu item to trigger its action or toggle its submenu. */\n async click(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Resolves the nested submenu panel associated with this menu item, if any exists. */\n async getSubmenu(): Promise<MenuHarness | null> {\n const controlsId = await (await this.host()).getAttribute('aria-controls');\n if (controlsId) {\n return this.documentRootLocatorFactory().locatorFor(\n MenuHarness.with({selector: `#${controlsId}`}),\n )();\n }\n return null;\n }\n\n /** Whether the menu item has focus. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Whether the menu item acts as a submenu trigger. */\n async hasSubmenu(): Promise<boolean> {\n const host = await this.host();\n return (\n (await host.getAttribute('aria-haspopup')) === 'true' ||\n !!(await host.getAttribute('aria-controls'))\n );\n }\n}\n\n/** Harness for interacting with a standard ngMenu or ngMenuBar in tests. */\nexport class MenuHarness extends ComponentHarness {\n static hostSelector = '[ngMenu], [ngMenuBar]';\n\n static with(options: MenuHarnessFilters = {}): HarnessPredicate<MenuHarness> {\n return new HarnessPredicate(MenuHarness, options).addOption(\n 'triggerText',\n options.triggerText,\n async (harness, text) => {\n const trigger = await harness._getTrigger();\n if (!trigger) return false;\n return HarnessPredicate.stringMatches(await trigger.text(), text);\n },\n );\n }\n\n /** Resolves the trigger associated with this menu container via aria-controls inversion. */\n async _getTrigger(): Promise<TestElement | null> {\n const id = await (await this.host()).getAttribute('id');\n if (!id) return null;\n return this.documentRootLocatorFactory().locatorForOptional(`[aria-controls=\"${id}\"]`)();\n }\n\n /** Checks whether the menu container is visible. */\n async isOpen(): Promise<boolean> {\n const host = await this.host();\n // Menu bars are always visible persistently.\n if (await host.matchesSelector('[ngMenuBar]')) {\n return true;\n }\n return (await host.getAttribute('data-visible')) === 'true';\n }\n\n /** Whether the menu is a menu bar. */\n async isMenuBar(): Promise<boolean> {\n const host = await this.host();\n return host.matchesSelector('[ngMenuBar]');\n }\n\n /** Opens the menu if it is currently closed. */\n async open(): Promise<void> {\n if (!(await this.isOpen())) {\n const trigger = await this._getTrigger();\n if (trigger) {\n await trigger.click();\n }\n }\n }\n\n /** Closes the menu if it is currently open. */\n async close(): Promise<void> {\n if (await this.isOpen()) {\n const trigger = await this._getTrigger();\n if (trigger) {\n await trigger.click();\n }\n }\n }\n\n /** Queries all menu items inside this menu container. */\n async getItems(filters: MenuItemHarnessFilters = {}): Promise<MenuItemHarness[]> {\n return this.locatorForAll(MenuItemHarness.with(filters))();\n }\n}\n"],"names":[],"mappings":"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"}
package/fesm2022/menu.mjs CHANGED
@@ -59,7 +59,7 @@ class MenuTrigger {
59
59
  }
60
60
  static ɵfac = i0.ɵɵngDeclareFactory({
61
61
  minVersion: "12.0.0",
62
- version: "22.2.0-next.3",
62
+ version: "22.2.0-next.5",
63
63
  ngImport: i0,
64
64
  type: MenuTrigger,
65
65
  deps: [],
@@ -67,7 +67,7 @@ class MenuTrigger {
67
67
  });
68
68
  static ɵdir = i0.ɵɵngDeclareDirective({
69
69
  minVersion: "17.1.0",
70
- version: "22.2.0-next.3",
70
+ version: "22.2.0-next.5",
71
71
  type: MenuTrigger,
72
72
  isStandalone: true,
73
73
  selector: "[ngMenuTrigger]",
@@ -116,7 +116,7 @@ class MenuTrigger {
116
116
  }
117
117
  i0.ɵɵngDeclareClassMetadata({
118
118
  minVersion: "12.0.0",
119
- version: "22.2.0-next.3",
119
+ version: "22.2.0-next.5",
120
120
  ngImport: i0,
121
121
  type: MenuTrigger,
122
122
  decorators: [{
@@ -175,7 +175,7 @@ class MenuItem {
175
175
  id = input(inject(_IdGenerator).getId('ng-menu-item-', true), ...(ngDevMode ? [{
176
176
  debugName: "id"
177
177
  }] : []));
178
- value = input.required(...(ngDevMode ? [{
178
+ value = input(undefined, ...(ngDevMode ? [{
179
179
  debugName: "value"
180
180
  }] : []));
181
181
  disabled = input(false, ...(ngDevMode ? [{
@@ -242,7 +242,7 @@ class MenuItem {
242
242
  }
243
243
  static ɵfac = i0.ɵɵngDeclareFactory({
244
244
  minVersion: "12.0.0",
245
- version: "22.2.0-next.3",
245
+ version: "22.2.0-next.5",
246
246
  ngImport: i0,
247
247
  type: MenuItem,
248
248
  deps: [],
@@ -250,7 +250,7 @@ class MenuItem {
250
250
  });
251
251
  static ɵdir = i0.ɵɵngDeclareDirective({
252
252
  minVersion: "17.1.0",
253
- version: "22.2.0-next.3",
253
+ version: "22.2.0-next.5",
254
254
  type: MenuItem,
255
255
  isStandalone: true,
256
256
  selector: "[ngMenuItem]",
@@ -266,7 +266,7 @@ class MenuItem {
266
266
  classPropertyName: "value",
267
267
  publicName: "value",
268
268
  isSignal: true,
269
- isRequired: true,
269
+ isRequired: false,
270
270
  transformFunction: null
271
271
  },
272
272
  disabled: {
@@ -321,7 +321,7 @@ class MenuItem {
321
321
  }
322
322
  i0.ɵɵngDeclareClassMetadata({
323
323
  minVersion: "12.0.0",
324
- version: "22.2.0-next.3",
324
+ version: "22.2.0-next.5",
325
325
  ngImport: i0,
326
326
  type: MenuItem,
327
327
  decorators: [{
@@ -356,7 +356,7 @@ i0.ɵɵngDeclareClassMetadata({
356
356
  args: [{
357
357
  isSignal: true,
358
358
  alias: "value",
359
- required: true
359
+ required: false
360
360
  }]
361
361
  }],
362
362
  disabled: [{
@@ -459,7 +459,7 @@ class MenuBar {
459
459
  }
460
460
  static ɵfac = i0.ɵɵngDeclareFactory({
461
461
  minVersion: "12.0.0",
462
- version: "22.2.0-next.3",
462
+ version: "22.2.0-next.5",
463
463
  ngImport: i0,
464
464
  type: MenuBar,
465
465
  deps: [],
@@ -467,7 +467,7 @@ class MenuBar {
467
467
  });
468
468
  static ɵdir = i0.ɵɵngDeclareDirective({
469
469
  minVersion: "17.1.0",
470
- version: "22.2.0-next.3",
470
+ version: "22.2.0-next.5",
471
471
  type: MenuBar,
472
472
  isStandalone: true,
473
473
  selector: "[ngMenuBar]",
@@ -539,7 +539,7 @@ class MenuBar {
539
539
  }
540
540
  i0.ɵɵngDeclareClassMetadata({
541
541
  minVersion: "12.0.0",
542
- version: "22.2.0-next.3",
542
+ version: "22.2.0-next.5",
543
543
  ngImport: i0,
544
544
  type: MenuBar,
545
545
  decorators: [{
@@ -724,7 +724,7 @@ class Menu {
724
724
  }
725
725
  static ɵfac = i0.ɵɵngDeclareFactory({
726
726
  minVersion: "12.0.0",
727
- version: "22.2.0-next.3",
727
+ version: "22.2.0-next.5",
728
728
  ngImport: i0,
729
729
  type: Menu,
730
730
  deps: [],
@@ -732,7 +732,7 @@ class Menu {
732
732
  });
733
733
  static ɵdir = i0.ɵɵngDeclareDirective({
734
734
  minVersion: "17.1.0",
735
- version: "22.2.0-next.3",
735
+ version: "22.2.0-next.5",
736
736
  type: Menu,
737
737
  isStandalone: true,
738
738
  selector: "[ngMenu]",
@@ -816,7 +816,7 @@ class Menu {
816
816
  }
817
817
  i0.ɵɵngDeclareClassMetadata({
818
818
  minVersion: "12.0.0",
819
- version: "22.2.0-next.3",
819
+ version: "22.2.0-next.5",
820
820
  ngImport: i0,
821
821
  type: Menu,
822
822
  decorators: [{
@@ -907,7 +907,7 @@ i0.ɵɵngDeclareClassMetadata({
907
907
  class MenuContent {
908
908
  static ɵfac = i0.ɵɵngDeclareFactory({
909
909
  minVersion: "12.0.0",
910
- version: "22.2.0-next.3",
910
+ version: "22.2.0-next.5",
911
911
  ngImport: i0,
912
912
  type: MenuContent,
913
913
  deps: [],
@@ -915,7 +915,7 @@ class MenuContent {
915
915
  });
916
916
  static ɵdir = i0.ɵɵngDeclareDirective({
917
917
  minVersion: "14.0.0",
918
- version: "22.2.0-next.3",
918
+ version: "22.2.0-next.5",
919
919
  type: MenuContent,
920
920
  isStandalone: true,
921
921
  selector: "ng-template[ngMenuContent]",
@@ -928,7 +928,7 @@ class MenuContent {
928
928
  }
929
929
  i0.ɵɵngDeclareClassMetadata({
930
930
  minVersion: "12.0.0",
931
- version: "22.2.0-next.3",
931
+ version: "22.2.0-next.5",
932
932
  ngImport: i0,
933
933
  type: MenuContent,
934
934
  decorators: [{