{"version":3,"file":"autocomplete.js","sources":["../../../../../../src/material/autocomplete/autocomplete.ts","../../../../../../src/material/autocomplete/autocomplete-origin.ts","../../../../../../src/material/autocomplete/autocomplete-trigger.ts","../../../../../../src/material/autocomplete/autocomplete-module.ts","../../../../../../src/material/autocomplete/public-api.ts","../../../../../../src/material/autocomplete/index.ts"],"names":["observableOf"],"mappings":"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","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.io/license\n */\n\nimport {ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {BooleanInput, coerceBooleanProperty, coerceStringArray} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n OnDestroy,\n Directive,\n} from '@angular/core';\nimport {\n CanDisableRipple,\n MAT_OPTGROUP,\n MAT_OPTION_PARENT_COMPONENT,\n _MatOptgroupBase,\n _MatOptionBase,\n mixinDisableRipple,\n MatOption,\n MatOptgroup,\n} from '@angular/material/core';\nimport {Subscription} from 'rxjs';\n\n\n/**\n * Autocomplete IDs need to be unique across components, so this counter exists outside of\n * the component definition.\n */\nlet _uniqueAutocompleteIdCounter = 0;\n\n/** Event object that is emitted when an autocomplete option is selected. */\nexport class MatAutocompleteSelectedEvent {\n constructor(\n /** Reference to the autocomplete panel that emitted the event. */\n public source: _MatAutocompleteBase,\n /** Option that was selected. */\n public option: _MatOptionBase) { }\n}\n\n/** Event object that is emitted when an autocomplete option is activated. */\nexport interface MatAutocompleteActivatedEvent {\n /** Reference to the autocomplete panel that emitted the event. */\n source: _MatAutocompleteBase;\n\n /** Option that was selected. */\n option: _MatOptionBase|null;\n}\n\n// Boilerplate for applying mixins to MatAutocomplete.\n/** @docs-private */\nconst _MatAutocompleteMixinBase = mixinDisableRipple(class {});\n\n/** Default `mat-autocomplete` options that can be overridden. */\nexport interface MatAutocompleteDefaultOptions {\n /** Whether the first option should be highlighted when an autocomplete panel is opened. */\n autoActiveFirstOption?: boolean;\n\n /** Class or list of classes to be applied to the autocomplete's overlay panel. */\n overlayPanelClass?: string | string[];\n}\n\n/** Injection token to be used to override the default options for `mat-autocomplete`. */\nexport const MAT_AUTOCOMPLETE_DEFAULT_OPTIONS =\n new InjectionToken('mat-autocomplete-default-options', {\n providedIn: 'root',\n factory: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY(): MatAutocompleteDefaultOptions {\n return {autoActiveFirstOption: false};\n}\n\n/** Base class with all of the `MatAutocomplete` functionality. */\n@Directive()\nexport abstract class _MatAutocompleteBase extends _MatAutocompleteMixinBase implements\n AfterContentInit, CanDisableRipple, OnDestroy {\n private _activeOptionChanges = Subscription.EMPTY;\n\n /** Class to apply to the panel when it's visible. */\n protected abstract _visibleClass: string;\n\n /** Class to apply to the panel when it's hidden. */\n protected abstract _hiddenClass: string;\n\n /** Manages active item in option list based on key events. */\n _keyManager: ActiveDescendantKeyManager<_MatOptionBase>;\n\n /** Whether the autocomplete panel should be visible, depending on option length. */\n showPanel: boolean = false;\n\n /** Whether the autocomplete panel is open. */\n get isOpen(): boolean { return this._isOpen && this.showPanel; }\n _isOpen: boolean = false;\n\n // The @ViewChild query for TemplateRef here needs to be static because some code paths\n // lead to the overlay being created before change detection has finished for this component.\n // Notably, another component may trigger `focus` on the autocomplete-trigger.\n\n /** @docs-private */\n @ViewChild(TemplateRef, {static: true}) template: TemplateRef;\n\n /** Element for the panel containing the autocomplete options. */\n @ViewChild('panel') panel: ElementRef;\n\n /** Reference to all options within the autocomplete. */\n abstract options: QueryList<_MatOptionBase>;\n\n /** Reference to all option groups within the autocomplete. */\n abstract optionGroups: QueryList<_MatOptgroupBase>;\n\n /** Aria label of the autocomplete. */\n @Input('aria-label') ariaLabel: string;\n\n /** Input that can be used to specify the `aria-labelledby` attribute. */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /** Function that maps an option's control value to its display value in the trigger. */\n @Input() displayWith: ((value: any) => string) | null = null;\n\n /**\n * Whether the first option should be highlighted when the autocomplete panel is opened.\n * Can be configured globally through the `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS` token.\n */\n @Input()\n get autoActiveFirstOption(): boolean { return this._autoActiveFirstOption; }\n set autoActiveFirstOption(value: boolean) {\n this._autoActiveFirstOption = coerceBooleanProperty(value);\n }\n private _autoActiveFirstOption: boolean;\n\n /**\n * Specify the width of the autocomplete panel. Can be any CSS sizing value, otherwise it will\n * match the width of its host.\n */\n @Input() panelWidth: string | number;\n\n /** Event that is emitted whenever an option from the list is selected. */\n @Output() readonly optionSelected: EventEmitter =\n new EventEmitter();\n\n /** Event that is emitted when the autocomplete panel is opened. */\n @Output() readonly opened: EventEmitter = new EventEmitter();\n\n /** Event that is emitted when the autocomplete panel is closed. */\n @Output() readonly closed: EventEmitter = new EventEmitter();\n\n /** Emits whenever an option is activated using the keyboard. */\n @Output() readonly optionActivated: EventEmitter =\n new EventEmitter();\n\n /**\n * Takes classes set on the host mat-autocomplete element and applies them to the panel\n * inside the overlay container to allow for easy styling.\n */\n @Input('class')\n set classList(value: string | string[]) {\n if (value && value.length) {\n this._classList = coerceStringArray(value).reduce((classList, className) => {\n classList[className] = true;\n return classList;\n }, {} as {[key: string]: boolean});\n } else {\n this._classList = {};\n }\n\n this._setVisibilityClasses(this._classList);\n this._elementRef.nativeElement.className = '';\n }\n _classList: {[key: string]: boolean} = {};\n\n /** Unique ID to be used by autocomplete trigger's \"aria-owns\" property. */\n id: string = `mat-autocomplete-${_uniqueAutocompleteIdCounter++}`;\n\n /**\n * Tells any descendant `mat-optgroup` to use the inert a11y pattern.\n * @docs-private\n */\n readonly inertGroups: boolean;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _elementRef: ElementRef,\n @Inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS) defaults: MatAutocompleteDefaultOptions,\n platform?: Platform) {\n super();\n\n // TODO(crisbeto): the problem that the `inertGroups` option resolves is only present on\n // Safari using VoiceOver. We should occasionally check back to see whether the bug\n // wasn't resolved in VoiceOver, and if it has, we can remove this and the `inertGroups`\n // option altogether.\n this.inertGroups = platform?.SAFARI || false;\n this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;\n }\n\n ngAfterContentInit() {\n this._keyManager = new ActiveDescendantKeyManager<_MatOptionBase>(this.options).withWrap();\n this._activeOptionChanges = this._keyManager.change.subscribe(index => {\n if (this.isOpen) {\n this.optionActivated.emit({source: this, option: this.options.toArray()[index] || null});\n }\n });\n\n // Set the initial visibility state.\n this._setVisibility();\n }\n\n ngOnDestroy() {\n this._activeOptionChanges.unsubscribe();\n }\n\n /**\n * Sets the panel scrollTop. This allows us to manually scroll to display options\n * above or below the fold, as they are not actually being focused when active.\n */\n _setScrollTop(scrollTop: number): void {\n if (this.panel) {\n this.panel.nativeElement.scrollTop = scrollTop;\n }\n }\n\n /** Returns the panel's scrollTop. */\n _getScrollTop(): number {\n return this.panel ? this.panel.nativeElement.scrollTop : 0;\n }\n\n /** Panel should hide itself when the option list is empty. */\n _setVisibility() {\n this.showPanel = !!this.options.length;\n this._setVisibilityClasses(this._classList);\n this._changeDetectorRef.markForCheck();\n }\n\n /** Emits the `select` event. */\n _emitSelectEvent(option: _MatOptionBase): void {\n const event = new MatAutocompleteSelectedEvent(this, option);\n this.optionSelected.emit(event);\n }\n\n /** Gets the aria-labelledby for the autocomplete panel. */\n _getPanelAriaLabelledby(labelId: string | null): string | null {\n if (this.ariaLabel) {\n return null;\n }\n\n const labelExpression = labelId ? labelId + ' ' : '';\n return this.ariaLabelledby ? labelExpression + this.ariaLabelledby : labelId;\n }\n\n\n /** Sets the autocomplete visibility classes on a classlist based on the panel is visible. */\n private _setVisibilityClasses(classList: {[key: string]: boolean}) {\n classList[this._visibleClass] = this.showPanel;\n classList[this._hiddenClass] = !this.showPanel;\n }\n\n static ngAcceptInputType_autoActiveFirstOption: BooleanInput;\n static ngAcceptInputType_disableRipple: BooleanInput;\n}\n\n@Component({\n selector: 'mat-autocomplete',\n templateUrl: 'autocomplete.html',\n styleUrls: ['autocomplete.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: 'matAutocomplete',\n inputs: ['disableRipple'],\n host: {\n 'class': 'mat-autocomplete'\n },\n providers: [\n {provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete}\n ]\n})\nexport class MatAutocomplete extends _MatAutocompleteBase {\n /** Reference to all option groups within the autocomplete. */\n @ContentChildren(MAT_OPTGROUP, {descendants: true}) optionGroups: QueryList;\n /** Reference to all options within the autocomplete. */\n @ContentChildren(MatOption, {descendants: true}) options: QueryList;\n protected _visibleClass = 'mat-autocomplete-visible';\n protected _hiddenClass = 'mat-autocomplete-hidden';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef} from '@angular/core';\n\n/** Base class containing all of the functionality for `MatAutocompleteOrigin`. */\n@Directive()\nexport abstract class _MatAutocompleteOriginBase {\n constructor(\n /** Reference to the element on which the directive is applied. */\n public elementRef: ElementRef) {}\n}\n\n/**\n * Directive applied to an element to make it usable\n * as a connection point for an autocomplete panel.\n */\n@Directive({\n selector: '[matAutocompleteOrigin]',\n exportAs: 'matAutocompleteOrigin',\n})\nexport class MatAutocompleteOrigin extends _MatAutocompleteOriginBase {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n forwardRef,\n Host,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {\n _countGroupLabelsBeforeOption,\n _getOptionScrollPosition,\n MatOption,\n MatOptionSelectionChange,\n} from '@angular/material/core';\nimport {MAT_FORM_FIELD, MatFormField} from '@angular/material/form-field';\nimport {defer, fromEvent, merge, Observable, of as observableOf, Subject, Subscription} from 'rxjs';\nimport {delay, filter, map, switchMap, take, tap} from 'rxjs/operators';\n\nimport {\n _MatAutocompleteBase,\n MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\n MatAutocompleteDefaultOptions\n} from './autocomplete';\nimport {_MatAutocompleteOriginBase} from './autocomplete-origin';\n\n\n/** Injection token that determines the scroll handling while the autocomplete panel is open. */\nexport const MAT_AUTOCOMPLETE_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mat-autocomplete-scroll-strategy');\n\n/** @docs-private */\nexport function MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MAT_AUTOCOMPLETE_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY,\n};\n\n/**\n * Provider that allows the autocomplete to register as a ControlValueAccessor.\n * @docs-private\n */\nexport const MAT_AUTOCOMPLETE_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatAutocompleteTrigger),\n multi: true\n};\n\n/**\n * Creates an error to be thrown when attempting to use an autocomplete trigger without a panel.\n * @docs-private\n */\nexport function getMatAutocompleteMissingPanelError(): Error {\n return Error('Attempting to open an undefined instance of `mat-autocomplete`. ' +\n 'Make sure that the id passed to the `matAutocomplete` is correct and that ' +\n 'you\\'re attempting to open it after the ngAfterContentInit hook.');\n}\n\n/** Base class with all of the `MatAutocompleteTrigger` functionality. */\n@Directive()\nexport abstract class _MatAutocompleteTriggerBase implements ControlValueAccessor, AfterViewInit,\n OnChanges, OnDestroy {\n\n private _overlayRef: OverlayRef | null;\n private _portal: TemplatePortal;\n private _componentDestroyed = false;\n private _autocompleteDisabled = false;\n private _scrollStrategy: () => ScrollStrategy;\n\n /** Old value of the native input. Used to work around issues with the `input` event on IE. */\n private _previousValue: string | number | null;\n\n /** Strategy that is used to position the panel. */\n private _positionStrategy: FlexibleConnectedPositionStrategy;\n\n /** Whether or not the label state is being overridden. */\n private _manuallyFloatingLabel = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription: Subscription;\n\n /** Subscription to viewport size changes. */\n private _viewportSubscription = Subscription.EMPTY;\n\n /**\n * Whether the autocomplete can open the next time it is focused. Used to prevent a focused,\n * closed autocomplete from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /** Stream of keyboard events that can close the panel. */\n private readonly _closeKeyEventStream = new Subject();\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the autocomplete is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._element.nativeElement || this.panelOpen;\n }\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when autocomplete has been touched` */\n _onTouched = () => {};\n\n /** The autocomplete panel to be attached to this trigger. */\n @Input('matAutocomplete') autocomplete: _MatAutocompleteBase;\n\n /**\n * Position of the autocomplete panel relative to the trigger element. A position of `auto`\n * will render the panel underneath the trigger if there is enough space for it to fit in\n * the viewport, otherwise the panel will be shown above it. If the position is set to\n * `above` or `below`, the panel will always be shown above or below the trigger. no matter\n * whether it fits completely in the viewport.\n */\n @Input('matAutocompletePosition') position: 'auto' | 'above' | 'below' = 'auto';\n\n /**\n * Reference relative to which to position the autocomplete panel.\n * Defaults to the autocomplete trigger element.\n */\n @Input('matAutocompleteConnectedTo') connectedTo: _MatAutocompleteOriginBase;\n\n /**\n * `autocomplete` attribute to be set on the input element.\n * @docs-private\n */\n @Input('autocomplete') autocompleteAttribute: string = 'off';\n\n /**\n * Whether the autocomplete is disabled. When disabled, the element will\n * act as a regular input and the user won't be able to open the panel.\n */\n @Input('matAutocompleteDisabled')\n get autocompleteDisabled(): boolean { return this._autocompleteDisabled; }\n set autocompleteDisabled(value: boolean) {\n this._autocompleteDisabled = coerceBooleanProperty(value);\n }\n\n constructor(private _element: ElementRef, private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef,\n private _zone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_AUTOCOMPLETE_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(MAT_FORM_FIELD) @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any,\n private _viewportRuler: ViewportRuler,\n @Optional() @Inject(MAT_AUTOCOMPLETE_DEFAULT_OPTIONS)\n private _defaults?: MatAutocompleteDefaultOptions) {\n this._scrollStrategy = scrollStrategy;\n }\n\n /** Class to apply to the panel when it's above the input. */\n protected abstract _aboveClass: string;\n\n ngAfterViewInit() {\n const window = this._getWindow();\n\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => window.addEventListener('blur', this._windowBlurHandler));\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['position'] && this._positionStrategy) {\n this._setStrategyPositions(this._positionStrategy);\n\n if (this.panelOpen) {\n this._overlayRef!.updatePosition();\n }\n }\n }\n\n ngOnDestroy() {\n const window = this._getWindow();\n\n if (typeof window !== 'undefined') {\n window.removeEventListener('blur', this._windowBlurHandler);\n }\n\n this._viewportSubscription.unsubscribe();\n this._componentDestroyed = true;\n this._destroyPanel();\n this._closeKeyEventStream.complete();\n }\n\n /** Whether or not the autocomplete panel is open. */\n get panelOpen(): boolean {\n return this._overlayAttached && this.autocomplete.showPanel;\n }\n private _overlayAttached: boolean = false;\n\n /** Opens the autocomplete suggestion panel. */\n openPanel(): void {\n this._attachOverlay();\n this._floatLabel();\n }\n\n /** Closes the autocomplete suggestion panel. */\n closePanel(): void {\n this._resetLabel();\n\n if (!this._overlayAttached) {\n return;\n }\n\n if (this.panelOpen) {\n // Only emit if the panel was visible.\n this.autocomplete.closed.emit();\n }\n\n this.autocomplete._isOpen = this._overlayAttached = false;\n\n if (this._overlayRef && this._overlayRef.hasAttached()) {\n this._overlayRef.detach();\n this._closingActionsSubscription.unsubscribe();\n }\n\n // Note that in some cases this can end up being called after the component is destroyed.\n // Add a check to ensure that we don't try to run change detection on a destroyed view.\n if (!this._componentDestroyed) {\n // We need to trigger change detection manually, because\n // `fromEvent` doesn't seem to do it at the proper time.\n // This ensures that the label is reset when the\n // user clicks outside.\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /**\n * Updates the position of the autocomplete suggestion panel to ensure that it fits all options\n * within the viewport.\n */\n updatePosition(): void {\n if (this._overlayAttached) {\n this._overlayRef!.updatePosition();\n }\n }\n\n /**\n * A stream of actions that should close the autocomplete panel, including\n * when an option is selected, on blur, and when TAB is pressed.\n */\n get panelClosingActions(): Observable {\n return merge(\n this.optionSelections,\n this.autocomplete._keyManager.tabOut.pipe(filter(() => this._overlayAttached)),\n this._closeKeyEventStream,\n this._getOutsideClickStream(),\n this._overlayRef ?\n this._overlayRef.detachments().pipe(filter(() => this._overlayAttached)) :\n observableOf()\n ).pipe(\n // Normalize the output so we return a consistent type.\n map(event => event instanceof MatOptionSelectionChange ? event : null)\n );\n }\n\n /** Stream of autocomplete option selections. */\n readonly optionSelections: Observable = defer(() => {\n if (this.autocomplete && this.autocomplete.options) {\n return merge(...this.autocomplete.options.map(option => option.onSelectionChange));\n }\n\n // If there are any subscribers before `ngAfterViewInit`, the `autocomplete` will be undefined.\n // Return a stream that we'll replace with the real one once everything is in place.\n return this._zone.onStable\n .pipe(take(1), switchMap(() => this.optionSelections));\n }) as Observable;\n\n /** The currently active option, coerced to MatOption type. */\n get activeOption(): MatOption | null {\n if (this.autocomplete && this.autocomplete._keyManager) {\n return this.autocomplete._keyManager.activeItem;\n }\n\n return null;\n }\n\n /** Stream of clicks outside of the autocomplete panel. */\n private _getOutsideClickStream(): Observable {\n return merge(\n fromEvent(this._document, 'click') as Observable,\n fromEvent(this._document, 'auxclick') as Observable,\n fromEvent(this._document, 'touchend') as Observable)\n .pipe(filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = _getEventTarget(event)!;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n const customOrigin = this.connectedTo ? this.connectedTo.elementRef.nativeElement : null;\n\n return this._overlayAttached && clickTarget !== this._element.nativeElement &&\n (!formField || !formField.contains(clickTarget)) &&\n (!customOrigin || !customOrigin.contains(clickTarget)) &&\n (!!this._overlayRef && !this._overlayRef.overlayElement.contains(clickTarget));\n }));\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: any): void {\n Promise.resolve(null).then(() => this._setTriggerValue(value));\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => {}): void {\n this._onChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => {}) {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean) {\n this._element.nativeElement.disabled = isDisabled;\n }\n\n _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n // Prevent the default action on all escape key presses. This is here primarily to bring IE\n // in line with other browsers. By default, pressing escape on IE will cause it to revert\n // the input value to the one that it had on focus, however it won't dispatch any events\n // which means that the model value will be out of sync with the view.\n if (keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n }\n\n if (this.activeOption && keyCode === ENTER && this.panelOpen) {\n this.activeOption._selectViaInteraction();\n this._resetActiveItem();\n event.preventDefault();\n } else if (this.autocomplete) {\n const prevActiveItem = this.autocomplete._keyManager.activeItem;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n\n if (this.panelOpen || keyCode === TAB) {\n this.autocomplete._keyManager.onKeydown(event);\n } else if (isArrowKey && this._canOpen()) {\n this.openPanel();\n }\n\n if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {\n this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);\n }\n }\n }\n\n _handleInput(event: KeyboardEvent): void {\n let target = event.target as HTMLInputElement;\n let value: number | string | null = target.value;\n\n // Based on `NumberValueAccessor` from forms.\n if (target.type === 'number') {\n value = value == '' ? null : parseFloat(value);\n }\n\n // If the input has a placeholder, IE will fire the `input` event on page load,\n // focus and blur, in addition to when the user actually changed the value. To\n // filter out all of the extra events, we save the value on focus and between\n // `input` events, and we check whether it changed.\n // See: https://connect.microsoft.com/IE/feedback/details/885747/\n if (this._previousValue !== value) {\n this._previousValue = value;\n this._onChange(value);\n\n if (this._canOpen() && this._document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n\n _handleFocus(): void {\n if (!this._canOpenOnNextFocus) {\n this._canOpenOnNextFocus = true;\n } else if (this._canOpen()) {\n this._previousValue = this._element.nativeElement.value;\n this._attachOverlay();\n this._floatLabel(true);\n }\n }\n\n /**\n * In \"auto\" mode, the label will animate down as soon as focus is lost.\n * This causes the value to jump when selecting an option with the mouse.\n * This method manually floats the label until the panel can be closed.\n * @param shouldAnimate Whether the label should be animated when it is floated.\n */\n private _floatLabel(shouldAnimate = false): void {\n if (this._formField && this._formField.floatLabel === 'auto') {\n if (shouldAnimate) {\n this._formField._animateAndLockLabel();\n } else {\n this._formField.floatLabel = 'always';\n }\n\n this._manuallyFloatingLabel = true;\n }\n }\n\n /** If the label has been manually elevated, return it to its normal state. */\n private _resetLabel(): void {\n if (this._manuallyFloatingLabel) {\n this._formField.floatLabel = 'auto';\n this._manuallyFloatingLabel = false;\n }\n }\n\n /**\n * This method listens to a stream of panel closing actions and resets the\n * stream every time the option list changes.\n */\n private _subscribeToClosingActions(): Subscription {\n const firstStable = this._zone.onStable.pipe(take(1));\n const optionChanges = this.autocomplete.options.changes.pipe(\n tap(() => this._positionStrategy.reapplyLastPosition()),\n // Defer emitting to the stream until the next tick, because changing\n // bindings in here will cause \"changed after checked\" errors.\n delay(0)\n );\n\n // When the zone is stable initially, and when the option list changes...\n return merge(firstStable, optionChanges)\n .pipe(\n // create a new stream of panelClosingActions, replacing any previous streams\n // that were created, and flatten it so our stream only emits closing events...\n switchMap(() => {\n const wasOpen = this.panelOpen;\n this._resetActiveItem();\n this.autocomplete._setVisibility();\n\n if (this.panelOpen) {\n this._overlayRef!.updatePosition();\n\n // If the `panelOpen` state changed, we need to make sure to emit the `opened`\n // event, because we may not have emitted it when the panel was attached. This\n // can happen if the users opens the panel and there are no options, but the\n // options come in slightly later or as a result of the value changing.\n if (wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n\n return this.panelClosingActions;\n }),\n // when the first closing event occurs...\n take(1))\n // set the value, close the panel, and complete.\n .subscribe(event => this._setValueAndClose(event));\n }\n\n /** Destroys the autocomplete suggestion panel. */\n private _destroyPanel(): void {\n if (this._overlayRef) {\n this.closePanel();\n this._overlayRef.dispose();\n this._overlayRef = null;\n }\n }\n\n private _setTriggerValue(value: any): void {\n const toDisplay = this.autocomplete && this.autocomplete.displayWith ?\n this.autocomplete.displayWith(value) :\n value;\n\n // Simply falling back to an empty string if the display value is falsy does not work properly.\n // The display value can also be the number zero and shouldn't fall back to an empty string.\n const inputValue = toDisplay != null ? toDisplay : '';\n\n // If it's used within a `MatFormField`, we should set it through the property so it can go\n // through change detection.\n if (this._formField) {\n this._formField._control.value = inputValue;\n } else {\n this._element.nativeElement.value = inputValue;\n }\n\n this._previousValue = inputValue;\n }\n\n /**\n * This method closes the panel, and if a value is specified, also sets the associated\n * control to that value. It will also mark the control as dirty if this interaction\n * stemmed from the user.\n */\n private _setValueAndClose(event: MatOptionSelectionChange | null): void {\n if (event && event.source) {\n this._clearPreviousSelectedOption(event.source);\n this._setTriggerValue(event.source.value);\n this._onChange(event.source.value);\n this._element.nativeElement.focus();\n this.autocomplete._emitSelectEvent(event.source);\n }\n\n this.closePanel();\n }\n\n /**\n * Clear any previous selected option and emit a selection change event for this option\n */\n private _clearPreviousSelectedOption(skip: MatOption) {\n this.autocomplete.options.forEach(option => {\n if (option !== skip && option.selected) {\n option.deselect();\n }\n });\n }\n\n private _attachOverlay(): void {\n if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatAutocompleteMissingPanelError();\n }\n\n let overlayRef = this._overlayRef;\n\n if (!overlayRef) {\n this._portal = new TemplatePortal(this.autocomplete.template,\n this._viewContainerRef,\n {id: this._formField?.getLabelId()});\n overlayRef = this._overlay.create(this._getOverlayConfig());\n this._overlayRef = overlayRef;\n\n // Use the `keydownEvents` in order to take advantage of\n // the overlay event targeting provided by the CDK overlay.\n overlayRef.keydownEvents().subscribe(event => {\n // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.\n // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction\n if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {\n this._closeKeyEventStream.next();\n this._resetActiveItem();\n\n // We need to stop propagation, otherwise the event will eventually\n // reach the input itself and cause the overlay to be reopened.\n event.stopPropagation();\n event.preventDefault();\n }\n });\n\n this._viewportSubscription = this._viewportRuler.change().subscribe(() => {\n if (this.panelOpen && overlayRef) {\n overlayRef.updateSize({width: this._getPanelWidth()});\n }\n });\n } else {\n // Update the trigger, panel width and direction, in case anything has changed.\n this._positionStrategy.setOrigin(this._getConnectedElement());\n overlayRef.updateSize({width: this._getPanelWidth()});\n }\n\n if (overlayRef && !overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n this._closingActionsSubscription = this._subscribeToClosingActions();\n }\n\n const wasOpen = this.panelOpen;\n\n this.autocomplete._setVisibility();\n this.autocomplete._isOpen = this._overlayAttached = true;\n\n // We need to do an extra `panelOpen` check in here, because the\n // autocomplete won't be shown if there are no options.\n if (this.panelOpen && wasOpen !== this.panelOpen) {\n this.autocomplete.opened.emit();\n }\n }\n\n private _getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this._getOverlayPosition(),\n scrollStrategy: this._scrollStrategy(),\n width: this._getPanelWidth(),\n direction: this._dir,\n panelClass: this._defaults?.overlayPanelClass,\n });\n }\n\n private _getOverlayPosition(): PositionStrategy {\n const strategy = this._overlay.position()\n .flexibleConnectedTo(this._getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false);\n\n this._setStrategyPositions(strategy);\n this._positionStrategy = strategy;\n return strategy;\n }\n\n /** Sets the positions on a position strategy based on the directive's input state. */\n private _setStrategyPositions(positionStrategy: FlexibleConnectedPositionStrategy) {\n // Note that we provide horizontal fallback positions, even though by default the dropdown\n // width matches the input, because consumers can override the width. See #18854.\n const belowPositions: ConnectedPosition[] = [\n {originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top'},\n {originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top'}\n ];\n\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n const panelClass = this._aboveClass;\n const abovePositions: ConnectedPosition[] = [\n {originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', panelClass},\n {originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', panelClass}\n ];\n\n let positions: ConnectedPosition[];\n\n if (this.position === 'above') {\n positions = abovePositions;\n } else if (this.position === 'below') {\n positions = belowPositions;\n } else {\n positions = [...belowPositions, ...abovePositions];\n }\n\n positionStrategy.withPositions(positions);\n }\n\n private _getConnectedElement(): ElementRef {\n if (this.connectedTo) {\n return this.connectedTo.elementRef;\n }\n\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._element;\n }\n\n private _getPanelWidth(): number | string {\n return this.autocomplete.panelWidth || this._getHostWidth();\n }\n\n /** Returns the width of the input element, so the panel width can match it. */\n private _getHostWidth(): number {\n return this._getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n\n /**\n * Resets the active item to -1 so arrow events will activate the\n * correct options, or to 0 if the consumer opted into it.\n */\n private _resetActiveItem(): void {\n const autocomplete = this.autocomplete;\n\n if (autocomplete.autoActiveFirstOption) {\n // Note that we go through `setFirstItemActive`, rather than `setActiveItem(0)`, because\n // the former will find the next enabled option, if the first one is disabled.\n autocomplete._keyManager.setFirstItemActive();\n } else {\n autocomplete._keyManager.setActiveItem(-1);\n }\n }\n\n /** Determines whether the panel can be opened. */\n private _canOpen(): boolean {\n const element = this._element.nativeElement;\n return !element.readOnly && !element.disabled && !this._autocompleteDisabled;\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n return this._document?.defaultView || window;\n }\n\n /** Scrolls to a particular option in the list. */\n private _scrollToOption(index: number): void {\n // Given that we are not actually focusing active options, we must manually adjust scroll\n // to reveal options below the fold. First, we find the offset of the option from the top\n // of the panel. If that offset is below the fold, the new scrollTop will be the offset -\n // the panel height + the option height, so the active option will be just visible at the\n // bottom of the panel. If that offset is above the top of the visible panel, the new scrollTop\n // will become the offset. If that offset is visible within the panel already, the scrollTop is\n // not adjusted.\n const autocomplete = this.autocomplete;\n const labelCount = _countGroupLabelsBeforeOption(index,\n autocomplete.options, autocomplete.optionGroups);\n\n if (index === 0 && labelCount === 1) {\n // If we've got one group label before the option and we're at the top option,\n // scroll the list to the top. This is better UX than scrolling the list to the\n // top of the option, because it allows the user to read the top group's label.\n autocomplete._setScrollTop(0);\n } else if (autocomplete.panel) {\n const option = autocomplete.options.toArray()[index];\n\n if (option) {\n const element = option._getHostElement();\n const newScrollPosition = _getOptionScrollPosition(\n element.offsetTop,\n element.offsetHeight,\n autocomplete._getScrollTop(),\n autocomplete.panel.nativeElement.offsetHeight\n );\n\n autocomplete._setScrollTop(newScrollPosition);\n }\n }\n }\n\n static ngAcceptInputType_autocompleteDisabled: BooleanInput;\n}\n\n\n@Directive({\n selector: `input[matAutocomplete], textarea[matAutocomplete]`,\n host: {\n 'class': 'mat-autocomplete-trigger',\n '[attr.autocomplete]': 'autocompleteAttribute',\n '[attr.role]': 'autocompleteDisabled ? null : \"combobox\"',\n '[attr.aria-autocomplete]': 'autocompleteDisabled ? null : \"list\"',\n '[attr.aria-activedescendant]': '(panelOpen && activeOption) ? activeOption.id : null',\n '[attr.aria-expanded]': 'autocompleteDisabled ? null : panelOpen.toString()',\n '[attr.aria-owns]': '(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id',\n '[attr.aria-haspopup]': '!autocompleteDisabled',\n // Note: we use `focusin`, as opposed to `focus`, in order to open the panel\n // a little earlier. This avoids issues where IE delays the focusing of the input.\n '(focusin)': '_handleFocus()',\n '(blur)': '_onTouched()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n exportAs: 'matAutocompleteTrigger',\n providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR]\n})\nexport class MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {\n protected _aboveClass = 'mat-autocomplete-panel-above';\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {MatOptionModule, MatCommonModule} from '@angular/material/core';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatAutocomplete} from './autocomplete';\nimport {\n MatAutocompleteTrigger,\n MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER,\n} from './autocomplete-trigger';\nimport {MatAutocompleteOrigin} from './autocomplete-origin';\n\n\n@NgModule({\n imports: [\n OverlayModule,\n MatOptionModule,\n MatCommonModule,\n CommonModule\n ],\n exports: [\n MatAutocomplete,\n MatAutocompleteTrigger,\n MatAutocompleteOrigin,\n CdkScrollableModule,\n MatOptionModule,\n MatCommonModule,\n ],\n declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin],\n providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MatAutocompleteModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './autocomplete';\nexport * from './autocomplete-module';\nexport * from './autocomplete-trigger';\nexport * from './autocomplete-origin';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"]}