@angular/aria 22.0.0-next.8 → 22.0.0-rc.0

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 +11 -1
  2. package/fesm2022/_accordion-chunk.mjs.map +1 -1
  3. package/fesm2022/_click-event-manager-chunk.mjs +1 -1
  4. package/fesm2022/_deferred-content-chunk.mjs +6 -6
  5. package/fesm2022/_list-chunk.mjs +1 -1
  6. package/fesm2022/_list-navigation-chunk.mjs +1 -1
  7. package/fesm2022/_list-typeahead-chunk.mjs +1 -1
  8. package/fesm2022/_menu-chunk.mjs +10 -1
  9. package/fesm2022/_menu-chunk.mjs.map +1 -1
  10. package/fesm2022/_option-chunk.mjs +11 -1
  11. package/fesm2022/_option-chunk.mjs.map +1 -1
  12. package/fesm2022/_tabs-chunk.mjs +1 -1
  13. package/fesm2022/_toolbar-widget-group-chunk.mjs +10 -1
  14. package/fesm2022/_toolbar-widget-group-chunk.mjs.map +1 -1
  15. package/fesm2022/_tree-chunk.mjs +6 -1
  16. package/fesm2022/_tree-chunk.mjs.map +1 -1
  17. package/fesm2022/{_collection-chunk.mjs → _violations-chunk.mjs} +11 -2
  18. package/fesm2022/_violations-chunk.mjs.map +1 -0
  19. package/fesm2022/_widget-chunk.mjs +11 -1
  20. package/fesm2022/_widget-chunk.mjs.map +1 -1
  21. package/fesm2022/accordion.mjs +102 -48
  22. package/fesm2022/accordion.mjs.map +1 -1
  23. package/fesm2022/aria.mjs +1 -1
  24. package/fesm2022/aria.mjs.map +1 -1
  25. package/fesm2022/combobox.mjs +9 -9
  26. package/fesm2022/grid.mjs +20 -13
  27. package/fesm2022/grid.mjs.map +1 -1
  28. package/fesm2022/listbox.mjs +15 -17
  29. package/fesm2022/listbox.mjs.map +1 -1
  30. package/fesm2022/menu.mjs +35 -17
  31. package/fesm2022/menu.mjs.map +1 -1
  32. package/fesm2022/private.mjs +2 -2
  33. package/fesm2022/tabs.mjs +117 -54
  34. package/fesm2022/tabs.mjs.map +1 -1
  35. package/fesm2022/toolbar.mjs +31 -10
  36. package/fesm2022/toolbar.mjs.map +1 -1
  37. package/fesm2022/tree.mjs +18 -20
  38. package/fesm2022/tree.mjs.map +1 -1
  39. package/package.json +2 -2
  40. package/types/_accordion-chunk.d.ts +2 -0
  41. package/types/_grid-chunk.d.ts +2 -0
  42. package/types/_menu-chunk.d.ts +2 -0
  43. package/types/_toolbar-chunk.d.ts +2 -0
  44. package/types/accordion.d.ts +3 -5
  45. package/types/grid.d.ts +0 -8
  46. package/types/listbox.d.ts +0 -4
  47. package/types/menu.d.ts +0 -10
  48. package/types/private.d.ts +4 -1
  49. package/types/tabs.d.ts +3 -11
  50. package/types/toolbar.d.ts +1 -6
  51. package/types/tree.d.ts +0 -6
  52. package/fesm2022/_collection-chunk.mjs.map +0 -1
@@ -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} 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 * @developerPreview 21.0\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 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 * @developerPreview 21.0\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 * @developerPreview 21.0\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 * @developerPreview 21.0\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":["GRID_CELL","InjectionToken","GRID_ROW","GRID","Grid","_elementRef","inject","ElementRef","element","nativeElement","_collection","SortedCollection","_rowPatterns","computed","orderedItems","map","r","_pattern","textDirection","Directionality","valueSignal","enableSelection","input","transform","booleanAttribute","disabled","softDisabled","focusMode","rowWrap","colWrap","multi","selectionMode","tabIndex","undefined","ngDevMode","debugName","alias","tabIndexTransform","GridPattern","rows","getCell","e","_getCell","activeDescendant","constructor","afterRenderEffect","write","setDefaultStateEffect","resetStateEffect","resetFocusEffect","restoreFocusEffect","focusEffect","afterNextRender","startObserving","ngOnDestroy","stopObserving","scrollActiveCellIntoView","options","block","activeCell","scrollIntoView","target","row","cell","inputs","cells","parentElement","closest","deps","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","listeners","properties","providers","provide","useExisting","exportAs","ngImport","decorators","args","GridCellWidget","active","_cell","id","_IdGenerator","getId","widgetType","focusTarget","activated","output","deactivated","tabindex","_tabIndex","GridCellWidgetPattern","onActivate","emit","onDeactivate","isActivated","activationEffect","deactivationEffect","activate","deactivate","outputs","GridCell","_renderer","Renderer2","_widget","contentChild","descendants","_widgetPattern","_row","role","rowSpan","colSpan","rowIndex","colIndex","selected","model","selectable","GridCellPattern","grid","_gridPattern","widget","getWidget","_getWidget","pattern","_toggleAttribute","toggle","anchor","ariaRowIndex","ariaColIndex","ariaSelected","ngOnInit","register","unregister","name","value","removeAttribute","setAttribute","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","ctorParameters","propDecorators","ContentChild","forwardRef","Input","required","Output","GridRow","_cellPatterns","c","_grid","GridRowPattern"],"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":["GRID_CELL","InjectionToken","GRID_ROW","GRID","Grid","_elementRef","inject","ElementRef","element","nativeElement","_collection","SortedCollection","_rowPatterns","computed","orderedItems","map","r","_pattern","textDirection","Directionality","valueSignal","enableSelection","input","transform","booleanAttribute","disabled","softDisabled","focusMode","rowWrap","colWrap","multi","selectionMode","tabIndex","undefined","ngDevMode","debugName","alias","tabIndexTransform","GridPattern","rows","getCell","e","_getCell","activeDescendant","constructor","afterRenderEffect","write","setDefaultStateEffect","resetStateEffect","resetFocusEffect","restoreFocusEffect","focusEffect","read","reportViolations","validate","afterNextRender","startObserving","ngOnDestroy","stopObserving","scrollActiveCellIntoView","options","block","activeCell","scrollIntoView","target","row","cell","inputs","cells","parentElement","closest","deps","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","host","attributes","listeners","properties","providers","provide","useExisting","exportAs","ngImport","decorators","args","GridCellWidget","active","_cell","id","_IdGenerator","getId","widgetType","focusTarget","activated","output","deactivated","tabindex","_tabIndex","GridCellWidgetPattern","onActivate","emit","onDeactivate","isActivated","activationEffect","deactivationEffect","activate","deactivate","outputs","GridCell","_renderer","Renderer2","_widget","contentChild","descendants","_widgetPattern","_row","role","rowSpan","colSpan","rowIndex","colIndex","selected","model","selectable","GridCellPattern","grid","_gridPattern","widget","getWidget","_getWidget","pattern","_toggleAttribute","toggle","anchor","ariaRowIndex","ariaColIndex","ariaSelected","ngOnInit","register","unregister","name","value","removeAttribute","setAttribute","ɵdir","ɵɵngDeclareDirective","minVersion","version","type","ctorParameters","propDecorators","ContentChild","forwardRef","Input","required","Output","GridRow","_cellPatterns","c","_grid","GridRowPattern"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { InjectionToken, input, inject, ElementRef, booleanAttribute, model, com
3
3
  import { Directionality } from '@angular/cdk/bidi';
4
4
  import { _IdGenerator } from '@angular/cdk/a11y';
5
5
  import { ListboxPattern, OptionPattern } from './_option-chunk.mjs';
6
- import { SortedCollection } from './_collection-chunk.mjs';
6
+ import { SortedCollection, reportViolations } from './_violations-chunk.mjs';
7
7
  import { tabIndexTransform } from './_transforms-chunk.mjs';
8
8
  import './_list-chunk.mjs';
9
9
  import './_list-navigation-chunk.mjs';
@@ -94,16 +94,13 @@ class Listbox {
94
94
  afterNextRender(() => {
95
95
  this._collection.startObserving(this.element);
96
96
  });
97
- afterRenderEffect({
98
- read: () => {
99
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
100
- const violations = this._pattern.validate();
101
- for (const violation of violations) {
102
- console.error(violation);
103
- }
97
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
98
+ afterRenderEffect({
99
+ read: () => {
100
+ reportViolations(this._pattern.validate(), this.element);
104
101
  }
105
- }
106
- });
102
+ });
103
+ }
107
104
  afterRenderEffect({
108
105
  write: () => this._pattern.setDefaultStateEffect()
109
106
  });
@@ -111,8 +108,9 @@ class Listbox {
111
108
  write: () => {
112
109
  const items = inputs.items();
113
110
  const activeItem = untracked(() => inputs.activeItem());
114
- if (!items.some(i => i === activeItem) && activeItem) {
111
+ if (activeItem && !items.some(i => i === activeItem)) {
115
112
  this._pattern.listBehavior.unfocus();
113
+ this._pattern.setDefaultState();
116
114
  }
117
115
  }
118
116
  });
@@ -139,7 +137,7 @@ class Listbox {
139
137
  }
140
138
  static ɵfac = i0.ɵɵngDeclareFactory({
141
139
  minVersion: "12.0.0",
142
- version: "22.0.0-next.10",
140
+ version: "22.0.0-next.12",
143
141
  ngImport: i0,
144
142
  type: Listbox,
145
143
  deps: [],
@@ -147,7 +145,7 @@ class Listbox {
147
145
  });
148
146
  static ɵdir = i0.ɵɵngDeclareDirective({
149
147
  minVersion: "17.1.0",
150
- version: "22.0.0-next.10",
148
+ version: "22.0.0-next.12",
151
149
  type: Listbox,
152
150
  isStandalone: true,
153
151
  selector: "[ngListbox]",
@@ -269,7 +267,7 @@ class Listbox {
269
267
  }
270
268
  i0.ɵɵngDeclareClassMetadata({
271
269
  minVersion: "12.0.0",
272
- version: "22.0.0-next.10",
270
+ version: "22.0.0-next.12",
273
271
  ngImport: i0,
274
272
  type: Listbox,
275
273
  decorators: [{
@@ -443,7 +441,7 @@ class Option {
443
441
  }
444
442
  static ɵfac = i0.ɵɵngDeclareFactory({
445
443
  minVersion: "12.0.0",
446
- version: "22.0.0-next.10",
444
+ version: "22.0.0-next.12",
447
445
  ngImport: i0,
448
446
  type: Option,
449
447
  deps: [],
@@ -451,7 +449,7 @@ class Option {
451
449
  });
452
450
  static ɵdir = i0.ɵɵngDeclareDirective({
453
451
  minVersion: "17.1.0",
454
- version: "22.0.0-next.10",
452
+ version: "22.0.0-next.12",
455
453
  type: Option,
456
454
  isStandalone: true,
457
455
  selector: "[ngOption]",
@@ -503,7 +501,7 @@ class Option {
503
501
  }
504
502
  i0.ɵɵngDeclareClassMetadata({
505
503
  minVersion: "12.0.0",
506
- version: "22.0.0-next.10",
504
+ version: "22.0.0-next.12",
507
505
  ngImport: i0,
508
506
  type: Option,
509
507
  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} 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 * @developerPreview 21.0\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 constructor() {\n // Map directives to their patterns for the ListboxPattern\n const orderedItemPatterns = computed(() =>\n this._collection.orderedItems().map(option => option._pattern),\n );\n\n const inputs = {\n ...this,\n id: this.id,\n items: 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 violationns after the DOM has been updated.\n afterRenderEffect({\n read: () => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const violations = this._pattern.validate();\n for (const violation of violations) {\n console.error(violation);\n }\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 (!items.some(i => i === activeItem) && activeItem) {\n this._pattern.listBehavior.unfocus();\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","/**\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 * @developerPreview 21.0\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":["LISTBOX","InjectionToken","Listbox","id","input","inject","_IdGenerator","getId","_elementRef","ElementRef","element","nativeElement","_collection","SortedCollection","textDirection","Directionality","valueSignal","asReadonly","orientation","multi","transform","booleanAttribute","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","disabled","readonly","tabIndex","undefined","alias","tabIndexTransform","value","model","_pattern","activeDescendant","constructor","orderedItemPatterns","computed","orderedItems","map","option","inputs","items","activeItem","signal","ListboxPattern","afterNextRender","startObserving","afterRenderEffect","read","violations","validate","violation","console","error","write","setDefaultStateEffect","untracked","some","i","listBehavior","unfocus","v","set","filter","ngOnDestroy","stopObserving","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","providers","provide","useExisting","exportAs","ngImport","decorators","args","Option","active","_listbox","_listboxPattern","required","label","selected","OptionPattern","listbox","searchTerm","ngOnInit","register","unregister"],"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 constructor() {\n // Map directives to their patterns for the ListboxPattern\n const orderedItemPatterns = computed(() =>\n this._collection.orderedItems().map(option => option._pattern),\n );\n\n const inputs = {\n ...this,\n id: this.id,\n items: 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","/**\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":["LISTBOX","InjectionToken","Listbox","id","input","inject","_IdGenerator","getId","_elementRef","ElementRef","element","nativeElement","_collection","SortedCollection","textDirection","Directionality","valueSignal","asReadonly","orientation","multi","transform","booleanAttribute","wrap","softDisabled","focusMode","selectionMode","typeaheadDelay","ngDevMode","debugName","disabled","readonly","tabIndex","undefined","alias","tabIndexTransform","value","model","_pattern","activeDescendant","constructor","orderedItemPatterns","computed","orderedItems","map","option","inputs","items","activeItem","signal","ListboxPattern","afterNextRender","startObserving","afterRenderEffect","read","reportViolations","validate","write","setDefaultStateEffect","untracked","some","i","listBehavior","unfocus","setDefaultState","v","set","filter","ngOnDestroy","stopObserving","scrollActiveItemIntoView","options","block","scrollIntoView","gotoFirst","first","deps","target","i0","ɵɵFactoryTarget","Directive","isStandalone","selector","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","host","attributes","listeners","properties","providers","provide","useExisting","exportAs","ngImport","decorators","args","Option","active","_listbox","_listboxPattern","required","label","selected","OptionPattern","listbox","searchTerm","ngOnInit","register","unregister"],"mappings":"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"}
package/fesm2022/menu.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, input, computed, booleanAttribute, effect, Directive, InjectionToken, model, output, signal, afterRenderEffect, afterNextRender, untracked } from '@angular/core';
2
+ import { inject, ElementRef, input, computed, booleanAttribute, effect, Directive, InjectionToken, model, afterRenderEffect, output, signal, afterNextRender, untracked } from '@angular/core';
3
3
  import { _IdGenerator } from '@angular/cdk/a11y';
4
4
  import { Directionality } from '@angular/cdk/bidi';
5
5
  import { MenuTriggerPattern, MenuItemPattern, MenuBarPattern, MenuPattern } from './_menu-chunk.mjs';
6
- import { SortedCollection } from './_collection-chunk.mjs';
6
+ import { reportViolations, SortedCollection } from './_violations-chunk.mjs';
7
7
  import { DeferredContentAware, DeferredContent } from './_deferred-content-chunk.mjs';
8
8
  import './_list-chunk.mjs';
9
9
  import './_list-navigation-chunk.mjs';
@@ -54,7 +54,7 @@ class MenuTrigger {
54
54
  }
55
55
  static ɵfac = i0.ɵɵngDeclareFactory({
56
56
  minVersion: "12.0.0",
57
- version: "22.0.0-next.10",
57
+ version: "22.0.0-next.12",
58
58
  ngImport: i0,
59
59
  type: MenuTrigger,
60
60
  deps: [],
@@ -62,7 +62,7 @@ class MenuTrigger {
62
62
  });
63
63
  static ɵdir = i0.ɵɵngDeclareDirective({
64
64
  minVersion: "17.1.0",
65
- version: "22.0.0-next.10",
65
+ version: "22.0.0-next.12",
66
66
  type: MenuTrigger,
67
67
  isStandalone: true,
68
68
  selector: "[ngMenuTrigger]",
@@ -111,7 +111,7 @@ class MenuTrigger {
111
111
  }
112
112
  i0.ɵɵngDeclareClassMetadata({
113
113
  minVersion: "12.0.0",
114
- version: "22.0.0-next.10",
114
+ version: "22.0.0-next.12",
115
115
  ngImport: i0,
116
116
  type: MenuTrigger,
117
117
  decorators: [{
@@ -205,6 +205,17 @@ class MenuItem {
205
205
  });
206
206
  constructor() {
207
207
  effect(() => this.submenu()?.parent.set(this));
208
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
209
+ afterRenderEffect({
210
+ read: () => {
211
+ const violations = [];
212
+ if (!this.parent) {
213
+ violations.push('ngMenuItem must be placed inside an ngMenu or ngMenuBar container.');
214
+ }
215
+ reportViolations(violations, this.element);
216
+ }
217
+ });
218
+ }
208
219
  }
209
220
  ngOnInit() {
210
221
  this.parent?._collection.register(this);
@@ -222,7 +233,7 @@ class MenuItem {
222
233
  }
223
234
  static ɵfac = i0.ɵɵngDeclareFactory({
224
235
  minVersion: "12.0.0",
225
- version: "22.0.0-next.10",
236
+ version: "22.0.0-next.12",
226
237
  ngImport: i0,
227
238
  type: MenuItem,
228
239
  deps: [],
@@ -230,7 +241,7 @@ class MenuItem {
230
241
  });
231
242
  static ɵdir = i0.ɵɵngDeclareDirective({
232
243
  minVersion: "17.1.0",
233
- version: "22.0.0-next.10",
244
+ version: "22.0.0-next.12",
234
245
  type: MenuItem,
235
246
  isStandalone: true,
236
247
  selector: "[ngMenuItem]",
@@ -296,7 +307,7 @@ class MenuItem {
296
307
  }
297
308
  i0.ɵɵngDeclareClassMetadata({
298
309
  minVersion: "12.0.0",
299
- version: "22.0.0-next.10",
310
+ version: "22.0.0-next.12",
300
311
  ngImport: i0,
301
312
  type: MenuItem,
302
313
  decorators: [{
@@ -427,7 +438,7 @@ class MenuBar {
427
438
  }
428
439
  static ɵfac = i0.ɵɵngDeclareFactory({
429
440
  minVersion: "12.0.0",
430
- version: "22.0.0-next.10",
441
+ version: "22.0.0-next.12",
431
442
  ngImport: i0,
432
443
  type: MenuBar,
433
444
  deps: [],
@@ -435,7 +446,7 @@ class MenuBar {
435
446
  });
436
447
  static ɵdir = i0.ɵɵngDeclareDirective({
437
448
  minVersion: "17.1.0",
438
- version: "22.0.0-next.10",
449
+ version: "22.0.0-next.12",
439
450
  type: MenuBar,
440
451
  isStandalone: true,
441
452
  selector: "[ngMenuBar]",
@@ -507,7 +518,7 @@ class MenuBar {
507
518
  }
508
519
  i0.ɵɵngDeclareClassMetadata({
509
520
  minVersion: "12.0.0",
510
- version: "22.0.0-next.10",
521
+ version: "22.0.0-next.12",
511
522
  ngImport: i0,
512
523
  type: MenuBar,
513
524
  decorators: [{
@@ -668,6 +679,13 @@ class Menu {
668
679
  afterRenderEffect({
669
680
  write: () => this._pattern.setDefaultStateEffect()
670
681
  });
682
+ if (typeof ngDevMode === 'undefined' || ngDevMode) {
683
+ afterRenderEffect({
684
+ read: () => {
685
+ reportViolations(this._pattern.validate(), this.element);
686
+ }
687
+ });
688
+ }
671
689
  afterNextRender(() => {
672
690
  this._collection.startObserving(this.element);
673
691
  });
@@ -680,7 +698,7 @@ class Menu {
680
698
  }
681
699
  static ɵfac = i0.ɵɵngDeclareFactory({
682
700
  minVersion: "12.0.0",
683
- version: "22.0.0-next.10",
701
+ version: "22.0.0-next.12",
684
702
  ngImport: i0,
685
703
  type: Menu,
686
704
  deps: [],
@@ -688,7 +706,7 @@ class Menu {
688
706
  });
689
707
  static ɵdir = i0.ɵɵngDeclareDirective({
690
708
  minVersion: "17.1.0",
691
- version: "22.0.0-next.10",
709
+ version: "22.0.0-next.12",
692
710
  type: Menu,
693
711
  isStandalone: true,
694
712
  selector: "[ngMenu]",
@@ -765,7 +783,7 @@ class Menu {
765
783
  }
766
784
  i0.ɵɵngDeclareClassMetadata({
767
785
  minVersion: "12.0.0",
768
- version: "22.0.0-next.10",
786
+ version: "22.0.0-next.12",
769
787
  ngImport: i0,
770
788
  type: Menu,
771
789
  decorators: [{
@@ -848,7 +866,7 @@ i0.ɵɵngDeclareClassMetadata({
848
866
  class MenuContent {
849
867
  static ɵfac = i0.ɵɵngDeclareFactory({
850
868
  minVersion: "12.0.0",
851
- version: "22.0.0-next.10",
869
+ version: "22.0.0-next.12",
852
870
  ngImport: i0,
853
871
  type: MenuContent,
854
872
  deps: [],
@@ -856,7 +874,7 @@ class MenuContent {
856
874
  });
857
875
  static ɵdir = i0.ɵɵngDeclareDirective({
858
876
  minVersion: "14.0.0",
859
- version: "22.0.0-next.10",
877
+ version: "22.0.0-next.12",
860
878
  type: MenuContent,
861
879
  isStandalone: true,
862
880
  selector: "ng-template[ngMenuContent]",
@@ -869,7 +887,7 @@ class MenuContent {
869
887
  }
870
888
  i0.ɵɵngDeclareClassMetadata({
871
889
  minVersion: "12.0.0",
872
- version: "22.0.0-next.10",
890
+ version: "22.0.0-next.12",
873
891
  ngImport: i0,
874
892
  type: MenuContent,
875
893
  decorators: [{