@angular/cdk 22.2.0-next.4 → 22.2.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 (108) hide show
  1. package/fesm2022/_a11y-module-chunk.mjs +22 -22
  2. package/fesm2022/_a11y-module-chunk.mjs.map +1 -1
  3. package/fesm2022/_activedescendant-key-manager-chunk.mjs.map +1 -1
  4. package/fesm2022/_array-chunk.mjs.map +1 -1
  5. package/fesm2022/_breakpoints-observer-chunk.mjs +6 -6
  6. package/fesm2022/_breakpoints-observer-chunk.mjs.map +1 -1
  7. package/fesm2022/_css-pixel-value-chunk.mjs.map +1 -1
  8. package/fesm2022/_data-source-chunk.mjs.map +1 -1
  9. package/fesm2022/_directionality-chunk.mjs +3 -3
  10. package/fesm2022/_directionality-chunk.mjs.map +1 -1
  11. package/fesm2022/_dispose-view-repeater-strategy-chunk.mjs.map +1 -1
  12. package/fesm2022/_element-chunk.mjs.map +1 -1
  13. package/fesm2022/_fake-event-detection-chunk.mjs.map +1 -1
  14. package/fesm2022/_focus-key-manager-chunk.mjs.map +1 -1
  15. package/fesm2022/_focus-monitor-chunk.mjs +9 -9
  16. package/fesm2022/_focus-monitor-chunk.mjs.map +1 -1
  17. package/fesm2022/_id-generator-chunk.mjs +3 -3
  18. package/fesm2022/_id-generator-chunk.mjs.map +1 -1
  19. package/fesm2022/_keycodes-chunk.mjs.map +1 -1
  20. package/fesm2022/_list-key-manager-chunk.mjs.map +1 -1
  21. package/fesm2022/_overlay-module-chunk.mjs +42 -35
  22. package/fesm2022/_overlay-module-chunk.mjs.map +1 -1
  23. package/fesm2022/_passive-listeners-chunk.mjs.map +1 -1
  24. package/fesm2022/_platform-chunk.mjs +3 -3
  25. package/fesm2022/_platform-chunk.mjs.map +1 -1
  26. package/fesm2022/_recycle-view-repeater-strategy-chunk.mjs.map +1 -1
  27. package/fesm2022/_scrolling-chunk.mjs.map +1 -1
  28. package/fesm2022/_selection-model-chunk.mjs.map +1 -1
  29. package/fesm2022/_shadow-dom-chunk.mjs.map +1 -1
  30. package/fesm2022/_style-loader-chunk.mjs +3 -3
  31. package/fesm2022/_style-loader-chunk.mjs.map +1 -1
  32. package/fesm2022/_test-environment-chunk.mjs.map +1 -1
  33. package/fesm2022/_tree-key-manager-chunk.mjs.map +1 -1
  34. package/fesm2022/_typeahead-chunk.mjs.map +1 -1
  35. package/fesm2022/_unique-selection-dispatcher-chunk.mjs +3 -3
  36. package/fesm2022/_unique-selection-dispatcher-chunk.mjs.map +1 -1
  37. package/fesm2022/a11y.mjs +9 -9
  38. package/fesm2022/a11y.mjs.map +1 -1
  39. package/fesm2022/accordion.mjs +10 -10
  40. package/fesm2022/accordion.mjs.map +1 -1
  41. package/fesm2022/bidi.mjs +7 -7
  42. package/fesm2022/bidi.mjs.map +1 -1
  43. package/fesm2022/cdk.mjs +1 -1
  44. package/fesm2022/cdk.mjs.map +1 -1
  45. package/fesm2022/clipboard.mjs +10 -10
  46. package/fesm2022/clipboard.mjs.map +1 -1
  47. package/fesm2022/coercion-private.mjs.map +1 -1
  48. package/fesm2022/coercion.mjs.map +1 -1
  49. package/fesm2022/dialog.mjs +10 -10
  50. package/fesm2022/dialog.mjs.map +1 -1
  51. package/fesm2022/drag-drop.mjs +31 -31
  52. package/fesm2022/drag-drop.mjs.map +1 -1
  53. package/fesm2022/keycodes.mjs.map +1 -1
  54. package/fesm2022/layout.mjs +4 -4
  55. package/fesm2022/layout.mjs.map +1 -1
  56. package/fesm2022/listbox.mjs +10 -10
  57. package/fesm2022/listbox.mjs.map +1 -1
  58. package/fesm2022/menu.mjs +49 -49
  59. package/fesm2022/menu.mjs.map +1 -1
  60. package/fesm2022/observers-private.mjs +3 -3
  61. package/fesm2022/observers-private.mjs.map +1 -1
  62. package/fesm2022/observers.mjs +13 -13
  63. package/fesm2022/observers.mjs.map +1 -1
  64. package/fesm2022/overlay.mjs +4 -4
  65. package/fesm2022/overlay.mjs.map +1 -1
  66. package/fesm2022/platform.mjs +4 -4
  67. package/fesm2022/platform.mjs.map +1 -1
  68. package/fesm2022/portal.mjs +10 -10
  69. package/fesm2022/portal.mjs.map +1 -1
  70. package/fesm2022/private.mjs +3 -3
  71. package/fesm2022/private.mjs.map +1 -1
  72. package/fesm2022/scrolling.mjs +35 -35
  73. package/fesm2022/scrolling.mjs.map +1 -1
  74. package/fesm2022/stepper.mjs +22 -22
  75. package/fesm2022/stepper.mjs.map +1 -1
  76. package/fesm2022/table.mjs +88 -76
  77. package/fesm2022/table.mjs.map +1 -1
  78. package/fesm2022/testing-selenium-webdriver.mjs.map +1 -1
  79. package/fesm2022/testing-testbed.mjs +8 -3
  80. package/fesm2022/testing-testbed.mjs.map +1 -1
  81. package/fesm2022/testing.mjs.map +1 -1
  82. package/fesm2022/text-field.mjs +16 -16
  83. package/fesm2022/text-field.mjs.map +1 -1
  84. package/fesm2022/tree.mjs +25 -25
  85. package/fesm2022/tree.mjs.map +1 -1
  86. package/package.json +1 -1
  87. package/schematics/ng-add/index.js +1 -1
  88. package/types/_a11y-module-chunk.d.ts +3 -3
  89. package/types/_bidi-module-chunk.d.ts +1 -1
  90. package/types/_focus-monitor-chunk.d.ts +1 -1
  91. package/types/_overlay-module-chunk.d.ts +7 -5
  92. package/types/_platform-chunk.d.ts +1 -1
  93. package/types/_scrolling-module-chunk.d.ts +1 -1
  94. package/types/_style-loader-chunk.d.ts +1 -1
  95. package/types/_unique-selection-dispatcher-chunk.d.ts +1 -1
  96. package/types/a11y.d.ts +6 -6
  97. package/types/clipboard.d.ts +1 -1
  98. package/types/dialog.d.ts +1 -1
  99. package/types/drag-drop.d.ts +2 -2
  100. package/types/layout.d.ts +2 -2
  101. package/types/menu.d.ts +3 -3
  102. package/types/observers-private.d.ts +1 -1
  103. package/types/observers.d.ts +2 -2
  104. package/types/overlay.d.ts +5 -5
  105. package/types/scrolling.d.ts +1 -1
  106. package/types/table.d.ts +5 -0
  107. package/types/testing-testbed.d.ts +8 -6
  108. package/types/text-field.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"_list-key-manager-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/a11y/key-manager/list-key-manager.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 DOWN_ARROW,\n END,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n TAB,\n UP_ARROW,\n hasModifierKey,\n} from '../../keycodes';\nimport {EffectRef, Injector, QueryList, Signal, effect, isSignal, signal} from '@angular/core';\nimport {Subject, Subscription} from 'rxjs';\nimport {Typeahead} from './typeahead';\n\n/** This interface is for items that can be passed to a ListKeyManager. */\nexport interface ListKeyManagerOption {\n /** Whether the option is disabled. */\n disabled?: boolean;\n\n /** Gets the label for this option. */\n getLabel?(): string;\n}\n\n/** Modifier keys handled by the ListKeyManager. */\nexport type ListKeyManagerModifierKey = 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey';\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nexport class ListKeyManager<T extends ListKeyManagerOption> {\n private _activeItemIndex = signal(-1);\n private _activeItem = signal<T | null>(null);\n private _wrap = false;\n private _typeaheadSubscription = Subscription.EMPTY;\n private _itemChangesSubscription?: Subscription;\n private _vertical = true;\n private _horizontal: 'ltr' | 'rtl' | null = null;\n private _allowedModifierKeys: ListKeyManagerModifierKey[] = [];\n private _homeAndEnd = false;\n private _pageUpAndDown = {enabled: false, delta: 10};\n private _effectRef: EffectRef | undefined;\n private _typeahead?: Typeahead<T>;\n\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n private _skipPredicateFn = (item: T) => item.disabled;\n\n constructor(items: QueryList<T> | T[] | readonly T[]);\n constructor(items: Signal<T[]> | Signal<readonly T[]>, injector: Injector);\n constructor(\n private _items: QueryList<T> | T[] | readonly T[] | Signal<T[]> | Signal<readonly T[]>,\n injector?: Injector,\n ) {\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n this._itemChangesSubscription = _items.changes.subscribe((newItems: QueryList<T>) =>\n this._itemsChanged(newItems.toArray()),\n );\n } else if (isSignal(_items)) {\n if (!injector && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('ListKeyManager constructed with a signal must receive an injector');\n }\n\n this._effectRef = effect(() => this._itemsChanged(_items()), {injector});\n }\n }\n\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n readonly tabOut = new Subject<void>();\n\n /** Stream that emits whenever the active item of the list manager changes. */\n readonly change = new Subject<number>();\n\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate: (item: T) => boolean): this {\n this._skipPredicateFn = predicate;\n return this;\n }\n\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true): this {\n this._wrap = shouldWrap;\n return this;\n }\n\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled: boolean = true): this {\n this._vertical = enabled;\n return this;\n }\n\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction: 'ltr' | 'rtl' | null): this {\n this._horizontal = direction;\n return this;\n }\n\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys: ListKeyManagerModifierKey[]): this {\n this._allowedModifierKeys = keys;\n return this;\n }\n\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval: number = 200): this {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const items = this._getItemsArray();\n if (items.length > 0 && items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n }\n\n this._typeaheadSubscription.unsubscribe();\n\n const items = this._getItemsArray();\n this._typeahead = new Typeahead(items, {\n debounceInterval: typeof debounceInterval === 'number' ? debounceInterval : undefined,\n skipPredicate: item => this._skipPredicateFn(item),\n });\n\n this._typeaheadSubscription = this._typeahead.selectedItem.subscribe(item => {\n this.setActiveItem(item);\n });\n\n return this;\n }\n\n /** Cancels the current typeahead sequence. */\n cancelTypeahead(): this {\n this._typeahead?.reset();\n return this;\n }\n\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled: boolean = true): this {\n this._homeAndEnd = enabled;\n return this;\n }\n\n /**\n * Configures the key manager to activate every 10th, configured or first/last element in up/down direction\n * respectively when the Page-Up or Page-Down key is pressed.\n * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.\n * @param delta Whether pressing the Home or End key activates the first/last item.\n */\n withPageUpDown(enabled: boolean = true, delta: number = 10): this {\n this._pageUpAndDown = {enabled, delta};\n return this;\n }\n\n /**\n * Sets the active item to the item at the index specified.\n * @param index The index of the item to be set as active.\n */\n setActiveItem(index: number): void;\n\n /**\n * Sets the active item to the specified item.\n * @param item The item to be set as active.\n */\n setActiveItem(item: T): void;\n\n /**\n * Sets the active item to the specified item.\n * @param item The item to be set as active.\n */\n setActiveItem(item: T | number): void;\n\n setActiveItem(item: any): void {\n const previousActiveItem = this._activeItem();\n\n this.updateActiveItem(item);\n\n if (this._activeItem() !== previousActiveItem) {\n this.change.next(this._activeItemIndex());\n }\n }\n\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const modifiers: ListKeyManagerModifierKey[] = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n } else {\n return;\n }\n\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n } else {\n return;\n }\n\n case PAGE_UP:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex() - this._pageUpAndDown.delta;\n this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);\n break;\n } else {\n return;\n }\n\n case PAGE_DOWN:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex() + this._pageUpAndDown.delta;\n const itemsLength = this._getItemsArray().length;\n this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);\n break;\n } else {\n return;\n }\n\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n this._typeahead?.handleKey(event);\n }\n\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n\n this._typeahead?.reset();\n event.preventDefault();\n }\n\n /** Index of the currently active item. */\n get activeItemIndex(): number | null {\n return this._activeItemIndex();\n }\n\n /** The active item. */\n get activeItem(): T | null {\n return this._activeItem();\n }\n\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping(): boolean {\n return !!this._typeahead && this._typeahead.isTyping();\n }\n\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive(): void {\n this._setActiveItemByIndex(0, 1);\n }\n\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive(): void {\n this._setActiveItemByIndex(this._getItemsArray().length - 1, -1);\n }\n\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive(): void {\n this._activeItemIndex() < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive(): void {\n this._activeItemIndex() < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n\n /**\n * Allows setting the active without any other effects.\n * @param index Index of the item to be set as active.\n */\n updateActiveItem(index: number): void;\n\n /**\n * Allows setting the active item without any other effects.\n * @param item Item to be set as active.\n */\n updateActiveItem(item: T): void;\n\n updateActiveItem(item: any): void {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem.set(activeItem == null ? null : activeItem);\n this._activeItemIndex.set(index);\n this._typeahead?.setCurrentSelectedItemIndex(index);\n }\n\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._itemChangesSubscription?.unsubscribe();\n this._effectRef?.destroy();\n this._typeahead?.destroy();\n this.tabOut.complete();\n this.change.complete();\n }\n\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n private _setActiveItemByDelta(delta: -1 | 1): void {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n private _setActiveInWrapMode(delta: -1 | 1): void {\n const items = this._getItemsArray();\n\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex() + delta * i + items.length) % items.length;\n const item = items[index];\n\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n private _setActiveInDefaultMode(delta: -1 | 1): void {\n this._setActiveItemByIndex(this._activeItemIndex() + delta, delta);\n }\n\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n private _setActiveItemByIndex(index: number, fallbackDelta: -1 | 1): void {\n const items = this._getItemsArray();\n\n if (!items[index]) {\n return;\n }\n\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n\n if (!items[index]) {\n return;\n }\n }\n\n this.setActiveItem(index);\n }\n\n /** Returns the items as an array. */\n private _getItemsArray(): T[] | readonly T[] {\n if (isSignal(this._items)) {\n return this._items();\n }\n\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n\n /** Callback for when the items have changed. */\n private _itemsChanged(newItems: T[] | readonly T[]) {\n this._typeahead?.setItems(newItems);\n const activeItem = this._activeItem();\n if (activeItem) {\n const newIndex = newItems.indexOf(activeItem);\n\n if (newIndex > -1 && newIndex !== this._activeItemIndex()) {\n this._activeItemIndex.set(newIndex);\n this._typeahead?.setCurrentSelectedItemIndex(newIndex);\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_list-key-manager-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/cdk/a11y/key-manager/list-key-manager.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 DOWN_ARROW,\n END,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n TAB,\n UP_ARROW,\n hasModifierKey,\n} from '../../keycodes';\nimport {EffectRef, Injector, QueryList, Signal, effect, isSignal, signal} from '@angular/core';\nimport {Subject, Subscription} from 'rxjs';\nimport {Typeahead} from './typeahead';\n\n/** This interface is for items that can be passed to a ListKeyManager. */\nexport interface ListKeyManagerOption {\n /** Whether the option is disabled. */\n disabled?: boolean;\n\n /** Gets the label for this option. */\n getLabel?(): string;\n}\n\n/** Modifier keys handled by the ListKeyManager. */\nexport type ListKeyManagerModifierKey = 'altKey' | 'ctrlKey' | 'metaKey' | 'shiftKey';\n\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nexport class ListKeyManager<T extends ListKeyManagerOption> {\n private _activeItemIndex = signal(-1);\n private _activeItem = signal<T | null>(null);\n private _wrap = false;\n private _typeaheadSubscription = Subscription.EMPTY;\n private _itemChangesSubscription?: Subscription;\n private _vertical = true;\n private _horizontal: 'ltr' | 'rtl' | null = null;\n private _allowedModifierKeys: ListKeyManagerModifierKey[] = [];\n private _homeAndEnd = false;\n private _pageUpAndDown = {enabled: false, delta: 10};\n private _effectRef: EffectRef | undefined;\n private _typeahead?: Typeahead<T>;\n\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n private _skipPredicateFn = (item: T) => item.disabled;\n\n constructor(items: QueryList<T> | T[] | readonly T[]);\n constructor(items: Signal<T[]> | Signal<readonly T[]>, injector: Injector);\n constructor(\n private _items: QueryList<T> | T[] | readonly T[] | Signal<T[]> | Signal<readonly T[]>,\n injector?: Injector,\n ) {\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n this._itemChangesSubscription = _items.changes.subscribe((newItems: QueryList<T>) =>\n this._itemsChanged(newItems.toArray()),\n );\n } else if (isSignal(_items)) {\n if (!injector && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('ListKeyManager constructed with a signal must receive an injector');\n }\n\n this._effectRef = effect(() => this._itemsChanged(_items()), {injector});\n }\n }\n\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n readonly tabOut = new Subject<void>();\n\n /** Stream that emits whenever the active item of the list manager changes. */\n readonly change = new Subject<number>();\n\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate: (item: T) => boolean): this {\n this._skipPredicateFn = predicate;\n return this;\n }\n\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true): this {\n this._wrap = shouldWrap;\n return this;\n }\n\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled: boolean = true): this {\n this._vertical = enabled;\n return this;\n }\n\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction: 'ltr' | 'rtl' | null): this {\n this._horizontal = direction;\n return this;\n }\n\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys: ListKeyManagerModifierKey[]): this {\n this._allowedModifierKeys = keys;\n return this;\n }\n\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval: number = 200): this {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const items = this._getItemsArray();\n if (items.length > 0 && items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n }\n\n this._typeaheadSubscription.unsubscribe();\n\n const items = this._getItemsArray();\n this._typeahead = new Typeahead(items, {\n debounceInterval: typeof debounceInterval === 'number' ? debounceInterval : undefined,\n skipPredicate: item => this._skipPredicateFn(item),\n });\n\n this._typeaheadSubscription = this._typeahead.selectedItem.subscribe(item => {\n this.setActiveItem(item);\n });\n\n return this;\n }\n\n /** Cancels the current typeahead sequence. */\n cancelTypeahead(): this {\n this._typeahead?.reset();\n return this;\n }\n\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled: boolean = true): this {\n this._homeAndEnd = enabled;\n return this;\n }\n\n /**\n * Configures the key manager to activate every 10th, configured or first/last element in up/down direction\n * respectively when the Page-Up or Page-Down key is pressed.\n * @param enabled Whether pressing the Page-Up or Page-Down key activates the first/last item.\n * @param delta Whether pressing the Home or End key activates the first/last item.\n */\n withPageUpDown(enabled: boolean = true, delta: number = 10): this {\n this._pageUpAndDown = {enabled, delta};\n return this;\n }\n\n /**\n * Sets the active item to the item at the index specified.\n * @param index The index of the item to be set as active.\n */\n setActiveItem(index: number): void;\n\n /**\n * Sets the active item to the specified item.\n * @param item The item to be set as active.\n */\n setActiveItem(item: T): void;\n\n /**\n * Sets the active item to the specified item.\n * @param item The item to be set as active.\n */\n setActiveItem(item: T | number): void;\n\n setActiveItem(item: any): void {\n const previousActiveItem = this._activeItem();\n\n this.updateActiveItem(item);\n\n if (this._activeItem() !== previousActiveItem) {\n this.change.next(this._activeItemIndex());\n }\n }\n\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const modifiers: ListKeyManagerModifierKey[] = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n } else {\n return;\n }\n\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n } else {\n return;\n }\n\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n } else {\n return;\n }\n\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n } else {\n return;\n }\n\n case PAGE_UP:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex() - this._pageUpAndDown.delta;\n this._setActiveItemByIndex(targetIndex > 0 ? targetIndex : 0, 1);\n break;\n } else {\n return;\n }\n\n case PAGE_DOWN:\n if (this._pageUpAndDown.enabled && isModifierAllowed) {\n const targetIndex = this._activeItemIndex() + this._pageUpAndDown.delta;\n const itemsLength = this._getItemsArray().length;\n this._setActiveItemByIndex(targetIndex < itemsLength ? targetIndex : itemsLength - 1, -1);\n break;\n } else {\n return;\n }\n\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n this._typeahead?.handleKey(event);\n }\n\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n\n this._typeahead?.reset();\n event.preventDefault();\n }\n\n /** Index of the currently active item. */\n get activeItemIndex(): number | null {\n return this._activeItemIndex();\n }\n\n /** The active item. */\n get activeItem(): T | null {\n return this._activeItem();\n }\n\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping(): boolean {\n return !!this._typeahead && this._typeahead.isTyping();\n }\n\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive(): void {\n this._setActiveItemByIndex(0, 1);\n }\n\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive(): void {\n this._setActiveItemByIndex(this._getItemsArray().length - 1, -1);\n }\n\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive(): void {\n this._activeItemIndex() < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive(): void {\n this._activeItemIndex() < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n\n /**\n * Allows setting the active without any other effects.\n * @param index Index of the item to be set as active.\n */\n updateActiveItem(index: number): void;\n\n /**\n * Allows setting the active item without any other effects.\n * @param item Item to be set as active.\n */\n updateActiveItem(item: T): void;\n\n updateActiveItem(item: any): void {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem.set(activeItem == null ? null : activeItem);\n this._activeItemIndex.set(index);\n this._typeahead?.setCurrentSelectedItemIndex(index);\n }\n\n /** Cleans up the key manager. */\n destroy() {\n this._typeaheadSubscription.unsubscribe();\n this._itemChangesSubscription?.unsubscribe();\n this._effectRef?.destroy();\n this._typeahead?.destroy();\n this.tabOut.complete();\n this.change.complete();\n }\n\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n private _setActiveItemByDelta(delta: -1 | 1): void {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n private _setActiveInWrapMode(delta: -1 | 1): void {\n const items = this._getItemsArray();\n\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex() + delta * i + items.length) % items.length;\n const item = items[index];\n\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n private _setActiveInDefaultMode(delta: -1 | 1): void {\n this._setActiveItemByIndex(this._activeItemIndex() + delta, delta);\n }\n\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n private _setActiveItemByIndex(index: number, fallbackDelta: -1 | 1): void {\n const items = this._getItemsArray();\n\n if (!items[index]) {\n return;\n }\n\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n\n if (!items[index]) {\n return;\n }\n }\n\n this.setActiveItem(index);\n }\n\n /** Returns the items as an array. */\n private _getItemsArray(): T[] | readonly T[] {\n if (isSignal(this._items)) {\n return this._items();\n }\n\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n\n /** Callback for when the items have changed. */\n private _itemsChanged(newItems: T[] | readonly T[]) {\n this._typeahead?.setItems(newItems);\n const activeItem = this._activeItem();\n if (activeItem) {\n const newIndex = newItems.indexOf(activeItem);\n\n if (newIndex > -1 && newIndex !== this._activeItemIndex()) {\n this._activeItemIndex.set(newIndex);\n this._typeahead?.setCurrentSelectedItemIndex(newIndex);\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -244,7 +244,7 @@ class ScrollStrategyOptions {
244
244
  reposition = config => createRepositionScrollStrategy(this._injector, config);
245
245
  static ɵfac = i0.ɵɵngDeclareFactory({
246
246
  minVersion: "12.0.0",
247
- version: "22.2.0-next.4",
247
+ version: "22.2.0-next.7",
248
248
  ngImport: i0,
249
249
  type: ScrollStrategyOptions,
250
250
  deps: [],
@@ -252,14 +252,14 @@ class ScrollStrategyOptions {
252
252
  });
253
253
  static ɵprov = i0.ɵɵngDeclareService({
254
254
  minVersion: "22.0.0",
255
- version: "22.2.0-next.4",
255
+ version: "22.2.0-next.7",
256
256
  ngImport: i0,
257
257
  type: ScrollStrategyOptions
258
258
  });
259
259
  }
260
260
  i0.ɵɵngDeclareClassMetadata({
261
261
  minVersion: "12.0.0",
262
- version: "22.2.0-next.4",
262
+ version: "22.2.0-next.7",
263
263
  ngImport: i0,
264
264
  type: ScrollStrategyOptions,
265
265
  decorators: [{
@@ -370,7 +370,7 @@ class BaseOverlayDispatcher {
370
370
  }
371
371
  static ɵfac = i0.ɵɵngDeclareFactory({
372
372
  minVersion: "12.0.0",
373
- version: "22.2.0-next.4",
373
+ version: "22.2.0-next.7",
374
374
  ngImport: i0,
375
375
  type: BaseOverlayDispatcher,
376
376
  deps: [],
@@ -378,14 +378,14 @@ class BaseOverlayDispatcher {
378
378
  });
379
379
  static ɵprov = i0.ɵɵngDeclareService({
380
380
  minVersion: "22.0.0",
381
- version: "22.2.0-next.4",
381
+ version: "22.2.0-next.7",
382
382
  ngImport: i0,
383
383
  type: BaseOverlayDispatcher
384
384
  });
385
385
  }
386
386
  i0.ɵɵngDeclareClassMetadata({
387
387
  minVersion: "12.0.0",
388
- version: "22.2.0-next.4",
388
+ version: "22.2.0-next.7",
389
389
  ngImport: i0,
390
390
  type: BaseOverlayDispatcher,
391
391
  decorators: [{
@@ -424,7 +424,7 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
424
424
  };
425
425
  static ɵfac = i0.ɵɵngDeclareFactory({
426
426
  minVersion: "12.0.0",
427
- version: "22.2.0-next.4",
427
+ version: "22.2.0-next.7",
428
428
  ngImport: i0,
429
429
  type: OverlayKeyboardDispatcher,
430
430
  deps: [],
@@ -432,14 +432,14 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
432
432
  });
433
433
  static ɵprov = i0.ɵɵngDeclareService({
434
434
  minVersion: "22.0.0",
435
- version: "22.2.0-next.4",
435
+ version: "22.2.0-next.7",
436
436
  ngImport: i0,
437
437
  type: OverlayKeyboardDispatcher
438
438
  });
439
439
  }
440
440
  i0.ɵɵngDeclareClassMetadata({
441
441
  minVersion: "12.0.0",
442
- version: "22.2.0-next.4",
442
+ version: "22.2.0-next.7",
443
443
  ngImport: i0,
444
444
  type: OverlayKeyboardDispatcher,
445
445
  decorators: [{
@@ -509,7 +509,7 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
509
509
  };
510
510
  static ɵfac = i0.ɵɵngDeclareFactory({
511
511
  minVersion: "12.0.0",
512
- version: "22.2.0-next.4",
512
+ version: "22.2.0-next.7",
513
513
  ngImport: i0,
514
514
  type: OverlayOutsideClickDispatcher,
515
515
  deps: [],
@@ -517,14 +517,14 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
517
517
  });
518
518
  static ɵprov = i0.ɵɵngDeclareService({
519
519
  minVersion: "22.0.0",
520
- version: "22.2.0-next.4",
520
+ version: "22.2.0-next.7",
521
521
  ngImport: i0,
522
522
  type: OverlayOutsideClickDispatcher
523
523
  });
524
524
  }
525
525
  i0.ɵɵngDeclareClassMetadata({
526
526
  minVersion: "12.0.0",
527
- version: "22.2.0-next.4",
527
+ version: "22.2.0-next.7",
528
528
  ngImport: i0,
529
529
  type: OverlayOutsideClickDispatcher,
530
530
  decorators: [{
@@ -546,7 +546,7 @@ function containsPierceShadowDom(parent, child) {
546
546
  class _CdkOverlayStyleLoader {
547
547
  static ɵfac = i0.ɵɵngDeclareFactory({
548
548
  minVersion: "12.0.0",
549
- version: "22.2.0-next.4",
549
+ version: "22.2.0-next.7",
550
550
  ngImport: i0,
551
551
  type: _CdkOverlayStyleLoader,
552
552
  deps: [],
@@ -554,7 +554,7 @@ class _CdkOverlayStyleLoader {
554
554
  });
555
555
  static ɵcmp = i0.ɵɵngDeclareComponent({
556
556
  minVersion: "14.0.0",
557
- version: "22.2.0-next.4",
557
+ version: "22.2.0-next.7",
558
558
  type: _CdkOverlayStyleLoader,
559
559
  isStandalone: true,
560
560
  selector: "ng-component",
@@ -572,7 +572,7 @@ class _CdkOverlayStyleLoader {
572
572
  }
573
573
  i0.ɵɵngDeclareClassMetadata({
574
574
  minVersion: "12.0.0",
575
- version: "22.2.0-next.4",
575
+ version: "22.2.0-next.7",
576
576
  ngImport: i0,
577
577
  type: _CdkOverlayStyleLoader,
578
578
  decorators: [{
@@ -625,7 +625,7 @@ class OverlayContainer {
625
625
  }
626
626
  static ɵfac = i0.ɵɵngDeclareFactory({
627
627
  minVersion: "12.0.0",
628
- version: "22.2.0-next.4",
628
+ version: "22.2.0-next.7",
629
629
  ngImport: i0,
630
630
  type: OverlayContainer,
631
631
  deps: [],
@@ -633,14 +633,14 @@ class OverlayContainer {
633
633
  });
634
634
  static ɵprov = i0.ɵɵngDeclareService({
635
635
  minVersion: "22.0.0",
636
- version: "22.2.0-next.4",
636
+ version: "22.2.0-next.7",
637
637
  ngImport: i0,
638
638
  type: OverlayContainer
639
639
  });
640
640
  }
641
641
  i0.ɵɵngDeclareClassMetadata({
642
642
  minVersion: "12.0.0",
643
- version: "22.2.0-next.4",
643
+ version: "22.2.0-next.7",
644
644
  ngImport: i0,
645
645
  type: OverlayContainer,
646
646
  decorators: [{
@@ -685,6 +685,10 @@ class BackdropRef {
685
685
  function isElement(value) {
686
686
  return value && value.nodeType === 1;
687
687
  }
688
+ const attachedOverlays = new Set();
689
+ function getAttachedOverlays() {
690
+ return Array.from(attachedOverlays);
691
+ }
688
692
  class OverlayRef {
689
693
  _portalOutlet;
690
694
  _host;
@@ -753,6 +757,7 @@ class OverlayRef {
753
757
  this._updateStackingOrder();
754
758
  this._updateElementSize();
755
759
  this._updateElementDirection();
760
+ attachedOverlays.add(this);
756
761
  if (this._scrollStrategy) {
757
762
  this._scrollStrategy.enable();
758
763
  }
@@ -806,6 +811,7 @@ class OverlayRef {
806
811
  this._detachContentWhenEmpty();
807
812
  this._locationChanges.unsubscribe();
808
813
  this._outsideClickDispatcher.remove(this);
814
+ attachedOverlays.delete(this);
809
815
  return detachmentResult;
810
816
  }
811
817
  dispose() {
@@ -835,6 +841,7 @@ class OverlayRef {
835
841
  this._detachments.complete();
836
842
  this._completeDetachContent();
837
843
  this._disposed = true;
844
+ attachedOverlays.delete(this);
838
845
  }
839
846
  hasAttached() {
840
847
  return this._portalOutlet.hasAttached();
@@ -2008,7 +2015,7 @@ class OverlayPositionBuilder {
2008
2015
  }
2009
2016
  static ɵfac = i0.ɵɵngDeclareFactory({
2010
2017
  minVersion: "12.0.0",
2011
- version: "22.2.0-next.4",
2018
+ version: "22.2.0-next.7",
2012
2019
  ngImport: i0,
2013
2020
  type: OverlayPositionBuilder,
2014
2021
  deps: [],
@@ -2016,14 +2023,14 @@ class OverlayPositionBuilder {
2016
2023
  });
2017
2024
  static ɵprov = i0.ɵɵngDeclareService({
2018
2025
  minVersion: "22.0.0",
2019
- version: "22.2.0-next.4",
2026
+ version: "22.2.0-next.7",
2020
2027
  ngImport: i0,
2021
2028
  type: OverlayPositionBuilder
2022
2029
  });
2023
2030
  }
2024
2031
  i0.ɵɵngDeclareClassMetadata({
2025
2032
  minVersion: "12.0.0",
2026
- version: "22.2.0-next.4",
2033
+ version: "22.2.0-next.7",
2027
2034
  ngImport: i0,
2028
2035
  type: OverlayPositionBuilder,
2029
2036
  decorators: [{
@@ -2085,7 +2092,7 @@ class Overlay {
2085
2092
  }
2086
2093
  static ɵfac = i0.ɵɵngDeclareFactory({
2087
2094
  minVersion: "12.0.0",
2088
- version: "22.2.0-next.4",
2095
+ version: "22.2.0-next.7",
2089
2096
  ngImport: i0,
2090
2097
  type: Overlay,
2091
2098
  deps: [],
@@ -2093,14 +2100,14 @@ class Overlay {
2093
2100
  });
2094
2101
  static ɵprov = i0.ɵɵngDeclareService({
2095
2102
  minVersion: "22.0.0",
2096
- version: "22.2.0-next.4",
2103
+ version: "22.2.0-next.7",
2097
2104
  ngImport: i0,
2098
2105
  type: Overlay
2099
2106
  });
2100
2107
  }
2101
2108
  i0.ɵɵngDeclareClassMetadata({
2102
2109
  minVersion: "12.0.0",
2103
- version: "22.2.0-next.4",
2110
+ version: "22.2.0-next.7",
2104
2111
  ngImport: i0,
2105
2112
  type: Overlay,
2106
2113
  decorators: [{
@@ -2140,7 +2147,7 @@ class CdkOverlayOrigin {
2140
2147
  elementRef = inject(ElementRef);
2141
2148
  static ɵfac = i0.ɵɵngDeclareFactory({
2142
2149
  minVersion: "12.0.0",
2143
- version: "22.2.0-next.4",
2150
+ version: "22.2.0-next.7",
2144
2151
  ngImport: i0,
2145
2152
  type: CdkOverlayOrigin,
2146
2153
  deps: [],
@@ -2148,7 +2155,7 @@ class CdkOverlayOrigin {
2148
2155
  });
2149
2156
  static ɵdir = i0.ɵɵngDeclareDirective({
2150
2157
  minVersion: "14.0.0",
2151
- version: "22.2.0-next.4",
2158
+ version: "22.2.0-next.7",
2152
2159
  type: CdkOverlayOrigin,
2153
2160
  isStandalone: true,
2154
2161
  selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]",
@@ -2158,7 +2165,7 @@ class CdkOverlayOrigin {
2158
2165
  }
2159
2166
  i0.ɵɵngDeclareClassMetadata({
2160
2167
  minVersion: "12.0.0",
2161
- version: "22.2.0-next.4",
2168
+ version: "22.2.0-next.7",
2162
2169
  ngImport: i0,
2163
2170
  type: CdkOverlayOrigin,
2164
2171
  decorators: [{
@@ -2435,7 +2442,7 @@ class CdkConnectedOverlay {
2435
2442
  }
2436
2443
  static ɵfac = i0.ɵɵngDeclareFactory({
2437
2444
  minVersion: "12.0.0",
2438
- version: "22.2.0-next.4",
2445
+ version: "22.2.0-next.7",
2439
2446
  ngImport: i0,
2440
2447
  type: CdkConnectedOverlay,
2441
2448
  deps: [],
@@ -2443,7 +2450,7 @@ class CdkConnectedOverlay {
2443
2450
  });
2444
2451
  static ɵdir = i0.ɵɵngDeclareDirective({
2445
2452
  minVersion: "16.1.0",
2446
- version: "22.2.0-next.4",
2453
+ version: "22.2.0-next.7",
2447
2454
  type: CdkConnectedOverlay,
2448
2455
  isStandalone: true,
2449
2456
  selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]",
@@ -2489,7 +2496,7 @@ class CdkConnectedOverlay {
2489
2496
  }
2490
2497
  i0.ɵɵngDeclareClassMetadata({
2491
2498
  minVersion: "12.0.0",
2492
- version: "22.2.0-next.4",
2499
+ version: "22.2.0-next.7",
2493
2500
  ngImport: i0,
2494
2501
  type: CdkConnectedOverlay,
2495
2502
  decorators: [{
@@ -2648,7 +2655,7 @@ i0.ɵɵngDeclareClassMetadata({
2648
2655
  class OverlayModule {
2649
2656
  static ɵfac = i0.ɵɵngDeclareFactory({
2650
2657
  minVersion: "12.0.0",
2651
- version: "22.2.0-next.4",
2658
+ version: "22.2.0-next.7",
2652
2659
  ngImport: i0,
2653
2660
  type: OverlayModule,
2654
2661
  deps: [],
@@ -2656,7 +2663,7 @@ class OverlayModule {
2656
2663
  });
2657
2664
  static ɵmod = i0.ɵɵngDeclareNgModule({
2658
2665
  minVersion: "14.0.0",
2659
- version: "22.2.0-next.4",
2666
+ version: "22.2.0-next.7",
2660
2667
  ngImport: i0,
2661
2668
  type: OverlayModule,
2662
2669
  imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],
@@ -2664,7 +2671,7 @@ class OverlayModule {
2664
2671
  });
2665
2672
  static ɵinj = i0.ɵɵngDeclareInjector({
2666
2673
  minVersion: "12.0.0",
2667
- version: "22.2.0-next.4",
2674
+ version: "22.2.0-next.7",
2668
2675
  ngImport: i0,
2669
2676
  type: OverlayModule,
2670
2677
  providers: [Overlay],
@@ -2673,7 +2680,7 @@ class OverlayModule {
2673
2680
  }
2674
2681
  i0.ɵɵngDeclareClassMetadata({
2675
2682
  minVersion: "12.0.0",
2676
- version: "22.2.0-next.4",
2683
+ version: "22.2.0-next.7",
2677
2684
  ngImport: i0,
2678
2685
  type: OverlayModule,
2679
2686
  decorators: [{
@@ -2686,5 +2693,5 @@ i0.ɵɵngDeclareClassMetadata({
2686
2693
  }]
2687
2694
  });
2688
2695
 
2689
- export { BlockScrollStrategy, CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, GlobalPositionStrategy, NoopScrollStrategy, OVERLAY_DEFAULT_CONFIG, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, createBlockScrollStrategy, createCloseScrollStrategy, createFlexibleConnectedPositionStrategy, createGlobalPositionStrategy, createNoopScrollStrategy, createOverlayRef, createRepositionScrollStrategy, validateHorizontalPosition, validateVerticalPosition };
2696
+ export { BlockScrollStrategy, CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, GlobalPositionStrategy, NoopScrollStrategy, OVERLAY_DEFAULT_CONFIG, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, createBlockScrollStrategy, createCloseScrollStrategy, createFlexibleConnectedPositionStrategy, createGlobalPositionStrategy, createNoopScrollStrategy, createOverlayRef, createRepositionScrollStrategy, getAttachedOverlays, validateHorizontalPosition, validateVerticalPosition };
2690
2697
  //# sourceMappingURL=_overlay-module-chunk.mjs.map