import * as i0 from '@angular/core'; import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, EventEmitter, booleanAttribute, Output, inject, NgZone, PLATFORM_ID, ViewChild, TemplateRef, DestroyRef, ElementRef, numberAttribute, computed, signal, forwardRef, ContentChildren, NgModule } from '@angular/core'; import { Subject, BehaviorSubject, of, combineLatest, merge } from 'rxjs'; import { OverlayModule, CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay'; import * as i2 from '@angular/cdk/scrolling'; import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { NgTemplateOutlet, isPlatformBrowser } from '@angular/common'; import * as i7 from 'ng-zorro-antd/core/overlay'; import { NzOverlayModule, getPlacementName, POSITION_MAP } from 'ng-zorro-antd/core/overlay'; import * as i1$3 from 'ng-zorro-antd/empty'; import { NzEmptyModule } from 'ng-zorro-antd/empty'; import * as i1 from 'ng-zorro-antd/core/outlet'; import { NzOutletModule } from 'ng-zorro-antd/core/outlet'; import { takeUntil, startWith, distinctUntilChanged, withLatestFrom, map, switchMap } from 'rxjs/operators'; import * as i1$1 from 'ng-zorro-antd/core/services'; import { NzDestroyService } from 'ng-zorro-antd/core/services'; import { fromEventOutsideAngular, numberAttributeWithInfinityFallback, isNotNil, getStatusClassNames } from 'ng-zorro-antd/core/util'; import * as i1$2 from 'ng-zorro-antd/icon'; import { NzIconModule } from 'ng-zorro-antd/icon'; import { __esDecorate, __runInitializers } from 'tslib'; import { BACKSPACE, ESCAPE, TAB, SPACE, ENTER, DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes'; import * as i3 from '@angular/cdk/platform'; import { _getEventTarget } from '@angular/cdk/platform'; import * as i2$1 from '@angular/forms'; import { FormsModule, COMPOSITION_BUFFER_MODE, NG_VALUE_ACCESSOR } from '@angular/forms'; import { slideMotion } from 'ng-zorro-antd/core/animation'; import * as i2$2 from 'ng-zorro-antd/core/config'; import { WithConfig } from 'ng-zorro-antd/core/config'; import { NzFormStatusService, NzFormNoStatusService, NzFormItemFeedbackIconComponent } from 'ng-zorro-antd/core/form'; import { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation'; import { reqAnimFrame, cancelRequestAnimationFrame } from 'ng-zorro-antd/core/polyfill'; import * as i6 from 'ng-zorro-antd/space'; import { NZ_SPACE_COMPACT_SIZE, NZ_SPACE_COMPACT_ITEM_TYPE, NzSpaceCompactItemDirective } from 'ng-zorro-antd/space'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import * as i1$4 from '@angular/cdk/a11y'; import * as i5 from '@angular/cdk/bidi'; /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzOptionGroupComponent { nzLabel = null; changes = new Subject(); ngOnChanges() { this.changes.next(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: NzOptionGroupComponent, isStandalone: true, selector: "nz-option-group", inputs: { nzLabel: "nzLabel" }, exportAs: ["nzOptionGroup"], usesOnChanges: true, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionGroupComponent, decorators: [{ type: Component, args: [{ selector: 'nz-option-group', exportAs: 'nzOptionGroup', template: ``, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush }] }], propDecorators: { nzLabel: [{ type: Input }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzOptionItemGroupComponent { nzLabel = null; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionItemGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: NzOptionItemGroupComponent, isStandalone: true, selector: "nz-option-item-group", inputs: { nzLabel: "nzLabel" }, host: { classAttribute: "ant-select-item ant-select-item-group" }, ngImport: i0, template: ` {{ nzLabel }} `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i1.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionItemGroupComponent, decorators: [{ type: Component, args: [{ selector: 'nz-option-item-group', template: ` {{ nzLabel }} `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'ant-select-item ant-select-item-group' }, imports: [NzOutletModule] }] }], propDecorators: { nzLabel: [{ type: Input }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzOptionItemComponent { elementRef; ngZone; destroy$; selected = false; activated = false; grouped = false; customContent = false; template = null; disabled = false; showState = false; title; label = null; value = null; activatedValue = null; listOfSelectedValue = []; icon = null; compareWith; itemClick = new EventEmitter(); itemHover = new EventEmitter(); constructor(elementRef, ngZone, destroy$) { this.elementRef = elementRef; this.ngZone = ngZone; this.destroy$ = destroy$; } ngOnChanges(changes) { const { value, activatedValue, listOfSelectedValue } = changes; if (value || listOfSelectedValue) { this.selected = this.listOfSelectedValue.some(v => this.compareWith(v, this.value)); } if (value || activatedValue) { this.activated = this.compareWith(this.activatedValue, this.value); } } ngOnInit() { fromEventOutsideAngular(this.elementRef.nativeElement, 'click') .pipe(takeUntil(this.destroy$)) .subscribe(() => { if (!this.disabled) { this.ngZone.run(() => this.itemClick.emit(this.value)); } }); fromEventOutsideAngular(this.elementRef.nativeElement, 'mouseenter') .pipe(takeUntil(this.destroy$)) .subscribe(() => { if (!this.disabled) { this.ngZone.run(() => this.itemHover.emit(this.value)); } }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1$1.NzDestroyService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzOptionItemComponent, isStandalone: true, selector: "nz-option-item", inputs: { grouped: "grouped", customContent: ["customContent", "customContent", booleanAttribute], template: "template", disabled: "disabled", showState: "showState", title: "title", label: "label", value: "value", activatedValue: "activatedValue", listOfSelectedValue: "listOfSelectedValue", icon: "icon", compareWith: "compareWith" }, outputs: { itemClick: "itemClick", itemHover: "itemHover" }, host: { properties: { "attr.title": "title", "class.ant-select-item-option-grouped": "grouped", "class.ant-select-item-option-selected": "selected && !disabled", "class.ant-select-item-option-disabled": "disabled", "class.ant-select-item-option-active": "activated && !disabled" }, classAttribute: "ant-select-item ant-select-item-option" }, providers: [NzDestroyService], usesOnChanges: true, ngImport: i0, template: `
@if (customContent) { } @else { {{ label }} }
@if (showState && selected) {
@if (!icon) { } @else { }
} `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionItemComponent, decorators: [{ type: Component, args: [{ selector: 'nz-option-item', template: `
@if (customContent) { } @else { {{ label }} }
@if (showState && selected) {
@if (!icon) { } @else { }
} `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'ant-select-item ant-select-item-option', '[attr.title]': 'title', '[class.ant-select-item-option-grouped]': 'grouped', '[class.ant-select-item-option-selected]': 'selected && !disabled', '[class.ant-select-item-option-disabled]': 'disabled', '[class.ant-select-item-option-active]': 'activated && !disabled' }, providers: [NzDestroyService], imports: [NgTemplateOutlet, NzIconModule] }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1$1.NzDestroyService }], propDecorators: { grouped: [{ type: Input }], customContent: [{ type: Input, args: [{ transform: booleanAttribute }] }], template: [{ type: Input }], disabled: [{ type: Input }], showState: [{ type: Input }], title: [{ type: Input }], label: [{ type: Input }], value: [{ type: Input }], activatedValue: [{ type: Input }], listOfSelectedValue: [{ type: Input }], icon: [{ type: Input }], compareWith: [{ type: Input }], itemClick: [{ type: Output }], itemHover: [{ type: Output }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzOptionContainerComponent { notFoundContent = undefined; menuItemSelectedIcon = null; dropdownRender = null; activatedValue = null; listOfSelectedValue = []; compareWith; mode = 'default'; matchWidth = true; itemSize = 32; maxItemLength = 8; isMaxMultipleCountReached = false; listOfContainerItem = []; itemClick = new EventEmitter(); scrollToBottom = new EventEmitter(); cdkVirtualScrollViewport; scrolledIndex = 0; ngZone = inject(NgZone); platformId = inject(PLATFORM_ID); onItemClick(value) { this.itemClick.emit(value); } onItemHover(value) { // TODO: keydown.enter won't activate this value this.activatedValue = value; } trackValue(_index, option) { return option.key; } onScrolledIndexChange(index) { this.scrolledIndex = index; if (index === this.listOfContainerItem.length - this.maxItemLength - 1) { this.scrollToBottom.emit(); } } scrollToActivatedValue() { const index = this.listOfContainerItem.findIndex(item => this.compareWith(item.key, this.activatedValue)); if (index < this.scrolledIndex || index >= this.scrolledIndex + this.maxItemLength) { this.cdkVirtualScrollViewport.scrollToIndex(index || 0); } } ngOnChanges(changes) { const { listOfContainerItem, activatedValue } = changes; if (listOfContainerItem || activatedValue) { this.scrollToActivatedValue(); } } ngAfterViewInit() { if (isPlatformBrowser(this.platformId)) { this.ngZone.runOutsideAngular(() => setTimeout(() => this.scrollToActivatedValue())); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzOptionContainerComponent, isStandalone: true, selector: "nz-option-container", inputs: { notFoundContent: "notFoundContent", menuItemSelectedIcon: "menuItemSelectedIcon", dropdownRender: "dropdownRender", activatedValue: "activatedValue", listOfSelectedValue: "listOfSelectedValue", compareWith: "compareWith", mode: "mode", matchWidth: "matchWidth", itemSize: "itemSize", maxItemLength: "maxItemLength", isMaxMultipleCountReached: "isMaxMultipleCountReached", listOfContainerItem: "listOfContainerItem" }, outputs: { itemClick: "itemClick", scrollToBottom: "scrollToBottom" }, host: { classAttribute: "ant-select-dropdown" }, viewQueries: [{ propertyName: "cdkVirtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true, static: true }], exportAs: ["nzOptionContainer"], usesOnChanges: true, ngImport: i0, template: `
@if (listOfContainerItem.length === 0) {
} @switch (item.type) { @case ('group') { } @case ('item') { } }
`, isInline: true, dependencies: [{ kind: "ngmodule", type: NzEmptyModule }, { kind: "component", type: i1$3.NzEmbedEmptyComponent, selector: "nz-embed-empty", inputs: ["nzComponentName", "specificContent"], exportAs: ["nzEmbedEmpty"] }, { kind: "component", type: NzOptionItemGroupComponent, selector: "nz-option-item-group", inputs: ["nzLabel"] }, { kind: "component", type: NzOptionItemComponent, selector: "nz-option-item", inputs: ["grouped", "customContent", "template", "disabled", "showState", "title", "label", "value", "activatedValue", "listOfSelectedValue", "icon", "compareWith"], outputs: ["itemClick", "itemHover"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: NzOverlayModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionContainerComponent, decorators: [{ type: Component, args: [{ selector: 'nz-option-container', exportAs: 'nzOptionContainer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, template: `
@if (listOfContainerItem.length === 0) {
} @switch (item.type) { @case ('group') { } @case ('item') { } }
`, host: { class: 'ant-select-dropdown' }, imports: [ NzEmptyModule, NzOptionItemGroupComponent, NzOptionItemComponent, NgTemplateOutlet, OverlayModule, NzOverlayModule ] }] }], propDecorators: { notFoundContent: [{ type: Input }], menuItemSelectedIcon: [{ type: Input }], dropdownRender: [{ type: Input }], activatedValue: [{ type: Input }], listOfSelectedValue: [{ type: Input }], compareWith: [{ type: Input }], mode: [{ type: Input }], matchWidth: [{ type: Input }], itemSize: [{ type: Input }], maxItemLength: [{ type: Input }], isMaxMultipleCountReached: [{ type: Input }], listOfContainerItem: [{ type: Input }], itemClick: [{ type: Output }], scrollToBottom: [{ type: Output }], cdkVirtualScrollViewport: [{ type: ViewChild, args: [CdkVirtualScrollViewport, { static: true }] }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzOptionComponent { destroy$; changes = new Subject(); groupLabel = null; template; nzTitle; nzLabel = null; nzValue = null; nzKey; nzDisabled = false; nzHide = false; nzCustomContent = false; nzOptionGroupComponent = inject(NzOptionGroupComponent, { optional: true }); constructor(destroy$) { this.destroy$ = destroy$; } ngOnInit() { if (this.nzOptionGroupComponent) { this.nzOptionGroupComponent.changes.pipe(startWith(true), takeUntil(this.destroy$)).subscribe(() => { this.groupLabel = this.nzOptionGroupComponent?.nzLabel; }); } } ngOnChanges() { this.changes.next(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionComponent, deps: [{ token: i1$1.NzDestroyService }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.2", type: NzOptionComponent, isStandalone: true, selector: "nz-option", inputs: { nzTitle: "nzTitle", nzLabel: "nzLabel", nzValue: "nzValue", nzKey: "nzKey", nzDisabled: ["nzDisabled", "nzDisabled", booleanAttribute], nzHide: ["nzHide", "nzHide", booleanAttribute], nzCustomContent: ["nzCustomContent", "nzCustomContent", booleanAttribute] }, providers: [NzDestroyService], viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: ["nzOption"], usesOnChanges: true, ngImport: i0, template: ` `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzOptionComponent, decorators: [{ type: Component, args: [{ selector: 'nz-option', exportAs: 'nzOption', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [NzDestroyService], template: ` ` }] }], ctorParameters: () => [{ type: i1$1.NzDestroyService }], propDecorators: { template: [{ type: ViewChild, args: [TemplateRef, { static: true }] }], nzTitle: [{ type: Input }], nzLabel: [{ type: Input }], nzValue: [{ type: Input }], nzKey: [{ type: Input }], nzDisabled: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzHide: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzCustomContent: [{ type: Input, args: [{ transform: booleanAttribute }] }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzSelectArrowComponent { listOfValue = []; loading = false; search = false; showArrow = false; isMaxMultipleCountSet = false; suffixIcon = null; feedbackIcon = null; nzMaxMultipleCount = Infinity; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectArrowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzSelectArrowComponent, isStandalone: true, selector: "nz-select-arrow", inputs: { listOfValue: "listOfValue", loading: "loading", search: "search", showArrow: "showArrow", isMaxMultipleCountSet: "isMaxMultipleCountSet", suffixIcon: "suffixIcon", feedbackIcon: "feedbackIcon", nzMaxMultipleCount: ["nzMaxMultipleCount", "nzMaxMultipleCount", numberAttributeWithInfinityFallback] }, host: { properties: { "class.ant-select-arrow-loading": "loading" }, classAttribute: "ant-select-arrow" }, ngImport: i0, template: ` @if (isMaxMultipleCountSet) { {{ listOfValue.length }} / {{ nzMaxMultipleCount }} } @if (loading) { } @else { @if (showArrow && !suffixIcon) { @if (search) { } @else { } } @else { @if (suffixIcon) { } } } {{ feedbackIcon }} `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i1.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectArrowComponent, decorators: [{ type: Component, args: [{ selector: 'nz-select-arrow', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` @if (isMaxMultipleCountSet) { {{ listOfValue.length }} / {{ nzMaxMultipleCount }} } @if (loading) { } @else { @if (showArrow && !suffixIcon) { @if (search) { } @else { } } @else { @if (suffixIcon) { } } } {{ feedbackIcon }} `, host: { class: 'ant-select-arrow', '[class.ant-select-arrow-loading]': 'loading' }, imports: [NzIconModule, NzOutletModule] }] }], propDecorators: { listOfValue: [{ type: Input }], loading: [{ type: Input }], search: [{ type: Input }], showArrow: [{ type: Input }], isMaxMultipleCountSet: [{ type: Input }], suffixIcon: [{ type: Input }], feedbackIcon: [{ type: Input }], nzMaxMultipleCount: [{ type: Input, args: [{ transform: numberAttributeWithInfinityFallback }] }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzSelectClearComponent { clearIcon = null; clear = new EventEmitter(); onClick(e) { e.preventDefault(); e.stopPropagation(); this.clear.emit(e); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectClearComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzSelectClearComponent, isStandalone: true, selector: "nz-select-clear", inputs: { clearIcon: "clearIcon" }, outputs: { clear: "clear" }, host: { listeners: { "click": "onClick($event)" }, classAttribute: "ant-select-clear" }, ngImport: i0, template: ` @if (clearIcon) { } @else { } `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectClearComponent, decorators: [{ type: Component, args: [{ selector: 'nz-select-clear', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` @if (clearIcon) { } @else { } `, host: { class: 'ant-select-clear', '(click)': 'onClick($event)' }, imports: [NgTemplateOutlet, NzIconModule] }] }], propDecorators: { clearIcon: [{ type: Input }], clear: [{ type: Output }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzSelectItemComponent { disabled = false; label = null; deletable = false; removeIcon = null; contentTemplateOutletContext = null; contentTemplateOutlet = null; delete = new EventEmitter(); get templateOutletContext() { return { $implicit: this.contentTemplateOutletContext, ...this.contentTemplateOutletContext }; } onDelete(e) { e.preventDefault(); e.stopPropagation(); if (!this.disabled) { this.delete.next(e); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzSelectItemComponent, isStandalone: true, selector: "nz-select-item", inputs: { disabled: "disabled", label: "label", deletable: "deletable", removeIcon: "removeIcon", contentTemplateOutletContext: "contentTemplateOutletContext", contentTemplateOutlet: "contentTemplateOutlet" }, outputs: { delete: "delete" }, host: { properties: { "attr.title": "label", "class.ant-select-selection-item-disabled": "disabled" }, classAttribute: "ant-select-selection-item" }, ngImport: i0, template: ` @if (deletable) {
{{ label }}
} @else { {{ label }} }
@if (deletable && !disabled) { @if (!removeIcon) { } @else { } } `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i1.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1$2.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectItemComponent, decorators: [{ type: Component, args: [{ selector: 'nz-select-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` @if (deletable) {
{{ label }}
} @else { {{ label }} }
@if (deletable && !disabled) { @if (!removeIcon) { } @else { } } `, host: { class: 'ant-select-selection-item', '[attr.title]': 'label', '[class.ant-select-selection-item-disabled]': 'disabled' }, imports: [NgTemplateOutlet, NzOutletModule, NzIconModule] }] }], propDecorators: { disabled: [{ type: Input }], label: [{ type: Input }], deletable: [{ type: Input }], removeIcon: [{ type: Input }], contentTemplateOutletContext: [{ type: Input }], contentTemplateOutlet: [{ type: Input }], delete: [{ type: Output }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzSelectPlaceholderComponent { placeholder = null; static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.2", type: NzSelectPlaceholderComponent, isStandalone: true, selector: "nz-select-placeholder", inputs: { placeholder: "placeholder" }, host: { classAttribute: "ant-select-selection-placeholder" }, ngImport: i0, template: ` {{ placeholder }} `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i1.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectPlaceholderComponent, decorators: [{ type: Component, args: [{ selector: 'nz-select-placeholder', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` {{ placeholder }} `, host: { class: 'ant-select-selection-placeholder' }, imports: [NzOutletModule] }] }], propDecorators: { placeholder: [{ type: Input }] } }); class NzSelectSearchComponent { elementRef; renderer; focusMonitor; nzId = null; disabled = false; mirrorSync = false; showInput = true; focusTrigger = false; value = ''; autofocus = false; valueChange = new EventEmitter(); isComposingChange = new EventEmitter(); inputElement; mirrorElement; setCompositionState(isComposing) { this.isComposingChange.next(isComposing); } onValueChange(value) { this.value = value; this.valueChange.next(value); if (this.mirrorSync) { this.syncMirrorWidth(); } } clearInputValue() { const inputDOM = this.inputElement.nativeElement; inputDOM.value = ''; this.onValueChange(''); } syncMirrorWidth() { reqAnimFrame(() => { const mirrorDOM = this.mirrorElement.nativeElement; const hostDOM = this.elementRef.nativeElement; const inputDOM = this.inputElement.nativeElement; this.renderer.removeStyle(hostDOM, 'width'); this.renderer.setProperty(mirrorDOM, 'textContent', `${inputDOM.value}\u00a0`); this.renderer.setStyle(hostDOM, 'width', `${mirrorDOM.scrollWidth}px`); }); } focus() { this.focusMonitor.focusVia(this.inputElement, 'keyboard'); } blur() { this.inputElement.nativeElement.blur(); } constructor(elementRef, renderer, focusMonitor) { this.elementRef = elementRef; this.renderer = renderer; this.focusMonitor = focusMonitor; } ngOnChanges(changes) { const inputDOM = this.inputElement.nativeElement; const { focusTrigger, showInput } = changes; if (showInput) { if (this.showInput) { this.renderer.removeAttribute(inputDOM, 'readonly'); } else { this.renderer.setAttribute(inputDOM, 'readonly', 'readonly'); } } // IE11 cannot input value if focused before removing readonly if (focusTrigger && focusTrigger.currentValue === true && focusTrigger.previousValue === false) { inputDOM.focus(); } } ngAfterViewInit() { if (this.mirrorSync) { this.syncMirrorWidth(); } if (this.autofocus) { this.focus(); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectSearchComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$4.FocusMonitor }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzSelectSearchComponent, isStandalone: true, selector: "nz-select-search", inputs: { nzId: "nzId", disabled: "disabled", mirrorSync: "mirrorSync", showInput: "showInput", focusTrigger: "focusTrigger", value: "value", autofocus: "autofocus" }, outputs: { valueChange: "valueChange", isComposingChange: "isComposingChange" }, host: { classAttribute: "ant-select-selection-search" }, providers: [{ provide: COMPOSITION_BUFFER_MODE, useValue: false }], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, static: true }, { propertyName: "mirrorElement", first: true, predicate: ["mirrorElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: ` @if (mirrorSync) { } `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectSearchComponent, decorators: [{ type: Component, args: [{ selector: 'nz-select-search', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: ` @if (mirrorSync) { } `, host: { class: 'ant-select-selection-search' }, providers: [{ provide: COMPOSITION_BUFFER_MODE, useValue: false }], imports: [FormsModule] }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$4.FocusMonitor }], propDecorators: { nzId: [{ type: Input }], disabled: [{ type: Input }], mirrorSync: [{ type: Input }], showInput: [{ type: Input }], focusTrigger: [{ type: Input }], value: [{ type: Input }], autofocus: [{ type: Input }], valueChange: [{ type: Output }], isComposingChange: [{ type: Output }], inputElement: [{ type: ViewChild, args: ['inputElement', { static: true }] }], mirrorElement: [{ type: ViewChild, args: ['mirrorElement', { static: false }] }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzSelectTopControlComponent { nzId = null; showSearch = false; placeHolder = null; open = false; maxTagCount = Infinity; autofocus = false; disabled = false; mode = 'default'; customTemplate = null; maxTagPlaceholder = null; removeIcon = null; listOfTopItem = []; tokenSeparators = []; tokenize = new EventEmitter(); inputValueChange = new EventEmitter(); deleteItem = new EventEmitter(); nzSelectSearchComponent; listOfSlicedItem = []; isShowPlaceholder = true; isShowSingleLabel = false; isComposing = false; inputValue = null; updateTemplateVariable() { const isSelectedValueEmpty = this.listOfTopItem.length === 0; this.isShowPlaceholder = isSelectedValueEmpty && !this.isComposing && !this.inputValue; this.isShowSingleLabel = !isSelectedValueEmpty && !this.isComposing && !this.inputValue; } isComposingChange(isComposing) { this.isComposing = isComposing; this.updateTemplateVariable(); } onInputValueChange(value) { if (value !== this.inputValue) { this.inputValue = value; this.updateTemplateVariable(); this.inputValueChange.emit(value); this.tokenSeparate(value, this.tokenSeparators); } } tokenSeparate(inputValue, tokenSeparators) { const includesSeparators = (str, separators) => { // eslint-disable-next-line @typescript-eslint/prefer-for-of for (let i = 0; i < separators.length; ++i) { if (str.lastIndexOf(separators[i]) > 0) { return true; } } return false; }; const splitBySeparators = (str, separators) => { const reg = new RegExp(`[${separators.join()}]`); const array = str.split(reg).filter(token => token); return [...new Set(array)]; }; if (inputValue && inputValue.length && tokenSeparators.length && this.mode !== 'default' && includesSeparators(inputValue, tokenSeparators)) { const listOfLabel = splitBySeparators(inputValue, tokenSeparators); this.tokenize.next(listOfLabel); } } clearInputValue() { if (this.nzSelectSearchComponent) { this.nzSelectSearchComponent.clearInputValue(); } } focus() { if (this.nzSelectSearchComponent) { this.nzSelectSearchComponent.focus(); } } blur() { if (this.nzSelectSearchComponent) { this.nzSelectSearchComponent.blur(); } } onDeleteItem(item) { if (!this.disabled && !item.nzDisabled) { this.deleteItem.next(item); } } destroyRef = inject(DestroyRef); elementRef = inject((ElementRef)); ngZone = inject(NgZone); noAnimation = inject(NzNoAnimationDirective, { host: true, optional: true }); ngOnChanges(changes) { const { listOfTopItem, maxTagCount, customTemplate, maxTagPlaceholder } = changes; if (listOfTopItem) { this.updateTemplateVariable(); } if (listOfTopItem || maxTagCount || customTemplate || maxTagPlaceholder) { const listOfSlicedItem = this.listOfTopItem.slice(0, this.maxTagCount).map(o => ({ nzLabel: o.nzLabel, nzValue: o.nzValue, nzDisabled: o.nzDisabled, contentTemplateOutlet: this.customTemplate, contentTemplateOutletContext: o })); if (this.listOfTopItem.length > this.maxTagCount) { const exceededLabel = `+ ${this.listOfTopItem.length - this.maxTagCount} ...`; const listOfSelectedValue = this.listOfTopItem.map(item => item.nzValue); const exceededItem = { nzLabel: exceededLabel, nzValue: '$$__nz_exceeded_item', nzDisabled: true, contentTemplateOutlet: this.maxTagPlaceholder, contentTemplateOutletContext: listOfSelectedValue.slice(this.maxTagCount) }; listOfSlicedItem.push(exceededItem); } this.listOfSlicedItem = listOfSlicedItem; } } ngOnInit() { fromEventOutsideAngular(this.elementRef.nativeElement, 'click') .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe(event => { // `HTMLElement.focus()` is a native DOM API which doesn't require Angular to run change detection. if (event.target !== this.nzSelectSearchComponent.inputElement.nativeElement) { this.nzSelectSearchComponent.focus(); } }); fromEventOutsideAngular(this.elementRef.nativeElement, 'keydown') .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe(event => { if (event.target instanceof HTMLInputElement) { const inputValue = event.target.value; if (event.keyCode === BACKSPACE && this.mode !== 'default' && !inputValue && this.listOfTopItem.length > 0) { event.preventDefault(); // Run change detection only if the user has pressed the `Backspace` key and the following condition is met. this.ngZone.run(() => this.onDeleteItem(this.listOfTopItem[this.listOfTopItem.length - 1])); } } }); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectTopControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzSelectTopControlComponent, isStandalone: true, selector: "nz-select-top-control", inputs: { nzId: "nzId", showSearch: "showSearch", placeHolder: "placeHolder", open: "open", maxTagCount: ["maxTagCount", "maxTagCount", numberAttribute], autofocus: "autofocus", disabled: "disabled", mode: "mode", customTemplate: "customTemplate", maxTagPlaceholder: "maxTagPlaceholder", removeIcon: "removeIcon", listOfTopItem: "listOfTopItem", tokenSeparators: "tokenSeparators" }, outputs: { tokenize: "tokenize", inputValueChange: "inputValueChange", deleteItem: "deleteItem" }, host: { classAttribute: "ant-select-selector" }, viewQueries: [{ propertyName: "nzSelectSearchComponent", first: true, predicate: NzSelectSearchComponent, descendants: true }], exportAs: ["nzSelectTopControl"], usesOnChanges: true, ngImport: i0, template: ` @switch (mode) { @case ('default') { @if (isShowSingleLabel) { } } @default { @for (item of listOfSlicedItem; track item.nzValue) { } } } @if (isShowPlaceholder) { } `, isInline: true, dependencies: [{ kind: "component", type: NzSelectSearchComponent, selector: "nz-select-search", inputs: ["nzId", "disabled", "mirrorSync", "showInput", "focusTrigger", "value", "autofocus"], outputs: ["valueChange", "isComposingChange"] }, { kind: "component", type: NzSelectItemComponent, selector: "nz-select-item", inputs: ["disabled", "label", "deletable", "removeIcon", "contentTemplateOutletContext", "contentTemplateOutlet"], outputs: ["delete"] }, { kind: "component", type: NzSelectPlaceholderComponent, selector: "nz-select-placeholder", inputs: ["placeholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectTopControlComponent, decorators: [{ type: Component, args: [{ selector: 'nz-select-top-control', exportAs: 'nzSelectTopControl', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: ` @switch (mode) { @case ('default') { @if (isShowSingleLabel) { } } @default { @for (item of listOfSlicedItem; track item.nzValue) { } } } @if (isShowPlaceholder) { } `, host: { class: 'ant-select-selector' }, imports: [NzSelectSearchComponent, NzSelectItemComponent, NzSelectPlaceholderComponent] }] }], propDecorators: { nzId: [{ type: Input }], showSearch: [{ type: Input }], placeHolder: [{ type: Input }], open: [{ type: Input }], maxTagCount: [{ type: Input, args: [{ transform: numberAttribute }] }], autofocus: [{ type: Input }], disabled: [{ type: Input }], mode: [{ type: Input }], customTemplate: [{ type: Input }], maxTagPlaceholder: [{ type: Input }], removeIcon: [{ type: Input }], listOfTopItem: [{ type: Input }], tokenSeparators: [{ type: Input }], tokenize: [{ type: Output }], inputValueChange: [{ type: Output }], deleteItem: [{ type: Output }], nzSelectSearchComponent: [{ type: ViewChild, args: [NzSelectSearchComponent] }] } }); const defaultFilterOption = (searchValue, item) => { if (item && item.nzLabel) { return item.nzLabel.toString().toLowerCase().indexOf(searchValue.toLowerCase()) > -1; } else { return false; } }; const NZ_CONFIG_MODULE_NAME = 'select'; let NzSelectComponent = (() => { let _nzOptionHeightPx_decorators; let _nzOptionHeightPx_initializers = []; let _nzOptionHeightPx_extraInitializers = []; let _nzSuffixIcon_decorators; let _nzSuffixIcon_initializers = []; let _nzSuffixIcon_extraInitializers = []; let _nzBorderless_decorators; let _nzBorderless_initializers = []; let _nzBorderless_extraInitializers = []; let _nzBackdrop_decorators; let _nzBackdrop_initializers = []; let _nzBackdrop_extraInitializers = []; return class NzSelectComponent { static { const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0; _nzOptionHeightPx_decorators = [WithConfig()]; _nzSuffixIcon_decorators = [WithConfig()]; _nzBorderless_decorators = [WithConfig()]; _nzBackdrop_decorators = [WithConfig()]; __esDecorate(null, null, _nzOptionHeightPx_decorators, { kind: "field", name: "nzOptionHeightPx", static: false, private: false, access: { has: obj => "nzOptionHeightPx" in obj, get: obj => obj.nzOptionHeightPx, set: (obj, value) => { obj.nzOptionHeightPx = value; } }, metadata: _metadata }, _nzOptionHeightPx_initializers, _nzOptionHeightPx_extraInitializers); __esDecorate(null, null, _nzSuffixIcon_decorators, { kind: "field", name: "nzSuffixIcon", static: false, private: false, access: { has: obj => "nzSuffixIcon" in obj, get: obj => obj.nzSuffixIcon, set: (obj, value) => { obj.nzSuffixIcon = value; } }, metadata: _metadata }, _nzSuffixIcon_initializers, _nzSuffixIcon_extraInitializers); __esDecorate(null, null, _nzBorderless_decorators, { kind: "field", name: "nzBorderless", static: false, private: false, access: { has: obj => "nzBorderless" in obj, get: obj => obj.nzBorderless, set: (obj, value) => { obj.nzBorderless = value; } }, metadata: _metadata }, _nzBorderless_initializers, _nzBorderless_extraInitializers); __esDecorate(null, null, _nzBackdrop_decorators, { kind: "field", name: "nzBackdrop", static: false, private: false, access: { has: obj => "nzBackdrop" in obj, get: obj => obj.nzBackdrop, set: (obj, value) => { obj.nzBackdrop = value; } }, metadata: _metadata }, _nzBackdrop_initializers, _nzBackdrop_extraInitializers); if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata }); } ngZone; destroy$; nzConfigService; cdr; host; renderer; platform; focusMonitor; directionality; _nzModuleName = NZ_CONFIG_MODULE_NAME; nzId = null; nzSize = 'default'; nzStatus = ''; nzOptionHeightPx = __runInitializers(this, _nzOptionHeightPx_initializers, 32); nzOptionOverflowSize = (__runInitializers(this, _nzOptionHeightPx_extraInitializers), 8); nzDropdownClassName = null; nzDropdownMatchSelectWidth = true; nzDropdownStyle = null; nzNotFoundContent = undefined; nzPlaceHolder = null; nzPlacement = null; nzMaxTagCount = Infinity; nzDropdownRender = null; nzCustomTemplate = null; nzSuffixIcon = __runInitializers(this, _nzSuffixIcon_initializers, null); nzClearIcon = (__runInitializers(this, _nzSuffixIcon_extraInitializers), null); nzRemoveIcon = null; nzMenuItemSelectedIcon = null; nzTokenSeparators = []; nzMaxTagPlaceholder = null; nzMaxMultipleCount = Infinity; nzMode = 'default'; nzFilterOption = defaultFilterOption; compareWith = (o1, o2) => o1 === o2; nzAllowClear = false; nzBorderless = __runInitializers(this, _nzBorderless_initializers, false); nzShowSearch = (__runInitializers(this, _nzBorderless_extraInitializers), false); nzLoading = false; nzAutoFocus = false; nzAutoClearSearchValue = true; nzServerSearch = false; nzDisabled = false; nzOpen = false; nzSelectOnTab = false; nzBackdrop = __runInitializers(this, _nzBackdrop_initializers, false); nzOptions = (__runInitializers(this, _nzBackdrop_extraInitializers), []); set nzShowArrow(value) { this._nzShowArrow = value; } get nzShowArrow() { return this._nzShowArrow === undefined ? this.nzMode === 'default' : this._nzShowArrow; } get isMultiple() { return this.nzMode === 'multiple' || this.nzMode === 'tags'; } get isMaxMultipleCountSet() { return this.isMultiple && this.nzMaxMultipleCount !== Infinity; } get isMaxMultipleCountReached() { return this.nzMaxMultipleCount !== Infinity && this.listOfValue.length === this.nzMaxMultipleCount; } nzOnSearch = new EventEmitter(); nzScrollToBottom = new EventEmitter(); nzOpenChange = new EventEmitter(); nzBlur = new EventEmitter(); nzFocus = new EventEmitter(); originElement; cdkConnectedOverlay; nzSelectTopControlComponent; listOfNzOptionComponent; listOfNzOptionGroupComponent; nzOptionGroupComponentElement; nzSelectTopControlComponentElement; finalSize = computed(() => { if (this.compactSize) { return this.compactSize(); } return this.size(); }); size = signal(this.nzSize); compactSize = inject(NZ_SPACE_COMPACT_SIZE, { optional: true }); listOfValue$ = new BehaviorSubject([]); listOfTemplateItem$ = new BehaviorSubject([]); listOfTagAndTemplateItem = []; searchValue = ''; isReactiveDriven = false; value; _nzShowArrow; requestId = -1; isNzDisableFirstChange = true; onChange = () => { }; onTouched = () => { }; dropdownPosition = 'bottomLeft'; triggerWidth = null; listOfContainerItem = []; listOfTopItem = []; activatedValue = null; listOfValue = []; focused = false; dir = 'ltr'; positions = []; // status prefixCls = 'ant-select'; statusCls = {}; status = ''; hasFeedback = false; generateTagItem(value) { return { nzValue: value, nzLabel: value, type: 'item' }; } onItemClick(value) { this.activatedValue = value; if (this.nzMode === 'default') { if (this.listOfValue.length === 0 || !this.compareWith(this.listOfValue[0], value)) { this.updateListOfValue([value]); } this.setOpenState(false); } else { const targetIndex = this.listOfValue.findIndex(o => this.compareWith(o, value)); if (targetIndex !== -1) { const listOfValueAfterRemoved = this.listOfValue.filter((_, i) => i !== targetIndex); this.updateListOfValue(listOfValueAfterRemoved); } else if (this.listOfValue.length < this.nzMaxMultipleCount) { const listOfValueAfterAdded = [...this.listOfValue, value]; this.updateListOfValue(listOfValueAfterAdded); } this.focus(); if (this.nzAutoClearSearchValue) { this.clearInput(); } } } onItemDelete(item) { const listOfSelectedValue = this.listOfValue.filter(v => !this.compareWith(v, item.nzValue)); this.updateListOfValue(listOfSelectedValue); this.clearInput(); } updateListOfContainerItem() { let listOfContainerItem = this.listOfTagAndTemplateItem .filter(item => !item.nzHide) .filter(item => { if (!this.nzServerSearch && this.searchValue) { return this.nzFilterOption(this.searchValue, item); } else { return true; } }); if (this.nzMode === 'tags' && this.searchValue) { const matchedItem = this.listOfTagAndTemplateItem.find(item => item.nzLabel === this.searchValue); if (!matchedItem) { const tagItem = this.generateTagItem(this.searchValue); listOfContainerItem = [tagItem, ...listOfContainerItem]; this.activatedValue = tagItem.nzValue; } else { this.activatedValue = matchedItem.nzValue; } } const activatedItem = listOfContainerItem.find(item => item.nzLabel === this.searchValue) || listOfContainerItem.find(item => this.compareWith(item.nzValue, this.activatedValue)) || listOfContainerItem.find(item => this.compareWith(item.nzValue, this.listOfValue[0])) || listOfContainerItem[0]; this.activatedValue = (activatedItem && activatedItem.nzValue) || null; let listOfGroupLabel = []; if (this.isReactiveDriven) { listOfGroupLabel = [...new Set(this.nzOptions.filter(o => o.groupLabel).map(o => o.groupLabel))]; } else { if (this.listOfNzOptionGroupComponent) { listOfGroupLabel = this.listOfNzOptionGroupComponent.map(o => o.nzLabel); } } /** insert group item **/ listOfGroupLabel.forEach(label => { const index = listOfContainerItem.findIndex(item => label === item.groupLabel); if (index > -1) { const groupItem = { groupLabel: label, type: 'group', key: label }; listOfContainerItem.splice(index, 0, groupItem); } }); this.listOfContainerItem = [...listOfContainerItem]; this.updateCdkConnectedOverlayPositions(); } clearInput() { this.nzSelectTopControlComponent.clearInputValue(); } updateListOfValue(listOfValue) { const covertListToModel = (list, mode) => { if (mode === 'default') { if (list.length > 0) { return list[0]; } else { return null; } } else { return list; } }; const model = covertListToModel(listOfValue, this.nzMode); if (this.value !== model) { this.listOfValue = listOfValue; this.listOfValue$.next(listOfValue); this.value = model; this.onChange(this.value); } } onTokenSeparate(listOfLabel) { const listOfMatchedValue = this.listOfTagAndTemplateItem .filter(item => listOfLabel.findIndex(label => label === item.nzLabel) !== -1) .map(item => item.nzValue) .filter(item => this.listOfValue.findIndex(v => this.compareWith(v, item)) === -1); /** * Limit the number of selected item to nzMaxMultipleCount */ const limitWithinMaxCount = (value) => this.isMaxMultipleCountSet ? value.slice(0, this.nzMaxMultipleCount) : value; if (this.nzMode === 'multiple') { const updateValue = limitWithinMaxCount([...this.listOfValue, ...listOfMatchedValue]); this.updateListOfValue(updateValue); } else if (this.nzMode === 'tags') { const listOfUnMatchedLabel = listOfLabel.filter(label => this.listOfTagAndTemplateItem.findIndex(item => item.nzLabel === label) === -1); const updateValue = limitWithinMaxCount([...this.listOfValue, ...listOfMatchedValue, ...listOfUnMatchedLabel]); this.updateListOfValue(updateValue); } this.clearInput(); } onKeyDown(e) { if (this.nzDisabled) { return; } const listOfFilteredOptionNotDisabled = this.listOfContainerItem .filter(item => item.type === 'item') .filter(item => !item.nzDisabled); const activatedIndex = listOfFilteredOptionNotDisabled.findIndex(item => this.compareWith(item.nzValue, this.activatedValue)); switch (e.keyCode) { case UP_ARROW: e.preventDefault(); if (this.nzOpen && listOfFilteredOptionNotDisabled.length > 0) { const preIndex = activatedIndex > 0 ? activatedIndex - 1 : listOfFilteredOptionNotDisabled.length - 1; this.activatedValue = listOfFilteredOptionNotDisabled[preIndex].nzValue; } break; case DOWN_ARROW: e.preventDefault(); if (this.nzOpen && listOfFilteredOptionNotDisabled.length > 0) { const nextIndex = activatedIndex < listOfFilteredOptionNotDisabled.length - 1 ? activatedIndex + 1 : 0; this.activatedValue = listOfFilteredOptionNotDisabled[nextIndex].nzValue; } else { this.setOpenState(true); } break; case ENTER: e.preventDefault(); if (this.nzOpen) { if (isNotNil(this.activatedValue) && activatedIndex !== -1) { this.onItemClick(this.activatedValue); } } else { this.setOpenState(true); } break; case SPACE: if (!this.nzOpen) { this.setOpenState(true); e.preventDefault(); } break; case TAB: if (this.nzSelectOnTab) { if (this.nzOpen) { e.preventDefault(); if (isNotNil(this.activatedValue)) { this.onItemClick(this.activatedValue); } } } else { this.setOpenState(false); } break; case ESCAPE: /** * Skip the ESCAPE processing, it will be handled in {@link onOverlayKeyDown}. */ break; default: if (!this.nzOpen) { this.setOpenState(true); } } } setOpenState(value) { if (this.nzOpen !== value) { this.nzOpen = value; this.nzOpenChange.emit(value); this.onOpenChange(); this.cdr.markForCheck(); } } onOpenChange() { this.updateCdkConnectedOverlayStatus(); if (this.nzAutoClearSearchValue) { this.clearInput(); } } onInputValueChange(value) { this.searchValue = value; this.updateListOfContainerItem(); this.nzOnSearch.emit(value); this.updateCdkConnectedOverlayPositions(); } onClearSelection() { this.updateListOfValue([]); } onClickOutside(event) { const target = _getEventTarget(event); if (!this.host.nativeElement.contains(target)) { this.setOpenState(false); } } focus() { this.nzSelectTopControlComponent.focus(); } blur() { this.nzSelectTopControlComponent.blur(); } onPositionChange(position) { const placement = getPlacementName(position); this.dropdownPosition = placement; } updateCdkConnectedOverlayStatus() { if (this.platform.isBrowser && this.originElement.nativeElement) { const triggerWidth = this.triggerWidth; cancelRequestAnimationFrame(this.requestId); this.requestId = reqAnimFrame(() => { // Blink triggers style and layout pipelines anytime the `getBoundingClientRect()` is called, which may cause a // frame drop. That's why it's scheduled through the `requestAnimationFrame` to unload the composite thread. this.triggerWidth = this.originElement.nativeElement.getBoundingClientRect().width; if (triggerWidth !== this.triggerWidth) { // The `requestAnimationFrame` will trigger change detection, but we're inside an `OnPush` component which won't have // the `ChecksEnabled` state. Calling `markForCheck()` will allow Angular to run the change detection from the root component // down to the `nz-select`. But we'll trigger only local change detection if the `triggerWidth` has been changed. this.cdr.detectChanges(); } }); } } updateCdkConnectedOverlayPositions() { reqAnimFrame(() => { this.cdkConnectedOverlay?.overlayRef?.updatePosition(); }); } noAnimation = inject(NzNoAnimationDirective, { host: true, optional: true }); nzFormStatusService = inject(NzFormStatusService, { optional: true }); nzFormNoStatusService = inject(NzFormNoStatusService, { optional: true }); constructor(ngZone, destroy$, nzConfigService, cdr, host, renderer, platform, focusMonitor, directionality) { this.ngZone = ngZone; this.destroy$ = destroy$; this.nzConfigService = nzConfigService; this.cdr = cdr; this.host = host; this.renderer = renderer; this.platform = platform; this.focusMonitor = focusMonitor; this.directionality = directionality; } writeValue(modelValue) { /** https://github.com/angular/angular/issues/14988 **/ if (this.value !== modelValue) { this.value = modelValue; const covertModelToList = (model, mode) => { if (model === null || model === undefined) { return []; } else if (mode === 'default') { return [model]; } else { return model; } }; const listOfValue = covertModelToList(modelValue, this.nzMode); this.listOfValue = listOfValue; this.listOfValue$.next(listOfValue); this.cdr.markForCheck(); } } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } setDisabledState(disabled) { this.nzDisabled = (this.isNzDisableFirstChange && this.nzDisabled) || disabled; this.isNzDisableFirstChange = false; if (this.nzDisabled) { this.setOpenState(false); } this.cdr.markForCheck(); } ngOnChanges({ nzOpen, nzDisabled, nzOptions, nzStatus, nzPlacement, nzSize }) { if (nzOpen) { this.onOpenChange(); } if (nzDisabled && this.nzDisabled) { this.setOpenState(false); } if (nzOptions) { this.isReactiveDriven = true; const listOfOptions = this.nzOptions || []; const listOfTransformedItem = listOfOptions.map(item => { return { template: item.label instanceof TemplateRef ? item.label : null, nzTitle: this.getTitle(item.title, item.label), nzLabel: typeof item.label === 'string' || typeof item.label === 'number' ? item.label : null, nzValue: item.value, nzDisabled: item.disabled || false, nzHide: item.hide || false, nzCustomContent: item.label instanceof TemplateRef, groupLabel: item.groupLabel || null, type: 'item', key: item.key === undefined ? item.value : item.key }; }); this.listOfTemplateItem$.next(listOfTransformedItem); } if (nzStatus) { this.setStatusStyles(this.nzStatus, this.hasFeedback); } if (nzPlacement) { const { currentValue } = nzPlacement; this.dropdownPosition = currentValue; const listOfPlacement = ['bottomLeft', 'topLeft', 'bottomRight', 'topRight']; if (currentValue && listOfPlacement.includes(currentValue)) { this.positions = [POSITION_MAP[currentValue]]; } else { this.positions = listOfPlacement.map(e => POSITION_MAP[e]); } } if (nzSize) { this.size.set(nzSize.currentValue); } } ngOnInit() { this.nzFormStatusService?.formStatusChanges .pipe(distinctUntilChanged((pre, cur) => { return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback; }), withLatestFrom(this.nzFormNoStatusService ? this.nzFormNoStatusService.noFormStatus : of(false)), map(([{ status, hasFeedback }, noStatus]) => ({ status: noStatus ? '' : status, hasFeedback })), takeUntil(this.destroy$)) .subscribe(({ status, hasFeedback }) => { this.setStatusStyles(status, hasFeedback); }); this.focusMonitor .monitor(this.host, true) .pipe(takeUntil(this.destroy$)) .subscribe(focusOrigin => { if (!focusOrigin) { this.focused = false; this.cdr.markForCheck(); this.nzBlur.emit(); Promise.resolve().then(() => { this.onTouched(); }); } else { this.focused = true; this.cdr.markForCheck(); this.nzFocus.emit(); } }); combineLatest([this.listOfValue$, this.listOfTemplateItem$]) .pipe(takeUntil(this.destroy$)) .subscribe(([listOfSelectedValue, listOfTemplateItem]) => { const listOfTagItem = listOfSelectedValue .filter(() => this.nzMode === 'tags') .filter(value => listOfTemplateItem.findIndex(o => this.compareWith(o.nzValue, value)) === -1) .map(value => this.listOfTopItem.find(o => this.compareWith(o.nzValue, value)) || this.generateTagItem(value)); this.listOfTagAndTemplateItem = [...listOfTemplateItem, ...listOfTagItem]; this.listOfTopItem = this.listOfValue .map(v => [...this.listOfTagAndTemplateItem, ...this.listOfTopItem].find(item => this.compareWith(v, item.nzValue))) .filter(item => !!item); this.updateListOfContainerItem(); }); this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { this.dir = direction; this.cdr.detectChanges(); }); this.nzConfigService .getConfigChangeEventForComponent('select') .pipe(takeUntil(this.destroy$)) .subscribe(() => { this.size.set(this.nzSize); this.cdr.markForCheck(); }); this.dir = this.directionality.value; fromEventOutsideAngular(this.host.nativeElement, 'click') .pipe(takeUntil(this.destroy$)) .subscribe(() => { if ((this.nzOpen && this.nzShowSearch) || this.nzDisabled) { return; } this.ngZone.run(() => this.setOpenState(!this.nzOpen)); }); // Caretaker note: we could've added this listener within the template `(overlayKeydown)="..."`, // but with this approach, it'll run change detection on each keyboard click, and also it'll run // `markForCheck()` internally, which means the whole component tree (starting from the root and // going down to the select component) will be re-checked and updated (if needed). // This is safe to do that manually since `setOpenState()` calls `markForCheck()` if needed. this.cdkConnectedOverlay.overlayKeydown.pipe(takeUntil(this.destroy$)).subscribe(event => { if (event.keyCode === ESCAPE) { this.setOpenState(false); } }); } ngAfterContentInit() { if (!this.isReactiveDriven) { merge(this.listOfNzOptionGroupComponent.changes, this.listOfNzOptionComponent.changes) .pipe(startWith(true), switchMap(() => merge(...[ this.listOfNzOptionComponent.changes, this.listOfNzOptionGroupComponent.changes, ...this.listOfNzOptionComponent.map(option => option.changes), ...this.listOfNzOptionGroupComponent.map(option => option.changes) ]).pipe(startWith(true))), takeUntil(this.destroy$)) .subscribe(() => { const listOfOptionInterface = this.listOfNzOptionComponent.toArray().map(item => { const { template, nzLabel, nzValue, nzKey, nzDisabled, nzHide, nzCustomContent, groupLabel } = item; return { template, nzLabel, nzValue, nzDisabled, nzHide, nzCustomContent, groupLabel, nzTitle: this.getTitle(item.nzTitle, item.nzLabel), type: 'item', key: nzKey === undefined ? nzValue : nzKey }; }); this.listOfTemplateItem$.next(listOfOptionInterface); this.cdr.markForCheck(); }); } } ngOnDestroy() { cancelRequestAnimationFrame(this.requestId); this.focusMonitor.stopMonitoring(this.host); } setStatusStyles(status, hasFeedback) { this.status = status; this.hasFeedback = hasFeedback; this.cdr.markForCheck(); // render status if nzStatus is set this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback); Object.keys(this.statusCls).forEach(status => { if (this.statusCls[status]) { this.renderer.addClass(this.host.nativeElement, status); } else { this.renderer.removeClass(this.host.nativeElement, status); } }); } getTitle(title, label) { let rawTitle = undefined; if (title === undefined) { if (typeof label === 'string' || typeof label === 'number') { rawTitle = label.toString(); } } else if (typeof title === 'string' || typeof title === 'number') { rawTitle = title.toString(); } return rawTitle; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectComponent, deps: [{ token: i0.NgZone }, { token: i1$1.NzDestroyService }, { token: i2$2.NzConfigService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i3.Platform }, { token: i1$4.FocusMonitor }, { token: i5.Directionality }], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzSelectComponent, isStandalone: true, selector: "nz-select", inputs: { nzId: "nzId", nzSize: "nzSize", nzStatus: "nzStatus", nzOptionHeightPx: "nzOptionHeightPx", nzOptionOverflowSize: "nzOptionOverflowSize", nzDropdownClassName: "nzDropdownClassName", nzDropdownMatchSelectWidth: "nzDropdownMatchSelectWidth", nzDropdownStyle: "nzDropdownStyle", nzNotFoundContent: "nzNotFoundContent", nzPlaceHolder: "nzPlaceHolder", nzPlacement: "nzPlacement", nzMaxTagCount: "nzMaxTagCount", nzDropdownRender: "nzDropdownRender", nzCustomTemplate: "nzCustomTemplate", nzSuffixIcon: "nzSuffixIcon", nzClearIcon: "nzClearIcon", nzRemoveIcon: "nzRemoveIcon", nzMenuItemSelectedIcon: "nzMenuItemSelectedIcon", nzTokenSeparators: "nzTokenSeparators", nzMaxTagPlaceholder: "nzMaxTagPlaceholder", nzMaxMultipleCount: ["nzMaxMultipleCount", "nzMaxMultipleCount", numberAttributeWithInfinityFallback], nzMode: "nzMode", nzFilterOption: "nzFilterOption", compareWith: "compareWith", nzAllowClear: ["nzAllowClear", "nzAllowClear", booleanAttribute], nzBorderless: ["nzBorderless", "nzBorderless", booleanAttribute], nzShowSearch: ["nzShowSearch", "nzShowSearch", booleanAttribute], nzLoading: ["nzLoading", "nzLoading", booleanAttribute], nzAutoFocus: ["nzAutoFocus", "nzAutoFocus", booleanAttribute], nzAutoClearSearchValue: ["nzAutoClearSearchValue", "nzAutoClearSearchValue", booleanAttribute], nzServerSearch: ["nzServerSearch", "nzServerSearch", booleanAttribute], nzDisabled: ["nzDisabled", "nzDisabled", booleanAttribute], nzOpen: ["nzOpen", "nzOpen", booleanAttribute], nzSelectOnTab: ["nzSelectOnTab", "nzSelectOnTab", booleanAttribute], nzBackdrop: ["nzBackdrop", "nzBackdrop", booleanAttribute], nzOptions: "nzOptions", nzShowArrow: ["nzShowArrow", "nzShowArrow", booleanAttribute] }, outputs: { nzOnSearch: "nzOnSearch", nzScrollToBottom: "nzScrollToBottom", nzOpenChange: "nzOpenChange", nzBlur: "nzBlur", nzFocus: "nzFocus" }, host: { properties: { "class.ant-select-in-form-item": "!!nzFormStatusService", "class.ant-select-lg": "finalSize() === \"large\"", "class.ant-select-sm": "finalSize() === \"small\"", "class.ant-select-show-arrow": "nzShowArrow", "class.ant-select-disabled": "nzDisabled", "class.ant-select-show-search": "(nzShowSearch || nzMode !== 'default') && !nzDisabled", "class.ant-select-allow-clear": "nzAllowClear", "class.ant-select-borderless": "nzBorderless", "class.ant-select-open": "nzOpen", "class.ant-select-focused": "nzOpen || focused", "class.ant-select-single": "nzMode === 'default'", "class.ant-select-multiple": "nzMode !== 'default'", "class.ant-select-rtl": "dir === 'rtl'" }, classAttribute: "ant-select" }, providers: [ NzDestroyService, { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NzSelectComponent), multi: true }, { provide: NZ_SPACE_COMPACT_ITEM_TYPE, useValue: 'select' } ], queries: [{ propertyName: "listOfNzOptionComponent", predicate: NzOptionComponent, descendants: true }, { propertyName: "listOfNzOptionGroupComponent", predicate: NzOptionGroupComponent, descendants: true }], viewQueries: [{ propertyName: "originElement", first: true, predicate: CdkOverlayOrigin, descendants: true, read: ElementRef, static: true }, { propertyName: "cdkConnectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true, static: true }, { propertyName: "nzSelectTopControlComponent", first: true, predicate: NzSelectTopControlComponent, descendants: true, static: true }, { propertyName: "nzOptionGroupComponentElement", first: true, predicate: NzOptionGroupComponent, descendants: true, read: ElementRef, static: true }, { propertyName: "nzSelectTopControlComponentElement", first: true, predicate: NzSelectTopControlComponent, descendants: true, read: ElementRef, static: true }], exportAs: ["nzSelect"], usesOnChanges: true, hostDirectives: [{ directive: i6.NzSpaceCompactItemDirective }], ngImport: i0, template: ` @if (nzShowArrow || (hasFeedback && !!status) || isMaxMultipleCountSet) { @if (hasFeedback && !!status) { } } @if (nzAllowClear && !nzDisabled && listOfValue.length) { } `, isInline: true, dependencies: [{ kind: "component", type: NzSelectTopControlComponent, selector: "nz-select-top-control", inputs: ["nzId", "showSearch", "placeHolder", "open", "maxTagCount", "autofocus", "disabled", "mode", "customTemplate", "maxTagPlaceholder", "removeIcon", "listOfTopItem", "tokenSeparators"], outputs: ["tokenize", "inputValueChange", "deleteItem"], exportAs: ["nzSelectTopControl"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NzNoAnimationDirective, selector: "[nzNoAnimation]", inputs: ["nzNoAnimation"], exportAs: ["nzNoAnimation"] }, { kind: "component", type: NzSelectArrowComponent, selector: "nz-select-arrow", inputs: ["listOfValue", "loading", "search", "showArrow", "isMaxMultipleCountSet", "suffixIcon", "feedbackIcon", "nzMaxMultipleCount"] }, { kind: "component", type: NzFormItemFeedbackIconComponent, selector: "nz-form-item-feedback-icon", inputs: ["status"], exportAs: ["nzFormFeedbackIcon"] }, { kind: "component", type: NzSelectClearComponent, selector: "nz-select-clear", inputs: ["clearIcon"], outputs: ["clear"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "ngmodule", type: NzOverlayModule }, { kind: "directive", type: i7.NzConnectedOverlayDirective, selector: "[cdkConnectedOverlay][nzConnectedOverlay]", inputs: ["nzArrowPointAtCenter"], exportAs: ["nzConnectedOverlay"] }, { kind: "component", type: NzOptionContainerComponent, selector: "nz-option-container", inputs: ["notFoundContent", "menuItemSelectedIcon", "dropdownRender", "activatedValue", "listOfSelectedValue", "compareWith", "mode", "matchWidth", "itemSize", "maxItemLength", "isMaxMultipleCountReached", "listOfContainerItem"], outputs: ["itemClick", "scrollToBottom"], exportAs: ["nzOptionContainer"] }], animations: [slideMotion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }; })(); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectComponent, decorators: [{ type: Component, args: [{ selector: 'nz-select', exportAs: 'nzSelect', preserveWhitespaces: false, providers: [ NzDestroyService, { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NzSelectComponent), multi: true }, { provide: NZ_SPACE_COMPACT_ITEM_TYPE, useValue: 'select' } ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [slideMotion], template: ` @if (nzShowArrow || (hasFeedback && !!status) || isMaxMultipleCountSet) { @if (hasFeedback && !!status) { } } @if (nzAllowClear && !nzDisabled && listOfValue.length) { } `, host: { class: 'ant-select', '[class.ant-select-in-form-item]': '!!nzFormStatusService', '[class.ant-select-lg]': 'finalSize() === "large"', '[class.ant-select-sm]': 'finalSize() === "small"', '[class.ant-select-show-arrow]': `nzShowArrow`, '[class.ant-select-disabled]': 'nzDisabled', '[class.ant-select-show-search]': `(nzShowSearch || nzMode !== 'default') && !nzDisabled`, '[class.ant-select-allow-clear]': 'nzAllowClear', '[class.ant-select-borderless]': 'nzBorderless', '[class.ant-select-open]': 'nzOpen', '[class.ant-select-focused]': 'nzOpen || focused', '[class.ant-select-single]': `nzMode === 'default'`, '[class.ant-select-multiple]': `nzMode !== 'default'`, '[class.ant-select-rtl]': `dir === 'rtl'` }, hostDirectives: [NzSpaceCompactItemDirective], imports: [ NzSelectTopControlComponent, CdkOverlayOrigin, NzNoAnimationDirective, NzSelectArrowComponent, NzFormItemFeedbackIconComponent, NzSelectClearComponent, CdkConnectedOverlay, NzOverlayModule, NzOptionContainerComponent ] }] }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1$1.NzDestroyService }, { type: i2$2.NzConfigService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i3.Platform }, { type: i1$4.FocusMonitor }, { type: i5.Directionality }], propDecorators: { nzId: [{ type: Input }], nzSize: [{ type: Input }], nzStatus: [{ type: Input }], nzOptionHeightPx: [{ type: Input }], nzOptionOverflowSize: [{ type: Input }], nzDropdownClassName: [{ type: Input }], nzDropdownMatchSelectWidth: [{ type: Input }], nzDropdownStyle: [{ type: Input }], nzNotFoundContent: [{ type: Input }], nzPlaceHolder: [{ type: Input }], nzPlacement: [{ type: Input }], nzMaxTagCount: [{ type: Input }], nzDropdownRender: [{ type: Input }], nzCustomTemplate: [{ type: Input }], nzSuffixIcon: [{ type: Input }], nzClearIcon: [{ type: Input }], nzRemoveIcon: [{ type: Input }], nzMenuItemSelectedIcon: [{ type: Input }], nzTokenSeparators: [{ type: Input }], nzMaxTagPlaceholder: [{ type: Input }], nzMaxMultipleCount: [{ type: Input, args: [{ transform: numberAttributeWithInfinityFallback }] }], nzMode: [{ type: Input }], nzFilterOption: [{ type: Input }], compareWith: [{ type: Input }], nzAllowClear: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzBorderless: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzShowSearch: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzLoading: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzAutoFocus: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzAutoClearSearchValue: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzServerSearch: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzDisabled: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzOpen: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzSelectOnTab: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzBackdrop: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzOptions: [{ type: Input }], nzShowArrow: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzOnSearch: [{ type: Output }], nzScrollToBottom: [{ type: Output }], nzOpenChange: [{ type: Output }], nzBlur: [{ type: Output }], nzFocus: [{ type: Output }], originElement: [{ type: ViewChild, args: [CdkOverlayOrigin, { static: true, read: ElementRef }] }], cdkConnectedOverlay: [{ type: ViewChild, args: [CdkConnectedOverlay, { static: true }] }], nzSelectTopControlComponent: [{ type: ViewChild, args: [NzSelectTopControlComponent, { static: true }] }], listOfNzOptionComponent: [{ type: ContentChildren, args: [NzOptionComponent, { descendants: true }] }], listOfNzOptionGroupComponent: [{ type: ContentChildren, args: [NzOptionGroupComponent, { descendants: true }] }], nzOptionGroupComponentElement: [{ type: ViewChild, args: [NzOptionGroupComponent, { static: true, read: ElementRef }] }], nzSelectTopControlComponentElement: [{ type: ViewChild, args: [NzSelectTopControlComponent, { static: true, read: ElementRef }] }] } }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ class NzSelectModule { static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.2", ngImport: i0, type: NzSelectModule, imports: [NzOptionComponent, NzSelectComponent, NzOptionContainerComponent, NzOptionGroupComponent, NzOptionItemComponent, NzSelectTopControlComponent, NzSelectSearchComponent, NzSelectItemComponent, NzSelectClearComponent, NzSelectArrowComponent, NzSelectPlaceholderComponent, NzOptionItemGroupComponent], exports: [NzOptionComponent, NzSelectComponent, NzOptionGroupComponent, NzSelectArrowComponent, NzSelectClearComponent, NzSelectItemComponent, NzSelectPlaceholderComponent, NzSelectSearchComponent] }); static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectModule, imports: [NzSelectComponent, NzOptionContainerComponent, NzOptionItemComponent, NzSelectTopControlComponent, NzSelectSearchComponent, NzSelectItemComponent, NzSelectClearComponent, NzSelectArrowComponent, NzSelectPlaceholderComponent, NzOptionItemGroupComponent] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzSelectModule, decorators: [{ type: NgModule, args: [{ imports: [ NzOptionComponent, NzSelectComponent, NzOptionContainerComponent, NzOptionGroupComponent, NzOptionItemComponent, NzSelectTopControlComponent, NzSelectSearchComponent, NzSelectItemComponent, NzSelectClearComponent, NzSelectArrowComponent, NzSelectPlaceholderComponent, NzOptionItemGroupComponent ], exports: [ NzOptionComponent, NzSelectComponent, NzOptionGroupComponent, NzSelectArrowComponent, NzSelectClearComponent, NzSelectItemComponent, NzSelectPlaceholderComponent, NzSelectSearchComponent ] }] }] }); /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ /** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ /** * Generated bundle index. Do not edit. */ export { NzOptionComponent, NzOptionContainerComponent, NzOptionGroupComponent, NzOptionItemComponent, NzOptionItemGroupComponent, NzSelectArrowComponent, NzSelectClearComponent, NzSelectComponent, NzSelectItemComponent, NzSelectModule, NzSelectPlaceholderComponent, NzSelectSearchComponent, NzSelectTopControlComponent }; //# sourceMappingURL=ng-zorro-antd-select.mjs.map