ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 54.7 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-auto-complete.mjs","sources":["../../components/auto-complete/autocomplete-optgroup.component.ts","../../components/auto-complete/autocomplete-option.component.ts","../../components/auto-complete/autocomplete-trigger.directive.ts","../../components/auto-complete/autocomplete.component.ts","../../components/auto-complete/autocomplete.module.ts","../../components/auto-complete/public-api.ts","../../components/auto-complete/ng-zorro-antd-auto-complete.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\n\n@Component({\n selector: 'nz-auto-optgroup',\n exportAs: 'nzAutoOptgroup',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NzOutletModule],\n template: `\n <div class=\"ant-select-item ant-select-item-group\">\n <ng-container *nzStringTemplateOutlet=\"nzLabel\">{{ nzLabel }}</ng-container>\n </div>\n <ng-content select=\"nz-auto-option\"></ng-content>\n `\n})\nexport class NzAutocompleteOptgroupComponent {\n @Input() nzLabel?: string | TemplateRef<void>;\n}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular, scrollIntoView } from 'ng-zorro-antd/core/util';\n\nimport { NzAutocompleteOptgroupComponent } from './autocomplete-optgroup.component';\n\nexport class NzOptionSelectionChange {\n constructor(\n public source: NzAutocompleteOptionComponent,\n public isUserInput: boolean = false\n ) {}\n}\n\n@Component({\n selector: 'nz-auto-option',\n exportAs: 'nzAutoOption',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n <div class=\"ant-select-item-option-content\">\n <ng-content></ng-content>\n </div>\n `,\n host: {\n role: 'menuitem',\n class: 'ant-select-item ant-select-item-option',\n '[class.ant-select-item-option-grouped]': 'nzAutocompleteOptgroupComponent',\n '[class.ant-select-item-option-selected]': 'selected',\n '[class.ant-select-item-option-active]': 'active',\n '[class.ant-select-item-option-disabled]': 'nzDisabled',\n '[attr.aria-selected]': 'selected.toString()',\n '[attr.aria-disabled]': 'nzDisabled.toString()',\n '(click)': 'selectViaInteraction()'\n }\n})\nexport class NzAutocompleteOptionComponent implements OnInit, OnDestroy {\n @Input() nzValue: NzSafeAny;\n @Input() nzLabel?: string;\n @Input({ transform: booleanAttribute }) nzDisabled = false;\n @Output() readonly selectionChange = new EventEmitter<NzOptionSelectionChange>();\n @Output() readonly mouseEntered = new EventEmitter<NzAutocompleteOptionComponent>();\n\n active = false;\n selected = false;\n nzAutocompleteOptgroupComponent = inject(NzAutocompleteOptgroupComponent, { optional: true });\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private ngZone: NgZone,\n private changeDetectorRef: ChangeDetectorRef,\n private element: ElementRef<HTMLElement>\n ) {}\n\n ngOnInit(): void {\n fromEventOutsideAngular(this.element.nativeElement, 'mouseenter')\n .pipe(\n filter(() => this.mouseEntered.observers.length > 0),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.ngZone.run(() => this.mouseEntered.emit(this));\n });\n\n fromEventOutsideAngular(this.element.nativeElement, 'mousedown')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => event.preventDefault());\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n select(emit: boolean = true): void {\n this.selected = true;\n this.changeDetectorRef.markForCheck();\n if (emit) {\n this.emitSelectionChangeEvent();\n }\n }\n\n deselect(): void {\n this.selected = false;\n this.changeDetectorRef.markForCheck();\n this.emitSelectionChangeEvent();\n }\n\n /** Git display label */\n getLabel(): string {\n return this.nzLabel || this.nzValue.toString();\n }\n\n /** Set active (only styles) */\n setActiveStyles(): void {\n if (!this.active) {\n this.active = true;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /** Unset active (only styles) */\n setInactiveStyles(): void {\n if (this.active) {\n this.active = false;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n scrollIntoViewIfNeeded(): void {\n scrollIntoView(this.element.nativeElement);\n }\n\n selectViaInteraction(): void {\n if (!this.nzDisabled) {\n this.selected = !this.selected;\n if (this.selected) {\n this.setActiveStyles();\n } else {\n this.setInactiveStyles();\n }\n this.emitSelectionChangeEvent(true);\n this.changeDetectorRef.markForCheck();\n }\n }\n\n private emitSelectionChangeEvent(isUserInput: boolean = false): void {\n this.selectionChange.emit(new NzOptionSelectionChange(this, isUserInput));\n }\n}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { DOWN_ARROW, ENTER, ESCAPE, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n ExistingProvider,\n Input,\n NgZone,\n OnDestroy,\n ViewContainerRef,\n forwardRef,\n inject\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { delay, filter, takeUntil, tap } from 'rxjs/operators';\n\nimport { NzSafeAny, OnChangeType, OnTouchedType } from 'ng-zorro-antd/core/types';\nimport { NzInputGroupWhitSuffixOrPrefixDirective } from 'ng-zorro-antd/input';\n\nimport { NzAutocompleteOptionComponent } from './autocomplete-option.component';\nimport { NzAutocompleteComponent } from './autocomplete.component';\n\nexport const NZ_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NzAutocompleteTriggerDirective),\n multi: true\n};\n\nexport function getNzAutocompleteMissingPanelError(): Error {\n return Error(\n 'Attempting to open an undefined instance of `nz-autocomplete`. ' +\n 'Make sure that the id passed to the `nzAutocomplete` is correct and that ' +\n \"you're attempting to open it after the ngAfterContentInit hook.\"\n );\n}\n\n@Directive({\n selector: `input[nzAutocomplete], textarea[nzAutocomplete]`,\n exportAs: 'nzAutocompleteTrigger',\n providers: [NZ_AUTOCOMPLETE_VALUE_ACCESSOR],\n host: {\n autocomplete: 'off',\n 'aria-autocomplete': 'list',\n '(focusin)': 'handleFocus()',\n '(blur)': 'handleBlur()',\n '(input)': 'handleInput($event)',\n '(keydown)': 'handleKeydown($event)',\n '(click)': 'handleClick($event)'\n }\n})\nexport class NzAutocompleteTriggerDirective implements AfterViewInit, ControlValueAccessor, OnDestroy {\n /** Bind nzAutocomplete component */\n @Input() nzAutocomplete!: NzAutocompleteComponent;\n\n onChange: OnChangeType = () => {};\n onTouched: OnTouchedType = () => {};\n panelOpen: boolean = false;\n\n /** Current active option */\n get activeOption(): NzAutocompleteOptionComponent | null {\n if (this.nzAutocomplete && this.nzAutocomplete.options.length) {\n return this.nzAutocomplete.activeItem;\n } else {\n return null;\n }\n }\n\n private destroy$ = new Subject<void>();\n private overlayRef: OverlayRef | null = null;\n private portal: TemplatePortal<{}> | null = null;\n private positionStrategy!: FlexibleConnectedPositionStrategy;\n private previousValue: string | number | null = null;\n private selectionChangeSubscription!: Subscription;\n private optionsChangeSubscription!: Subscription;\n private overlayOutsideClickSubscription!: Subscription;\n private document: Document = inject(DOCUMENT);\n private nzInputGroupWhitSuffixOrPrefixDirective = inject(NzInputGroupWhitSuffixOrPrefixDirective, { optional: true });\n\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n ngAfterViewInit(): void {\n if (this.nzAutocomplete) {\n this.nzAutocomplete.animationStateChange.pipe(takeUntil(this.destroy$)).subscribe(event => {\n if (event.toState === 'void') {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n this.destroyPanel();\n }\n\n writeValue(value: NzSafeAny): void {\n this.ngZone.runOutsideAngular(() => Promise.resolve(null).then(() => this.setTriggerValue(value)));\n }\n\n registerOnChange(fn: (value: {}) => {}): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => {}): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n const element: HTMLInputElement = this.elementRef.nativeElement;\n element.disabled = isDisabled;\n this.closePanel();\n }\n\n openPanel(): void {\n this.previousValue = this.elementRef.nativeElement.value;\n this.attachOverlay();\n this.updateStatus();\n }\n\n closePanel(): void {\n if (this.panelOpen) {\n this.nzAutocomplete.isOpen = this.panelOpen = false;\n\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n this.overlayRef.detach();\n this.selectionChangeSubscription.unsubscribe();\n this.overlayOutsideClickSubscription.unsubscribe();\n this.optionsChangeSubscription.unsubscribe();\n this.portal = null;\n }\n }\n }\n\n handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;\n\n if (keyCode === ESCAPE) {\n event.preventDefault();\n }\n\n if (this.panelOpen && (keyCode === ESCAPE || keyCode === TAB)) {\n // Reset value when tab / ESC close\n if (this.activeOption && this.activeOption.getLabel() !== this.previousValue) {\n this.setTriggerValue(this.previousValue);\n }\n this.closePanel();\n } else if (this.panelOpen && keyCode === ENTER) {\n if (this.nzAutocomplete.showPanel) {\n event.preventDefault();\n if (this.activeOption) {\n this.activeOption.selectViaInteraction();\n } else {\n this.closePanel();\n }\n }\n } else if (this.panelOpen && isArrowKey && this.nzAutocomplete.showPanel) {\n event.stopPropagation();\n event.preventDefault();\n if (keyCode === UP_ARROW) {\n this.nzAutocomplete.setPreviousItemActive();\n } else {\n this.nzAutocomplete.setNextItemActive();\n }\n if (this.activeOption) {\n this.activeOption.scrollIntoViewIfNeeded();\n }\n this.doBackfill();\n }\n }\n\n handleInput(event: KeyboardEvent): void {\n const target = event.target as HTMLInputElement;\n const document = this.document as Document;\n let value: number | string | null = target.value;\n\n if (target.type === 'number') {\n value = value === '' ? null : parseFloat(value);\n }\n if (this.previousValue !== value) {\n this.previousValue = value;\n this.onChange(value);\n\n if (this.canOpen() && document.activeElement === event.target) {\n this.openPanel();\n }\n }\n }\n\n handleFocus(): void {\n if (this.canOpen()) {\n this.openPanel();\n }\n }\n\n handleClick(): void {\n if (this.canOpen() && !this.panelOpen) {\n this.openPanel();\n }\n }\n\n handleBlur(): void {\n this.onTouched();\n }\n\n /**\n * Subscription data source changes event\n */\n private subscribeOptionsChange(): Subscription {\n const optionChanges = this.nzAutocomplete.options.changes.pipe(\n tap(() => this.positionStrategy.reapplyLastPosition()),\n delay(0)\n );\n return optionChanges.subscribe(() => {\n this.resetActiveItem();\n if (this.panelOpen) {\n this.overlayRef!.updatePosition();\n }\n });\n }\n\n /**\n * Subscription option changes event and set the value\n */\n private subscribeSelectionChange(): Subscription {\n return this.nzAutocomplete.selectionChange.subscribe((option: NzAutocompleteOptionComponent) => {\n this.setValueAndClose(option);\n });\n }\n\n private subscribeOverlayOutsideClick(): Subscription {\n return this.overlayRef!.outsidePointerEvents()\n .pipe(filter((e: MouseEvent) => !this.elementRef.nativeElement.contains(e.target)))\n .subscribe(() => {\n this.closePanel();\n });\n }\n\n private attachOverlay(): void {\n if (!this.nzAutocomplete) {\n throw getNzAutocompleteMissingPanelError();\n }\n\n if (!this.portal && this.nzAutocomplete.template) {\n this.portal = new TemplatePortal(this.nzAutocomplete.template, this.viewContainerRef);\n }\n\n if (!this.overlayRef) {\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n }\n\n if (this.overlayRef && !this.overlayRef.hasAttached()) {\n this.overlayRef.attach(this.portal);\n this.selectionChangeSubscription = this.subscribeSelectionChange();\n this.optionsChangeSubscription = this.subscribeOptionsChange();\n this.overlayOutsideClickSubscription = this.subscribeOverlayOutsideClick();\n this.overlayRef\n .detachments()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.closePanel();\n });\n }\n this.nzAutocomplete.isOpen = this.panelOpen = true;\n }\n\n private updateStatus(): void {\n if (this.overlayRef) {\n this.overlayRef.updateSize({ width: this.nzAutocomplete.nzWidth || this.getHostWidth() });\n }\n this.nzAutocomplete.setVisibility();\n this.resetActiveItem();\n if (this.activeOption) {\n this.activeOption.scrollIntoViewIfNeeded();\n }\n }\n\n private destroyPanel(): void {\n if (this.overlayRef) {\n this.closePanel();\n }\n }\n\n private getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n positionStrategy: this.getOverlayPosition(),\n disposeOnNavigation: true,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n // default host element width\n width: this.nzAutocomplete.nzWidth || this.getHostWidth()\n });\n }\n\n private getConnectedElement(): ElementRef {\n return this.nzInputGroupWhitSuffixOrPrefixDirective\n ? this.nzInputGroupWhitSuffixOrPrefixDirective.elementRef\n : this.elementRef;\n }\n\n private getHostWidth(): number {\n return this.getConnectedElement().nativeElement.getBoundingClientRect().width;\n }\n\n private getOverlayPosition(): PositionStrategy {\n const positions = [\n new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })\n ];\n this.positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.getConnectedElement())\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions(positions)\n .withTransformOriginOn('.ant-select-dropdown');\n return this.positionStrategy;\n }\n\n private resetActiveItem(): void {\n const index = this.nzAutocomplete.getOptionIndex(this.previousValue);\n this.nzAutocomplete.clearSelectedOptions(null, true);\n if (index !== -1) {\n this.nzAutocomplete.setActiveItem(index);\n this.nzAutocomplete.activeItem!.select(false);\n } else {\n this.nzAutocomplete.setActiveItem(this.nzAutocomplete.nzDefaultActiveFirstOption ? 0 : -1);\n }\n }\n\n private setValueAndClose(option: NzAutocompleteOptionComponent): void {\n const value = option.nzValue;\n this.setTriggerValue(option.getLabel());\n this.onChange(value);\n this.elementRef.nativeElement.focus();\n this.closePanel();\n }\n\n private setTriggerValue(value: NzSafeAny): void {\n const option = this.nzAutocomplete.getOption(value);\n const displayValue = option ? option.getLabel() : value;\n this.elementRef.nativeElement.value = displayValue != null ? displayValue : '';\n if (!this.nzAutocomplete.nzBackfill) {\n this.previousValue = displayValue;\n }\n }\n\n private doBackfill(): void {\n if (this.nzAutocomplete.nzBackfill && this.nzAutocomplete.activeItem) {\n this.setTriggerValue(this.nzAutocomplete.activeItem.getLabel());\n }\n }\n\n private canOpen(): boolean {\n const element: HTMLInputElement = this.elementRef.nativeElement;\n return !element.readOnly && !element.disabled;\n }\n}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { AnimationEvent } from '@angular/animations';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { Observable, Subject, Subscription, defer, merge } from 'rxjs';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { NZ_AFTER_NEXT_RENDER$ } from 'ng-zorro-antd/core/render';\nimport { CompareWith, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { numberAttributeWithZeroFallback } from 'ng-zorro-antd/core/util';\n\nimport { NzAutocompleteOptionComponent, NzOptionSelectionChange } from './autocomplete-option.component';\n\nexport interface AutocompleteDataSourceItem {\n value: string;\n label: string;\n}\n\nexport type AutocompleteDataSource = Array<AutocompleteDataSourceItem | string | number>;\n\nfunction normalizeDataSource(value: AutocompleteDataSource): AutocompleteDataSourceItem[] {\n return value?.map(item => {\n if (typeof item === 'number' || typeof item === 'string') {\n return {\n label: item.toString(),\n value: item.toString()\n };\n }\n return item;\n });\n}\n\n@Component({\n selector: 'nz-autocomplete',\n exportAs: 'nzAutocomplete',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgTemplateOutlet, NzAutocompleteOptionComponent, NzNoAnimationDirective],\n template: `\n <ng-template>\n <div\n #panel\n class=\"ant-select-dropdown ant-select-dropdown-placement-bottomLeft\"\n [class.ant-select-dropdown-hidden]=\"!showPanel\"\n [class.ant-select-dropdown-rtl]=\"dir === 'rtl'\"\n [class]=\"nzOverlayClassName\"\n [style]=\"nzOverlayStyle\"\n [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n @slideMotion\n (@slideMotion.done)=\"onAnimationEvent($event)\"\n [@.disabled]=\"!!noAnimation?.nzNoAnimation\"\n >\n <div class=\"ant-select-dropdown-content-wrapper\">\n <div class=\"ant-select-dropdown-content\">\n <ng-template *ngTemplateOutlet=\"nzDataSource ? optionsTemplate : contentTemplate\"></ng-template>\n </div>\n </div>\n </div>\n <ng-template #contentTemplate>\n <ng-content></ng-content>\n </ng-template>\n <ng-template #optionsTemplate>\n @for (option of normalizedDataSource; track option.value) {\n <nz-auto-option [nzValue]=\"option.value\" [nzLabel]=\"option.label\">\n {{ option.label }}\n </nz-auto-option>\n }\n </ng-template>\n </ng-template>\n `,\n animations: [slideMotion]\n})\nexport class NzAutocompleteComponent implements AfterContentInit, AfterViewInit, OnDestroy, OnInit, OnChanges {\n @Input({ transform: numberAttributeWithZeroFallback }) nzWidth?: number;\n @Input() nzOverlayClassName = '';\n @Input() nzOverlayStyle: Record<string, string> = {};\n @Input({ transform: booleanAttribute }) nzDefaultActiveFirstOption = true;\n @Input({ transform: booleanAttribute }) nzBackfill = false;\n @Input() compareWith: CompareWith = (o1, o2) => o1 === o2;\n @Input() nzDataSource?: AutocompleteDataSource;\n @Output()\n readonly selectionChange: EventEmitter<NzAutocompleteOptionComponent> =\n new EventEmitter<NzAutocompleteOptionComponent>();\n\n showPanel: boolean = true;\n isOpen: boolean = false;\n activeItem: NzAutocompleteOptionComponent | null = null;\n dir: Direction = 'ltr';\n normalizedDataSource: AutocompleteDataSourceItem[] = [];\n private destroy$ = new Subject<void>();\n animationStateChange = new EventEmitter<AnimationEvent>();\n\n /**\n * Options accessor, its source may be content or dataSource\n */\n get options(): QueryList<NzAutocompleteOptionComponent> {\n // first dataSource\n if (this.nzDataSource) {\n return this.fromDataSourceOptions;\n } else {\n return this.fromContentOptions;\n }\n }\n\n /** Provided by content */\n @ContentChildren(NzAutocompleteOptionComponent, { descendants: true })\n fromContentOptions!: QueryList<NzAutocompleteOptionComponent>;\n /** Provided by dataSource */\n @ViewChildren(NzAutocompleteOptionComponent) fromDataSourceOptions!: QueryList<NzAutocompleteOptionComponent>;\n\n /** cdk-overlay */\n @ViewChild(TemplateRef, { static: false }) template?: TemplateRef<{}>;\n @ViewChild('panel', { static: false }) panel?: ElementRef;\n @ViewChild('content', { static: false }) content?: ElementRef;\n\n private activeItemIndex: number = -1;\n private selectionChangeSubscription: Subscription | null = Subscription.EMPTY;\n private optionMouseEnterSubscription: Subscription | null = Subscription.EMPTY;\n private dataSourceChangeSubscription: Subscription | null = Subscription.EMPTY;\n\n /** Options changes listener */\n private readonly optionSelectionChanges: Observable<NzOptionSelectionChange> = defer(() => {\n if (this.options) {\n return merge<NzOptionSelectionChange[]>(...this.options.map(option => option.selectionChange));\n }\n\n return this.afterNextRender$.pipe(switchMap(() => this.optionSelectionChanges));\n });\n\n private readonly optionMouseEnter: Observable<NzAutocompleteOptionComponent> = defer(() => {\n if (this.options) {\n return merge<NzAutocompleteOptionComponent[]>(...this.options.map(option => option.mouseEntered));\n }\n\n return this.afterNextRender$.pipe(switchMap(() => this.optionMouseEnter));\n });\n\n private afterNextRender$ = inject(NZ_AFTER_NEXT_RENDER$);\n\n noAnimation = inject(NzNoAnimationDirective, { host: true, optional: true });\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private directionality: Directionality\n ) {}\n\n ngOnInit(): void {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n this.changeDetectorRef.detectChanges();\n });\n\n this.dir = this.directionality.value;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { nzDataSource } = changes;\n if (nzDataSource) {\n this.normalizedDataSource = normalizeDataSource(nzDataSource.currentValue);\n }\n }\n\n onAnimationEvent(event: AnimationEvent): void {\n this.animationStateChange.emit(event);\n }\n\n ngAfterContentInit(): void {\n if (!this.nzDataSource) {\n this.optionsInit();\n }\n }\n\n ngAfterViewInit(): void {\n if (this.nzDataSource) {\n this.optionsInit();\n }\n }\n\n ngOnDestroy(): void {\n this.dataSourceChangeSubscription!.unsubscribe();\n this.selectionChangeSubscription!.unsubscribe();\n this.optionMouseEnterSubscription!.unsubscribe();\n // Caretaker note: we have to set these subscriptions to `null` since these will be closed subscriptions, but they\n // still keep references to destinations (which are `SafeSubscriber`s). Destinations keep referencing `next` functions,\n // which we pass, for instance, to `this.optionSelectionChanges.subscribe(...)`.\n this.dataSourceChangeSubscription = this.selectionChangeSubscription = this.optionMouseEnterSubscription = null;\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setVisibility(): void {\n this.showPanel = !!this.options.length;\n this.changeDetectorRef.markForCheck();\n }\n\n setActiveItem(index: number): void {\n const activeItem = this.options.get(index);\n if (activeItem && !activeItem.active) {\n this.activeItem = activeItem;\n this.activeItemIndex = index;\n this.clearSelectedOptions(this.activeItem);\n this.activeItem.setActiveStyles();\n } else {\n this.activeItem = null;\n this.activeItemIndex = -1;\n this.clearSelectedOptions();\n }\n this.changeDetectorRef.markForCheck();\n }\n\n setNextItemActive(): void {\n const nextIndex = this.activeItemIndex + 1 <= this.options.length - 1 ? this.activeItemIndex + 1 : 0;\n this.setActiveItem(nextIndex);\n }\n\n setPreviousItemActive(): void {\n const previousIndex = this.activeItemIndex - 1 < 0 ? this.options.length - 1 : this.activeItemIndex - 1;\n this.setActiveItem(previousIndex);\n }\n\n getOptionIndex(value: NzSafeAny): number {\n return this.options.reduce(\n (result: number, current: NzAutocompleteOptionComponent, index: number) =>\n result === -1 ? (this.compareWith(value, current.nzValue) ? index : -1) : result,\n -1\n )!;\n }\n\n getOption(value: NzSafeAny): NzAutocompleteOptionComponent | null {\n return this.options.find(item => this.compareWith(value, item.nzValue)) || null;\n }\n\n private optionsInit(): void {\n this.setVisibility();\n this.subscribeOptionChanges();\n const changes = this.nzDataSource ? this.fromDataSourceOptions.changes : this.fromContentOptions.changes;\n // async\n this.dataSourceChangeSubscription = changes.subscribe(e => {\n if (!e.dirty && this.isOpen) {\n setTimeout(() => this.setVisibility());\n }\n this.subscribeOptionChanges();\n });\n }\n\n /**\n * Clear the status of options\n */\n clearSelectedOptions(skip?: NzAutocompleteOptionComponent | null, deselect: boolean = false): void {\n this.options.forEach(option => {\n if (option !== skip) {\n if (deselect) {\n option.deselect();\n }\n option.setInactiveStyles();\n }\n });\n }\n\n private subscribeOptionChanges(): void {\n this.selectionChangeSubscription!.unsubscribe();\n this.selectionChangeSubscription = this.optionSelectionChanges\n .pipe(filter((event: NzOptionSelectionChange) => event.isUserInput))\n .subscribe((event: NzOptionSelectionChange) => {\n event.source.select();\n event.source.setActiveStyles();\n this.activeItem = event.source;\n this.activeItemIndex = this.getOptionIndex(this.activeItem.nzValue);\n this.clearSelectedOptions(event.source, true);\n this.selectionChange.emit(event.source);\n });\n\n this.optionMouseEnterSubscription!.unsubscribe();\n this.optionMouseEnterSubscription = this.optionMouseEnter.subscribe((event: NzAutocompleteOptionComponent) => {\n event.setActiveStyles();\n this.activeItem = event;\n this.activeItemIndex = this.getOptionIndex(this.activeItem.nzValue);\n this.clearSelectedOptions(event);\n });\n }\n}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NzAutocompleteOptgroupComponent } from './autocomplete-optgroup.component';\nimport { NzAutocompleteOptionComponent } from './autocomplete-option.component';\nimport { NzAutocompleteTriggerDirective } from './autocomplete-trigger.directive';\nimport { NzAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n exports: [\n NzAutocompleteComponent,\n NzAutocompleteOptionComponent,\n NzAutocompleteTriggerDirective,\n NzAutocompleteOptgroupComponent\n ],\n imports: [\n NzAutocompleteComponent,\n NzAutocompleteOptionComponent,\n NzAutocompleteTriggerDirective,\n NzAutocompleteOptgroupComponent\n ]\n})\nexport class NzAutocompleteModule {}\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://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './autocomplete.module';\nexport * from './autocomplete.component';\nexport * from './autocomplete-trigger.directive';\nexport * from './autocomplete-option.component';\nexport * from './autocomplete-optgroup.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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