{"version":3,"file":"ui-vts-kit-ng-vts-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/ui-vts-kit-ng-vts-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 */\nimport { VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\n\nexport type VtsCascaderExpandTrigger = 'click' | 'hover';\nexport type VtsCascaderTriggerType = 'click' | 'hover';\nexport type VtsCascaderSize = 'sm' | 'md' | 'lg' | 'xl';\n\nexport type VtsCascaderFilter = (searchValue: string, path: VtsCascaderOption[]) => boolean;\nexport type VtsCascaderSorter = (\n  a: VtsCascaderOption[],\n  b: VtsCascaderOption[],\n  inputValue: string\n) => number;\n\nexport interface VtsCascaderOption {\n  value?: VtsSafeAny;\n  label?: string;\n  title?: string;\n  disabled?: boolean;\n  loading?: boolean;\n  isLeaf?: boolean;\n  parent?: VtsCascaderOption;\n  children?: VtsCascaderOption[];\n\n  [key: string]: VtsSafeAny;\n}\n\nexport interface VtsCascaderSearchOption extends VtsCascaderOption {\n  path: VtsCascaderOption[];\n}\n\nexport interface VtsShowSearchOptions {\n  filter?: VtsCascaderFilter;\n  sorter?: VtsCascaderSorter;\n}\n\nexport function isShowSearchObject(\n  options: VtsShowSearchOptions | boolean\n): options is VtsShowSearchOptions {\n  return typeof options !== 'boolean';\n}\n\n/**\n * To avoid circular dependency, provide an interface of `VtsCascaderComponent`\n * for `VtsCascaderService`.\n */\nexport interface VtsCascaderComponentAsSource {\n  inputValue: string;\n  vtsShowSearch: VtsShowSearchOptions | boolean;\n  vtsLabelProperty: string;\n  vtsValueProperty: string;\n  vtsChangeOnSelect: boolean;\n\n  vtsChangeOn?(option: VtsCascaderOption, level: number): boolean;\n\n  vtsLoadData?(node: VtsCascaderOption, index: number): PromiseLike<VtsSafeAny>;\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 { VtsCascaderOption } from './typings';\n\nexport function isChildOption(o: VtsCascaderOption): boolean {\n  return o.isLeaf || !o.children || !o.children.length;\n}\n\nexport function isParentOption(o: VtsCascaderOption): 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 {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  OnInit,\n  Renderer2,\n  TemplateRef,\n  ViewEncapsulation\n} from '@angular/core';\n\nimport { Direction } from '@angular/cdk/bidi';\nimport { VtsCascaderOption } from './typings';\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: '[vts-cascader-option]',\n  exportAs: 'vtsCascaderOption',\n  template: `\n    <ng-container *ngIf=\"optionTemplate; else defaultOptionTemplate\">\n      <ng-template\n        [ngTemplateOutlet]=\"optionTemplate\"\n        [ngTemplateOutletContext]=\"{\n          $implicit: option,\n          index: columnIndex\n        }\"\n      ></ng-template>\n    </ng-container>\n    <ng-template #defaultOptionTemplate>\n      <span\n        [innerHTML]=\"\n          optionLabel | vtsHighlight : highlightText : 'g' : 'vts-cascader-menu-item-keyword'\n        \"\n      ></span>\n    </ng-template>\n    <span\n      *ngIf=\"!option.isLeaf || option.children?.length || option.loading\"\n      class=\"vts-cascader-menu-item-expand-icon\"\n    >\n      <i *ngIf=\"option.loading; else icon\" vts-icon vtsType=\"Sync\"></i>\n      <ng-template #icon>\n        <ng-container *vtsStringTemplateOutlet=\"expandIcon\">\n          <i vts-icon [vtsType]=\"$any(expandIcon)\"></i>\n        </ng-container>\n      </ng-template>\n    </span>\n  `,\n  host: {\n    '[attr.title]': 'option.title || optionLabel',\n    '[class.vts-cascader-menu-item-active]': 'activated',\n    '[class.vts-cascader-menu-item-expand]': '!option.isLeaf',\n    '[class.vts-cascader-menu-item-disabled]': 'option.disabled'\n  }\n})\nexport class VtsCascaderOptionComponent implements OnInit {\n  @Input() optionTemplate: TemplateRef<VtsCascaderOption> | null = null;\n  @Input() option!: VtsCascaderOption;\n  @Input() activated = false;\n  @Input() highlightText!: string;\n  @Input() vtsLabelProperty = '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, 'vts-cascader-menu-item');\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.vtsLabelProperty];\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 { VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { arraysEqual, isNotNil } from '@ui-vts-kit/ng-vts/core/util';\n\nimport {\n  isShowSearchObject,\n  VtsCascaderComponentAsSource,\n  VtsCascaderFilter,\n  VtsCascaderOption,\n  VtsCascaderSearchOption\n} from './typings';\nimport { isChildOption, isParentOption } from './utils';\n\n/**\n * All data is stored and parsed in VtsCascaderService.\n */\n@Injectable()\nexport class VtsCascaderService implements OnDestroy {\n  /** Activated options in each column. */\n  activatedOptions: VtsCascaderOption[] = [];\n\n  /** An array to store cascader items arranged in different layers. */\n  columns: VtsCascaderOption[][] = [];\n\n  /** If user has entered searching mode. */\n  inSearchingMode = false;\n\n  /** Selected options would be output to user. */\n  selectedOptions: VtsCascaderOption[] = [];\n\n  values: VtsSafeAny[] = [];\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: VtsCascaderOption;\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: VtsCascaderOption[][] = [[]];\n\n  /** To hold activated options before entering searching mode. */\n  private activatedOptionsSnapshot: VtsCascaderOption[] = [];\n\n  private cascaderComponent!: VtsCascaderComponentAsSource;\n\n  /** Return cascader options in the first layer. */\n  get vtsOptions(): VtsCascaderOption[] {\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) => {\n      const activatedOptionSetter = () => {\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.vtsValueProperty}`]: currentValue,\n                [`${this.cascaderComponent.vtsLabelProperty}`]: 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.vtsLoadData) {\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.vtsLoadData && !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: VtsCascaderComponentAsSource): void {\n    this.cascaderComponent = cascaderComponent;\n  }\n\n  /**\n   * Reset all options. Rebuild searching options if in searching mode.\n   */\n  withOptions(options: VtsCascaderOption[] | 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   * @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: VtsCascaderOption,\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: VtsCascaderOption, index: number): void {\n    const changeOn = this.cascaderComponent.vtsChangeOn;\n    const shouldPerformSelection = (o: VtsCascaderOption, i: number): boolean => {\n      return typeof changeOn === 'function' ? changeOn(o, i) : false;\n    };\n\n    if (\n      option.isLeaf ||\n      this.cascaderComponent.vtsChangeOnSelect ||\n      shouldPerformSelection(option, index)\n    ) {\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   * @param option\n   */\n  setSearchOptionSelected(option: VtsCascaderSearchOption): 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   * @param searchValue The string user wants to search.\n   */\n  prepareSearchOptions(searchValue: string): void {\n    const results: VtsCascaderOption[] = []; // Search results only have one layer.\n    const path: VtsCascaderOption[] = [];\n    const defaultFilter: VtsCascaderFilter = (i, p) => {\n      return p.some(o => {\n        const label = this.getOptionLabel(o);\n        return !!label && label.indexOf(i) !== -1;\n      });\n    };\n    const showSearch = this.cascaderComponent.vtsShowSearch;\n    const filter =\n      isShowSearchObject(showSearch) && showSearch.filter ? showSearch.filter : defaultFilter;\n    const sorter = isShowSearchObject(showSearch) && showSearch.sorter ? showSearch.sorter : null;\n    const loopChild = (node: VtsCascaderOption, forceDisabled = false) => {\n      path.push(node);\n      const cPath = Array.from(path);\n      if (filter(searchValue, cPath)) {\n        const disabled = forceDisabled || node.disabled;\n        const option: VtsCascaderSearchOption = {\n          disabled,\n          isLeaf: true,\n          path: cPath,\n          [this.cascaderComponent.vtsLabelProperty]: cPath\n            .map(p => this.getOptionLabel(p))\n            .join(' / ')\n        };\n        results.push(option);\n      }\n      path.pop();\n    };\n    const loopParent = (node: VtsCascaderOption, forceDisabled = false) => {\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   * @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.prepareEmitValue();\n    this.$redraw.next();\n    this.$optionSelected.next(null);\n  }\n\n  getOptionLabel(o: VtsCascaderOption): string {\n    return o[this.cascaderComponent.vtsLabelProperty || 'label'] as string;\n  }\n\n  getOptionValue(o: VtsCascaderOption): VtsSafeAny {\n    return o[this.cascaderComponent.vtsValueProperty || 'value'];\n  }\n\n  /**\n   * Try to insert options into a column.\n   * @param options Options to insert\n   * @param columnIndex Position\n   */\n  private setColumnData(\n    options: VtsCascaderOption[],\n    columnIndex: number,\n    parent: VtsCascaderOption\n  ): 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: VtsCascaderOption | VtsSafeAny,\n    columnIndex: number,\n    success?: VoidFunction,\n    failure?: VoidFunction\n  ): void {\n    const loadFn = this.cascaderComponent.vtsLoadData;\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(\n    columnIndex: number,\n    value: VtsCascaderOption | VtsSafeAny\n  ): VtsCascaderOption | 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 {\n  BACKSPACE,\n  DOWN_ARROW,\n  ENTER,\n  ESCAPE,\n  LEFT_ARROW,\n  RIGHT_ARROW,\n  UP_ARROW\n} 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  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 { slideMotion } from '@ui-vts-kit/ng-vts/core/animation';\nimport { VtsConfigKey, VtsConfigService, WithConfig } from '@ui-vts-kit/ng-vts/core/config';\nimport { VtsNoAnimationDirective } from '@ui-vts-kit/ng-vts/core/no-animation';\nimport { DEFAULT_CASCADER_POSITIONS } from '@ui-vts-kit/ng-vts/core/overlay';\nimport { BooleanInput, NgClassType, NgStyleInterface, VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { InputBoolean, toArray } from '@ui-vts-kit/ng-vts/core/util';\n\nimport { VtsCascaderI18nInterface, VtsI18nService } from '@ui-vts-kit/ng-vts/i18n';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\nimport { VtsCascaderOptionComponent } from './cascader-li.component';\nimport { VtsCascaderService } from './cascader.service';\nimport {\n  VtsCascaderComponentAsSource,\n  VtsCascaderExpandTrigger,\n  VtsCascaderOption,\n  VtsCascaderSearchOption,\n  VtsCascaderSize,\n  VtsCascaderTriggerType,\n  VtsShowSearchOptions\n} from './typings';\n\nconst VTS_CONFIG_MODULE_NAME: VtsConfigKey = 'cascader';\nconst defaultDisplayRender = (labels: string[]) => labels.join(' / ');\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  selector: 'vts-cascader, [vts-cascader]',\n  exportAs: 'vtsCascader',\n  preserveWhitespaces: false,\n  template: `\n    <div cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" #trigger>\n      <div *ngIf=\"vtsShowInput\">\n        <input\n          #input\n          vts-input\n          class=\"vts-cascader-input\"\n          [class.vts-cascader-input-disabled]=\"vtsDisabled\"\n          [class.vts-cascader-input-lg]=\"vtsSize === 'lg'\"\n          [class.vts-cascader-input-sm]=\"vtsSize === 'sm'\"\n          [attr.autoComplete]=\"'off'\"\n          [attr.placeholder]=\"showPlaceholder ? vtsPlaceHolder || locale?.placeholder : null\"\n          [attr.autofocus]=\"vtsAutoFocus ? 'autofocus' : null\"\n          [readonly]=\"!vtsShowSearch\"\n          [disabled]=\"vtsDisabled\"\n          [vtsSize]=\"vtsSize\"\n          [(ngModel)]=\"inputValue\"\n          (blur)=\"handleInputBlur()\"\n          (focus)=\"handleInputFocus()\"\n          (change)=\"$event.stopPropagation()\"\n        />\n        <i\n          *ngIf=\"clearIconVisible\"\n          vts-icon\n          vtsType=\"Close\"\n          class=\"vts-cascader-picker-clear\"\n          (click)=\"clearSelection($event)\"\n        ></i>\n        <ng-container *vtsStringTemplateOutlet=\"vtsSuffixIcon\">\n          <i\n            *ngIf=\"vtsShowArrow && !isLoading\"\n            vts-icon\n            [vtsType]=\"$any(vtsSuffixIcon)\"\n            class=\"vts-cascader-picker-arrow\"\n            [class.vts-cascader-picker-arrow-expand]=\"menuVisible\"\n          ></i>\n        </ng-container>\n        <i *ngIf=\"isLoading\" vts-icon vtsType=\"Sync\" class=\"vts-cascader-picker-arrow\"></i>\n        <span\n          class=\"vts-cascader-picker-label\"\n          [class.vts-cascader-picker-show-search]=\"!!vtsShowSearch\"\n          [class.vts-cascader-picker-focused]=\"!!vtsShowSearch && isFocused && !inputValue\"\n        >\n          <ng-container *ngIf=\"!isLabelRenderTemplate; else labelTemplate\">\n            {{ labelRenderText }}\n          </ng-container>\n          <ng-template #labelTemplate>\n            <ng-template\n              [ngTemplateOutlet]=\"vtsLabelRender\"\n              [ngTemplateOutletContext]=\"labelRenderContext\"\n            ></ng-template>\n          </ng-template>\n        </span>\n      </div>\n      <ng-content></ng-content>\n    </div>\n    <ng-template\n      cdkConnectedOverlay\n      vtsConnectedOverlay\n      [cdkConnectedOverlayHasBackdrop]=\"vtsBackdrop\"\n      [cdkConnectedOverlayOrigin]=\"origin\"\n      [cdkConnectedOverlayPositions]=\"positions\"\n      [cdkConnectedOverlayTransformOriginOn]=\"'.vts-cascader-menus'\"\n      [cdkConnectedOverlayOpen]=\"menuVisible\"\n      (overlayOutsideClick)=\"onClickOutside($event)\"\n      (detach)=\"closeMenu()\"\n    >\n      <div\n        #menu\n        class=\"vts-cascader-menus\"\n        [class.vts-cascader-menu-rtl]=\"dir === 'rtl'\"\n        [class.vts-cascader-menus-hidden]=\"!menuVisible\"\n        [ngClass]=\"menuCls\"\n        [ngStyle]=\"vtsMenuStyle\"\n        [@.disabled]=\"noAnimation?.vtsNoAnimation\"\n        [vtsNoAnimation]=\"noAnimation?.vtsNoAnimation\"\n        [@slideMotion]=\"'enter'\"\n        (mouseleave)=\"onTriggerMouseLeave($event)\"\n      >\n        <ul\n          *ngIf=\"shouldShowEmpty; else hasOptionsTemplate\"\n          class=\"vts-cascader-menu\"\n          [style.width]=\"dropdownWidthStyle\"\n          [style.height]=\"dropdownHeightStyle\"\n        >\n          <li\n            class=\"vts-cascader-menu-item vts-cascader-menu-item-expanded vts-cascader-menu-item-disabled\"\n          >\n            <vts-embed-empty\n              [vtsComponentName]=\"'cascader'\"\n              [specificContent]=\"vtsNoResult\"\n            ></vts-embed-empty>\n          </li>\n        </ul>\n        <ng-template #hasOptionsTemplate>\n          <ul\n            *ngFor=\"let options of cascaderService.columns; let i = index\"\n            class=\"vts-cascader-menu\"\n            [ngClass]=\"menuColumnCls\"\n            [style.height]=\"dropdownHeightStyle\"\n            [style.width]=\"dropdownWidthStyle\"\n          >\n            <li\n              vts-cascader-option\n              *ngFor=\"let option of options\"\n              [expandIcon]=\"vtsExpandIcon\"\n              [columnIndex]=\"i\"\n              [vtsLabelProperty]=\"vtsLabelProperty\"\n              [optionTemplate]=\"vtsOptionRender\"\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    </ng-template>\n  `,\n  animations: [slideMotion],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => VtsCascaderComponent),\n      multi: true\n    },\n    VtsCascaderService\n  ],\n  host: {\n    '[attr.tabIndex]': '\"0\"',\n    '[class.vts-cascader-lg]': 'vtsSize === \"lg\"',\n    '[class.vts-cascader-sm]': 'vtsSize === \"sm\"',\n    '[class.vts-cascader-picker-disabled]': 'vtsDisabled',\n    '[class.vts-cascader-picker-open]': 'menuVisible',\n    '[class.vts-cascader-picker-with-value]': '!!inputValue',\n    '[class.vts-cascader-focused]': 'isFocused',\n    '[class.vts-cascader-picker-rtl]': `dir ==='rtl'`\n  }\n})\nexport class VtsCascaderComponent\n  implements VtsCascaderComponentAsSource, OnInit, OnDestroy, ControlValueAccessor\n{\n  readonly _vtsModuleName: VtsConfigKey = VTS_CONFIG_MODULE_NAME;\n  static ngAcceptInputType_vtsShowInput: BooleanInput;\n  static ngAcceptInputType_vtsShowArrow: BooleanInput;\n  static ngAcceptInputType_vtsAllowClear: BooleanInput;\n  static ngAcceptInputType_vtsAutoFocus: BooleanInput;\n  static ngAcceptInputType_vtsChangeOnSelect: BooleanInput;\n  static ngAcceptInputType_vtsDisabled: BooleanInput;\n\n  @ViewChild('input', { static: false }) input!: ElementRef;\n  @ViewChild('menu', { static: false }) menu!: ElementRef;\n  @ViewChild(CdkConnectedOverlay, { static: false })\n  overlay!: CdkConnectedOverlay;\n  @ViewChildren(VtsCascaderOptionComponent)\n  cascaderItems!: QueryList<VtsCascaderOptionComponent>;\n\n  @Input() vtsOptionRender: TemplateRef<{\n    $implicit: VtsCascaderOption;\n    index: number;\n  }> | null = null;\n  @Input() @InputBoolean() vtsShowInput = true;\n  @Input() @InputBoolean() vtsShowArrow = true;\n  @Input() @InputBoolean() vtsAllowClear = true;\n  @Input() @InputBoolean() vtsAutoFocus = false;\n  @Input() @InputBoolean() vtsChangeOnSelect = false;\n  @Input() @InputBoolean() vtsDisabled = false;\n  @Input() vtsColumnClassName?: string;\n  @Input() vtsExpandTrigger: VtsCascaderExpandTrigger = 'click';\n  @Input() vtsValueProperty = 'value';\n  @Input() vtsLabelRender: TemplateRef<any> | null = null;\n  @Input() vtsLabelProperty = 'label';\n  @Input() vtsNoResult?: string | TemplateRef<void>;\n  @Input() @WithConfig() vtsSize: VtsCascaderSize = 'md';\n  @Input() @WithConfig() vtsBackdrop = false;\n  @Input() vtsShowSearch: boolean | VtsShowSearchOptions = false;\n  @Input() vtsPlaceHolder: string = '';\n  @Input() vtsMenuClassName?: string;\n  @Input() vtsMenuStyle: NgStyleInterface | null = null;\n  @Input() vtsMouseEnterDelay: number = 150; // ms\n  @Input() vtsMouseLeaveDelay: number = 150; // ms\n  @Input() vtsTriggerAction: VtsCascaderTriggerType | VtsCascaderTriggerType[] = [\n    'click'\n  ] as VtsCascaderTriggerType[];\n  @Input() vtsChangeOn?: (option: VtsCascaderOption, level: number) => boolean;\n  @Input() vtsLoadData?: (node: VtsCascaderOption, index: number) => PromiseLike<VtsSafeAny>;\n  // TODO: RTL\n  @Input() vtsSuffixIcon: string | TemplateRef<void> = 'down';\n  @Input() vtsExpandIcon: string | TemplateRef<void> = '';\n\n  @Input()\n  get vtsOptions(): VtsCascaderOption[] | null {\n    return this.cascaderService.vtsOptions;\n  }\n\n  set vtsOptions(options: VtsCascaderOption[] | null) {\n    this.cascaderService.withOptions(options);\n  }\n\n  @Output() readonly vtsVisibleChange = new EventEmitter<boolean>();\n  @Output() readonly vtsSelectionChange = new EventEmitter<VtsCascaderOption[]>();\n  @Output() readonly vtsSelect = new EventEmitter<{\n    option: VtsCascaderOption;\n    index: number;\n  } | null>();\n  @Output() readonly vtsClear = 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!: VtsCascaderI18nInterface;\n  dir: Direction = 'ltr';\n\n  private destroy$ = new Subject<void>();\n  private inputString = '';\n  private isOpening = false;\n  private delayMenuTimer: number | ReturnType<typeof setTimeout> | null = null;\n  private delaySelectTimer: number | ReturnType<typeof setTimeout> | 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.vtsMenuClassName}`]: !!this.vtsMenuClassName };\n  }\n\n  get menuColumnCls(): NgClassType {\n    return { [`${this.vtsColumnClassName}`]: !!this.vtsColumnClassName };\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 showPlaceholder(): boolean {\n    return !(this.hasInput || this.hasValue);\n  }\n\n  get clearIconVisible(): boolean {\n    return this.vtsAllowClear && !this.vtsDisabled && (this.hasValue || this.hasInput);\n  }\n\n  get isLabelRenderTemplate(): boolean {\n    return !!this.vtsLabelRender;\n  }\n\n  constructor(\n    public cascaderService: VtsCascaderService,\n    public vtsConfigService: VtsConfigService,\n    private cdr: ChangeDetectorRef,\n    private i18nService: VtsI18nService,\n    elementRef: ElementRef,\n    renderer: Renderer2,\n    @Optional() private directionality: Directionality,\n    @Host() @Optional() public noAnimation?: VtsNoAnimationDirective\n  ) {\n    this.el = elementRef.nativeElement;\n    this.cascaderService.withComponent(this);\n    renderer.addClass(elementRef.nativeElement, 'vts-cascader');\n    renderer.addClass(elementRef.nativeElement, 'vts-cascader-picker');\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.vtsSelect.emit(null);\n        this.vtsSelectionChange.emit([]);\n      } else {\n        const { option, index } = data;\n        const shouldClose =\n          option.isLeaf || (this.vtsChangeOnSelect && this.vtsExpandTrigger === 'hover');\n        if (shouldClose) {\n          this.delaySetMenuVisible(false);\n        }\n        this.onChange(this.cascaderService.values);\n        this.vtsSelectionChange.emit(this.cascaderService.selectedOptions);\n        this.vtsSelect.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.vtsConfigService\n      .getConfigChangeEventForComponent(VTS_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\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: VtsSafeAny): 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.vtsDisabled || 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.vtsVisibleChange.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  }\n\n  getSubmitValue(): VtsSafeAny[] {\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('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent): void {\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      return this.setMenuVisible(true);\n    }\n\n    // Make these keys work as default in searching mode.\n    if (\n      this.inSearchingMode &&\n      (keyCode === BACKSPACE || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW)\n    ) {\n      return;\n    }\n\n    // Interact with the component.\n    if (this.menuVisible) {\n      event.preventDefault();\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    }\n  }\n\n  @HostListener('click')\n  onTriggerClick(): void {\n    if (this.vtsDisabled) {\n      return;\n    }\n    if (this.vtsShowSearch) {\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.vtsDisabled || !this.isActionTrigger('hover')) {\n      return;\n    }\n\n    this.delaySetMenuVisible(true, this.vtsMouseEnterDelay, true);\n  }\n\n  @HostListener('mouseleave', ['$event'])\n  onTriggerMouseLeave(event: MouseEvent): void {\n    if (this.vtsDisabled || !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.vtsMouseLeaveDelay);\n  }\n\n  onOptionMouseEnter(option: VtsCascaderOption, columnIndex: number, event: Event): void {\n    event.preventDefault();\n    if (this.vtsExpandTrigger === '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: VtsCascaderOption, _columnIndex: number, event: Event): void {\n    event.preventDefault();\n    if (this.vtsExpandTrigger === 'hover' && !option.isLeaf) {\n      this.clearDelaySelectTimer();\n    }\n  }\n\n  onOptionClick(option: VtsCascaderOption, 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 VtsCascaderSearchOption)\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.vtsTriggerAction === 'string'\n      ? this.vtsTriggerAction === action\n      : this.vtsTriggerAction.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 VtsCascaderSearchOption)\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(\n    option: VtsCascaderOption,\n    columnIndex: number,\n    performSelect: boolean\n  ): 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: VtsCascaderOption, 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.vtsDisabled = 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.vtsOptions && this.vtsOptions.length) && !this.vtsLoadData); // Should show when there's no options and developer does not use vtsLoadData\n    this.dropdownHeightStyle = this.shouldShowEmpty ? 'auto' : '';\n\n    if (this.input) {\n      this.dropdownWidthStyle =\n        this.inSearchingMode || this.shouldShowEmpty\n          ? `${this.input.nativeElement.offsetWidth}px`\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    // scroll only until option menu view is ready\n    Promise.resolve().then(() => {\n      this.cascaderItems\n        .toArray()\n        .filter(e => e.activated)\n        .forEach(e => {\n          e.nativeElement?.scrollIntoView({\n            block: 'start',\n            inline: 'nearest'\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';\nimport { VtsHighlightModule } from '@ui-vts-kit/ng-vts/core/highlight';\nimport { VtsNoAnimationModule } from '@ui-vts-kit/ng-vts/core/no-animation';\nimport { VtsOutletModule } from '@ui-vts-kit/ng-vts/core/outlet';\nimport { VtsOverlayModule } from '@ui-vts-kit/ng-vts/core/overlay';\n\nimport { VtsEmptyModule } from '@ui-vts-kit/ng-vts/empty';\nimport { VtsIconModule } from '@ui-vts-kit/ng-vts/icon';\nimport { VtsInputModule } from '@ui-vts-kit/ng-vts/input';\n\nimport { VtsCascaderOptionComponent } from './cascader-li.component';\nimport { VtsCascaderComponent } from './cascader.component';\n\n@NgModule({\n  imports: [\n    BidiModule,\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    VtsOutletModule,\n    VtsEmptyModule,\n    VtsHighlightModule,\n    VtsIconModule,\n    VtsInputModule,\n    VtsNoAnimationModule,\n    VtsOverlayModule\n  ],\n  declarations: [VtsCascaderComponent, VtsCascaderOptionComponent],\n  exports: [VtsCascaderComponent]\n})\nexport class VtsCascaderModule {}\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","i1.VtsCascaderService","i2","i3","i4","i9","i11","i14.VtsCascaderOptionComponent"],"mappings":"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"}