@angular/aria 22.1.3 → 22.1.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.
@@ -10,7 +10,7 @@ class DeferredContentAware {
10
10
  }] : []));
11
11
  static ɵfac = i0.ɵɵngDeclareFactory({
12
12
  minVersion: "12.0.0",
13
- version: "22.1.2",
13
+ version: "22.1.4",
14
14
  ngImport: i0,
15
15
  type: DeferredContentAware,
16
16
  deps: [],
@@ -18,7 +18,7 @@ class DeferredContentAware {
18
18
  });
19
19
  static ɵdir = i0.ɵɵngDeclareDirective({
20
20
  minVersion: "17.1.0",
21
- version: "22.1.2",
21
+ version: "22.1.4",
22
22
  type: DeferredContentAware,
23
23
  isStandalone: true,
24
24
  inputs: {
@@ -38,7 +38,7 @@ class DeferredContentAware {
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({
40
40
  minVersion: "12.0.0",
41
- version: "22.1.2",
41
+ version: "22.1.4",
42
42
  ngImport: i0,
43
43
  type: DeferredContentAware,
44
44
  decorators: [{
@@ -97,7 +97,7 @@ class DeferredContent {
97
97
  }
98
98
  static ɵfac = i0.ɵɵngDeclareFactory({
99
99
  minVersion: "12.0.0",
100
- version: "22.1.2",
100
+ version: "22.1.4",
101
101
  ngImport: i0,
102
102
  type: DeferredContent,
103
103
  deps: [],
@@ -105,7 +105,7 @@ class DeferredContent {
105
105
  });
106
106
  static ɵdir = i0.ɵɵngDeclareDirective({
107
107
  minVersion: "14.0.0",
108
- version: "22.1.2",
108
+ version: "22.1.4",
109
109
  type: DeferredContent,
110
110
  isStandalone: true,
111
111
  ngImport: i0
@@ -113,7 +113,7 @@ class DeferredContent {
113
113
  }
114
114
  i0.ɵɵngDeclareClassMetadata({
115
115
  minVersion: "12.0.0",
116
- version: "22.1.2",
116
+ version: "22.1.4",
117
117
  ngImport: i0,
118
118
  type: DeferredContent,
119
119
  decorators: [{
@@ -12,6 +12,7 @@ class MenuPattern {
12
12
  isFocused = signal(false);
13
13
  hasBeenInteracted = signal(false);
14
14
  hasBeenHovered = signal(false);
15
+ items = () => this.inputs.items();
15
16
  _openTimeout;
16
17
  _closeTimeout;
17
18
  tabIndex = () => this.listBehavior.tabIndex();
@@ -101,7 +102,7 @@ class MenuPattern {
101
102
  return;
102
103
  }
103
104
  const parent = this.inputs.parent();
104
- const activeItem = this?.inputs.activeItem();
105
+ const activeItem = this.inputs.activeItem();
105
106
  if (parent instanceof MenuItemPattern) {
106
107
  const grandparent = parent.inputs.parent();
107
108
  if (grandparent instanceof MenuPattern) {
@@ -439,7 +440,8 @@ class MenuTriggerPattern {
439
440
  pendingFocusEffect() {
440
441
  const menu = this.inputs.menu();
441
442
  const intent = this.pendingFocus();
442
- if (menu && intent) {
443
+ const items = menu?.items();
444
+ if (menu && intent && items?.length) {
443
445
  if (intent === 'first') {
444
446
  menu.first();
445
447
  } else if (intent === 'last') {
@@ -1 +1 @@
1
- {"version":3,"file":"_menu-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/menu/menu.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 {_getEventTarget} from '@angular/cdk/platform';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {computed, signal, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs, ListItem} from '../behaviors/list/list';\n\n/** The inputs for the MenuBarPattern class. */\nexport interface MenuBarInputs<V> extends ListInputs<MenuItemPattern<V>, V> {\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n}\n\n/** The inputs for the MenuPattern class. */\nexport interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'value'> {\n /** The unique ID of the menu. */\n id: SignalLike<string>;\n\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuTriggerPattern<V> | MenuItemPattern<V> | undefined>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n expansionDelay: SignalLike<number>;\n}\n\n/** The inputs for the MenuTriggerPattern class. */\nexport interface MenuTriggerInputs<V> {\n /** A reference to the menu trigger element. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** A reference to the menu associated with the trigger. */\n menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** Whether the menu trigger is disabled. */\n disabled: SignalLike<boolean>;\n}\n\n/** The inputs for the MenuItemPattern class. */\nexport interface MenuItemInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuPattern<V> | MenuBarPattern<V> | undefined>;\n\n /** A reference to the submenu associated with the menu item. */\n submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The role of the menu item. */\n role: SignalLike<'menuitem' | 'menuitemradio' | 'menuitemcheckbox'>;\n}\n\n/** The menu ui pattern class. */\nexport class MenuPattern<V> {\n /** The unique ID of the menu. */\n readonly id: SignalLike<string>;\n\n /** The role of the menu. */\n readonly role = () => 'menu';\n\n /** Whether the menu is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Whether the menu is visible. */\n readonly visible = computed(() =>\n this.inputs.parent() ? !!this.inputs.parent()?.expanded() : true,\n );\n\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** Whether the menu or any of its child elements are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menu has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menu trigger has been hovered. */\n readonly hasBeenHovered = signal(false);\n\n /** Timeout used to open sub-menus on hover. */\n _openTimeout: any;\n\n /** Timeout used to close sub-menus on hover out. */\n _closeTimeout: any;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** Whether the menu should be focused on mouse over. */\n readonly shouldFocus = computed(() => {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n return true;\n }\n\n if (root instanceof MenuBarPattern || root instanceof MenuPattern) {\n return root.isFocused();\n }\n\n return false;\n });\n\n /** The key used to expand sub-menus. */\n private readonly _expandKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to collapse sub-menus. */\n private readonly _collapseKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** The root of the menu. */\n readonly root: SignalLike<\n MenuTriggerPattern<V> | MenuBarPattern<V> | MenuPattern<V> | undefined\n > = computed(() => {\n const parent = this.inputs.parent();\n\n if (!parent) {\n return this;\n }\n\n if (parent instanceof MenuTriggerPattern) {\n return parent;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (grandparent instanceof MenuBarPattern) {\n return grandparent;\n }\n\n return grandparent?.root();\n });\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on('ArrowDown', () => this.next(), {ignoreRepeat: false})\n .on('ArrowUp', () => this.prev(), {ignoreRepeat: false})\n .on('Home', () => this.first())\n .on('End', () => this.last())\n .on('Enter', () => this.trigger())\n .on('Escape', () => this.closeAll())\n .on(this._expandKey, () => this.expand())\n .on(this._collapseKey, () => this.collapse())\n .on(this.dynamicSpaceKey, () => this.trigger())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuInputs<V>) {\n this.id = inputs.id;\n this.listBehavior = new List<MenuItemPattern<V>, V>({\n ...inputs,\n value: signal([]),\n });\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n const values = this.inputs.items().map(i => i.value());\n const duplicates = values.filter((val, idx) => values.indexOf(val) !== idx);\n if (duplicates.length > 0) {\n violations.push(`Duplicate value '${duplicates[0]}' detected inside ngMenu.`);\n }\n\n return violations;\n }\n\n /** Sets the default state for the menu. */\n setDefaultState() {\n if (!this.inputs.parent()) {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.listBehavior.goto(firstFocusable, {focusElement: false});\n }\n }\n }\n\n /** Sets the default active state of the menu before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted() || this.hasBeenHovered()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles mouseover events for the menu. */\n onMouseOver(event: MouseEvent) {\n if (!this.visible()) {\n return;\n }\n\n this.hasBeenHovered.set(true);\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n const parent = this.inputs.parent();\n const activeItem = this?.inputs.activeItem();\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n if (grandparent instanceof MenuPattern) {\n grandparent._clearTimeouts();\n grandparent.listBehavior.goto(parent, {focusElement: false});\n }\n }\n\n if (activeItem && activeItem !== item) {\n this._closeItem(activeItem);\n }\n\n if (item.expanded()) {\n this._clearCloseTimeout();\n }\n\n this._openItem(item);\n this.listBehavior.goto(item, {focusElement: this.shouldFocus()});\n }\n\n /** Closes the specified menu item after a delay. */\n private _closeItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n if (!this._closeTimeout) {\n this._closeTimeout = setTimeout(() => {\n item.close();\n this._closeTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n }\n\n /** Opens the specified menu item after a delay. */\n private _openItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n this._openTimeout = setTimeout(() => {\n item.open();\n this._openTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n\n /** Handles mouseout events for the menu. */\n onMouseOut(event: MouseEvent) {\n this._clearOpenTimeout();\n\n if (this.isFocused()) {\n return;\n }\n\n const root = this.root();\n const parent = this.inputs.parent();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!root || !parent || parent instanceof MenuTriggerPattern) {\n return;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (!grandparent || grandparent instanceof MenuBarPattern) {\n return;\n }\n\n if (!grandparent.inputs.element()?.contains(relatedTarget)) {\n parent.close();\n }\n }\n\n /** Handles click events for the menu. */\n onClick(event: MouseEvent) {\n const relatedTarget = _getEventTarget<Node>(event);\n const item = this.inputs.items().find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n item.open();\n this.listBehavior.goto(item);\n this.submit(item);\n }\n }\n\n /** Handles focusin events for the menu. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles the focusout event for the menu. */\n onFocusOut(event: FocusEvent) {\n const parent = this.inputs.parent();\n const parentEl = parent?.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!relatedTarget) {\n this.isFocused.set(false);\n this.inputs.parent()?.close({refocus: true});\n }\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n const siblings = grandparent?.inputs.items().filter(i => i !== parent);\n const item = siblings?.find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n return;\n }\n }\n\n if (\n this.visible() &&\n !parentEl?.contains(relatedTarget) &&\n !this.inputs.element()?.contains(relatedTarget)\n ) {\n this.isFocused.set(false);\n this.inputs.parent()?.close();\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n this.inputs.activeItem()?.close();\n this.listBehavior.prev();\n }\n\n /** Focuses the next menu item. */\n next() {\n this.inputs.activeItem()?.close();\n this.listBehavior.next();\n }\n\n /** Focuses the first menu item. */\n first() {\n this.inputs.activeItem()?.close();\n this.listBehavior.first();\n }\n\n /** Focuses the last menu item. */\n last() {\n this.inputs.activeItem()?.close();\n this.listBehavior.last();\n }\n\n /** Triggers the active menu item. */\n trigger() {\n this.inputs.activeItem()?.hasPopup()\n ? this.inputs.activeItem()?.open({first: true})\n : this.submit();\n }\n\n /** Submits the menu. */\n submit(item = this.inputs.activeItem()) {\n if (!item || item.disabled() || item.submenu()) {\n return;\n }\n\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n root?.inputs.menu()?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuBarPattern) {\n root.close();\n root?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n root?.inputs.itemSelected?.(item.value());\n }\n }\n\n /** Collapses the current menu or focuses the previous item in the menubar. */\n collapse() {\n const root = this.root();\n const parent = this.inputs.parent();\n\n if (parent instanceof MenuItemPattern && !(parent.inputs.parent() instanceof MenuBarPattern)) {\n parent.close({refocus: true});\n } else if (root instanceof MenuBarPattern) {\n root.prev();\n }\n }\n\n /** Expands the current menu or focuses the next item in the menubar. */\n expand() {\n const root = this.root();\n const activeItem = this.inputs.activeItem();\n\n if (activeItem?.submenu()) {\n activeItem.open({first: true});\n } else if (root instanceof MenuBarPattern) {\n root.next();\n }\n }\n\n /** Closes the menu. */\n close() {\n this.inputs.parent()?.close();\n }\n\n /** Closes the menu and all parent menus. */\n closeAll() {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n }\n\n if (root instanceof MenuBarPattern) {\n root.close();\n }\n\n if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n }\n }\n\n /** Clears any open or close timeouts for sub-menus. */\n _clearTimeouts() {\n this._clearOpenTimeout();\n this._clearCloseTimeout();\n }\n\n /** Clears the open timeout. */\n _clearOpenTimeout() {\n if (this._openTimeout) {\n clearTimeout(this._openTimeout);\n this._openTimeout = undefined;\n }\n }\n\n /** Clears the close timeout. */\n _clearCloseTimeout() {\n if (this._closeTimeout) {\n clearTimeout(this._closeTimeout);\n this._closeTimeout = undefined;\n }\n }\n}\n\n/** The menubar ui pattern class. */\nexport class MenuBarPattern<V> {\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** The key used to navigate to the next item. */\n private readonly _nextKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to navigate to the previous item. */\n private readonly _previousKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** Whether the menubar or any of its children are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menubar has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menubar is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(this._nextKey, () => this.next(), {ignoreRepeat: false})\n .on(this._previousKey, () => this.prev(), {ignoreRepeat: false})\n .on('End', () => this.listBehavior.last())\n .on('Home', () => this.listBehavior.first())\n .on('Enter', () => this.inputs.activeItem()?.open({first: true}))\n .on('ArrowUp', () => this.inputs.activeItem()?.open({last: true}))\n .on('ArrowDown', () => this.inputs.activeItem()?.open({first: true}))\n .on(this.dynamicSpaceKey, () => this.inputs.activeItem()?.open({first: true}))\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuBarInputs<V>) {\n this.listBehavior = new List<MenuItemPattern<V>, V>(inputs);\n }\n\n /** Sets the default state for the menubar. */\n setDefaultState() {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.inputs.activeItem.set(firstFocusable);\n }\n }\n\n /** Sets the default active state of the menubar before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles click events for the menu bar. */\n onClick(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n this.goto(item);\n item.expanded() ? item.close() : item.open();\n }\n\n /** Handles mouseover events for the menu bar. */\n onMouseOver(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (item) {\n this.goto(item, {focusElement: this.isFocused()});\n }\n }\n\n /** Handles focusin events for the menu bar. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu bar. */\n onFocusOut(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!this.inputs.element()?.contains(relatedTarget)) {\n this.isFocused.set(false);\n this.close();\n }\n }\n\n /** Goes to and optionally focuses the specified menu item. */\n goto(item: MenuItemPattern<V>, opts?: {focusElement?: boolean}) {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.goto(item, opts);\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open();\n }\n\n if (item === prevItem) {\n if (item.expanded() && item.submenu()?.inputs.activeItem()) {\n item.submenu()?.inputs.activeItem()?.close();\n item.submenu()?.listBehavior.unfocus();\n }\n }\n }\n\n /** Focuses the next menu item. */\n next() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.next();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.prev();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Closes the menubar and refocuses the root menu bar item. */\n close() {\n this.inputs.activeItem()?.close({refocus: this.isFocused()});\n }\n}\n\n/** The menu trigger ui pattern class. */\nexport class MenuTriggerPattern<V> {\n /** Whether the menu trigger is expanded. */\n readonly expanded = signal(false);\n\n /** Whether the menu trigger has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The pending focus target when the menu is opened before the menu instance is available. */\n readonly pendingFocus = signal<'first' | 'last' | undefined>(undefined);\n\n /** The role of the menu trigger. */\n readonly role = () => 'button';\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = () => true;\n\n /** The menu associated with the trigger. */\n readonly menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The tab index of the menu trigger. */\n readonly tabIndex = computed(() =>\n this.expanded() && this.menu()?.inputs.activeItem() ? -1 : 0,\n );\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu trigger. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(' ', () => this.open({first: true}))\n .on('Enter', () => this.open({first: true}))\n .on('ArrowDown', () => this.open({first: true}))\n .on('ArrowUp', () => this.open({last: true}))\n .on('Escape', () => this.close({refocus: true}));\n });\n\n constructor(readonly inputs: MenuTriggerInputs<V>) {\n this.menu = this.inputs.menu;\n }\n\n /** Flushes any pending focus when the menu instance becomes available. */\n pendingFocusEffect(): void {\n const menu = this.inputs.menu();\n const intent = this.pendingFocus();\n if (menu && intent) {\n if (intent === 'first') {\n menu.first();\n } else if (intent === 'last') {\n menu.last();\n }\n this.pendingFocus.set(undefined);\n }\n }\n\n /** Handles keyboard events for the menu trigger. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n }\n\n /** Handles click events for the menu trigger. */\n onClick() {\n if (!this.inputs.disabled()) {\n this.expanded() ? this.close() : this.open({first: true});\n }\n }\n\n /** Handles focusin events for the menu trigger. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu trigger. */\n onFocusOut(event: FocusEvent) {\n const element = this.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (\n this.expanded() &&\n !element?.contains(relatedTarget) &&\n !this.inputs.menu()?.inputs.element()?.contains(relatedTarget)\n ) {\n this.close();\n }\n }\n\n /** Opens the menu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n this.expanded.set(true);\n\n if (opts?.first) {\n this.pendingFocus.set('first');\n } else if (opts?.last) {\n this.pendingFocus.set('last');\n }\n }\n\n /** Closes the menu. */\n close(opts: {refocus?: boolean} = {}) {\n this.expanded.set(false);\n this.pendingFocus.set(undefined);\n this.menu()?.listBehavior.unfocus();\n\n if (opts.refocus) {\n this.inputs.element()?.focus();\n }\n\n let menuitems = this.inputs.menu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n }\n }\n}\n\n/** The menu item ui pattern class. */\nexport class MenuItemPattern<V> implements ListItem<V> {\n /** The value of the menu item. */\n readonly value: SignalLike<V>;\n\n /** The unique ID of the menu item. */\n readonly id: SignalLike<string>;\n\n /** Whether the menu item is disabled. */\n readonly disabled = () => this.inputs.parent()?.disabled() || this.inputs.disabled();\n\n /** The search term for the menu item. */\n readonly searchTerm: SignalLike<string>;\n\n /** The element of the menu item. */\n readonly element: SignalLike<HTMLElement | undefined>;\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this.inputs.parent()?.inputs.activeItem() === this);\n\n /** Whether the menu item has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The tab index of the menu item. */\n readonly tabIndex = computed(() => {\n if (this.submenu() && this.submenu()?.inputs.activeItem()) {\n return -1;\n }\n return this.inputs.parent()?.listBehavior.getItemTabindex(this) ?? -1;\n });\n\n /** The position of the menu item in the menu. */\n readonly index = computed(() => this.inputs.parent()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the menu item is expanded. */\n readonly expanded = computed(() => (this.submenu() ? this._expanded() : null));\n\n /** Whether the menu item is expanded. */\n readonly _expanded = signal(false);\n\n /** The ID of the menu that the menu item controls. */\n readonly controls = signal<string | undefined>(undefined);\n\n /** The role of the menu item. */\n readonly role = () => this.inputs.role();\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => !!this.submenu());\n\n /** The submenu associated with the menu item. */\n readonly submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** Whether the menu item is selectable. */\n readonly selectable: SignalLike<boolean>;\n\n constructor(readonly inputs: MenuItemInputs<V>) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.element = inputs.element;\n this.submenu = this.inputs.submenu;\n this.searchTerm = inputs.searchTerm;\n this.selectable = computed(() => !this.submenu());\n }\n\n /** Opens the submenu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n if (this.disabled()) {\n return;\n }\n\n this._expanded.set(true);\n\n if (opts?.first) {\n this.submenu()?.first();\n }\n if (opts?.last) {\n this.submenu()?.last();\n }\n }\n\n /** Closes the submenu. */\n close(opts: {refocus?: boolean} = {}) {\n this._expanded.set(false);\n\n if (opts.refocus) {\n this.inputs.parent()?.listBehavior.goto(this);\n }\n\n let menuitems = this.inputs.submenu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n\n const parent = menuitem?.inputs.parent();\n\n if (parent instanceof MenuPattern) {\n parent._clearTimeouts();\n }\n }\n }\n\n /** Handles focusin events for the menu item. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_menu-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/private/menu/menu.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 {_getEventTarget} from '@angular/cdk/platform';\nimport {KeyboardEventManager} from '../behaviors/event-manager';\nimport {computed, signal, SignalLike} from '../behaviors/signal-like/signal-like';\nimport {List, ListInputs, ListItem} from '../behaviors/list/list';\n\n/** The inputs for the MenuBarPattern class. */\nexport interface MenuBarInputs<V> extends ListInputs<MenuItemPattern<V>, V> {\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n}\n\n/** The inputs for the MenuPattern class. */\nexport interface MenuInputs<V> extends Omit<ListInputs<MenuItemPattern<V>, V>, 'value'> {\n /** The unique ID of the menu. */\n id: SignalLike<string>;\n\n /** The menu items contained in the menu. */\n items: SignalLike<MenuItemPattern<V>[]>;\n\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuTriggerPattern<V> | MenuItemPattern<V> | undefined>;\n\n /** Callback function triggered when a menu item is selected. */\n itemSelected?: (value: V) => void;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** The delay in milliseconds before expanding sub-menus on hover. */\n expansionDelay: SignalLike<number>;\n}\n\n/** The inputs for the MenuTriggerPattern class. */\nexport interface MenuTriggerInputs<V> {\n /** A reference to the menu trigger element. */\n element: SignalLike<HTMLElement | undefined>;\n\n /** A reference to the menu associated with the trigger. */\n menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The text direction of the menu bar. */\n textDirection: SignalLike<'ltr' | 'rtl'>;\n\n /** Whether the menu trigger is disabled. */\n disabled: SignalLike<boolean>;\n}\n\n/** The inputs for the MenuItemPattern class. */\nexport interface MenuItemInputs<V> extends Omit<ListItem<V>, 'index' | 'selectable'> {\n /** A reference to the parent menu or menu trigger. */\n parent: SignalLike<MenuPattern<V> | MenuBarPattern<V> | undefined>;\n\n /** A reference to the submenu associated with the menu item. */\n submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The role of the menu item. */\n role: SignalLike<'menuitem' | 'menuitemradio' | 'menuitemcheckbox'>;\n}\n\n/** The menu ui pattern class. */\nexport class MenuPattern<V> {\n /** The unique ID of the menu. */\n readonly id: SignalLike<string>;\n\n /** The role of the menu. */\n readonly role = () => 'menu';\n\n /** Whether the menu is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Whether the menu is visible. */\n readonly visible = computed(() =>\n this.inputs.parent() ? !!this.inputs.parent()?.expanded() : true,\n );\n\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** Whether the menu or any of its child elements are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menu has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menu trigger has been hovered. */\n readonly hasBeenHovered = signal(false);\n\n /** Items currently inside the menu. */\n readonly items = () => this.inputs.items();\n\n /** Timeout used to open sub-menus on hover. */\n private _openTimeout: ReturnType<typeof setTimeout> | undefined;\n\n /** Timeout used to close sub-menus on hover out. */\n private _closeTimeout: ReturnType<typeof setTimeout> | undefined;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** Whether the menu should be focused on mouse over. */\n readonly shouldFocus = computed(() => {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n return true;\n }\n\n if (root instanceof MenuBarPattern || root instanceof MenuPattern) {\n return root.isFocused();\n }\n\n return false;\n });\n\n /** The key used to expand sub-menus. */\n private readonly _expandKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to collapse sub-menus. */\n private readonly _collapseKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** The root of the menu. */\n readonly root: SignalLike<\n MenuTriggerPattern<V> | MenuBarPattern<V> | MenuPattern<V> | undefined\n > = computed(() => {\n const parent = this.inputs.parent();\n\n if (!parent) {\n return this;\n }\n\n if (parent instanceof MenuTriggerPattern) {\n return parent;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (grandparent instanceof MenuBarPattern) {\n return grandparent;\n }\n\n return grandparent?.root();\n });\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on('ArrowDown', () => this.next(), {ignoreRepeat: false})\n .on('ArrowUp', () => this.prev(), {ignoreRepeat: false})\n .on('Home', () => this.first())\n .on('End', () => this.last())\n .on('Enter', () => this.trigger())\n .on('Escape', () => this.closeAll())\n .on(this._expandKey, () => this.expand())\n .on(this._collapseKey, () => this.collapse())\n .on(this.dynamicSpaceKey, () => this.trigger())\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuInputs<V>) {\n this.id = inputs.id;\n this.listBehavior = new List<MenuItemPattern<V>, V>({\n ...inputs,\n value: signal([]),\n });\n }\n\n /** Returns a set of violations */\n validate(): string[] {\n const violations: string[] = [];\n\n const values = this.inputs.items().map(i => i.value());\n const duplicates = values.filter((val, idx) => values.indexOf(val) !== idx);\n if (duplicates.length > 0) {\n violations.push(`Duplicate value '${duplicates[0]}' detected inside ngMenu.`);\n }\n\n return violations;\n }\n\n /** Sets the default state for the menu. */\n setDefaultState() {\n if (!this.inputs.parent()) {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.listBehavior.goto(firstFocusable, {focusElement: false});\n }\n }\n }\n\n /** Sets the default active state of the menu before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted() || this.hasBeenHovered()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles mouseover events for the menu. */\n onMouseOver(event: MouseEvent) {\n if (!this.visible()) {\n return;\n }\n\n this.hasBeenHovered.set(true);\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n const parent = this.inputs.parent();\n const activeItem = this.inputs.activeItem();\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n if (grandparent instanceof MenuPattern) {\n grandparent._clearTimeouts();\n grandparent.listBehavior.goto(parent, {focusElement: false});\n }\n }\n\n if (activeItem && activeItem !== item) {\n this._closeItem(activeItem);\n }\n\n if (item.expanded()) {\n this._clearCloseTimeout();\n }\n\n this._openItem(item);\n this.listBehavior.goto(item, {focusElement: this.shouldFocus()});\n }\n\n /** Closes the specified menu item after a delay. */\n private _closeItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n if (!this._closeTimeout) {\n this._closeTimeout = setTimeout(() => {\n item.close();\n this._closeTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n }\n\n /** Opens the specified menu item after a delay. */\n private _openItem(item: MenuItemPattern<V>) {\n this._clearOpenTimeout();\n\n this._openTimeout = setTimeout(() => {\n item.open();\n this._openTimeout = undefined;\n }, this.inputs.expansionDelay());\n }\n\n /** Handles mouseout events for the menu. */\n onMouseOut(event: MouseEvent) {\n this._clearOpenTimeout();\n\n if (this.isFocused()) {\n return;\n }\n\n const root = this.root();\n const parent = this.inputs.parent();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!root || !parent || parent instanceof MenuTriggerPattern) {\n return;\n }\n\n const grandparent = parent.inputs.parent();\n\n if (!grandparent || grandparent instanceof MenuBarPattern) {\n return;\n }\n\n if (!grandparent.inputs.element()?.contains(relatedTarget)) {\n parent.close();\n }\n }\n\n /** Handles click events for the menu. */\n onClick(event: MouseEvent) {\n const relatedTarget = _getEventTarget<Node>(event);\n const item = this.inputs.items().find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n item.open();\n this.listBehavior.goto(item);\n this.submit(item);\n }\n }\n\n /** Handles focusin events for the menu. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles the focusout event for the menu. */\n onFocusOut(event: FocusEvent) {\n const parent = this.inputs.parent();\n const parentEl = parent?.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!relatedTarget) {\n this.isFocused.set(false);\n this.inputs.parent()?.close({refocus: true});\n }\n\n if (parent instanceof MenuItemPattern) {\n const grandparent = parent.inputs.parent();\n const siblings = grandparent?.inputs.items().filter(i => i !== parent);\n const item = siblings?.find(i => i.element()?.contains(relatedTarget));\n\n if (item) {\n return;\n }\n }\n\n if (\n this.visible() &&\n !parentEl?.contains(relatedTarget) &&\n !this.inputs.element()?.contains(relatedTarget)\n ) {\n this.isFocused.set(false);\n this.inputs.parent()?.close();\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n this.inputs.activeItem()?.close();\n this.listBehavior.prev();\n }\n\n /** Focuses the next menu item. */\n next() {\n this.inputs.activeItem()?.close();\n this.listBehavior.next();\n }\n\n /** Focuses the first menu item. */\n first() {\n this.inputs.activeItem()?.close();\n this.listBehavior.first();\n }\n\n /** Focuses the last menu item. */\n last() {\n this.inputs.activeItem()?.close();\n this.listBehavior.last();\n }\n\n /** Triggers the active menu item. */\n trigger() {\n this.inputs.activeItem()?.hasPopup()\n ? this.inputs.activeItem()?.open({first: true})\n : this.submit();\n }\n\n /** Submits the menu. */\n submit(item = this.inputs.activeItem()) {\n if (!item || item.disabled() || item.submenu()) {\n return;\n }\n\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n root?.inputs.menu()?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuBarPattern) {\n root.close();\n root?.inputs.itemSelected?.(item.value());\n } else if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n root?.inputs.itemSelected?.(item.value());\n }\n }\n\n /** Collapses the current menu or focuses the previous item in the menubar. */\n collapse() {\n const root = this.root();\n const parent = this.inputs.parent();\n\n if (parent instanceof MenuItemPattern && !(parent.inputs.parent() instanceof MenuBarPattern)) {\n parent.close({refocus: true});\n } else if (root instanceof MenuBarPattern) {\n root.prev();\n }\n }\n\n /** Expands the current menu or focuses the next item in the menubar. */\n expand() {\n const root = this.root();\n const activeItem = this.inputs.activeItem();\n\n if (activeItem?.submenu()) {\n activeItem.open({first: true});\n } else if (root instanceof MenuBarPattern) {\n root.next();\n }\n }\n\n /** Closes the menu. */\n close() {\n this.inputs.parent()?.close();\n }\n\n /** Closes the menu and all parent menus. */\n closeAll() {\n const root = this.root();\n\n if (root instanceof MenuTriggerPattern) {\n root.close({refocus: true});\n }\n\n if (root instanceof MenuBarPattern) {\n root.close();\n }\n\n if (root instanceof MenuPattern) {\n root.inputs.activeItem()?.close({refocus: true});\n }\n }\n\n /** Clears any open or close timeouts for sub-menus. */\n _clearTimeouts() {\n this._clearOpenTimeout();\n this._clearCloseTimeout();\n }\n\n /** Clears the open timeout. */\n _clearOpenTimeout() {\n if (this._openTimeout) {\n clearTimeout(this._openTimeout);\n this._openTimeout = undefined;\n }\n }\n\n /** Clears the close timeout. */\n _clearCloseTimeout() {\n if (this._closeTimeout) {\n clearTimeout(this._closeTimeout);\n this._closeTimeout = undefined;\n }\n }\n}\n\n/** The menubar ui pattern class. */\nexport class MenuBarPattern<V> {\n /** Controls list behavior for the menu items. */\n readonly listBehavior: List<MenuItemPattern<V>, V>;\n\n /** The tab index of the menu. */\n readonly tabIndex = () => this.listBehavior.tabIndex();\n\n /** The key used to navigate to the next item. */\n private readonly _nextKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n });\n\n /** The key used to navigate to the previous item. */\n private readonly _previousKey = computed(() => {\n return this.inputs.textDirection() === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n });\n\n /** Represents the space key. Does nothing when the user is actively using typeahead. */\n readonly dynamicSpaceKey = computed(() => (this.listBehavior.isTyping() ? '' : ' '));\n\n /** The regexp used to decide if a key should trigger typeahead. */\n readonly typeaheadRegexp = /^.$/;\n\n /** Whether the menubar or any of its children are currently focused. */\n readonly isFocused = signal(false);\n\n /** Whether the menubar has been interacted with. */\n readonly hasBeenInteracted = signal(false);\n\n /** Whether the menubar is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(this._nextKey, () => this.next(), {ignoreRepeat: false})\n .on(this._previousKey, () => this.prev(), {ignoreRepeat: false})\n .on('End', () => this.listBehavior.last())\n .on('Home', () => this.listBehavior.first())\n .on('Enter', () => this.inputs.activeItem()?.open({first: true}))\n .on('ArrowUp', () => this.inputs.activeItem()?.open({last: true}))\n .on('ArrowDown', () => this.inputs.activeItem()?.open({first: true}))\n .on(this.dynamicSpaceKey, () => this.inputs.activeItem()?.open({first: true}))\n .on(this.typeaheadRegexp, e => this.listBehavior.search(e.key));\n });\n\n constructor(readonly inputs: MenuBarInputs<V>) {\n this.listBehavior = new List<MenuItemPattern<V>, V>(inputs);\n }\n\n /** Sets the default state for the menubar. */\n setDefaultState() {\n const firstFocusable = this.listBehavior.navigationBehavior.peekFirst();\n if (firstFocusable) {\n this.inputs.activeItem.set(firstFocusable);\n }\n }\n\n /** Sets the default active state of the menubar before receiving interaction for the first time. */\n setDefaultStateEffect(): void {\n if (this.hasBeenInteracted()) return;\n\n if (this.inputs.items().length > 0) {\n this.setDefaultState();\n }\n }\n\n /** Handles keyboard events for the menu. */\n onKeydown(event: KeyboardEvent) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n\n /** Handles click events for the menu bar. */\n onClick(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (!item) {\n return;\n }\n\n this.goto(item);\n item.expanded() ? item.close() : item.open();\n }\n\n /** Handles mouseover events for the menu bar. */\n onMouseOver(event: MouseEvent) {\n const item = this.inputs.items().find(i => i.element()?.contains(_getEventTarget(event)));\n\n if (item) {\n this.goto(item, {focusElement: this.isFocused()});\n }\n }\n\n /** Handles focusin events for the menu bar. */\n onFocusIn() {\n this.isFocused.set(true);\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu bar. */\n onFocusOut(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!this.inputs.element()?.contains(relatedTarget)) {\n this.isFocused.set(false);\n this.close();\n }\n }\n\n /** Goes to and optionally focuses the specified menu item. */\n goto(item: MenuItemPattern<V>, opts?: {focusElement?: boolean}) {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.goto(item, opts);\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open();\n }\n\n if (item === prevItem) {\n if (item.expanded() && item.submenu()?.inputs.activeItem()) {\n item.submenu()?.inputs.activeItem()?.close();\n item.submenu()?.listBehavior.unfocus();\n }\n }\n }\n\n /** Focuses the next menu item. */\n next() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.next();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Focuses the previous menu item. */\n prev() {\n const prevItem = this.inputs.activeItem();\n this.listBehavior.prev();\n\n if (prevItem?.expanded()) {\n prevItem?.close();\n this.inputs.activeItem()?.open({first: true});\n }\n }\n\n /** Closes the menubar and refocuses the root menu bar item. */\n close() {\n this.inputs.activeItem()?.close({refocus: this.isFocused()});\n }\n}\n\n/** The menu trigger ui pattern class. */\nexport class MenuTriggerPattern<V> {\n /** Whether the menu trigger is expanded. */\n readonly expanded = signal(false);\n\n /** Whether the menu trigger has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The pending focus target when the menu is opened before the menu instance is available. */\n readonly pendingFocus = signal<'first' | 'last' | undefined>(undefined);\n\n /** The role of the menu trigger. */\n readonly role = () => 'button';\n\n /** Whether the menu trigger has a popup. */\n readonly hasPopup = () => true;\n\n /** The menu associated with the trigger. */\n readonly menu: SignalLike<MenuPattern<V> | undefined>;\n\n /** The tab index of the menu trigger. */\n readonly tabIndex = computed(() =>\n this.expanded() && this.menu()?.inputs.activeItem() ? -1 : 0,\n );\n\n /** Whether the menu trigger is disabled. */\n readonly disabled = () => this.inputs.disabled();\n\n /** Handles keyboard events for the menu trigger. */\n readonly keydownManager = computed(() => {\n return new KeyboardEventManager()\n .on(' ', () => this.open({first: true}))\n .on('Enter', () => this.open({first: true}))\n .on('ArrowDown', () => this.open({first: true}))\n .on('ArrowUp', () => this.open({last: true}))\n .on('Escape', () => this.close({refocus: true}));\n });\n\n constructor(readonly inputs: MenuTriggerInputs<V>) {\n this.menu = this.inputs.menu;\n }\n\n /** Flushes any pending focus when the menu instance becomes available. */\n pendingFocusEffect(): void {\n const menu = this.inputs.menu();\n const intent = this.pendingFocus();\n const items = menu?.items();\n\n // We check the items so that we don't try calling into\n // `first/last` until the items are actually available.\n if (menu && intent && items?.length) {\n if (intent === 'first') {\n menu.first();\n } else if (intent === 'last') {\n menu.last();\n }\n this.pendingFocus.set(undefined);\n }\n }\n\n /** Handles keyboard events for the menu trigger. */\n onKeydown(event: KeyboardEvent) {\n if (!this.inputs.disabled()) {\n this.hasBeenInteracted.set(true);\n this.keydownManager().handle(event);\n }\n }\n\n /** Handles click events for the menu trigger. */\n onClick() {\n if (!this.inputs.disabled()) {\n this.expanded() ? this.close() : this.open({first: true});\n }\n }\n\n /** Handles focusin events for the menu trigger. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n\n /** Handles focusout events for the menu trigger. */\n onFocusOut(event: FocusEvent) {\n const element = this.inputs.element();\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (\n this.expanded() &&\n !element?.contains(relatedTarget) &&\n !this.inputs.menu()?.inputs.element()?.contains(relatedTarget)\n ) {\n this.close();\n }\n }\n\n /** Opens the menu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n this.expanded.set(true);\n\n if (opts?.first) {\n this.pendingFocus.set('first');\n } else if (opts?.last) {\n this.pendingFocus.set('last');\n }\n }\n\n /** Closes the menu. */\n close(opts: {refocus?: boolean} = {}) {\n this.expanded.set(false);\n this.pendingFocus.set(undefined);\n this.menu()?.listBehavior.unfocus();\n\n if (opts.refocus) {\n this.inputs.element()?.focus();\n }\n\n let menuitems = this.inputs.menu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n }\n }\n}\n\n/** The menu item ui pattern class. */\nexport class MenuItemPattern<V> implements ListItem<V> {\n /** The value of the menu item. */\n readonly value: SignalLike<V>;\n\n /** The unique ID of the menu item. */\n readonly id: SignalLike<string>;\n\n /** Whether the menu item is disabled. */\n readonly disabled = () => this.inputs.parent()?.disabled() || this.inputs.disabled();\n\n /** The search term for the menu item. */\n readonly searchTerm: SignalLike<string>;\n\n /** The element of the menu item. */\n readonly element: SignalLike<HTMLElement | undefined>;\n\n /** Whether the menu item is active. */\n readonly active = computed(() => this.inputs.parent()?.inputs.activeItem() === this);\n\n /** Whether the menu item has received interaction. */\n readonly hasBeenInteracted = signal(false);\n\n /** The tab index of the menu item. */\n readonly tabIndex = computed(() => {\n if (this.submenu() && this.submenu()?.inputs.activeItem()) {\n return -1;\n }\n return this.inputs.parent()?.listBehavior.getItemTabindex(this) ?? -1;\n });\n\n /** The position of the menu item in the menu. */\n readonly index = computed(() => this.inputs.parent()?.inputs.items().indexOf(this) ?? -1);\n\n /** Whether the menu item is expanded. */\n readonly expanded = computed(() => (this.submenu() ? this._expanded() : null));\n\n /** Whether the menu item is expanded. */\n readonly _expanded = signal(false);\n\n /** The ID of the menu that the menu item controls. */\n readonly controls = signal<string | undefined>(undefined);\n\n /** The role of the menu item. */\n readonly role = () => this.inputs.role();\n\n /** Whether the menu item has a popup. */\n readonly hasPopup = computed(() => !!this.submenu());\n\n /** The submenu associated with the menu item. */\n readonly submenu: SignalLike<MenuPattern<V> | undefined>;\n\n /** Whether the menu item is selectable. */\n readonly selectable: SignalLike<boolean>;\n\n constructor(readonly inputs: MenuItemInputs<V>) {\n this.id = inputs.id;\n this.value = inputs.value;\n this.element = inputs.element;\n this.submenu = this.inputs.submenu;\n this.searchTerm = inputs.searchTerm;\n this.selectable = computed(() => !this.submenu());\n }\n\n /** Opens the submenu. */\n open(opts?: {first?: boolean; last?: boolean}) {\n if (this.disabled()) {\n return;\n }\n\n this._expanded.set(true);\n\n if (opts?.first) {\n this.submenu()?.first();\n }\n if (opts?.last) {\n this.submenu()?.last();\n }\n }\n\n /** Closes the submenu. */\n close(opts: {refocus?: boolean} = {}) {\n this._expanded.set(false);\n\n if (opts.refocus) {\n this.inputs.parent()?.listBehavior.goto(this);\n }\n\n let menuitems = this.inputs.submenu()?.inputs.items() ?? [];\n\n while (menuitems.length) {\n const menuitem = menuitems.pop();\n menuitem?._expanded.set(false);\n menuitem?.inputs.parent()?.listBehavior.unfocus();\n menuitems = menuitems.concat(menuitem?.submenu()?.inputs.items() ?? []);\n\n const parent = menuitem?.inputs.parent();\n\n if (parent instanceof MenuPattern) {\n parent._clearTimeouts();\n }\n }\n }\n\n /** Handles focusin events for the menu item. */\n onFocusIn() {\n this.hasBeenInteracted.set(true);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import './_click-event-manager-chunk.mjs';
14
14
  class AccordionContent {
15
15
  static ɵfac = i0.ɵɵngDeclareFactory({
16
16
  minVersion: "12.0.0",
17
- version: "22.1.2",
17
+ version: "22.1.4",
18
18
  ngImport: i0,
19
19
  type: AccordionContent,
20
20
  deps: [],
@@ -22,7 +22,7 @@ class AccordionContent {
22
22
  });
23
23
  static ɵdir = i0.ɵɵngDeclareDirective({
24
24
  minVersion: "14.0.0",
25
- version: "22.1.2",
25
+ version: "22.1.4",
26
26
  type: AccordionContent,
27
27
  isStandalone: true,
28
28
  selector: "ng-template[ngAccordionContent]",
@@ -34,7 +34,7 @@ class AccordionContent {
34
34
  }
35
35
  i0.ɵɵngDeclareClassMetadata({
36
36
  minVersion: "12.0.0",
37
- version: "22.1.2",
37
+ version: "22.1.4",
38
38
  ngImport: i0,
39
39
  type: AccordionContent,
40
40
  decorators: [{
@@ -92,7 +92,7 @@ class AccordionPanel {
92
92
  }
93
93
  static ɵfac = i0.ɵɵngDeclareFactory({
94
94
  minVersion: "12.0.0",
95
- version: "22.1.2",
95
+ version: "22.1.4",
96
96
  ngImport: i0,
97
97
  type: AccordionPanel,
98
98
  deps: [],
@@ -100,7 +100,7 @@ class AccordionPanel {
100
100
  });
101
101
  static ɵdir = i0.ɵɵngDeclareDirective({
102
102
  minVersion: "17.2.0",
103
- version: "22.1.2",
103
+ version: "22.1.4",
104
104
  type: AccordionPanel,
105
105
  isStandalone: true,
106
106
  selector: "[ngAccordionPanel]",
@@ -140,7 +140,7 @@ class AccordionPanel {
140
140
  }
141
141
  i0.ɵɵngDeclareClassMetadata({
142
142
  minVersion: "12.0.0",
143
- version: "22.1.2",
143
+ version: "22.1.4",
144
144
  ngImport: i0,
145
145
  type: AccordionPanel,
146
146
  decorators: [{
@@ -245,7 +245,7 @@ class AccordionGroup {
245
245
  }
246
246
  static ɵfac = i0.ɵɵngDeclareFactory({
247
247
  minVersion: "12.0.0",
248
- version: "22.1.2",
248
+ version: "22.1.4",
249
249
  ngImport: i0,
250
250
  type: AccordionGroup,
251
251
  deps: [],
@@ -253,7 +253,7 @@ class AccordionGroup {
253
253
  });
254
254
  static ɵdir = i0.ɵɵngDeclareDirective({
255
255
  minVersion: "17.1.0",
256
- version: "22.1.2",
256
+ version: "22.1.4",
257
257
  type: AccordionGroup,
258
258
  isStandalone: true,
259
259
  selector: "[ngAccordionGroup]",
@@ -304,7 +304,7 @@ class AccordionGroup {
304
304
  }
305
305
  i0.ɵɵngDeclareClassMetadata({
306
306
  minVersion: "12.0.0",
307
- version: "22.1.2",
307
+ version: "22.1.4",
308
308
  ngImport: i0,
309
309
  type: AccordionGroup,
310
310
  decorators: [{
@@ -430,7 +430,7 @@ class AccordionTrigger {
430
430
  }
431
431
  static ɵfac = i0.ɵɵngDeclareFactory({
432
432
  minVersion: "12.0.0",
433
- version: "22.1.2",
433
+ version: "22.1.4",
434
434
  ngImport: i0,
435
435
  type: AccordionTrigger,
436
436
  deps: [],
@@ -438,7 +438,7 @@ class AccordionTrigger {
438
438
  });
439
439
  static ɵdir = i0.ɵɵngDeclareDirective({
440
440
  minVersion: "17.1.0",
441
- version: "22.1.2",
441
+ version: "22.1.4",
442
442
  type: AccordionTrigger,
443
443
  isStandalone: true,
444
444
  selector: "[ngAccordionTrigger]",
@@ -495,7 +495,7 @@ class AccordionTrigger {
495
495
  }
496
496
  i0.ɵɵngDeclareClassMetadata({
497
497
  minVersion: "12.0.0",
498
- version: "22.1.2",
498
+ version: "22.1.4",
499
499
  ngImport: i0,
500
500
  type: AccordionTrigger,
501
501
  decorators: [{
package/fesm2022/aria.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
 
3
- const VERSION = new Version('22.1.3');
3
+ const VERSION = new Version('22.1.5');
4
4
 
5
5
  export { VERSION };
6
6
  //# sourceMappingURL=aria.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.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 {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('22.1.3');\n"],"names":[],"mappings":";;MAWa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;;;"}
1
+ {"version":3,"file":"aria.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/version.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 {Version} from '@angular/core';\n\n/** Current version of the Aria package. */\nexport const VERSION = new Version('22.1.5');\n"],"names":[],"mappings":";;MAWa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;;;"}
@@ -89,7 +89,7 @@ class Combobox extends DeferredContentAware {
89
89
  }
90
90
  static ɵfac = i0.ɵɵngDeclareFactory({
91
91
  minVersion: "12.0.0",
92
- version: "22.1.2",
92
+ version: "22.1.4",
93
93
  ngImport: i0,
94
94
  type: Combobox,
95
95
  deps: [],
@@ -97,7 +97,7 @@ class Combobox extends DeferredContentAware {
97
97
  });
98
98
  static ɵdir = i0.ɵɵngDeclareDirective({
99
99
  minVersion: "17.1.0",
100
- version: "22.1.2",
100
+ version: "22.1.4",
101
101
  type: Combobox,
102
102
  isStandalone: true,
103
103
  selector: "[ngCombobox]",
@@ -194,7 +194,7 @@ class Combobox extends DeferredContentAware {
194
194
  }
195
195
  i0.ɵɵngDeclareClassMetadata({
196
196
  minVersion: "12.0.0",
197
- version: "22.1.2",
197
+ version: "22.1.4",
198
198
  ngImport: i0,
199
199
  type: Combobox,
200
200
  decorators: [{
@@ -320,7 +320,8 @@ class ComboboxPopup {
320
320
  debugName: "popupType"
321
321
  }] : []));
322
322
  _pattern = new ComboboxPopupPattern({
323
- ...this
323
+ ...this,
324
+ combobox: computed(() => this.combobox()._pattern)
324
325
  });
325
326
  ngOnInit() {
326
327
  this.combobox()._registerPopup(this);
@@ -337,7 +338,7 @@ class ComboboxPopup {
337
338
  }
338
339
  static ɵfac = i0.ɵɵngDeclareFactory({
339
340
  minVersion: "12.0.0",
340
- version: "22.1.2",
341
+ version: "22.1.4",
341
342
  ngImport: i0,
342
343
  type: ComboboxPopup,
343
344
  deps: [],
@@ -345,7 +346,7 @@ class ComboboxPopup {
345
346
  });
346
347
  static ɵdir = i0.ɵɵngDeclareDirective({
347
348
  minVersion: "17.1.0",
348
- version: "22.1.2",
349
+ version: "22.1.4",
349
350
  type: ComboboxPopup,
350
351
  isStandalone: true,
351
352
  selector: "ng-template[ngComboboxPopup]",
@@ -378,7 +379,7 @@ class ComboboxPopup {
378
379
  }
379
380
  i0.ɵɵngDeclareClassMetadata({
380
381
  minVersion: "12.0.0",
381
- version: "22.1.2",
382
+ version: "22.1.4",
382
383
  ngImport: i0,
383
384
  type: ComboboxPopup,
384
385
  decorators: [{
@@ -461,7 +462,7 @@ class ComboboxWidget {
461
462
  }
462
463
  static ɵfac = i0.ɵɵngDeclareFactory({
463
464
  minVersion: "12.0.0",
464
- version: "22.1.2",
465
+ version: "22.1.4",
465
466
  ngImport: i0,
466
467
  type: ComboboxWidget,
467
468
  deps: [],
@@ -469,7 +470,7 @@ class ComboboxWidget {
469
470
  });
470
471
  static ɵdir = i0.ɵɵngDeclareDirective({
471
472
  minVersion: "17.1.0",
472
- version: "22.1.2",
473
+ version: "22.1.4",
473
474
  type: ComboboxWidget,
474
475
  isStandalone: true,
475
476
  selector: "[ngComboboxWidget]",
@@ -494,7 +495,7 @@ class ComboboxWidget {
494
495
  }
495
496
  i0.ɵɵngDeclareClassMetadata({
496
497
  minVersion: "12.0.0",
497
- version: "22.1.2",
498
+ version: "22.1.4",
498
499
  ngImport: i0,
499
500
  type: ComboboxWidget,
500
501
  decorators: [{
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-popup.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-widget.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 {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n Renderer2,\n} from '@angular/core';\nimport {DeferredContentAware, ComboboxPattern, tabIndexTransform} from '@angular/aria/private';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/**\n * A directive that coordinates a combobox trigger element and its associated popup widget.\n *\n * The `ngCombobox` directive is applied directly to the interactive trigger element, which can be\n * either an editable `<input>` (for search/autocomplete behaviors) or a non-editable element like\n * a `<div>` (for custom select dropdowns). It manages focus and expansion states, coordinates autocomplete\n * suggestions (if editable), and forwards navigation keys down into the active popup.\n *\n * ### Example 1: Editable Autocomplete Input\n * ```html\n * <input ngCombobox #combobox=\"ngCombobox\" [(value)]=\"searchQuery\" [(expanded)]=\"isExpanded\" />\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n *\n * ### Example 2: Non-Editable Custom Select Dropdown\n * ```html\n * <div ngCombobox #combobox=\"ngCombobox\" [(expanded)]=\"isExpanded\" class=\"select-trigger\">\n * {{selectedValue}}\n * </div>\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n host: {\n 'role': 'combobox',\n '[attr.aria-autocomplete]': '_pattern.autocomplete()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-readonly]': '_pattern.ariaReadonly()',\n '[attr.aria-expanded]': '_pattern.isExpanded()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[attr.aria-controls]': '_pattern.popupId()',\n '[attr.aria-haspopup]': '_pattern.popupType()',\n '[attr.tabindex]':\n 'disabled() && !softDisabled() ? -1 : (tabIndex() !== undefined ? tabIndex() : 0)',\n '[attr.disabled]': '_pattern.nativeDisabled()',\n '[attr.readonly]': '_pattern.nativeReadonly()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusin)': '_pattern.onFocusin()',\n '(focusout)': '_pattern.onFocusout()',\n '(click)': '_pattern.onClick($event)',\n '(input)': '_pattern.onInput($event)',\n },\n})\nexport class Combobox extends DeferredContentAware implements OnInit {\n private readonly _renderer = inject(Renderer2);\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** A reference to the input element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The popup associated with the combobox. */\n readonly _popup = signal<ComboboxPopup | undefined>(undefined);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is soft disabled (remains focusable). */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the combobox should always remain expanded. */\n readonly alwaysExpanded = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the combobox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** Whether the combobox is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** The value of the combobox input. */\n readonly value = model<string>('');\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = input<string | undefined>(undefined);\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern({\n ...this,\n readonly: () => this.readonly(),\n element: () => this.element,\n expandable: () => true,\n popup: computed(() => this._popup()?._pattern),\n });\n\n constructor() {\n super();\n\n afterRenderEffect({write: () => this._pattern.keyboardEventRelayEffect()});\n afterRenderEffect(() => {\n this.contentVisible.set(this._pattern.isExpanded());\n });\n\n if (this._pattern.isEditable()) {\n afterRenderEffect(() => {\n this._renderer.setProperty(this.element, 'value', this.value());\n });\n afterRenderEffect(() => {\n this._pattern.highlightEffect();\n });\n }\n }\n\n ngOnInit() {\n if (this.alwaysExpanded()) {\n this.expanded.set(true);\n }\n }\n\n /** Registers a popup with the combobox. */\n _registerPopup(popup: ComboboxPopup) {\n this._popup.set(popup);\n }\n\n /** Unregisters the popup from the combobox. */\n _unregisterPopup() {\n this._popup.set(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 {InjectionToken} from '@angular/core';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/** Token used to expose the combobox popup. */\nexport const COMBOBOX_POPUP = new InjectionToken<ComboboxPopup>('COMBOBOX_POPUP');\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 {computed, Directive, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {DeferredContent, ComboboxPopupPattern} from '@angular/aria/private';\nimport type {Combobox} from './combobox';\nimport type {ComboboxWidget} from './combobox-widget';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be any element with the `ngComboboxWidget` directive.\n *\n * ```html\n * <ng-template ngComboboxPopup>\n * <div ngComboboxWidget>\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n hostDirectives: [DeferredContent],\n providers: [{provide: COMBOBOX_POPUP, useExisting: ComboboxPopup}],\n})\nexport class ComboboxPopup implements OnInit, OnDestroy {\n private readonly _deferredContent = inject(DeferredContent);\n\n /** The combobox that the popup belongs to. */\n readonly combobox = input.required<Combobox>();\n\n /** The widget contained within the popup. */\n readonly _widget = signal<ComboboxWidget | undefined>(undefined);\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = computed(() => this._widget()?.element);\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this._widget()?.popupId());\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this._widget()?.activeDescendant());\n\n /** The type of the popup (e.g., listbox, tree, grid, dialog). */\n readonly popupType = input<'listbox' | 'tree' | 'grid' | 'dialog'>('listbox');\n\n /** The popup pattern. */\n readonly _pattern = new ComboboxPopupPattern({\n ...this,\n });\n\n ngOnInit() {\n this.combobox()._registerPopup(this);\n this._deferredContent.deferredContentAware.set(this.combobox());\n }\n\n ngOnDestroy() {\n this.combobox()._unregisterPopup();\n }\n\n /** Registers a widget with the popup. */\n _registerWidget(widget: ComboboxWidget) {\n this._widget.set(widget);\n }\n\n /** Unregisters the widget from the popup. */\n _unregisterWidget() {\n this._widget.set(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 Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * Identifies an element as a widget within a combobox popup.\n *\n * This directive should be applied to the element that contains the options or content\n * of the popup. It handles the communication of ID and active descendant information\n * to the combobox.\n */\n@Directive({\n selector: '[ngComboboxWidget]',\n exportAs: 'ngComboboxWidget',\n host: {\n '(focusin)': 'onFocusin()',\n '(focusout)': 'onFocusout($event)',\n },\n})\nexport class ComboboxWidget implements OnInit, OnDestroy {\n /** The element that the popup widget is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _popup = inject(COMBOBOX_POPUP);\n private readonly _idGenerator = inject(_IdGenerator);\n\n /** A reference to the popup widget element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The ID of the popup widget. */\n readonly popupId = signal<string | undefined>(undefined);\n\n /** The ID of the active descendant in the widget. */\n readonly activeDescendant = input<string | undefined>(undefined);\n\n private _observer: MutationObserver | undefined;\n\n constructor() {\n const el = this.element;\n this._observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.attributeName === 'id') {\n this.popupId.set(el.id);\n }\n }\n });\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: ['id'],\n });\n\n afterNextRender(() => {\n // Imperative, not a host binding: the element's id may already be owned by another\n // directive (e.g. Listbox, Tree, Grid), so this can't collide with it.\n if (!el.id) {\n el.id = this._idGenerator.getId('ng-combobox-widget-', true);\n }\n // Set synchronously; the MutationObserver above only fires on the next microtask.\n this.popupId.set(el.id);\n });\n }\n\n ngOnInit() {\n this.popupId.set(this.element.id);\n this._popup._registerWidget(this);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n this._popup._unregisterWidget();\n }\n\n /** Handles focus in events for the widget. */\n onFocusin() {\n this._popup._pattern.onFocusin();\n }\n\n /** Handles focus out events for the widget. */\n onFocusout(event: FocusEvent) {\n this._popup._pattern.onFocusout(event);\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"combobox.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-tokens.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-popup.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/aria/combobox/combobox-widget.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 {\n afterRenderEffect,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n model,\n OnInit,\n signal,\n Renderer2,\n} from '@angular/core';\nimport {DeferredContentAware, ComboboxPattern, tabIndexTransform} from '@angular/aria/private';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/**\n * A directive that coordinates a combobox trigger element and its associated popup widget.\n *\n * The `ngCombobox` directive is applied directly to the interactive trigger element, which can be\n * either an editable `<input>` (for search/autocomplete behaviors) or a non-editable element like\n * a `<div>` (for custom select dropdowns). It manages focus and expansion states, coordinates autocomplete\n * suggestions (if editable), and forwards navigation keys down into the active popup.\n *\n * ### Example 1: Editable Autocomplete Input\n * ```html\n * <input ngCombobox #combobox=\"ngCombobox\" [(value)]=\"searchQuery\" [(expanded)]=\"isExpanded\" />\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n *\n * ### Example 2: Non-Editable Custom Select Dropdown\n * ```html\n * <div ngCombobox #combobox=\"ngCombobox\" [(expanded)]=\"isExpanded\" class=\"select-trigger\">\n * {{selectedValue}}\n * </div>\n *\n * <ng-template ngComboboxPopup [combobox]=\"combobox\">\n * <div ngComboboxWidget #listbox=\"ngListbox\" ngListbox [(value)]=\"selectedValues\" [activeDescendant]=\"listbox.activeDescendant()\">\n * <div ngOption value=\"first\">First Option</div>\n * <div ngOption value=\"second\">Second Option</div>\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: '[ngCombobox]',\n exportAs: 'ngCombobox',\n host: {\n 'role': 'combobox',\n '[attr.aria-autocomplete]': '_pattern.autocomplete()',\n '[attr.aria-disabled]': '_pattern.disabled()',\n '[attr.aria-readonly]': '_pattern.ariaReadonly()',\n '[attr.aria-expanded]': '_pattern.isExpanded()',\n '[attr.aria-activedescendant]': '_pattern.activeDescendant()',\n '[attr.aria-controls]': '_pattern.popupId()',\n '[attr.aria-haspopup]': '_pattern.popupType()',\n '[attr.tabindex]':\n 'disabled() && !softDisabled() ? -1 : (tabIndex() !== undefined ? tabIndex() : 0)',\n '[attr.disabled]': '_pattern.nativeDisabled()',\n '[attr.readonly]': '_pattern.nativeReadonly()',\n '(keydown)': '_pattern.onKeydown($event)',\n '(focusin)': '_pattern.onFocusin()',\n '(focusout)': '_pattern.onFocusout()',\n '(click)': '_pattern.onClick($event)',\n '(input)': '_pattern.onInput($event)',\n },\n})\nexport class Combobox extends DeferredContentAware implements OnInit {\n private readonly _renderer = inject(Renderer2);\n\n /** The element that the combobox is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** A reference to the input element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The popup associated with the combobox. */\n readonly _popup = signal<ComboboxPopup | undefined>(undefined);\n\n /** Whether the combobox is disabled. */\n readonly disabled = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is readonly. */\n readonly readonly = input(false, {transform: booleanAttribute});\n\n /** Whether the combobox is soft disabled (remains focusable). */\n readonly softDisabled = input(true, {transform: booleanAttribute});\n\n /** Whether the combobox should always remain expanded. */\n readonly alwaysExpanded = input(false, {transform: booleanAttribute});\n\n /** The tabindex of the combobox. */\n readonly tabIndex = input(undefined, {\n alias: 'tabindex',\n transform: tabIndexTransform,\n });\n\n /** Whether the combobox is expanded. */\n readonly expanded = model<boolean>(false);\n\n /** The value of the combobox input. */\n readonly value = model<string>('');\n\n /** An inline suggestion to be displayed in the input. */\n readonly inlineSuggestion = input<string | undefined>(undefined);\n\n /** The combobox ui pattern. */\n readonly _pattern = new ComboboxPattern({\n ...this,\n readonly: () => this.readonly(),\n element: () => this.element,\n expandable: () => true,\n popup: computed(() => this._popup()?._pattern),\n });\n\n constructor() {\n super();\n\n afterRenderEffect({write: () => this._pattern.keyboardEventRelayEffect()});\n afterRenderEffect(() => {\n this.contentVisible.set(this._pattern.isExpanded());\n });\n\n if (this._pattern.isEditable()) {\n afterRenderEffect(() => {\n this._renderer.setProperty(this.element, 'value', this.value());\n });\n afterRenderEffect(() => {\n this._pattern.highlightEffect();\n });\n }\n }\n\n ngOnInit() {\n if (this.alwaysExpanded()) {\n this.expanded.set(true);\n }\n }\n\n /** Registers a popup with the combobox. */\n _registerPopup(popup: ComboboxPopup) {\n this._popup.set(popup);\n }\n\n /** Unregisters the popup from the combobox. */\n _unregisterPopup() {\n this._popup.set(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 {InjectionToken} from '@angular/core';\nimport type {ComboboxPopup} from './combobox-popup';\n\n/** Token used to expose the combobox popup. */\nexport const COMBOBOX_POPUP = new InjectionToken<ComboboxPopup>('COMBOBOX_POPUP');\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 {computed, Directive, inject, input, OnDestroy, OnInit, signal} from '@angular/core';\nimport {DeferredContent, ComboboxPopupPattern} from '@angular/aria/private';\nimport type {Combobox} from './combobox';\nimport type {ComboboxWidget} from './combobox-widget';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * A structural directive that marks the `ng-template` to be used as the popup\n * for a combobox. This content is conditionally rendered.\n *\n * The content of the popup can be any element with the `ngComboboxWidget` directive.\n *\n * ```html\n * <ng-template ngComboboxPopup>\n * <div ngComboboxWidget>\n * <!-- ... options ... -->\n * </div>\n * </ng-template>\n * ```\n */\n@Directive({\n selector: 'ng-template[ngComboboxPopup]',\n exportAs: 'ngComboboxPopup',\n hostDirectives: [DeferredContent],\n providers: [{provide: COMBOBOX_POPUP, useExisting: ComboboxPopup}],\n})\nexport class ComboboxPopup implements OnInit, OnDestroy {\n private readonly _deferredContent = inject(DeferredContent);\n\n /** The combobox that the popup belongs to. */\n readonly combobox = input.required<Combobox>();\n\n /** The widget contained within the popup. */\n readonly _widget = signal<ComboboxWidget | undefined>(undefined);\n\n /** The element that serves as the control target for the popup. */\n readonly controlTarget = computed(() => this._widget()?.element);\n\n /** The ID of the popup. */\n readonly popupId = computed(() => this._widget()?.popupId());\n\n /** The ID of the active descendant in the popup. */\n readonly activeDescendant = computed(() => this._widget()?.activeDescendant());\n\n /** The type of the popup (e.g., listbox, tree, grid, dialog). */\n readonly popupType = input<'listbox' | 'tree' | 'grid' | 'dialog'>('listbox');\n\n /** The popup pattern. */\n readonly _pattern: ComboboxPopupPattern = new ComboboxPopupPattern({\n ...this,\n combobox: computed(() => this.combobox()._pattern),\n });\n\n ngOnInit() {\n this.combobox()._registerPopup(this);\n this._deferredContent.deferredContentAware.set(this.combobox());\n }\n\n ngOnDestroy() {\n this.combobox()._unregisterPopup();\n }\n\n /** Registers a widget with the popup. */\n _registerWidget(widget: ComboboxWidget) {\n this._widget.set(widget);\n }\n\n /** Unregisters the widget from the popup. */\n _unregisterWidget() {\n this._widget.set(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 Directive,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n signal,\n} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {COMBOBOX_POPUP} from './combobox-tokens';\n\n/**\n * Identifies an element as a widget within a combobox popup.\n *\n * This directive should be applied to the element that contains the options or content\n * of the popup. It handles the communication of ID and active descendant information\n * to the combobox.\n */\n@Directive({\n selector: '[ngComboboxWidget]',\n exportAs: 'ngComboboxWidget',\n host: {\n '(focusin)': 'onFocusin()',\n '(focusout)': 'onFocusout($event)',\n },\n})\nexport class ComboboxWidget implements OnInit, OnDestroy {\n /** The element that the popup widget is attached to. */\n private readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly _popup = inject(COMBOBOX_POPUP);\n private readonly _idGenerator = inject(_IdGenerator);\n\n /** A reference to the popup widget element. */\n readonly element = this._elementRef.nativeElement;\n\n /** The ID of the popup widget. */\n readonly popupId = signal<string | undefined>(undefined);\n\n /** The ID of the active descendant in the widget. */\n readonly activeDescendant = input<string | undefined>(undefined);\n\n private _observer: MutationObserver | undefined;\n\n constructor() {\n const el = this.element;\n this._observer = new MutationObserver(mutations => {\n for (const mutation of mutations) {\n if (mutation.attributeName === 'id') {\n this.popupId.set(el.id);\n }\n }\n });\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: ['id'],\n });\n\n afterNextRender(() => {\n // Imperative, not a host binding: the element's id may already be owned by another\n // directive (e.g. Listbox, Tree, Grid), so this can't collide with it.\n if (!el.id) {\n el.id = this._idGenerator.getId('ng-combobox-widget-', true);\n }\n // Set synchronously; the MutationObserver above only fires on the next microtask.\n this.popupId.set(el.id);\n });\n }\n\n ngOnInit() {\n this.popupId.set(this.element.id);\n this._popup._registerWidget(this);\n }\n\n ngOnDestroy(): void {\n this._observer?.disconnect();\n this._popup._unregisterWidget();\n }\n\n /** Handles focus in events for the widget. */\n onFocusin() {\n this._popup._pattern.onFocusin();\n }\n\n /** Handles focus out events for the widget. */\n onFocusout(event: FocusEvent) {\n this._popup._pattern.onFocusout(event);\n }\n}\n"],"names":[],"mappings":"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"}