@angular/cdk 21.0.0-rc.3 → 21.0.1

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 (92) hide show
  1. package/_adev_assets/cdk_drag_drop.json +5 -0
  2. package/_adev_assets/cdk_testing.json +6 -0
  3. package/fesm2022/_a11y-module-chunk.mjs +23 -23
  4. package/fesm2022/_a11y-module-chunk.mjs.map +1 -1
  5. package/fesm2022/_activedescendant-key-manager-chunk.mjs.map +1 -1
  6. package/fesm2022/_array-chunk.mjs.map +1 -1
  7. package/fesm2022/_breakpoints-observer-chunk.mjs +6 -6
  8. package/fesm2022/_breakpoints-observer-chunk.mjs.map +1 -1
  9. package/fesm2022/_css-pixel-value-chunk.mjs.map +1 -1
  10. package/fesm2022/_data-source-chunk.mjs.map +1 -1
  11. package/fesm2022/_directionality-chunk.mjs +3 -3
  12. package/fesm2022/_directionality-chunk.mjs.map +1 -1
  13. package/fesm2022/_dispose-view-repeater-strategy-chunk.mjs.map +1 -1
  14. package/fesm2022/_element-chunk.mjs.map +1 -1
  15. package/fesm2022/_fake-event-detection-chunk.mjs.map +1 -1
  16. package/fesm2022/_focus-key-manager-chunk.mjs.map +1 -1
  17. package/fesm2022/_focus-monitor-chunk.mjs +9 -9
  18. package/fesm2022/_focus-monitor-chunk.mjs.map +1 -1
  19. package/fesm2022/_id-generator-chunk.mjs +3 -3
  20. package/fesm2022/_id-generator-chunk.mjs.map +1 -1
  21. package/fesm2022/_keycodes-chunk.mjs.map +1 -1
  22. package/fesm2022/_list-key-manager-chunk.mjs.map +1 -1
  23. package/fesm2022/_overlay-module-chunk.mjs +52 -68
  24. package/fesm2022/_overlay-module-chunk.mjs.map +1 -1
  25. package/fesm2022/_passive-listeners-chunk.mjs.map +1 -1
  26. package/fesm2022/_platform-chunk.mjs +3 -3
  27. package/fesm2022/_platform-chunk.mjs.map +1 -1
  28. package/fesm2022/_recycle-view-repeater-strategy-chunk.mjs.map +1 -1
  29. package/fesm2022/_scrolling-chunk.mjs.map +1 -1
  30. package/fesm2022/_selection-model-chunk.mjs.map +1 -1
  31. package/fesm2022/_shadow-dom-chunk.mjs.map +1 -1
  32. package/fesm2022/_style-loader-chunk.mjs +3 -3
  33. package/fesm2022/_style-loader-chunk.mjs.map +1 -1
  34. package/fesm2022/_test-environment-chunk.mjs.map +1 -1
  35. package/fesm2022/_tree-key-manager-chunk.mjs.map +1 -1
  36. package/fesm2022/_typeahead-chunk.mjs.map +1 -1
  37. package/fesm2022/_unique-selection-dispatcher-chunk.mjs +3 -3
  38. package/fesm2022/_unique-selection-dispatcher-chunk.mjs.map +1 -1
  39. package/fesm2022/_visually-hidden-chunk.mjs +46 -0
  40. package/fesm2022/_visually-hidden-chunk.mjs.map +1 -0
  41. package/fesm2022/a11y.mjs +10 -10
  42. package/fesm2022/a11y.mjs.map +1 -1
  43. package/fesm2022/accordion.mjs +10 -10
  44. package/fesm2022/accordion.mjs.map +1 -1
  45. package/fesm2022/bidi.mjs +7 -7
  46. package/fesm2022/bidi.mjs.map +1 -1
  47. package/fesm2022/cdk.mjs +1 -1
  48. package/fesm2022/cdk.mjs.map +1 -1
  49. package/fesm2022/clipboard.mjs +10 -10
  50. package/fesm2022/clipboard.mjs.map +1 -1
  51. package/fesm2022/coercion-private.mjs.map +1 -1
  52. package/fesm2022/coercion.mjs.map +1 -1
  53. package/fesm2022/dialog.mjs +11 -11
  54. package/fesm2022/dialog.mjs.map +1 -1
  55. package/fesm2022/drag-drop.mjs +31 -31
  56. package/fesm2022/drag-drop.mjs.map +1 -1
  57. package/fesm2022/keycodes.mjs.map +1 -1
  58. package/fesm2022/layout.mjs +4 -4
  59. package/fesm2022/layout.mjs.map +1 -1
  60. package/fesm2022/listbox.mjs +10 -10
  61. package/fesm2022/listbox.mjs.map +1 -1
  62. package/fesm2022/menu.mjs +49 -49
  63. package/fesm2022/menu.mjs.map +1 -1
  64. package/fesm2022/observers-private.mjs +3 -3
  65. package/fesm2022/observers-private.mjs.map +1 -1
  66. package/fesm2022/observers.mjs +13 -13
  67. package/fesm2022/observers.mjs.map +1 -1
  68. package/fesm2022/overlay.mjs +3 -3
  69. package/fesm2022/overlay.mjs.map +1 -1
  70. package/fesm2022/platform.mjs +4 -4
  71. package/fesm2022/platform.mjs.map +1 -1
  72. package/fesm2022/portal.mjs +10 -10
  73. package/fesm2022/portal.mjs.map +1 -1
  74. package/fesm2022/private.mjs +20 -42
  75. package/fesm2022/private.mjs.map +1 -1
  76. package/fesm2022/scrolling.mjs +35 -35
  77. package/fesm2022/scrolling.mjs.map +1 -1
  78. package/fesm2022/stepper.mjs +22 -22
  79. package/fesm2022/stepper.mjs.map +1 -1
  80. package/fesm2022/table.mjs +73 -73
  81. package/fesm2022/table.mjs.map +1 -1
  82. package/fesm2022/testing-selenium-webdriver.mjs.map +1 -1
  83. package/fesm2022/testing-testbed.mjs +6 -3
  84. package/fesm2022/testing-testbed.mjs.map +1 -1
  85. package/fesm2022/testing.mjs.map +1 -1
  86. package/fesm2022/text-field.mjs +16 -16
  87. package/fesm2022/text-field.mjs.map +1 -1
  88. package/fesm2022/tree.mjs +25 -25
  89. package/fesm2022/tree.mjs.map +1 -1
  90. package/package.json +3 -3
  91. package/schematics/ng-add/index.js +1 -1
  92. package/types/private.d.ts +17 -1
@@ -1 +1 @@
1
- {"version":3,"file":"_list-key-manager-chunk.mjs","sources":["../../../../../k8-fastbuild-ST-199a4f3c4e20/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;\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":["ListKeyManager","_items","_activeItemIndex","signal","_activeItem","_wrap","_typeaheadSubscription","Subscription","EMPTY","_itemChangesSubscription","_vertical","_horizontal","_allowedModifierKeys","_homeAndEnd","_pageUpAndDown","enabled","delta","_effectRef","_typeahead","_skipPredicateFn","item","disabled","constructor","injector","QueryList","changes","subscribe","newItems","_itemsChanged","toArray","isSignal","ngDevMode","Error","effect","debugName","tabOut","Subject","change","skipPredicate","predicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","direction","withAllowedModifierKeys","keys","withTypeAhead","debounceInterval","items","_getItemsArray","length","some","getLabel","unsubscribe","Typeahead","undefined","selectedItem","setActiveItem","cancelTypeahead","reset","withHomeAndEnd","withPageUpDown","previousActiveItem","updateActiveItem","next","onKeydown","event","keyCode","modifiers","isModifierAllowed","every","modifier","indexOf","TAB","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","PAGE_UP","targetIndex","_setActiveItemByIndex","PAGE_DOWN","itemsLength","hasModifierKey","handleKey","preventDefault","activeItemIndex","activeItem","isTyping","_setActiveItemByDelta","itemArray","index","set","setCurrentSelectedItemIndex","destroy","complete","_setActiveInWrapMode","_setActiveInDefaultMode","i","fallbackDelta","setItems","newIndex"],"mappings":"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"}
1
+ {"version":3,"file":"_list-key-manager-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/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;\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":["ListKeyManager","_items","_activeItemIndex","signal","_activeItem","_wrap","_typeaheadSubscription","Subscription","EMPTY","_itemChangesSubscription","_vertical","_horizontal","_allowedModifierKeys","_homeAndEnd","_pageUpAndDown","enabled","delta","_effectRef","_typeahead","_skipPredicateFn","item","disabled","constructor","injector","QueryList","changes","subscribe","newItems","_itemsChanged","toArray","isSignal","ngDevMode","Error","effect","debugName","tabOut","Subject","change","skipPredicate","predicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","direction","withAllowedModifierKeys","keys","withTypeAhead","debounceInterval","items","_getItemsArray","length","some","getLabel","unsubscribe","Typeahead","undefined","selectedItem","setActiveItem","cancelTypeahead","reset","withHomeAndEnd","withPageUpDown","previousActiveItem","updateActiveItem","next","onKeydown","event","keyCode","modifiers","isModifierAllowed","every","modifier","indexOf","TAB","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","PAGE_UP","targetIndex","_setActiveItemByIndex","PAGE_DOWN","itemsLength","hasModifierKey","handleKey","preventDefault","activeItemIndex","activeItem","isTyping","_setActiveItemByDelta","itemArray","index","set","setCurrentSelectedItemIndex","destroy","complete","_setActiveInWrapMode","_setActiveInDefaultMode","i","fallbackDelta","setItems","newIndex"],"mappings":"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"}
@@ -245,7 +245,7 @@ class ScrollStrategyOptions {
245
245
  reposition = config => createRepositionScrollStrategy(this._injector, config);
246
246
  static ɵfac = i0.ɵɵngDeclareFactory({
247
247
  minVersion: "12.0.0",
248
- version: "20.2.0-next.2",
248
+ version: "21.0.0",
249
249
  ngImport: i0,
250
250
  type: ScrollStrategyOptions,
251
251
  deps: [],
@@ -253,7 +253,7 @@ class ScrollStrategyOptions {
253
253
  });
254
254
  static ɵprov = i0.ɵɵngDeclareInjectable({
255
255
  minVersion: "12.0.0",
256
- version: "20.2.0-next.2",
256
+ version: "21.0.0",
257
257
  ngImport: i0,
258
258
  type: ScrollStrategyOptions,
259
259
  providedIn: 'root'
@@ -261,7 +261,7 @@ class ScrollStrategyOptions {
261
261
  }
262
262
  i0.ɵɵngDeclareClassMetadata({
263
263
  minVersion: "12.0.0",
264
- version: "20.2.0-next.2",
264
+ version: "21.0.0",
265
265
  ngImport: i0,
266
266
  type: ScrollStrategyOptions,
267
267
  decorators: [{
@@ -367,7 +367,7 @@ class BaseOverlayDispatcher {
367
367
  }
368
368
  static ɵfac = i0.ɵɵngDeclareFactory({
369
369
  minVersion: "12.0.0",
370
- version: "20.2.0-next.2",
370
+ version: "21.0.0",
371
371
  ngImport: i0,
372
372
  type: BaseOverlayDispatcher,
373
373
  deps: [],
@@ -375,7 +375,7 @@ class BaseOverlayDispatcher {
375
375
  });
376
376
  static ɵprov = i0.ɵɵngDeclareInjectable({
377
377
  minVersion: "12.0.0",
378
- version: "20.2.0-next.2",
378
+ version: "21.0.0",
379
379
  ngImport: i0,
380
380
  type: BaseOverlayDispatcher,
381
381
  providedIn: 'root'
@@ -383,7 +383,7 @@ class BaseOverlayDispatcher {
383
383
  }
384
384
  i0.ɵɵngDeclareClassMetadata({
385
385
  minVersion: "12.0.0",
386
- version: "20.2.0-next.2",
386
+ version: "21.0.0",
387
387
  ngImport: i0,
388
388
  type: BaseOverlayDispatcher,
389
389
  decorators: [{
@@ -425,7 +425,7 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
425
425
  };
426
426
  static ɵfac = i0.ɵɵngDeclareFactory({
427
427
  minVersion: "12.0.0",
428
- version: "20.2.0-next.2",
428
+ version: "21.0.0",
429
429
  ngImport: i0,
430
430
  type: OverlayKeyboardDispatcher,
431
431
  deps: null,
@@ -433,7 +433,7 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
433
433
  });
434
434
  static ɵprov = i0.ɵɵngDeclareInjectable({
435
435
  minVersion: "12.0.0",
436
- version: "20.2.0-next.2",
436
+ version: "21.0.0",
437
437
  ngImport: i0,
438
438
  type: OverlayKeyboardDispatcher,
439
439
  providedIn: 'root'
@@ -441,7 +441,7 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
441
441
  }
442
442
  i0.ɵɵngDeclareClassMetadata({
443
443
  minVersion: "12.0.0",
444
- version: "20.2.0-next.2",
444
+ version: "21.0.0",
445
445
  ngImport: i0,
446
446
  type: OverlayKeyboardDispatcher,
447
447
  decorators: [{
@@ -514,7 +514,7 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
514
514
  };
515
515
  static ɵfac = i0.ɵɵngDeclareFactory({
516
516
  minVersion: "12.0.0",
517
- version: "20.2.0-next.2",
517
+ version: "21.0.0",
518
518
  ngImport: i0,
519
519
  type: OverlayOutsideClickDispatcher,
520
520
  deps: null,
@@ -522,7 +522,7 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
522
522
  });
523
523
  static ɵprov = i0.ɵɵngDeclareInjectable({
524
524
  minVersion: "12.0.0",
525
- version: "20.2.0-next.2",
525
+ version: "21.0.0",
526
526
  ngImport: i0,
527
527
  type: OverlayOutsideClickDispatcher,
528
528
  providedIn: 'root'
@@ -530,7 +530,7 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
530
530
  }
531
531
  i0.ɵɵngDeclareClassMetadata({
532
532
  minVersion: "12.0.0",
533
- version: "20.2.0-next.2",
533
+ version: "21.0.0",
534
534
  ngImport: i0,
535
535
  type: OverlayOutsideClickDispatcher,
536
536
  decorators: [{
@@ -555,7 +555,7 @@ function containsPierceShadowDom(parent, child) {
555
555
  class _CdkOverlayStyleLoader {
556
556
  static ɵfac = i0.ɵɵngDeclareFactory({
557
557
  minVersion: "12.0.0",
558
- version: "20.2.0-next.2",
558
+ version: "21.0.0",
559
559
  ngImport: i0,
560
560
  type: _CdkOverlayStyleLoader,
561
561
  deps: [],
@@ -563,7 +563,7 @@ class _CdkOverlayStyleLoader {
563
563
  });
564
564
  static ɵcmp = i0.ɵɵngDeclareComponent({
565
565
  minVersion: "14.0.0",
566
- version: "20.2.0-next.2",
566
+ version: "21.0.0",
567
567
  type: _CdkOverlayStyleLoader,
568
568
  isStandalone: true,
569
569
  selector: "ng-component",
@@ -582,7 +582,7 @@ class _CdkOverlayStyleLoader {
582
582
  }
583
583
  i0.ɵɵngDeclareClassMetadata({
584
584
  minVersion: "12.0.0",
585
- version: "20.2.0-next.2",
585
+ version: "21.0.0",
586
586
  ngImport: i0,
587
587
  type: _CdkOverlayStyleLoader,
588
588
  decorators: [{
@@ -637,7 +637,7 @@ class OverlayContainer {
637
637
  }
638
638
  static ɵfac = i0.ɵɵngDeclareFactory({
639
639
  minVersion: "12.0.0",
640
- version: "20.2.0-next.2",
640
+ version: "21.0.0",
641
641
  ngImport: i0,
642
642
  type: OverlayContainer,
643
643
  deps: [],
@@ -645,7 +645,7 @@ class OverlayContainer {
645
645
  });
646
646
  static ɵprov = i0.ɵɵngDeclareInjectable({
647
647
  minVersion: "12.0.0",
648
- version: "20.2.0-next.2",
648
+ version: "21.0.0",
649
649
  ngImport: i0,
650
650
  type: OverlayContainer,
651
651
  providedIn: 'root'
@@ -653,7 +653,7 @@ class OverlayContainer {
653
653
  }
654
654
  i0.ɵɵngDeclareClassMetadata({
655
655
  minVersion: "12.0.0",
656
- version: "20.2.0-next.2",
656
+ version: "21.0.0",
657
657
  ngImport: i0,
658
658
  type: OverlayContainer,
659
659
  decorators: [{
@@ -699,6 +699,9 @@ class BackdropRef {
699
699
  };
700
700
  }
701
701
 
702
+ function isElement(value) {
703
+ return value && value.nodeType === 1;
704
+ }
702
705
  class OverlayRef {
703
706
  _portalOutlet;
704
707
  _host;
@@ -941,14 +944,10 @@ class OverlayRef {
941
944
  _attachHost() {
942
945
  if (!this._host.parentElement) {
943
946
  const customInsertionPoint = this._config.usePopover ? this._positionStrategy?.getPopoverInsertionPoint?.() : null;
944
- if (customInsertionPoint) {
945
- if (customInsertionPoint instanceof Element) {
946
- customInsertionPoint.after(this._host);
947
- } else {
948
- if (customInsertionPoint.type === 'parent') {
949
- customInsertionPoint.element?.appendChild(this._host);
950
- }
951
- }
947
+ if (isElement(customInsertionPoint)) {
948
+ customInsertionPoint.after(this._host);
949
+ } else if (customInsertionPoint?.type === 'parent') {
950
+ customInsertionPoint.element.appendChild(this._host);
952
951
  } else {
953
952
  this._previousHostParent?.appendChild(this._host);
954
953
  }
@@ -1296,27 +1295,16 @@ class FlexibleConnectedPositionStrategy {
1296
1295
  getPopoverInsertionPoint() {
1297
1296
  if (this._popoverLocation === 'global') {
1298
1297
  return null;
1298
+ } else if (this._popoverLocation !== 'inline') {
1299
+ return this._popoverLocation;
1299
1300
  }
1300
- let hostElement = null;
1301
- if (this._popoverLocation === 'inline') {
1302
- if (this._origin instanceof ElementRef) {
1303
- hostElement = this._origin.nativeElement;
1304
- } else if (this._origin instanceof Element) {
1305
- hostElement = this._origin;
1306
- }
1301
+ if (this._origin instanceof ElementRef) {
1302
+ return this._origin.nativeElement;
1303
+ } else if (isElement(this._origin)) {
1304
+ return this._origin;
1307
1305
  } else {
1308
- hostElement = this._popoverLocation.element;
1309
- }
1310
- if (this._popoverLocation === 'inline') {
1311
- return hostElement;
1312
- }
1313
- if (hostElement) {
1314
- return {
1315
- type: 'parent',
1316
- element: hostElement
1317
- };
1306
+ return null;
1318
1307
  }
1319
- return null;
1320
1308
  }
1321
1309
  _getOriginPoint(originRect, containerRect, pos) {
1322
1310
  let x;
@@ -2016,7 +2004,7 @@ class OverlayPositionBuilder {
2016
2004
  }
2017
2005
  static ɵfac = i0.ɵɵngDeclareFactory({
2018
2006
  minVersion: "12.0.0",
2019
- version: "20.2.0-next.2",
2007
+ version: "21.0.0",
2020
2008
  ngImport: i0,
2021
2009
  type: OverlayPositionBuilder,
2022
2010
  deps: [],
@@ -2024,7 +2012,7 @@ class OverlayPositionBuilder {
2024
2012
  });
2025
2013
  static ɵprov = i0.ɵɵngDeclareInjectable({
2026
2014
  minVersion: "12.0.0",
2027
- version: "20.2.0-next.2",
2015
+ version: "21.0.0",
2028
2016
  ngImport: i0,
2029
2017
  type: OverlayPositionBuilder,
2030
2018
  providedIn: 'root'
@@ -2032,7 +2020,7 @@ class OverlayPositionBuilder {
2032
2020
  }
2033
2021
  i0.ɵɵngDeclareClassMetadata({
2034
2022
  minVersion: "12.0.0",
2035
- version: "20.2.0-next.2",
2023
+ version: "21.0.0",
2036
2024
  ngImport: i0,
2037
2025
  type: OverlayPositionBuilder,
2038
2026
  decorators: [{
@@ -2076,14 +2064,10 @@ function createOverlayRef(injector, config) {
2076
2064
  }
2077
2065
  const customInsertionPoint = overlayConfig.usePopover ? overlayConfig.positionStrategy?.getPopoverInsertionPoint?.() : null;
2078
2066
  overlayContainer.getContainerElement().appendChild(host);
2079
- if (customInsertionPoint) {
2080
- if (customInsertionPoint instanceof Element) {
2081
- customInsertionPoint.after(host);
2082
- } else {
2083
- if (customInsertionPoint.type === 'parent') {
2084
- customInsertionPoint.element?.appendChild(host);
2085
- }
2086
- }
2067
+ if (isElement(customInsertionPoint)) {
2068
+ customInsertionPoint.after(host);
2069
+ } else if (customInsertionPoint?.type === 'parent') {
2070
+ customInsertionPoint.element.appendChild(host);
2087
2071
  }
2088
2072
  return new OverlayRef(new DomPortalOutlet(pane, appRef, injector), host, pane, overlayConfig, injector.get(NgZone), injector.get(OverlayKeyboardDispatcher), doc, injector.get(Location), injector.get(OverlayOutsideClickDispatcher), config?.disableAnimations ?? injector.get(ANIMATION_MODULE_TYPE, null, {
2089
2073
  optional: true
@@ -2102,7 +2086,7 @@ class Overlay {
2102
2086
  }
2103
2087
  static ɵfac = i0.ɵɵngDeclareFactory({
2104
2088
  minVersion: "12.0.0",
2105
- version: "20.2.0-next.2",
2089
+ version: "21.0.0",
2106
2090
  ngImport: i0,
2107
2091
  type: Overlay,
2108
2092
  deps: [],
@@ -2110,7 +2094,7 @@ class Overlay {
2110
2094
  });
2111
2095
  static ɵprov = i0.ɵɵngDeclareInjectable({
2112
2096
  minVersion: "12.0.0",
2113
- version: "20.2.0-next.2",
2097
+ version: "21.0.0",
2114
2098
  ngImport: i0,
2115
2099
  type: Overlay,
2116
2100
  providedIn: 'root'
@@ -2118,7 +2102,7 @@ class Overlay {
2118
2102
  }
2119
2103
  i0.ɵɵngDeclareClassMetadata({
2120
2104
  minVersion: "12.0.0",
2121
- version: "20.2.0-next.2",
2105
+ version: "21.0.0",
2122
2106
  ngImport: i0,
2123
2107
  type: Overlay,
2124
2108
  decorators: [{
@@ -2163,7 +2147,7 @@ class CdkOverlayOrigin {
2163
2147
  constructor() {}
2164
2148
  static ɵfac = i0.ɵɵngDeclareFactory({
2165
2149
  minVersion: "12.0.0",
2166
- version: "20.2.0-next.2",
2150
+ version: "21.0.0",
2167
2151
  ngImport: i0,
2168
2152
  type: CdkOverlayOrigin,
2169
2153
  deps: [],
@@ -2171,7 +2155,7 @@ class CdkOverlayOrigin {
2171
2155
  });
2172
2156
  static ɵdir = i0.ɵɵngDeclareDirective({
2173
2157
  minVersion: "14.0.0",
2174
- version: "20.2.0-next.2",
2158
+ version: "21.0.0",
2175
2159
  type: CdkOverlayOrigin,
2176
2160
  isStandalone: true,
2177
2161
  selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]",
@@ -2181,7 +2165,7 @@ class CdkOverlayOrigin {
2181
2165
  }
2182
2166
  i0.ɵɵngDeclareClassMetadata({
2183
2167
  minVersion: "12.0.0",
2184
- version: "20.2.0-next.2",
2168
+ version: "21.0.0",
2185
2169
  ngImport: i0,
2186
2170
  type: CdkOverlayOrigin,
2187
2171
  decorators: [{
@@ -2459,7 +2443,7 @@ class CdkConnectedOverlay {
2459
2443
  }
2460
2444
  static ɵfac = i0.ɵɵngDeclareFactory({
2461
2445
  minVersion: "12.0.0",
2462
- version: "20.2.0-next.2",
2446
+ version: "21.0.0",
2463
2447
  ngImport: i0,
2464
2448
  type: CdkConnectedOverlay,
2465
2449
  deps: [],
@@ -2467,7 +2451,7 @@ class CdkConnectedOverlay {
2467
2451
  });
2468
2452
  static ɵdir = i0.ɵɵngDeclareDirective({
2469
2453
  minVersion: "16.1.0",
2470
- version: "20.2.0-next.2",
2454
+ version: "21.0.0",
2471
2455
  type: CdkConnectedOverlay,
2472
2456
  isStandalone: true,
2473
2457
  selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]",
@@ -2513,7 +2497,7 @@ class CdkConnectedOverlay {
2513
2497
  }
2514
2498
  i0.ɵɵngDeclareClassMetadata({
2515
2499
  minVersion: "12.0.0",
2516
- version: "20.2.0-next.2",
2500
+ version: "21.0.0",
2517
2501
  ngImport: i0,
2518
2502
  type: CdkConnectedOverlay,
2519
2503
  decorators: [{
@@ -2672,7 +2656,7 @@ i0.ɵɵngDeclareClassMetadata({
2672
2656
  class OverlayModule {
2673
2657
  static ɵfac = i0.ɵɵngDeclareFactory({
2674
2658
  minVersion: "12.0.0",
2675
- version: "20.2.0-next.2",
2659
+ version: "21.0.0",
2676
2660
  ngImport: i0,
2677
2661
  type: OverlayModule,
2678
2662
  deps: [],
@@ -2680,7 +2664,7 @@ class OverlayModule {
2680
2664
  });
2681
2665
  static ɵmod = i0.ɵɵngDeclareNgModule({
2682
2666
  minVersion: "14.0.0",
2683
- version: "20.2.0-next.2",
2667
+ version: "21.0.0",
2684
2668
  ngImport: i0,
2685
2669
  type: OverlayModule,
2686
2670
  imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],
@@ -2688,7 +2672,7 @@ class OverlayModule {
2688
2672
  });
2689
2673
  static ɵinj = i0.ɵɵngDeclareInjector({
2690
2674
  minVersion: "12.0.0",
2691
- version: "20.2.0-next.2",
2675
+ version: "21.0.0",
2692
2676
  ngImport: i0,
2693
2677
  type: OverlayModule,
2694
2678
  providers: [Overlay],
@@ -2697,7 +2681,7 @@ class OverlayModule {
2697
2681
  }
2698
2682
  i0.ɵɵngDeclareClassMetadata({
2699
2683
  minVersion: "12.0.0",
2700
- version: "20.2.0-next.2",
2684
+ version: "21.0.0",
2701
2685
  ngImport: i0,
2702
2686
  type: OverlayModule,
2703
2687
  decorators: [{