{"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      <i *ngIf=\"option.loading; else icon\" nz-icon nzType=\"loading\"></i>\n      <ng-template #icon>\n        <ng-container *nzStringTemplateOutlet=\"expandIcon\">\n          <i nz-icon [nzType]=\"$any(expandIcon)\"></i>\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\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  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { DEFAULT_CASCADER_POSITIONS } from 'ng-zorro-antd/core/overlay';\nimport { BooleanInput, NgClassType, NgStyleInterface, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { 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              (change)=\"$event.stopPropagation()\"\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          <i\n            *ngIf=\"!isLoading\"\n            nz-icon\n            [nzType]=\"$any(nzSuffixIcon)\"\n            [class.ant-cascader-picker-arrow-expand]=\"menuVisible\"\n          ></i>\n          <i *ngIf=\"isLoading\" nz-icon nzType=\"loading\"></i>\n        </span>\n        <span class=\"ant-select-clear\" *ngIf=\"clearIconVisible\">\n          <i nz-icon nzType=\"close-circle\" nzTheme=\"fill\" (click)=\"clearSelection($event)\"></i>\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        (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  ],\n  host: {\n    '[attr.tabIndex]': '\"0\"',\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 implements NzCascaderComponentAsSource, OnInit, OnDestroy, ControlValueAccessor {\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  @ViewChild('input', { static: false }) input!: ElementRef;\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() 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  /**\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 destroy$ = new Subject<void>();\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    elementRef: ElementRef,\n    renderer: Renderer2,\n    @Optional() private directionality: Directionality,\n    @Host() @Optional() public noAnimation?: NzNoAnimationDirective\n  ) {\n    this.el = elementRef.nativeElement;\n    this.cascaderService.withComponent(this);\n    renderer.addClass(elementRef.nativeElement, 'ant-select');\n    renderer.addClass(elementRef.nativeElement, 'ant-cascader');\n  }\n\n  ngOnInit(): void {\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.reposition();\n      this.setDropdownStyles();\n\n      this.cdr.markForCheck();\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.setupKeydownListener();\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\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 ? this.input.nativeElement : this.el).focus();\n      this.isFocused = true;\n    }\n  }\n\n  blur(): void {\n    if (this.isFocused) {\n      (this.input ? 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    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      });\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 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 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 { 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  ],\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":[],"mappings":"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"}