{"version":3,"file":"ng-zorro-antd-cascader.mjs","sources":["../../components/cascader/typings.ts","../../components/cascader/utils.ts","../../components/cascader/cascader-li.component.ts","../../components/cascader/cascader.service.ts","../../components/cascader/cascader.component.ts","../../components/cascader/cascader.module.ts","../../components/cascader/public-api.ts","../../components/cascader/ng-zorro-antd-cascader.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 { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type NzCascaderExpandTrigger = 'click' | 'hover';\nexport type NzCascaderTriggerType = 'click' | 'hover';\nexport type NzCascaderSize = 'small' | 'large' | 'default';\n\nexport type NzCascaderFilter = (searchValue: string, path: NzCascaderOption[]) => boolean;\nexport type NzCascaderSorter = (a: NzCascaderOption[], b: NzCascaderOption[], inputValue: string) => number;\n\nexport interface NzCascaderOption {\n  value?: NzSafeAny;\n  label?: string;\n  title?: string;\n  disabled?: boolean;\n  loading?: boolean;\n  isLeaf?: boolean;\n  parent?: NzCascaderOption;\n  children?: NzCascaderOption[];\n\n  [key: string]: NzSafeAny;\n}\n\nexport interface NzCascaderSearchOption extends NzCascaderOption {\n  path: NzCascaderOption[];\n}\n\nexport interface NzShowSearchOptions {\n  filter?: NzCascaderFilter;\n  sorter?: NzCascaderSorter;\n}\n\nexport function isShowSearchObject(options: NzShowSearchOptions | boolean): options is NzShowSearchOptions {\n  return typeof options !== 'boolean';\n}\n\n/**\n * To avoid circular dependency, provide an interface of `NzCascaderComponent`\n * for `NzCascaderService`.\n */\nexport interface NzCascaderComponentAsSource {\n  inputValue: string;\n  nzShowSearch: NzShowSearchOptions | boolean;\n  nzLabelProperty: string;\n  nzValueProperty: string;\n  nzChangeOnSelect: boolean;\n\n  nzChangeOn?(option: NzCascaderOption, level: number): boolean;\n\n  nzLoadData?(node: NzCascaderOption, index: number): PromiseLike<NzSafeAny>;\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 { NzCascaderOption } from './typings';\n\nexport function isChildOption(o: NzCascaderOption): boolean {\n  return o.isLeaf || !o.children || !o.children.length;\n}\n\nexport function isParentOption(o: NzCascaderOption): boolean {\n  return !!o.children && !!o.children.length && !o.isLeaf;\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 { Direction } from '@angular/cdk/bidi';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  Renderer2,\n  TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport { NzCascaderOption } from './typings';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: '[nz-cascader-option]',\n  exportAs: 'nzCascaderOption',\n  template: `\n    <ng-container *ngIf=\"optionTemplate; else defaultOptionTemplate\">\n      <ng-template\n        [ngTemplateOutlet]=\"optionTemplate\"\n        [ngTemplateOutletContext]=\"{ $implicit: option, index: columnIndex }\"\n      ></ng-template>\n    </ng-container>\n    <ng-template #defaultOptionTemplate>\n      <div\n        class=\"ant-cascader-menu-item-content\"\n        [innerHTML]=\"optionLabel | nzHighlight: highlightText:'g':'ant-cascader-menu-item-keyword'\"\n      ></div>\n    </ng-template>\n    <div *ngIf=\"!option.isLeaf || option.children?.length || option.loading\" class=\"ant-cascader-menu-item-expand-icon\">\n      <span *ngIf=\"option.loading; else icon\" nz-icon nzType=\"loading\"></span>\n      <ng-template #icon>\n        <ng-container *nzStringTemplateOutlet=\"expandIcon\">\n          <span nz-icon [nzType]=\"$any(expandIcon)\"></span>\n        </ng-container>\n      </ng-template>\n    </div>\n  `,\n  host: {\n    '[attr.title]': 'option.title || optionLabel',\n    '[class.ant-cascader-menu-item-active]': 'activated',\n    '[class.ant-cascader-menu-item-expand]': '!option.isLeaf',\n    '[class.ant-cascader-menu-item-disabled]': 'option.disabled'\n  }\n})\nexport class NzCascaderOptionComponent implements OnInit {\n  @Input() optionTemplate: TemplateRef<NzCascaderOption> | null = null;\n  @Input() option!: NzCascaderOption;\n  @Input() activated = false;\n  @Input() highlightText!: string;\n  @Input() nzLabelProperty = 'label';\n  @Input() columnIndex!: number;\n  @Input() expandIcon: string | TemplateRef<void> = '';\n  @Input() dir: Direction = 'ltr';\n\n  readonly nativeElement: HTMLElement;\n\n  constructor(private cdr: ChangeDetectorRef, elementRef: ElementRef, renderer: Renderer2) {\n    renderer.addClass(elementRef.nativeElement, 'ant-cascader-menu-item');\n    renderer.addClass(elementRef.nativeElement, 'ant-cascader-menu-item-expanded');\n    this.nativeElement = elementRef.nativeElement;\n  }\n  ngOnInit(): void {\n    if (this.expandIcon === '' && this.dir === 'rtl') {\n      this.expandIcon = 'left';\n    } else if (this.expandIcon === '') {\n      this.expandIcon = 'right';\n    }\n  }\n\n  get optionLabel(): string {\n    return this.option[this.nzLabelProperty];\n  }\n\n  markForCheck(): void {\n    this.cdr.markForCheck();\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 { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { arraysEqual, isNotNil } from 'ng-zorro-antd/core/util';\n\nimport {\n  isShowSearchObject,\n  NzCascaderComponentAsSource,\n  NzCascaderFilter,\n  NzCascaderOption,\n  NzCascaderSearchOption\n} from './typings';\nimport { isChildOption, isParentOption } from './utils';\n\n/**\n * All data is stored and parsed in NzCascaderService.\n */\n@Injectable()\nexport class NzCascaderService implements OnDestroy {\n  /** Activated options in each column. */\n  activatedOptions: NzCascaderOption[] = [];\n\n  /** An array to store cascader items arranged in different layers. */\n  columns: NzCascaderOption[][] = [];\n\n  /** If user has entered searching mode. */\n  inSearchingMode = false;\n\n  /** Selected options would be output to user. */\n  selectedOptions: NzCascaderOption[] = [];\n\n  values: NzSafeAny[] = [];\n\n  readonly $loading = new BehaviorSubject<boolean>(false);\n\n  /**\n   * Emit an event to notify cascader it needs to redraw because activated or\n   * selected options are changed.\n   */\n  readonly $redraw = new Subject<void>();\n\n  /**\n   * Emit an event when an option gets selected.\n   * Emit true if a leaf options is selected.\n   */\n  readonly $optionSelected = new Subject<{\n    option: NzCascaderOption;\n    index: number;\n  } | null>();\n\n  /**\n   * Emit an event to notify cascader it needs to quit searching mode.\n   * Only emit when user do select a searching option.\n   */\n  readonly $quitSearching = new Subject<void>();\n\n  /** To hold columns before entering searching mode. */\n  private columnsSnapshot: NzCascaderOption[][] = [[]];\n\n  /** To hold activated options before entering searching mode. */\n  private activatedOptionsSnapshot: NzCascaderOption[] = [];\n\n  private cascaderComponent!: NzCascaderComponentAsSource;\n\n  /** Return cascader options in the first layer. */\n  get nzOptions(): NzCascaderOption[] {\n    return this.columns[0];\n  }\n\n  ngOnDestroy(): void {\n    this.$redraw.complete();\n    this.$quitSearching.complete();\n    this.$optionSelected.complete();\n    this.$loading.complete();\n  }\n\n  /**\n   * Make sure that value matches what is displayed in the dropdown.\n   */\n  syncOptions(first: boolean = false): void {\n    const values = this.values;\n    const hasValue = values && values.length;\n    const lastColumnIndex = values.length - 1;\n    const initColumnWithIndex = (columnIndex: number): void => {\n      const activatedOptionSetter = (): void => {\n        const currentValue = values[columnIndex];\n\n        if (!isNotNil(currentValue)) {\n          this.$redraw.next();\n          return;\n        }\n\n        const option =\n          this.findOptionWithValue(columnIndex, values[columnIndex]) ||\n          (typeof currentValue === 'object'\n            ? currentValue\n            : {\n                [`${this.cascaderComponent.nzValueProperty}`]: currentValue,\n                [`${this.cascaderComponent.nzLabelProperty}`]: currentValue\n              });\n\n        this.setOptionActivated(option, columnIndex, false, false);\n\n        if (columnIndex < lastColumnIndex) {\n          initColumnWithIndex(columnIndex + 1);\n        } else {\n          this.dropBehindColumns(columnIndex);\n          this.selectedOptions = [...this.activatedOptions];\n          this.$redraw.next();\n        }\n      };\n\n      if (this.isLoaded(columnIndex) || !this.cascaderComponent.nzLoadData) {\n        activatedOptionSetter();\n      } else {\n        const option = this.activatedOptions[columnIndex - 1] || {};\n        this.loadChildren(option, columnIndex - 1, activatedOptionSetter);\n      }\n    };\n\n    this.activatedOptions = [];\n    this.selectedOptions = [];\n\n    if (first && this.cascaderComponent.nzLoadData && !hasValue) {\n      // Should also notify the component that value changes. Fix #3480.\n      this.$redraw.next();\n      return;\n    } else {\n      initColumnWithIndex(0);\n    }\n  }\n\n  /**\n   * Bind cascader component so this service could use inputs.\n   */\n  withComponent(cascaderComponent: NzCascaderComponentAsSource): void {\n    this.cascaderComponent = cascaderComponent;\n  }\n\n  /**\n   * Reset all options. Rebuild searching options if in searching mode.\n   */\n  withOptions(options: NzCascaderOption[] | null): void {\n    this.columnsSnapshot = this.columns = options && options.length ? [options] : [];\n\n    if (this.inSearchingMode) {\n      this.prepareSearchOptions(this.cascaderComponent.inputValue);\n    } else if (this.columns.length) {\n      this.syncOptions();\n    }\n  }\n\n  /**\n   * Try to set a option as activated.\n   *\n   * @param option Cascader option\n   * @param columnIndex Of which column this option is in\n   * @param performSelect Select\n   * @param loadingChildren Try to load children asynchronously.\n   */\n  setOptionActivated(\n    option: NzCascaderOption,\n    columnIndex: number,\n    performSelect: boolean = false,\n    loadingChildren: boolean = true\n  ): void {\n    if (option.disabled) {\n      return;\n    }\n    this.activatedOptions[columnIndex] = option;\n    this.trackAncestorActivatedOptions(columnIndex);\n    this.dropBehindActivatedOptions(columnIndex);\n\n    const isParent = isParentOption(option);\n\n    if (isParent) {\n      // Parent option that has children.\n      this.setColumnData(option.children!, columnIndex + 1, option);\n    } else if (!option.isLeaf && loadingChildren) {\n      // Parent option that should try to load children asynchronously.\n      this.loadChildren(option, columnIndex);\n    } else if (option.isLeaf) {\n      // Leaf option.\n      this.dropBehindColumns(columnIndex);\n    }\n\n    // Actually perform selection to make an options not only activated but also selected.\n    if (performSelect) {\n      this.setOptionSelected(option, columnIndex);\n    }\n\n    this.$redraw.next();\n  }\n\n  setOptionSelected(option: NzCascaderOption, index: number): void {\n    const changeOn = this.cascaderComponent.nzChangeOn;\n    const shouldPerformSelection = (o: NzCascaderOption, i: number): boolean =>\n      typeof changeOn === 'function' ? changeOn(o, i) : false;\n\n    if (option.isLeaf || this.cascaderComponent.nzChangeOnSelect || shouldPerformSelection(option, index)) {\n      this.selectedOptions = [...this.activatedOptions];\n      this.prepareEmitValue();\n      this.$redraw.next();\n      this.$optionSelected.next({ option, index });\n    }\n  }\n\n  setOptionDeactivatedSinceColumn(column: number): void {\n    this.dropBehindActivatedOptions(column - 1);\n    this.dropBehindColumns(column);\n    this.$redraw.next();\n  }\n\n  /**\n   * Set a searching option as selected, finishing up things.\n   *\n   * @param option\n   */\n  setSearchOptionSelected(option: NzCascaderSearchOption): void {\n    this.activatedOptions = [option];\n    this.selectedOptions = [...option.path];\n    this.prepareEmitValue();\n    this.$redraw.next();\n    this.$optionSelected.next({ option, index: 0 });\n\n    setTimeout(() => {\n      // Reset data and tell UI only to remove input and reset dropdown width style.\n      this.$quitSearching.next();\n      this.$redraw.next();\n      this.inSearchingMode = false;\n      this.columns = [...this.columnsSnapshot];\n      this.activatedOptions = [...this.selectedOptions];\n    }, 200);\n  }\n\n  /**\n   * Filter cascader options to reset `columns`.\n   *\n   * @param searchValue The string user wants to search.\n   */\n  prepareSearchOptions(searchValue: string): void {\n    const results: NzCascaderOption[] = []; // Search results only have one layer.\n    const path: NzCascaderOption[] = [];\n    const defaultFilter: NzCascaderFilter = (i, p) =>\n      p.some(o => {\n        const label = this.getOptionLabel(o);\n        return !!label && label.indexOf(i) !== -1;\n      });\n    const showSearch = this.cascaderComponent.nzShowSearch;\n    const filter = isShowSearchObject(showSearch) && showSearch.filter ? showSearch.filter : defaultFilter;\n    const sorter = isShowSearchObject(showSearch) && showSearch.sorter ? showSearch.sorter : null;\n    const loopChild = (node: NzCascaderOption, forceDisabled = false): void => {\n      path.push(node);\n      const cPath = Array.from(path);\n      if (filter(searchValue, cPath)) {\n        const disabled = forceDisabled || node.disabled;\n        const option: NzCascaderSearchOption = {\n          disabled,\n          isLeaf: true,\n          path: cPath,\n          [this.cascaderComponent.nzLabelProperty]: cPath.map(p => this.getOptionLabel(p)).join(' / ')\n        };\n        results.push(option);\n      }\n      path.pop();\n    };\n    const loopParent = (node: NzCascaderOption, forceDisabled = false): void => {\n      const disabled = forceDisabled || node.disabled;\n      path.push(node);\n      node.children!.forEach(sNode => {\n        if (!sNode.parent) {\n          sNode.parent = node;\n        }\n        if (!sNode.isLeaf) {\n          loopParent(sNode, disabled);\n        }\n        if (sNode.isLeaf || !sNode.children || !sNode.children.length) {\n          loopChild(sNode, disabled);\n        }\n      });\n      path.pop();\n    };\n\n    if (!this.columnsSnapshot.length) {\n      this.columns = [[]];\n      return;\n    }\n\n    this.columnsSnapshot[0].forEach(o => (isChildOption(o) ? loopChild(o) : loopParent(o)));\n\n    if (sorter) {\n      results.sort((a, b) => sorter(a.path, b.path, searchValue));\n    }\n\n    this.columns = [results];\n\n    this.$redraw.next(); // Search results may be empty, so should redraw.\n  }\n\n  /**\n   * Toggle searching mode by UI. It deals with things not directly related to UI.\n   *\n   * @param toSearching If this cascader is entering searching mode\n   */\n  toggleSearchingMode(toSearching: boolean): void {\n    this.inSearchingMode = toSearching;\n\n    if (toSearching) {\n      this.activatedOptionsSnapshot = [...this.activatedOptions];\n      this.activatedOptions = [];\n      this.selectedOptions = [];\n      this.$redraw.next();\n    } else {\n      // User quit searching mode without selecting an option.\n      this.activatedOptions = [...this.activatedOptionsSnapshot];\n      this.selectedOptions = [...this.activatedOptions];\n      this.columns = [...this.columnsSnapshot];\n      this.syncOptions();\n      this.$redraw.next();\n    }\n  }\n\n  /**\n   * Clear selected options.\n   */\n  clear(): void {\n    this.values = [];\n    this.selectedOptions = [];\n    this.activatedOptions = [];\n    this.dropBehindColumns(0);\n    this.$redraw.next();\n    this.$optionSelected.next(null);\n  }\n\n  getOptionLabel(o: NzCascaderOption): string {\n    return o[this.cascaderComponent.nzLabelProperty || 'label'] as string;\n  }\n\n  getOptionValue(o: NzCascaderOption): NzSafeAny {\n    return o[this.cascaderComponent.nzValueProperty || 'value'];\n  }\n\n  /**\n   * Try to insert options into a column.\n   *\n   * @param options Options to insert\n   * @param columnIndex Position\n   */\n  private setColumnData(options: NzCascaderOption[], columnIndex: number, parent: NzCascaderOption): void {\n    const existingOptions = this.columns[columnIndex];\n    if (!arraysEqual(existingOptions, options)) {\n      options.forEach(o => (o.parent = parent));\n      this.columns[columnIndex] = options;\n      this.dropBehindColumns(columnIndex);\n    }\n  }\n\n  /**\n   * Set all ancestor options as activated.\n   */\n  private trackAncestorActivatedOptions(startIndex: number): void {\n    for (let i = startIndex - 1; i >= 0; i--) {\n      if (!this.activatedOptions[i]) {\n        this.activatedOptions[i] = this.activatedOptions[i + 1].parent!;\n      }\n    }\n  }\n\n  private dropBehindActivatedOptions(lastReserveIndex: number): void {\n    this.activatedOptions = this.activatedOptions.splice(0, lastReserveIndex + 1);\n  }\n\n  private dropBehindColumns(lastReserveIndex: number): void {\n    if (lastReserveIndex < this.columns.length - 1) {\n      this.columns = this.columns.slice(0, lastReserveIndex + 1);\n    }\n  }\n\n  /**\n   * Load children of an option asynchronously.\n   */\n  loadChildren(\n    option: NzCascaderOption | NzSafeAny,\n    columnIndex: number,\n    success?: VoidFunction,\n    failure?: VoidFunction\n  ): void {\n    const loadFn = this.cascaderComponent.nzLoadData;\n\n    if (loadFn) {\n      // If there isn't any option in columns.\n      this.$loading.next(columnIndex < 0);\n\n      if (typeof option === 'object') {\n        option.loading = true;\n      }\n\n      loadFn(option, columnIndex).then(\n        () => {\n          option.loading = false;\n          if (option.children) {\n            this.setColumnData(option.children, columnIndex + 1, option);\n          }\n          if (success) {\n            success();\n          }\n          this.$loading.next(false);\n          this.$redraw.next();\n        },\n        () => {\n          option.loading = false;\n          option.isLeaf = true;\n          if (failure) {\n            failure();\n          }\n          this.$redraw.next();\n        }\n      );\n    }\n  }\n\n  private isLoaded(index: number): boolean {\n    return this.columns[index] && this.columns[index].length > 0;\n  }\n\n  /**\n   * Find a option that has a given value in a given column.\n   */\n  private findOptionWithValue(columnIndex: number, value: NzCascaderOption | NzSafeAny): NzCascaderOption | null {\n    const targetColumn = this.columns[columnIndex];\n    if (targetColumn) {\n      const v = typeof value === 'object' ? this.getOptionValue(value) : value;\n      return targetColumn.find(o => v === this.getOptionValue(o))!;\n    }\n    return null;\n  }\n\n  private prepareEmitValue(): void {\n    this.values = this.selectedOptions.map(o => this.getOptionValue(o));\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 { Direction, Directionality } from '@angular/cdk/bidi';\nimport { BACKSPACE, DOWN_ARROW, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { CdkConnectedOverlay, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Host,\n  HostListener,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BehaviorSubject, EMPTY, fromEvent, Observable, of as observableOf } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzFormNoStatusService, NzFormStatusService } from 'ng-zorro-antd/core/form';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { DEFAULT_CASCADER_POSITIONS } from 'ng-zorro-antd/core/overlay';\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport {\n  BooleanInput,\n  NgClassInterface,\n  NgClassType,\n  NgStyleInterface,\n  NzSafeAny,\n  NzStatus,\n  NzValidateStatus\n} from 'ng-zorro-antd/core/types';\nimport { getStatusClassNames, InputBoolean, toArray } from 'ng-zorro-antd/core/util';\nimport { NzCascaderI18nInterface, NzI18nService } from 'ng-zorro-antd/i18n';\n\nimport { NzCascaderOptionComponent } from './cascader-li.component';\nimport { NzCascaderService } from './cascader.service';\nimport {\n  NzCascaderComponentAsSource,\n  NzCascaderExpandTrigger,\n  NzCascaderOption,\n  NzCascaderSearchOption,\n  NzCascaderSize,\n  NzCascaderTriggerType,\n  NzShowSearchOptions\n} from './typings';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'cascader';\nconst defaultDisplayRender = (labels: string[]): string => labels.join(' / ');\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'nz-cascader, [nz-cascader]',\n  exportAs: 'nzCascader',\n  preserveWhitespaces: false,\n  template: `\n    <div cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" #trigger>\n      <ng-container *ngIf=\"nzShowInput\">\n        <div #selectContainer class=\"ant-select-selector\">\n          <span class=\"ant-select-selection-search\">\n            <input\n              #input\n              type=\"search\"\n              class=\"ant-select-selection-search-input\"\n              [style.opacity]=\"nzShowSearch ? '' : '0'\"\n              [attr.autoComplete]=\"'off'\"\n              [attr.expanded]=\"menuVisible\"\n              [attr.autofocus]=\"nzAutoFocus ? 'autofocus' : null\"\n              [readonly]=\"!nzShowSearch\"\n              [disabled]=\"nzDisabled\"\n              [(ngModel)]=\"inputValue\"\n              (blur)=\"handleInputBlur()\"\n              (focus)=\"handleInputFocus()\"\n            />\n          </span>\n          <span *ngIf=\"showLabelRender\" class=\"ant-select-selection-item\" [title]=\"labelRenderText\">\n            <ng-container *ngIf=\"!isLabelRenderTemplate; else labelTemplate\">{{ labelRenderText }}</ng-container>\n            <ng-template #labelTemplate>\n              <ng-template\n                [ngTemplateOutlet]=\"nzLabelRender\"\n                [ngTemplateOutletContext]=\"labelRenderContext\"\n              ></ng-template>\n            </ng-template>\n          </span>\n          <span\n            *ngIf=\"!showLabelRender\"\n            class=\"ant-select-selection-placeholder\"\n            [style.visibility]=\"!inputValue ? 'visible' : 'hidden'\"\n            >{{ showPlaceholder ? nzPlaceHolder || locale?.placeholder : null }}</span\n          >\n        </div>\n        <span class=\"ant-select-arrow\" [class.ant-select-arrow-loading]=\"isLoading\" *ngIf=\"nzShowArrow\">\n          <span\n            *ngIf=\"!isLoading\"\n            nz-icon\n            [nzType]=\"$any(nzSuffixIcon)\"\n            [class.ant-cascader-picker-arrow-expand]=\"menuVisible\"\n          ></span>\n          <span *ngIf=\"isLoading\" nz-icon nzType=\"loading\"></span>\n          <nz-form-item-feedback-icon *ngIf=\"hasFeedback && !!status\" [status]=\"status\"></nz-form-item-feedback-icon>\n        </span>\n        <span class=\"ant-select-clear\" *ngIf=\"clearIconVisible\">\n          <span nz-icon nzType=\"close-circle\" nzTheme=\"fill\" (click)=\"clearSelection($event)\"></span>\n        </span>\n      </ng-container>\n      <ng-content></ng-content>\n    </div>\n    <ng-template\n      cdkConnectedOverlay\n      nzConnectedOverlay\n      [cdkConnectedOverlayHasBackdrop]=\"nzBackdrop\"\n      [cdkConnectedOverlayOrigin]=\"origin\"\n      [cdkConnectedOverlayPositions]=\"positions\"\n      [cdkConnectedOverlayTransformOriginOn]=\"'.ant-cascader-dropdown'\"\n      [cdkConnectedOverlayOpen]=\"menuVisible\"\n      (overlayOutsideClick)=\"onClickOutside($event)\"\n      (detach)=\"closeMenu()\"\n    >\n      <div\n        class=\"ant-select-dropdown ant-cascader-dropdown ant-select-dropdown-placement-bottomLeft\"\n        [class.ant-cascader-dropdown-rtl]=\"dir === 'rtl'\"\n        [@slideMotion]=\"'enter'\"\n        [@.disabled]=\"noAnimation?.nzNoAnimation\"\n        [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n        (mouseenter)=\"onTriggerMouseEnter()\"\n        (mouseleave)=\"onTriggerMouseLeave($event)\"\n      >\n        <div\n          #menu\n          class=\"ant-cascader-menus\"\n          [class.ant-cascader-rtl]=\"dir === 'rtl'\"\n          [class.ant-cascader-menus-hidden]=\"!menuVisible\"\n          [class.ant-cascader-menu-empty]=\"shouldShowEmpty\"\n          [ngClass]=\"menuCls\"\n          [ngStyle]=\"nzMenuStyle\"\n        >\n          <ul\n            *ngIf=\"shouldShowEmpty; else hasOptionsTemplate\"\n            class=\"ant-cascader-menu\"\n            [style.width]=\"dropdownWidthStyle\"\n            [style.height]=\"dropdownHeightStyle\"\n          >\n            <li class=\"ant-cascader-menu-item ant-cascader-menu-item-disabled\">\n              <nz-embed-empty\n                class=\"ant-cascader-menu-item-content\"\n                [nzComponentName]=\"'cascader'\"\n                [specificContent]=\"nzNotFoundContent\"\n              ></nz-embed-empty>\n            </li>\n          </ul>\n          <ng-template #hasOptionsTemplate>\n            <ul\n              *ngFor=\"let options of cascaderService.columns; let i = index\"\n              class=\"ant-cascader-menu\"\n              role=\"menuitemcheckbox\"\n              [ngClass]=\"menuColumnCls\"\n              [style.height]=\"dropdownHeightStyle\"\n              [style.width]=\"dropdownWidthStyle\"\n            >\n              <li\n                nz-cascader-option\n                *ngFor=\"let option of options\"\n                [expandIcon]=\"nzExpandIcon\"\n                [columnIndex]=\"i\"\n                [nzLabelProperty]=\"nzLabelProperty\"\n                [optionTemplate]=\"nzOptionRender\"\n                [activated]=\"isOptionActivated(option, i)\"\n                [highlightText]=\"inSearchingMode ? inputValue : ''\"\n                [option]=\"option\"\n                [dir]=\"dir\"\n                (mouseenter)=\"onOptionMouseEnter(option, i, $event)\"\n                (mouseleave)=\"onOptionMouseLeave(option, i, $event)\"\n                (click)=\"onOptionClick(option, i, $event)\"\n              ></li>\n            </ul>\n          </ng-template>\n        </div>\n      </div>\n    </ng-template>\n  `,\n  animations: [slideMotion],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NzCascaderComponent),\n      multi: true\n    },\n    NzCascaderService,\n    NzDestroyService\n  ],\n  host: {\n    '[attr.tabIndex]': '\"0\"',\n    '[class.ant-select-in-form-item]': '!!nzFormStatusService',\n    '[class.ant-select-lg]': 'nzSize === \"large\"',\n    '[class.ant-select-sm]': 'nzSize === \"small\"',\n    '[class.ant-select-allow-clear]': 'nzAllowClear',\n    '[class.ant-select-show-arrow]': 'nzShowArrow',\n    '[class.ant-select-show-search]': '!!nzShowSearch',\n    '[class.ant-select-disabled]': 'nzDisabled',\n    '[class.ant-select-open]': 'menuVisible',\n    '[class.ant-select-focused]': 'isFocused',\n    '[class.ant-select-single]': 'true',\n    '[class.ant-select-rtl]': `dir ==='rtl'`\n  }\n})\nexport class NzCascaderComponent\n  implements NzCascaderComponentAsSource, OnInit, OnDestroy, OnChanges, ControlValueAccessor\n{\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n  static ngAcceptInputType_nzShowInput: BooleanInput;\n  static ngAcceptInputType_nzShowArrow: BooleanInput;\n  static ngAcceptInputType_nzAllowClear: BooleanInput;\n  static ngAcceptInputType_nzAutoFocus: BooleanInput;\n  static ngAcceptInputType_nzChangeOnSelect: BooleanInput;\n  static ngAcceptInputType_nzDisabled: BooleanInput;\n\n  @ViewChild('selectContainer', { static: false }) selectContainer!: ElementRef;\n\n  @ViewChild('input', { static: false })\n  set input(input: ElementRef<HTMLInputElement> | undefined) {\n    this.input$.next(input);\n  }\n  get input(): ElementRef<HTMLInputElement> | undefined {\n    return this.input$.getValue();\n  }\n  /** Used to store the native `<input type=\"search\" />` element since it might be set asynchronously. */\n  private input$ = new BehaviorSubject<ElementRef<HTMLInputElement> | undefined>(undefined);\n\n  @ViewChild('menu', { static: false }) menu!: ElementRef;\n  @ViewChild(CdkConnectedOverlay, { static: false }) overlay!: CdkConnectedOverlay;\n  @ViewChildren(NzCascaderOptionComponent) cascaderItems!: QueryList<NzCascaderOptionComponent>;\n\n  @Input() nzOptionRender: TemplateRef<{ $implicit: NzCascaderOption; index: number }> | null = null;\n  @Input() @InputBoolean() nzShowInput = true;\n  @Input() @InputBoolean() nzShowArrow = true;\n  @Input() @InputBoolean() nzAllowClear = true;\n  @Input() @InputBoolean() nzAutoFocus = false;\n  @Input() @InputBoolean() nzChangeOnSelect = false;\n  @Input() @InputBoolean() nzDisabled = false;\n  @Input() nzColumnClassName?: string;\n  @Input() nzExpandTrigger: NzCascaderExpandTrigger = 'click';\n  @Input() nzValueProperty = 'value';\n  @Input() nzLabelRender: TemplateRef<void> | null = null;\n  @Input() nzLabelProperty = 'label';\n  @Input() nzNotFoundContent?: string | TemplateRef<void>;\n  @Input() @WithConfig() nzSize: NzCascaderSize = 'default';\n  @Input() @WithConfig() nzBackdrop = false;\n  @Input() nzShowSearch: boolean | NzShowSearchOptions = false;\n  @Input() nzPlaceHolder: string = '';\n  @Input() nzMenuClassName?: string;\n  @Input() nzMenuStyle: NgStyleInterface | null = null;\n  @Input() nzMouseEnterDelay: number = 150; // ms\n  @Input() nzMouseLeaveDelay: number = 150; // ms\n  @Input() nzStatus: NzStatus = '';\n\n  @Input() nzTriggerAction: NzCascaderTriggerType | NzCascaderTriggerType[] = ['click'] as NzCascaderTriggerType[];\n  @Input() nzChangeOn?: (option: NzCascaderOption, level: number) => boolean;\n  @Input() nzLoadData?: (node: NzCascaderOption, index: number) => PromiseLike<NzSafeAny>;\n  // TODO: RTL\n  @Input() nzSuffixIcon: string | TemplateRef<void> = 'down';\n  @Input() nzExpandIcon: string | TemplateRef<void> = '';\n\n  @Input()\n  get nzOptions(): NzCascaderOption[] | null {\n    return this.cascaderService.nzOptions;\n  }\n\n  set nzOptions(options: NzCascaderOption[] | null) {\n    this.cascaderService.withOptions(options);\n  }\n\n  @Output() readonly nzVisibleChange = new EventEmitter<boolean>();\n  @Output() readonly nzSelectionChange = new EventEmitter<NzCascaderOption[]>();\n  @Output() readonly nzSelect = new EventEmitter<{ option: NzCascaderOption; index: number } | null>();\n  @Output() readonly nzClear = new EventEmitter<void>();\n\n  prefixCls: string = 'ant-select';\n  statusCls: NgClassInterface = {};\n  status: NzValidateStatus = '';\n  hasFeedback: boolean = false;\n\n  /**\n   * If the dropdown should show the empty content.\n   * `true` if there's no options.\n   */\n  shouldShowEmpty: boolean = false;\n\n  el: HTMLElement;\n  menuVisible = false;\n  isLoading = false;\n  labelRenderText?: string;\n  labelRenderContext = {};\n  onChange = Function.prototype;\n  onTouched = Function.prototype;\n  positions: ConnectionPositionPair[] = [...DEFAULT_CASCADER_POSITIONS];\n\n  /**\n   * Dropdown's with in pixel.\n   */\n  dropdownWidthStyle?: string;\n  dropdownHeightStyle: 'auto' | '' = '';\n  isFocused = false;\n\n  locale!: NzCascaderI18nInterface;\n  dir: Direction = 'ltr';\n\n  private inputString = '';\n  private isOpening = false;\n  private delayMenuTimer: number | null = null;\n  private delaySelectTimer: number | null = null;\n\n  get inSearchingMode(): boolean {\n    return this.cascaderService.inSearchingMode;\n  }\n\n  set inputValue(inputValue: string) {\n    this.inputString = inputValue;\n    this.toggleSearchingMode(!!inputValue);\n  }\n\n  get inputValue(): string {\n    return this.inputString;\n  }\n\n  get menuCls(): NgClassType {\n    return { [`${this.nzMenuClassName}`]: !!this.nzMenuClassName };\n  }\n\n  get menuColumnCls(): NgClassType {\n    return { [`${this.nzColumnClassName}`]: !!this.nzColumnClassName };\n  }\n\n  private get hasInput(): boolean {\n    return !!this.inputValue;\n  }\n\n  private get hasValue(): boolean {\n    return this.cascaderService.values && this.cascaderService.values.length > 0;\n  }\n\n  get showLabelRender(): boolean {\n    return this.hasValue;\n  }\n\n  get showPlaceholder(): boolean {\n    return !(this.hasInput || this.hasValue);\n  }\n\n  get clearIconVisible(): boolean {\n    return this.nzAllowClear && !this.nzDisabled && (this.hasValue || this.hasInput);\n  }\n\n  get isLabelRenderTemplate(): boolean {\n    return !!this.nzLabelRender;\n  }\n\n  constructor(\n    public cascaderService: NzCascaderService,\n    public nzConfigService: NzConfigService,\n    private ngZone: NgZone,\n    private cdr: ChangeDetectorRef,\n    private i18nService: NzI18nService,\n    private destroy$: NzDestroyService,\n    private elementRef: ElementRef,\n    private renderer: Renderer2,\n    @Optional() private directionality: Directionality,\n    @Host() @Optional() public noAnimation?: NzNoAnimationDirective,\n    @Optional() public nzFormStatusService?: NzFormStatusService,\n    @Optional() private nzFormNoStatusService?: NzFormNoStatusService\n  ) {\n    this.el = elementRef.nativeElement;\n    this.cascaderService.withComponent(this);\n    this.renderer.addClass(this.elementRef.nativeElement, 'ant-select');\n    this.renderer.addClass(this.elementRef.nativeElement, 'ant-cascader');\n  }\n\n  ngOnInit(): void {\n    this.nzFormStatusService?.formStatusChanges\n      .pipe(\n        distinctUntilChanged((pre, cur) => {\n          return pre.status === cur.status && pre.hasFeedback === cur.hasFeedback;\n        }),\n        withLatestFrom(this.nzFormNoStatusService ? this.nzFormNoStatusService.noFormStatus : observableOf(false)),\n        map(([{ status, hasFeedback }, noStatus]) => ({ status: noStatus ? '' : status, hasFeedback })),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(({ status, hasFeedback }) => {\n        this.setStatusStyles(status, hasFeedback);\n      });\n\n    const srv = this.cascaderService;\n\n    srv.$redraw.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      // These operations would not mutate data.\n      this.checkChildren();\n      this.setDisplayLabel();\n      this.cdr.detectChanges();\n      this.reposition();\n      this.setDropdownStyles();\n    });\n\n    srv.$loading.pipe(takeUntil(this.destroy$)).subscribe(loading => {\n      this.isLoading = loading;\n    });\n\n    srv.$optionSelected.pipe(takeUntil(this.destroy$)).subscribe(data => {\n      if (!data) {\n        this.onChange([]);\n        this.nzSelect.emit(null);\n        this.nzSelectionChange.emit([]);\n      } else {\n        const { option, index } = data;\n        const shouldClose = option.isLeaf || (this.nzChangeOnSelect && this.nzExpandTrigger === 'hover');\n        if (shouldClose) {\n          this.delaySetMenuVisible(false);\n        }\n        this.onChange(this.cascaderService.values);\n        this.nzSelectionChange.emit(this.cascaderService.selectedOptions);\n        this.nzSelect.emit({ option, index });\n        this.cdr.markForCheck();\n      }\n    });\n\n    srv.$quitSearching.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.inputString = '';\n      this.dropdownWidthStyle = '';\n    });\n\n    this.i18nService.localeChange.pipe(startWith(), takeUntil(this.destroy$)).subscribe(() => {\n      this.setLocale();\n    });\n\n    this.nzConfigService\n      .getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME)\n      .pipe(takeUntil(this.destroy$))\n      .subscribe(() => {\n        this.cdr.markForCheck();\n      });\n\n    this.dir = this.directionality.value;\n    this.directionality.change.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.dir = this.directionality.value;\n      srv.$redraw.next();\n    });\n\n    this.setupChangeListener();\n    this.setupKeydownListener();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzStatus } = changes;\n    if (nzStatus) {\n      this.setStatusStyles(this.nzStatus, this.hasFeedback);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.clearDelayMenuTimer();\n    this.clearDelaySelectTimer();\n  }\n\n  registerOnChange(fn: () => {}): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => {}): void {\n    this.onTouched = fn;\n  }\n\n  writeValue(value: NzSafeAny): void {\n    this.cascaderService.values = toArray(value);\n    this.cascaderService.syncOptions(true);\n  }\n\n  delaySetMenuVisible(visible: boolean, delay: number = 100, setOpening: boolean = false): void {\n    this.clearDelayMenuTimer();\n    if (delay) {\n      if (visible && setOpening) {\n        this.isOpening = true;\n      }\n      this.delayMenuTimer = setTimeout(() => {\n        this.setMenuVisible(visible);\n        this.cdr.detectChanges();\n        this.clearDelayMenuTimer();\n        if (visible) {\n          setTimeout(() => {\n            this.isOpening = false;\n          }, 100);\n        }\n      }, delay);\n    } else {\n      this.setMenuVisible(visible);\n    }\n  }\n\n  setMenuVisible(visible: boolean): void {\n    if (this.nzDisabled || this.menuVisible === visible) {\n      return;\n    }\n    if (visible) {\n      this.cascaderService.syncOptions();\n      this.scrollToActivatedOptions();\n    }\n\n    if (!visible) {\n      this.inputValue = '';\n    }\n\n    this.menuVisible = visible;\n    this.nzVisibleChange.emit(visible);\n    this.cdr.detectChanges();\n  }\n\n  private clearDelayMenuTimer(): void {\n    if (this.delayMenuTimer) {\n      clearTimeout(this.delayMenuTimer);\n      this.delayMenuTimer = null;\n    }\n  }\n\n  clearSelection(event?: Event): void {\n    if (event) {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    this.labelRenderText = '';\n    this.labelRenderContext = {};\n    this.inputValue = '';\n    this.setMenuVisible(false);\n    this.cascaderService.clear();\n    this.nzClear.emit();\n  }\n\n  getSubmitValue(): NzSafeAny[] {\n    return this.cascaderService.selectedOptions.map(o => this.cascaderService.getOptionValue(o));\n  }\n\n  focus(): void {\n    if (!this.isFocused) {\n      (this.input?.nativeElement || this.el).focus();\n      this.isFocused = true;\n    }\n  }\n\n  blur(): void {\n    if (this.isFocused) {\n      (this.input?.nativeElement || this.el).blur();\n      this.isFocused = false;\n    }\n  }\n\n  handleInputBlur(): void {\n    this.menuVisible ? this.focus() : this.blur();\n  }\n\n  handleInputFocus(): void {\n    this.focus();\n  }\n\n  @HostListener('click')\n  onTriggerClick(): void {\n    if (this.nzDisabled) {\n      return;\n    }\n    if (this.nzShowSearch) {\n      this.focus();\n    }\n    if (this.isActionTrigger('click')) {\n      this.delaySetMenuVisible(!this.menuVisible, 100);\n    }\n    this.onTouched();\n  }\n\n  @HostListener('mouseenter')\n  onTriggerMouseEnter(): void {\n    if (this.nzDisabled || !this.isActionTrigger('hover')) {\n      return;\n    }\n\n    this.delaySetMenuVisible(true, this.nzMouseEnterDelay, true);\n  }\n\n  @HostListener('mouseleave', ['$event'])\n  onTriggerMouseLeave(event: MouseEvent): void {\n    if (this.nzDisabled || !this.menuVisible || this.isOpening || !this.isActionTrigger('hover')) {\n      event.preventDefault();\n      return;\n    }\n    const mouseTarget = event.relatedTarget as HTMLElement;\n    const hostEl = this.el;\n    const menuEl = this.menu && (this.menu.nativeElement as HTMLElement);\n    if (hostEl.contains(mouseTarget) || (menuEl && menuEl.contains(mouseTarget))) {\n      return;\n    }\n    this.delaySetMenuVisible(false, this.nzMouseLeaveDelay);\n  }\n\n  onOptionMouseEnter(option: NzCascaderOption, columnIndex: number, event: Event): void {\n    event.preventDefault();\n    if (this.nzExpandTrigger === 'hover') {\n      if (!option.isLeaf) {\n        this.delaySetOptionActivated(option, columnIndex, false);\n      } else {\n        this.cascaderService.setOptionDeactivatedSinceColumn(columnIndex);\n      }\n    }\n  }\n\n  onOptionMouseLeave(option: NzCascaderOption, _columnIndex: number, event: Event): void {\n    event.preventDefault();\n    if (this.nzExpandTrigger === 'hover' && !option.isLeaf) {\n      this.clearDelaySelectTimer();\n    }\n  }\n\n  onOptionClick(option: NzCascaderOption, columnIndex: number, event: Event): void {\n    if (event) {\n      event.preventDefault();\n    }\n    if (option && option.disabled) {\n      return;\n    }\n\n    this.el.focus();\n    this.inSearchingMode\n      ? this.cascaderService.setSearchOptionSelected(option as NzCascaderSearchOption)\n      : this.cascaderService.setOptionActivated(option, columnIndex, true);\n  }\n\n  onClickOutside(event: MouseEvent): void {\n    if (!this.el.contains(event.target as Node)) {\n      this.closeMenu();\n    }\n  }\n\n  private isActionTrigger(action: 'click' | 'hover'): boolean {\n    return typeof this.nzTriggerAction === 'string'\n      ? this.nzTriggerAction === action\n      : this.nzTriggerAction.indexOf(action) !== -1;\n  }\n\n  private onEnter(): void {\n    const columnIndex = Math.max(this.cascaderService.activatedOptions.length - 1, 0);\n    const option = this.cascaderService.activatedOptions[columnIndex];\n    if (option && !option.disabled) {\n      this.inSearchingMode\n        ? this.cascaderService.setSearchOptionSelected(option as NzCascaderSearchOption)\n        : this.cascaderService.setOptionActivated(option, columnIndex, true);\n    }\n  }\n\n  private moveUpOrDown(isUp: boolean): void {\n    const columnIndex = Math.max(this.cascaderService.activatedOptions.length - 1, 0);\n    const activeOption = this.cascaderService.activatedOptions[columnIndex];\n    const options = this.cascaderService.columns[columnIndex] || [];\n    const length = options.length;\n    let nextIndex = -1;\n    if (!activeOption) {\n      // Not selected options in this column\n      nextIndex = isUp ? length : -1;\n    } else {\n      nextIndex = options.indexOf(activeOption);\n    }\n\n    while (true) {\n      nextIndex = isUp ? nextIndex - 1 : nextIndex + 1;\n      if (nextIndex < 0 || nextIndex >= length) {\n        break;\n      }\n      const nextOption = options[nextIndex];\n      if (!nextOption || nextOption.disabled) {\n        continue;\n      }\n      this.cascaderService.setOptionActivated(nextOption, columnIndex);\n      break;\n    }\n  }\n\n  private moveLeft(): void {\n    const options = this.cascaderService.activatedOptions;\n    if (options.length) {\n      options.pop(); // Remove the last one\n    }\n  }\n\n  private moveRight(): void {\n    const length = this.cascaderService.activatedOptions.length;\n    const options = this.cascaderService.columns[length];\n    if (options && options.length) {\n      const nextOpt = options.find(o => !o.disabled);\n      if (nextOpt) {\n        this.cascaderService.setOptionActivated(nextOpt, length);\n      }\n    }\n  }\n\n  private clearDelaySelectTimer(): void {\n    if (this.delaySelectTimer) {\n      clearTimeout(this.delaySelectTimer);\n      this.delaySelectTimer = null;\n    }\n  }\n\n  private delaySetOptionActivated(option: NzCascaderOption, columnIndex: number, performSelect: boolean): void {\n    this.clearDelaySelectTimer();\n    this.delaySelectTimer = setTimeout(() => {\n      this.cascaderService.setOptionActivated(option, columnIndex, performSelect);\n      this.delaySelectTimer = null;\n    }, 150);\n  }\n\n  private toggleSearchingMode(toSearching: boolean): void {\n    if (this.inSearchingMode !== toSearching) {\n      this.cascaderService.toggleSearchingMode(toSearching);\n    }\n\n    if (this.inSearchingMode) {\n      this.cascaderService.prepareSearchOptions(this.inputValue);\n    }\n  }\n\n  isOptionActivated(option: NzCascaderOption, index: number): boolean {\n    const activeOpt = this.cascaderService.activatedOptions[index];\n    return activeOpt === option;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    if (isDisabled) {\n      this.closeMenu();\n    }\n    this.nzDisabled = isDisabled;\n  }\n\n  closeMenu(): void {\n    this.blur();\n    this.clearDelayMenuTimer();\n    this.setMenuVisible(false);\n  }\n\n  /**\n   * Reposition the cascader panel. When a menu opens, the cascader expands\n   * and may exceed the boundary of browser's window.\n   */\n  private reposition(): void {\n    if (this.overlay && this.overlay.overlayRef && this.menuVisible) {\n      Promise.resolve().then(() => {\n        this.overlay.overlayRef.updatePosition();\n        this.cdr.markForCheck();\n      });\n    }\n  }\n\n  /**\n   * When a cascader options is changed, a child needs to know that it should re-render.\n   */\n  private checkChildren(): void {\n    if (this.cascaderItems) {\n      this.cascaderItems.forEach(item => item.markForCheck());\n    }\n  }\n\n  private setDisplayLabel(): void {\n    const selectedOptions = this.cascaderService.selectedOptions;\n    const labels: string[] = selectedOptions.map(o => this.cascaderService.getOptionLabel(o));\n\n    if (this.isLabelRenderTemplate) {\n      this.labelRenderContext = { labels, selectedOptions };\n    } else {\n      this.labelRenderText = defaultDisplayRender.call(this, labels);\n    }\n  }\n\n  private setDropdownStyles(): void {\n    const firstColumn = this.cascaderService.columns[0];\n\n    this.shouldShowEmpty =\n      (this.inSearchingMode && (!firstColumn || !firstColumn.length)) || // Should show empty when there's no searching result\n      (!(this.nzOptions && this.nzOptions.length) && !this.nzLoadData); // Should show when there's no options and developer does not use nzLoadData\n    this.dropdownHeightStyle = this.shouldShowEmpty ? 'auto' : '';\n\n    if (this.input) {\n      this.dropdownWidthStyle =\n        this.inSearchingMode || this.shouldShowEmpty ? `${this.selectContainer.nativeElement.offsetWidth}px` : '';\n    }\n  }\n\n  private setStatusStyles(status: NzValidateStatus, hasFeedback: boolean): void {\n    // set inner status\n    this.status = status;\n    this.hasFeedback = hasFeedback;\n    this.cdr.markForCheck();\n    // render status if nzStatus is set\n    this.statusCls = getStatusClassNames(this.prefixCls, status, hasFeedback);\n    Object.keys(this.statusCls).forEach(status => {\n      if (this.statusCls[status]) {\n        this.renderer.addClass(this.elementRef.nativeElement, status);\n      } else {\n        this.renderer.removeClass(this.elementRef.nativeElement, status);\n      }\n    });\n  }\n\n  private setLocale(): void {\n    this.locale = this.i18nService.getLocaleData('global');\n    this.cdr.markForCheck();\n  }\n\n  private scrollToActivatedOptions(): void {\n    // The `scrollIntoView` is a native DOM API, which doesn't require Angular to run\n    // a change detection when a promise microtask is resolved.\n    this.ngZone.runOutsideAngular(() => {\n      Promise.resolve().then(() => {\n        // scroll only until option menu view is ready\n        this.cascaderItems\n          .toArray()\n          .filter(e => e.activated)\n          .forEach(e => {\n            e.nativeElement.scrollIntoView({ block: 'start', inline: 'nearest' });\n          });\n      });\n    });\n  }\n\n  private setupChangeListener(): void {\n    this.input$\n      .pipe(\n        switchMap(input =>\n          input\n            ? new Observable<Event>(subscriber =>\n                this.ngZone.runOutsideAngular(() => fromEvent(input.nativeElement, 'change').subscribe(subscriber))\n              )\n            : EMPTY\n        ),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(event => event.stopPropagation());\n  }\n\n  private setupKeydownListener(): void {\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent<KeyboardEvent>(this.el, 'keydown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(event => {\n          const keyCode = event.keyCode;\n\n          if (\n            keyCode !== DOWN_ARROW &&\n            keyCode !== UP_ARROW &&\n            keyCode !== LEFT_ARROW &&\n            keyCode !== RIGHT_ARROW &&\n            keyCode !== ENTER &&\n            keyCode !== BACKSPACE &&\n            keyCode !== ESCAPE\n          ) {\n            return;\n          }\n\n          // Press any keys above to reopen menu.\n          if (!this.menuVisible && keyCode !== BACKSPACE && keyCode !== ESCAPE) {\n            // The `setMenuVisible` runs `detectChanges()`, so we don't need to run `markForCheck()` additionally.\n            return this.ngZone.run(() => this.setMenuVisible(true));\n          }\n\n          // Make these keys work as default in searching mode.\n          if (this.inSearchingMode && (keyCode === BACKSPACE || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW)) {\n            return;\n          }\n\n          if (!this.menuVisible) {\n            return;\n          }\n\n          event.preventDefault();\n\n          this.ngZone.run(() => {\n            // Interact with the component.\n            if (keyCode === DOWN_ARROW) {\n              this.moveUpOrDown(false);\n            } else if (keyCode === UP_ARROW) {\n              this.moveUpOrDown(true);\n            } else if (keyCode === LEFT_ARROW) {\n              this.moveLeft();\n            } else if (keyCode === RIGHT_ARROW) {\n              this.moveRight();\n            } else if (keyCode === ENTER) {\n              this.onEnter();\n            }\n            // `@HostListener`s run `markForCheck()` internally before calling the actual handler so\n            // we call `markForCheck()` to be backwards-compatible.\n            this.cdr.markForCheck();\n          });\n        });\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 { BidiModule } from '@angular/cdk/bidi';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NzFormPatchModule } from 'ng-zorro-antd/core/form';\nimport { NzHighlightModule } from 'ng-zorro-antd/core/highlight';\nimport { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzOverlayModule } from 'ng-zorro-antd/core/overlay';\nimport { NzEmptyModule } from 'ng-zorro-antd/empty';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\n\nimport { NzCascaderOptionComponent } from './cascader-li.component';\nimport { NzCascaderComponent } from './cascader.component';\n\n@NgModule({\n  imports: [\n    BidiModule,\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    NzOutletModule,\n    NzEmptyModule,\n    NzHighlightModule,\n    NzIconModule,\n    NzInputModule,\n    NzNoAnimationModule,\n    NzOverlayModule,\n    NzFormPatchModule\n  ],\n  declarations: [NzCascaderComponent, NzCascaderOptionComponent],\n  exports: [NzCascaderComponent]\n})\nexport class NzCascaderModule {}\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 './typings';\nexport * from './utils';\nexport * from './cascader.component';\nexport * from './cascader.module';\nexport * from './cascader.service';\nexport * from './cascader-li.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","observableOf","i1.NzCascaderService","i2","i3","i4","i12","i14.NzCascaderOptionComponent"],"mappings":"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"}