{"version":3,"file":"ng-devui-cascader.mjs","sources":["../../devui/cascader/cascader.service.ts","../../devui/cascader/cascader-li.component.ts","../../devui/cascader/cascader-li.component.html","../../devui/cascader/cascader.component.ts","../../devui/cascader/cascader.component.html","../../devui/cascader/cascader.module.ts","../../devui/cascader/ng-devui-cascader.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\r\nimport { cloneDeep } from 'lodash-es';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { CascaderItem } from './cascader.type';\r\n\r\n@Injectable()\r\nexport class CascaderService implements OnDestroy {\r\n  _currentValue: Array<string | number> = [];\r\n\r\n  multipleValue: Array<string | number>[] = [];\r\n\r\n  options: CascaderItem[];\r\n\r\n  columnList: CascaderItem[][] = [];\r\n  searchResultList = [];\r\n\r\n  canSelectParent = false;\r\n\r\n  isMultiple = false;\r\n\r\n  isLazyLoad = false;\r\n  lazyloadCache = {};\r\n  checkboxRelation = { upward: true, downward: true };\r\n\r\n  loadChildrenFn: (value: CascaderItem) => Promise<CascaderItem[]> | Observable<CascaderItem[]>;\r\n\r\n  set currentValue(value: Array<string | number>) {\r\n    this._currentValue = value.filter((item) => item !== undefined);\r\n    this.currentValueChange.next(this._currentValue);\r\n  }\r\n\r\n  get currentValue() {\r\n    return this._currentValue;\r\n  }\r\n\r\n  set currentMultipleValue(value) {\r\n    this.resetNodeStatus();\r\n    this.multipleValue = value;\r\n  }\r\n\r\n  get currentMultipleValue() {\r\n    this.multipleValue = [];\r\n    this.getMultipleValue([], this.options);\r\n    return this.multipleValue;\r\n  }\r\n\r\n  readonly closeMianDropdown = new Subject<void>();\r\n  readonly currentValueChange = new Subject<Array<string | number>>();\r\n  readonly resetStatus = new Subject<void>();\r\n  readonly openDrawer = new Subject<void>();\r\n  readonly updateShowText = new Subject<void>();\r\n  readonly updateTagList = new Subject<{\r\n    isAdd: boolean;\r\n    option: CascaderItem;\r\n    isEmit: boolean; // 是否触发onchanges,对外发出值\r\n  }>();\r\n\r\n  initOptions(options: CascaderItem[]): void {\r\n    this.columnList = [];\r\n    this.options = cloneDeep(options);\r\n    // 标记根节点\r\n    this.options.forEach((t) => {\r\n      t.isRoot = true;\r\n    });\r\n    this.columnList.push(this.options);\r\n  }\r\n\r\n  openColumn(option: CascaderItem, colIndex: number, islazyLoad: boolean, reload = false): void {\r\n    this.clearTargetActive(this.columnList[colIndex].find((t) => t.active));\r\n    option.active = true;\r\n    this.columnList.splice(colIndex + 1);\r\n\r\n    if (option.children && option.children.length) {\r\n      this.columnList.push(option.children);\r\n      this.openDrawer.next();\r\n    } else if (islazyLoad) {\r\n      option._loading = true;\r\n\r\n      const fn = this.loadChildrenFn(option);\r\n\r\n      if ((fn as Promise<CascaderItem[]>).then) {\r\n        (fn as Promise<CascaderItem[]>).then((res) => {\r\n          this.columnList.splice(colIndex + 1); // 防止多个同时懒加载，造成多余的添加\r\n          option.children = res || [];\r\n          option._loading = false;\r\n          this.columnList.push(res || []);\r\n          this.openDrawer.next();\r\n\r\n          if (this.isMultiple) {\r\n            this.updateOptionCheckedStatus(option.value, option.checked, true, true, !reload);\r\n          }\r\n          if (reload) {\r\n            if (!this.isMultiple) {\r\n              this.updateOptionByValue();\r\n            }\r\n            this.updateShowText.next();\r\n          }\r\n        });\r\n      } else {\r\n        (fn as Observable<CascaderItem[]>).subscribe((res) => {\r\n          this.columnList.splice(colIndex + 1); // 防止多个同时懒加载，造成多余的添加\r\n          option.children = res || [];\r\n          option._loading = false;\r\n          this.columnList.push(res || []);\r\n          this.openDrawer.next();\r\n\r\n          if (this.isMultiple) {\r\n            this.updateOptionCheckedStatus(option.value, option.checked, true, true, !reload);\r\n          }\r\n\r\n          if (reload) {\r\n            if (!this.isMultiple) {\r\n              this.updateOptionByValue();\r\n            }\r\n            this.updateShowText.next();\r\n          }\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  clearTargetActive(option: CascaderItem): void {\r\n    if (!option) {\r\n      return;\r\n    }\r\n    option.active = false;\r\n    if (option.children) {\r\n      this.clearTargetActive(option.children.find((t) => t.active));\r\n    }\r\n  }\r\n\r\n  setCurrentValue(): void {\r\n    this.currentValue = this.columnList.map((listItem) => listItem.find((optionItem) => optionItem.active)?.value);\r\n  }\r\n\r\n  updateOptionByValue(): void {\r\n    this.resetNodeStatus();\r\n    this.columnList = [this.options];\r\n    for (let index = 0; index < this.currentValue.length; index++) {\r\n      const target = this.columnList[index]?.find((listItem) => listItem.value === this.currentValue[index]);\r\n\r\n      if (target) {\r\n        target.active = true;\r\n        if (target.children && target.children.length) {\r\n          // 有子菜单展开子菜单\r\n          this.columnList.push(target.children);\r\n        } else if (this.isLazyLoad) {\r\n          // 懒加载没有子菜单的情况下，非叶子节点执行展开，叶子节点执行选中\r\n          this.openColumn(target, index, !target.isLeaf, !target.isLeaf);\r\n          break;\r\n        }\r\n      } else {\r\n        break;\r\n      }\r\n    }\r\n  }\r\n\r\n  lazyloadMultipleChild(target: CascaderItem, index: number) {\r\n    if (!this.lazyloadCache[target.value]) {\r\n      this.lazyloadCache[target.value] = true;\r\n      this.openColumn(target, index, true, true);\r\n    }\r\n  }\r\n\r\n  resetNodeStatus(option: CascaderItem[] = this.options): void {\r\n    option.forEach((item) => {\r\n      item.active = false;\r\n      item.checked = false;\r\n      item.halfChecked = false;\r\n      if (item.children) {\r\n        this.resetNodeStatus(item.children);\r\n      }\r\n    });\r\n  }\r\n\r\n  // 在多选模式下，更新节点树的checked状态\r\n  updateOptionCheckedStatus(targetValue: string | number, checked: boolean, upward = true, downward = true, isEmit = true): void {\r\n    let targetNode = this.options.find((t) => t.value === targetValue);\r\n    // 当主下拉列表包含了目标，即目标无父节点\r\n    if (targetNode) {\r\n      targetNode.checked = checked;\r\n      targetNode.halfChecked = false;\r\n      if (targetNode.children && downward) {\r\n        this.updateChildrenChecked(targetNode, checked, isEmit);\r\n      }\r\n    } else {\r\n      // 当存在父节点时，需要检查同级节点来确定父节点状态\r\n      const parentNode = this.getParentNode(targetValue);\r\n      targetNode = parentNode.children.find((t) => t.value === targetValue);\r\n\r\n      targetNode.checked = checked;\r\n      targetNode.halfChecked = false;\r\n      if (upward) {\r\n        this.updateParentChecked(parentNode, isEmit);\r\n      }\r\n      if (targetNode.children && downward) {\r\n        this.updateChildrenChecked(targetNode, checked, isEmit);\r\n      }\r\n    }\r\n  }\r\n\r\n  // 子节点按父节点状态更新\r\n  updateChildrenChecked(node: CascaderItem, checked: boolean, isEmit: boolean) {\r\n    let hasDisable = false;\r\n    node.children.forEach((child) => {\r\n      if (!child.disabled) {\r\n        child.checked = checked;\r\n        child.halfChecked = false;\r\n        if (child.children && child.children.length) {\r\n          if (this.canSelectParent) {\r\n            this.updateTagList.next({\r\n              isAdd: checked,\r\n              option: child,\r\n              isEmit,\r\n            });\r\n          }\r\n          this.updateChildrenChecked(child, checked, isEmit);\r\n        } else {\r\n          this.updateTagList.next({\r\n            isAdd: checked,\r\n            option: child,\r\n            isEmit,\r\n          });\r\n        }\r\n      } else {\r\n        hasDisable = true;\r\n      }\r\n    });\r\n\r\n    if (hasDisable && !this.canSelectParent) {\r\n      this.updateParentChecked(node, isEmit);\r\n    }\r\n  }\r\n\r\n  // 父节点按所有子节点状态更新\r\n  updateParentChecked(node: CascaderItem, isEmit: boolean) {\r\n    const checkedChild = node.children.find((t) => t.checked);\r\n    const halfcheckedChild = node.children.find((t) => t.halfChecked);\r\n    const uncheckedChild = node.children.find((t) => !t.halfChecked && !t.checked);\r\n\r\n    if (halfcheckedChild || (checkedChild && uncheckedChild)) {\r\n      node.checked = false;\r\n      node.halfChecked = true;\r\n    } else if (!checkedChild && !halfcheckedChild) {\r\n      node.checked = false;\r\n      node.halfChecked = false;\r\n    } else {\r\n      node.checked = true;\r\n      node.halfChecked = false;\r\n    }\r\n\r\n    if (this.canSelectParent) {\r\n      this.updateTagList.next({\r\n        isAdd: node.checked,\r\n        option: node,\r\n        isEmit,\r\n      });\r\n    }\r\n\r\n    // 如果此节点非根节点，则继续找它的父节点进行更新\r\n    if (!node.isRoot) {\r\n      this.updateParentChecked(this.getParentNode(node.value), isEmit);\r\n    }\r\n  }\r\n\r\n  // 获取父节点\r\n  getParentNode(childValue: string | number): CascaderItem {\r\n    const queue = [...this.options];\r\n    let cur: CascaderItem;\r\n    while (queue.length) {\r\n      cur = queue.shift();\r\n      if (cur.children && cur.children.find((t) => t.value === childValue)) {\r\n        break;\r\n      } else if (cur.children) {\r\n        queue.push(...cur.children);\r\n      }\r\n    }\r\n    return cur;\r\n  }\r\n\r\n  getMultipleValue(value, option: CascaderItem[]): void {\r\n    const isNoRelation = !this.checkboxRelation.downward || !this.checkboxRelation.upward;\r\n    option.forEach((item) => {\r\n      const _value = [...value];\r\n      _value.push(item.value);\r\n      if (item.children && item.children.length && (item.checked || item.halfChecked)) {\r\n        this.getMultipleValue(_value, item.children);\r\n        if (isNoRelation) {\r\n          this.multipleValue.push(_value);\r\n        }\r\n      } else if (item.checked) {\r\n        this.multipleValue.push(_value);\r\n      } else if (isNoRelation && item.children?.length) {\r\n        this.getMultipleValue(_value, item.children);\r\n      }\r\n    });\r\n  }\r\n\r\n  closeAllDropdown(): void {\r\n    this.closeMianDropdown.next();\r\n  }\r\n\r\n  // 搜索功能\r\n  searchByString(str: string, currentlabel?: string, currentValue: Array<string | number> = [], list = this.options): void {\r\n    list.forEach((item) => {\r\n      const label = currentlabel ? currentlabel + ' / ' + item.label : item.label;\r\n      const valueList = [...currentValue, item.value];\r\n      if (item.children && item.children.length) {\r\n        this.searchByString(str, label, valueList, item.children);\r\n      } else {\r\n        if (!item.disabled && label.toLowerCase().indexOf(str.toLowerCase()) !== -1) {\r\n          this.searchResultList.push({\r\n            label,\r\n            valueList,\r\n            checked: item.checked,\r\n          });\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.closeMianDropdown.complete();\r\n    this.currentValueChange.complete();\r\n    this.updateTagList.complete();\r\n    this.resetStatus.complete();\r\n    this.openDrawer.complete();\r\n  }\r\n}\r\n","import { ChangeDetectorRef, Component, HostListener, Input, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CascaderService } from './cascader.service';\nimport { CascaderItem } from './cascader.type';\n\n@Component({\n  selector: 'd-cascader-li',\n  templateUrl: './cascader-li.component.html',\n  styleUrls: ['./cascader-li.component.scss'],\n})\nexport class CascaderLiComponent implements OnInit, OnDestroy {\n  @Input() width = 200;\n  @Input() trigger: 'click' | 'hover' = 'hover';\n  @Input() option: CascaderItem;\n  @Input() multiple = false;\n  @Input() canSelectParent = false;\n  @Input() colIndex: number;\n  @Input() dropDownItemTemplate: TemplateRef<any>;\n  @Input() isLazyLoad: boolean;\n  @Input() checkboxRelation = { upward: true, downward: true };\n\n  dropdownEl: Element;\n  isLeaf: boolean;\n  selected: boolean;\n  halfCheck: boolean;\n  active: boolean;\n\n  unsubscribe$ = new Subject<void>();\n\n  @HostListener('click', ['$event'])\n  onClick(event: Event) {\n    event.stopPropagation();\n  }\n\n  @HostListener('mouseenter', ['$event'])\n  onMouseEnter(event) {\n    if (this.trigger === 'hover') {\n      if (this.option.disabled) {\n        return;\n      }\n      this.cascaderSrv.openColumn(this.option, this.colIndex, false);\n    }\n  }\n\n  constructor(\n    private cascaderSrv: CascaderService,\n    private cdr: ChangeDetectorRef\n  ) { }\n\n  ngOnInit() {\n    if (this.isLazyLoad) {\n      this.isLeaf = !!this.option.isLeaf;\n    } else { // 当不是懒加载时可以通过children是否为空来判断是否为叶子节点\n      this.isLeaf = this.option.isLeaf || !(this.option.children && this.option.children.length);\n    }\n\n    this.initObserable();\n  }\n\n  initObserable(): void {\n    this.cascaderSrv.resetStatus.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(res => {\n      this.selected = false;\n      this.halfCheck = false;\n      this.active = false;\n    });\n  }\n\n  clickLeaf(): void {\n    if (!this.option.disabled && !this.multiple) {\n      this.cascaderSrv.openColumn(this.option, this.colIndex, false);\n      this.option.active = true;\n      this.cascaderSrv.setCurrentValue();\n      this.cascaderSrv.closeAllDropdown();\n    }\n  }\n\n  clickItem(): void {\n    if (this.option.disabled) {\n      return;\n    }\n    this.cascaderSrv.openColumn(this.option, this.colIndex, this.isLazyLoad);\n    if (this.canSelectParent && !this.multiple) {\n      this.cascaderSrv.setCurrentValue();\n    }\n  }\n\n  clickCheckbox(event: Event): void {\n    if (this.option.disabled) {\n      return;\n    }\n    event.stopPropagation();\n    // 如果是半选状态，更新为false，其他状态则更新为与checked相反\n    const status = !!this.option.halfChecked;\n    this.cascaderSrv.updateOptionCheckedStatus(\n      this.option.value,\n      this.option.halfChecked ? false : !this.option.checked,\n      this.checkboxRelation.upward,\n      this.checkboxRelation.downward,\n    );\n\n    if (status) {\n      this.option.halfChecked = false;\n    }\n\n    if (this.isLeaf || this.canSelectParent) {\n      this.updateValue(this.option.checked);\n    }\n  }\n\n  // 阻止checkbox本身的点击事件变化\n  avoidCheckboxChange(): boolean {\n    return false;\n  }\n\n  updateValue(checked: boolean): void {\n    this.cascaderSrv.updateTagList.next({\n      isAdd: checked,\n      option: this.option,\n      isEmit: true\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n\n}\n","<li *ngIf=\"!isLeaf\" role=\"menuitem\" [ngClass]=\"{ disabled: option.disabled, 'devui-leaf-active': option.active }\" (click)=\"clickItem()\">\n  <div class=\"devui-dropdown-item\">\n    <d-checkbox\n      *ngIf=\"multiple\"\n      class=\"devui-dropdown-item-checkbox\"\n      [disabled]=\"option.disabled\"\n      [isShowTitle]=\"false\"\n      [halfchecked]=\"option.halfChecked\"\n      (click)=\"clickCheckbox($event)\"\n      [ngModel]=\"option.checked\"\n      [beforeChange]=\"avoidCheckboxChange\"\n    ></d-checkbox>\n    <i *ngIf=\"option.icon\" class=\"icon {{ option.icon }}\"></i>\n    <span class=\"dropdown-item-label\">\n      <ng-template\n        [ngTemplateOutlet]=\"dropDownItemTemplate || defaultDropdownItemTemplate\"\n        [ngTemplateOutletContext]=\"{\n          label: option.label,\n          option: option\n        }\"\n      >\n      </ng-template>\n    </span>\n    <svg\n      *ngIf=\"!option._loading\"\n      style=\"float: right\"\n      width=\"16px\"\n      height=\"16px\"\n      viewBox=\"0 0 16 16\"\n      class=\"icon devui-cascader-icon-right\"\n    >\n      <g id=\"icon-icon-chevron-right-2\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <g\n          id=\"ipd_right\"\n          transform=\"translate(8.000000, 8.000000) scale(-1, 1) rotate(-270.000000) translate(-8.000000, -8.000000) translate(3.000000, 5.500000)\"\n          fill=\"#71757F\"\n          fill-rule=\"nonzero\"\n        >\n          <path\n            d=\"M-0.353553391,-0.353553391 C-0.179987039,-0.527119742 0.0894373624,-0.546404893 0.284305503,-0.411408841 L0.353553391,-0.353553391 L4.999,4.293 L9.64644661,-0.353553391 C9.82001296,-0.527119742 10.0894374,-0.546404893 10.2843055,-0.411408841 L10.3535534,-0.353553391 C10.5271197,-0.179987039 10.5464049,0.0894373624 10.4114088,0.284305503 L10.3535534,0.353553391 L5.35355339,5.35355339 C5.17998704,5.52711974 4.91056264,5.54640489 4.7156945,5.41140884 L4.64644661,5.35355339 L-0.353553391,0.353553391 C-0.548815536,0.158291245 -0.548815536,-0.158291245 -0.353553391,-0.353553391 Z\"\n            id=\"路径\"\n          ></path>\n        </g>\n      </g>\n    </svg>\n    <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" style=\"float: right\" class=\"icon devui-cascader-loading\" *ngIf=\"option._loading\">\n      <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n        <path\n          d=\"M8,1 C8.55228475,1 9,1.44771525 9,2 L9,4 C9,4.55228475 8.55228475,5 8,5 C7.44771525,5 7,4.55228475 7,4 L7,2 C7,1.44771525 7.44771525,1 8,1 Z M8,11 C8.55228475,11 9,11.4477153 9,12 L9,14 C9,14.5522847 8.55228475,15 8,15 C7.44771525,15 7,14.5522847 7,14 L7,12 C7,11.4477153 7.44771525,11 8,11 Z M15,8 C15,8.55228475 14.5522847,9 14,9 L12,9 C11.4477153,9 11,8.55228475 11,8 C11,7.44771525 11.4477153,7 12,7 L14,7 C14.5522847,7 15,7.44771525 15,8 Z M5,8 C5,8.55228475 4.55228475,9 4,9 L2,9 C1.44771525,9 1,8.55228475 1,8 C1,7.44771525 1.44771525,7 2,7 L4,7 C4.55228475,7 5,7.44771525 5,8 Z M12.9497475,3.05025253 C13.3402718,3.44077682 13.3402718,4.0739418 12.9497475,4.46446609 L11.5355339,5.87867966 C11.1450096,6.26920395 10.5118446,6.26920395 10.1213203,5.87867966 C9.73079605,5.48815536 9.73079605,4.85499039 10.1213203,4.46446609 L11.5355339,3.05025253 C11.9260582,2.65972824 12.5592232,2.65972824 12.9497475,3.05025253 Z M5.87867966,10.1213203 C6.26920395,10.5118446 6.26920395,11.1450096 5.87867966,11.5355339 L4.46446609,12.9497475 C4.0739418,13.3402718 3.44077682,13.3402718 3.05025253,12.9497475 C2.65972824,12.5592232 2.65972824,11.9260582 3.05025253,11.5355339 L4.46446609,10.1213203 C4.85499039,9.73079605 5.48815536,9.73079605 5.87867966,10.1213203 Z M12.9497475,12.9497475 C12.5592232,13.3402718 11.9260582,13.3402718 11.5355339,12.9497475 L10.1213203,11.5355339 C9.73079605,11.1450096 9.73079605,10.5118446 10.1213203,10.1213203 C10.5118446,9.73079605 11.1450096,9.73079605 11.5355339,10.1213203 L12.9497475,11.5355339 C13.3402718,11.9260582 13.3402718,12.5592232 12.9497475,12.9497475 Z M5.87867966,5.87867966 C5.48815536,6.26920395 4.85499039,6.26920395 4.46446609,5.87867966 L3.05025253,4.46446609 C2.65972824,4.0739418 2.65972824,3.44077682 3.05025253,3.05025253 C3.44077682,2.65972824 4.0739418,2.65972824 4.46446609,3.05025253 L5.87867966,4.46446609 C6.26920395,4.85499039 6.26920395,5.48815536 5.87867966,5.87867966 Z\"\n          fill=\"#293040\"\n        ></path>\n      </g>\n    </svg>\n  </div>\n</li>\n\n<li *ngIf=\"isLeaf\" role=\"menuitem\" (click)=\"clickLeaf()\" [ngClass]=\"{ disabled: option.disabled, 'devui-leaf-active': option.active }\">\n  <div class=\"devui-dropdown-item\">\n    <d-checkbox\n      *ngIf=\"multiple\"\n      class=\"devui-dropdown-item-checkbox\"\n      [disabled]=\"option.disabled\"\n      [isShowTitle]=\"false\"\n      [halfchecked]=\"option.halfChecked\"\n      (click)=\"clickCheckbox($event)\"\n      [ngModel]=\"option.checked\"\n      (ngModelChange)=\"updateValue($event)\"\n      [beforeChange]=\"avoidCheckboxChange\"\n    ></d-checkbox>\n    <i *ngIf=\"option.icon\" class=\"icon {{ option.icon }}\"></i>\n    <span class=\"dropdown-item-label\">\n      <ng-template\n        [ngTemplateOutlet]=\"dropDownItemTemplate || defaultDropdownItemTemplate\"\n        [ngTemplateOutletContext]=\"{\n          option: option,\n          label: option.label\n        }\"\n      >\n      </ng-template>\n    </span>\n  </div>\n</li>\n\n<ng-template #defaultDropdownItemTemplate let-label=\"label\">\n  <span>{{ label }}</span>\n</ng-template>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DropDownAppendToBodyComponent, DropDownDirective } from 'ng-devui/dropdown';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { DevConfigService, WithConfig } from 'ng-devui/utils';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\r\nimport { CascaderService } from './cascader.service';\r\nimport { CascaderItem } from './cascader.type';\r\n\r\nconst DEBOUNCE_TIME = 200;\r\n\r\n@Component({\r\n  selector: 'd-cascader',\r\n  templateUrl: './cascader.component.html',\r\n  styleUrls: ['./cascader.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => CascaderComponent),\r\n      multi: true,\r\n    },\r\n    CascaderService,\r\n  ],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class CascaderComponent implements OnInit, OnDestroy, OnChanges, ControlValueAccessor {\r\n  @ViewChild('mainDropdown') mainDropdown: DropDownDirective;\r\n  @ViewChild('innerInput') innerInput: ElementRef;\r\n  @ViewChild('outerInput') outerInput: ElementRef;\r\n  @ViewChild(DropDownAppendToBodyComponent, { static: false }) dropdownComp: DropDownAppendToBodyComponent;\r\n  @Input() options: CascaderItem[] = [];\r\n  @Input() width = 200;\r\n  @Input() dropdownWidth: number;\r\n  @Input() placeholder = '';\r\n  @Input() trigger: 'click' | 'hover' = 'hover';\r\n  @Input() disabled = false;\r\n  @Input() multiple = false;\r\n  @Input() showPath = false;\r\n  @Input() allowClear = false;\r\n  @Input() allowSearch = false;\r\n  @Input() canSelectParent = false;\r\n  @Input() checkboxRelation = { upward: true, downward: true };\r\n  @Input() dropDownItemTemplate: TemplateRef<any>;\r\n  @Input() dropdownHeaderTemplate: TemplateRef<any>;\r\n  @Input() hostTemplate: TemplateRef<any>;\r\n  @Input() dropdownPanelClass = '';\r\n  @Input() appendToBody = true;\r\n  @Input() tagMaxWidth = '200px';\r\n  @Input() @WithConfig() showAnimation = true;\r\n  @Input() @WithConfig() styleType = 'default';\r\n  @Input()\r\n  set loadChildrenFn(fn: (value: CascaderItem) => Promise<CascaderItem[]> | Observable<CascaderItem[]>) {\r\n    this.isLazyLoad = !!fn;\r\n    if (fn) {\r\n      this.cascaderSrv.loadChildrenFn = fn;\r\n    }\r\n  }\r\n  @Output() toggleEvent = new EventEmitter<boolean>();\r\n\r\n  @Input() @WithConfig() showGlowStyle = true;\r\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\r\n    return this.showGlowStyle;\r\n  }\r\n\r\n  subMenuDirections: ConnectedPosition[] = [\r\n    {\r\n      originX: 'start',\r\n      originY: 'bottom',\r\n      overlayX: 'start',\r\n      overlayY: 'top',\r\n      offsetX: 0,\r\n    },\r\n    {\r\n      originX: 'start',\r\n      originY: 'top',\r\n      overlayX: 'start',\r\n      overlayY: 'bottom',\r\n      offsetX: 0,\r\n    },\r\n  ];\r\n\r\n  isLazyLoad: boolean;\r\n\r\n  unsubscribe$ = new Subject<void>();\r\n\r\n  searchValueChange = new Subject<string>();\r\n\r\n  multipleValueList: CascaderItem[] = [];\r\n  lazyloadValue = [];\r\n\r\n  timer;\r\n  showTextValue;\r\n  showSearchPanel: boolean;\r\n  showSearchInput = false;\r\n  onChange = Function.prototype;\r\n  onTouched = Function.prototype;\r\n\r\n  get columnList() {\r\n    return this.cascaderSrv.columnList;\r\n  }\r\n\r\n  get searchResultList() {\r\n    return this.cascaderSrv.searchResultList;\r\n  }\r\n\r\n  i18nCommonText: I18nInterface['common'];\r\n  i18nSubscription: Subscription;\r\n\r\n  constructor(private cascaderSrv: CascaderService, private i18n: I18nService, private devConfigService: DevConfigService) {}\r\n\r\n  // 获取整颗树的公共方法\r\n  public getOptionTree(): CascaderItem[] {\r\n    return this.cascaderSrv.options;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.dropdownWidth = this.dropdownWidth ? this.dropdownWidth : this.width;\r\n    this.cascaderSrv.canSelectParent = this.canSelectParent;\r\n    this.cascaderSrv.initOptions(this.options);\r\n    this.cascaderSrv.isMultiple = this.multiple;\r\n    this.cascaderSrv.isLazyLoad = this.isLazyLoad;\r\n    this.cascaderSrv.checkboxRelation = this.checkboxRelation;\r\n    this.initObservale();\r\n    this.initI18n();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const { options, canSelectParent } = changes;\r\n    if (options && !options.firstChange) {\r\n      this.cascaderSrv.initOptions(this.options);\r\n    } else if (canSelectParent && !canSelectParent.firstChange) {\r\n      this.cascaderSrv.canSelectParent = this.canSelectParent;\r\n    }\r\n  }\r\n\r\n  initI18n(): void {\r\n    this.i18nCommonText = this.i18n.getI18nText().common;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nCommonText = data.common;\r\n    });\r\n  }\r\n\r\n  valueChanges(value: string): void {\r\n    this.searchValueChange.next(value);\r\n  }\r\n\r\n  chooseSearchResult(option): void {\r\n    if (option.checked) {\r\n      return;\r\n    }\r\n    if (this.multiple) {\r\n      // 多选模式下更新数据后需要刷新dropdown位置和重新聚焦input\r\n      option.checked = true;\r\n      this.writeValue([...this.cascaderSrv.multipleValue, option.valueList]);\r\n      this.onChange(this.cascaderSrv.multipleValue);\r\n      this.mainDropdown.updateCdkConnectedOverlayOrigin();\r\n      if (this.innerInput) {\r\n        this.innerInput.nativeElement.focus();\r\n      }\r\n    } else {\r\n      this.writeValue(option.valueList);\r\n      this.onChange(option.valueList);\r\n      this.mainDropdown.isOpen = false;\r\n    }\r\n  }\r\n\r\n  initObservale(): void {\r\n    this.cascaderSrv.closeMianDropdown.pipe(takeUntil(this.unsubscribe$)).subscribe((res) => {\r\n      if (this.mainDropdown) {\r\n        this.mainDropdown.isOpen = false;\r\n      }\r\n    });\r\n\r\n    this.cascaderSrv.currentValueChange.pipe(takeUntil(this.unsubscribe$)).subscribe((res) => {\r\n      this.writeValue(res);\r\n      this.onChange(res);\r\n    });\r\n\r\n    this.cascaderSrv.openDrawer.pipe(takeUntil(this.unsubscribe$)).subscribe((res) => {\r\n      this.rePosition();\r\n    });\r\n\r\n    if (this.multiple) {\r\n      this.cascaderSrv.updateTagList.pipe(takeUntil(this.unsubscribe$)).subscribe((res) => {\r\n        const targetIndex = this.multipleValueList.findIndex((t) => t.value === res.option.value);\r\n        if (res.isAdd) {\r\n          if (targetIndex === -1) {\r\n            this.multipleValueList.push(res.option);\r\n            this.updateMultipleValuePathList();\r\n          }\r\n        } else if (targetIndex !== -1) {\r\n          this.multipleValueList.splice(targetIndex, 1);\r\n        }\r\n\r\n        if (res.isEmit) {\r\n          this.onChange(this.cascaderSrv.currentMultipleValue);\r\n        }\r\n\r\n        // 当taglist变化导致input高度变化时，更新相对位置\r\n        setTimeout(() => {\r\n          this.mainDropdown.updateCdkConnectedOverlayOrigin();\r\n        });\r\n      });\r\n    }\r\n\r\n    if (this.allowSearch) {\r\n      this.searchValueChange\r\n        .pipe(\r\n          takeUntil(this.unsubscribe$),\r\n          debounceTime(DEBOUNCE_TIME),\r\n          distinctUntilChanged(),\r\n          filter((t) => t !== '')\r\n        )\r\n        .subscribe((value) => {\r\n          clearTimeout(this.timer);\r\n          if (this.mainDropdown && !this.mainDropdown.isOpen) {\r\n            this.mainDropdown.isOpen = true;\r\n          }\r\n\r\n          if (this.multiple && this.innerInput) {\r\n            this.innerInput.nativeElement.focus();\r\n          }\r\n          this.cascaderSrv.searchResultList = [];\r\n          this.cascaderSrv.searchByString(value);\r\n          this.showSearchPanel = true;\r\n        });\r\n    }\r\n\r\n    if (this.isLazyLoad) {\r\n      this.cascaderSrv.updateShowText.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\r\n        if (this.multiple) {\r\n          this.multipleValueList = this.getMultipleValueFromValueList(this.lazyloadValue);\r\n          this.cascaderSrv.multipleValue = this.lazyloadValue;\r\n        } else {\r\n          this.showTextValue = this.showPath\r\n            ? this.getPathLabelFormValue(this.cascaderSrv._currentValue)\r\n            : this.getLabelFromValue(this.cascaderSrv._currentValue);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  deleteTag(tagEvent, option: CascaderItem): void {\r\n    tagEvent.event.stopPropagation();\r\n    this.cascaderSrv.updateOptionCheckedStatus(option.value, false, this.checkboxRelation.upward, this.checkboxRelation.downward);\r\n    this.multipleValueList = this.multipleValueList.filter((t) => t.value !== option.value);\r\n    this.onChange(this.cascaderSrv.currentMultipleValue);\r\n    // 当taglist变化导致input高度变化时，更新相对位置\r\n    setTimeout(() => {\r\n      this.mainDropdown.updateCdkConnectedOverlayOrigin();\r\n    });\r\n  }\r\n\r\n  registerOnChange(fn: () => {}): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: () => {}): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  writeValue(value: Array<number | string> | Array<number | string>[]): void {\r\n    if (!this.multiple) {\r\n      if (!value) {\r\n        this.showTextValue = '';\r\n      } else {\r\n        this.showTextValue = this.showPath\r\n          ? this.getPathLabelFormValue(value as Array<number | string>)\r\n          : this.getLabelFromValue(value as Array<number | string>);\r\n        this.cascaderSrv._currentValue = value as Array<number | string>;\r\n        this.cascaderSrv.updateOptionByValue();\r\n      }\r\n    } else {\r\n      if (!value) {\r\n        this.multipleValueList = [];\r\n      } else {\r\n        this.cascaderSrv.currentMultipleValue = value as Array<number | string>[];\r\n        this.lazyloadValue = value;\r\n        this.multipleValueList = this.getMultipleValueFromValueList(value as Array<number | string>[]);\r\n        this.updateMultipleValuePathList();\r\n      }\r\n    }\r\n  }\r\n\r\n  updateMultipleValuePathList() {\r\n    if (!this.showPath) {\r\n      return;\r\n    }\r\n    const valueList = this.cascaderSrv.currentMultipleValue;\r\n    valueList.forEach((item, index) => {\r\n      const value = item[item.length - 1];\r\n      const target = this.multipleValueList.find((t) => t.value === value);\r\n      if (target) {\r\n        target.pathLabel = this.getPathLabelFormValue(item);\r\n      }\r\n    });\r\n  }\r\n\r\n  // 从路径数组中获取所有tag的值，并让对应checkbox激活\r\n  getMultipleValueFromValueList(valueList: Array<number | string>[]): CascaderItem[] {\r\n    const targetList = [];\r\n    valueList.forEach((value) => {\r\n      let cur: CascaderItem;\r\n      let cacheTarget: CascaderItem;\r\n      let list = this.cascaderSrv.options;\r\n      for (let i = 0; i < value.length; i++) {\r\n        cur = list.find((l) => l.value === value[i]);\r\n        cacheTarget = cur;\r\n        if (this.isLazyLoad && cur && !cur.children?.length && !cur.isLeaf) {\r\n          this.cascaderSrv.lazyloadMultipleChild(cur, i);\r\n          break;\r\n        } else {\r\n          list = (cur && cur.children) || [];\r\n        }\r\n      }\r\n      if (cur && cur.isLeaf) {\r\n        targetList.push(cur);\r\n        cacheTarget = null;\r\n        this.cascaderSrv.updateOptionCheckedStatus(cur.value, true, this.checkboxRelation.upward, this.checkboxRelation.downward);\r\n      }\r\n\r\n      if (cacheTarget) {\r\n        targetList.push(cacheTarget);\r\n        this.cascaderSrv.updateOptionCheckedStatus(cacheTarget.value, true, this.checkboxRelation.upward, this.checkboxRelation.downward);\r\n      }\r\n    });\r\n\r\n    return targetList;\r\n  }\r\n\r\n  // 获取路径末的label\r\n  getLabelFromValue(value: Array<number | string>): string {\r\n    let cur;\r\n    let list = this.cascaderSrv.options;\r\n    value.forEach((item) => {\r\n      cur = list.find((t) => t.value === item) || '';\r\n      list = cur.children || [];\r\n    });\r\n\r\n    return (cur && cur.label) || '';\r\n  }\r\n\r\n  // 将value数组转换为路径字符串\r\n  getPathLabelFormValue(value: Array<number | string>): string {\r\n    let path = '';\r\n    let cur;\r\n    let list = this.cascaderSrv.options;\r\n\r\n    value.forEach((item, index) => {\r\n      cur = list.find((t) => t.value === item) || '';\r\n      if (cur) {\r\n        path = path === '' ? path + cur.label : path + ' / ' + cur.label;\r\n      } else if (this.cascaderSrv.columnList.length === index + 1) {\r\n        path = path === '' ? path + item : path + ' / ' + item;\r\n      }\r\n      list = cur.children || [];\r\n    });\r\n\r\n    return path;\r\n  }\r\n\r\n  clearTags(): void {\r\n    if (this.multiple) {\r\n      this.multipleValueList = [];\r\n      this.cascaderSrv.resetStatus.next();\r\n      this.cascaderSrv.resetNodeStatus();\r\n      this.cascaderSrv.currentMultipleValue = [];\r\n    } else {\r\n      this.cascaderSrv.currentValue = [];\r\n    }\r\n    this.onChange([]);\r\n  }\r\n\r\n  onToggle(isOpen: boolean): void {\r\n    this.toggleEvent.emit(isOpen);\r\n    if (isOpen && this.multiple) {\r\n      this.cascaderSrv.clearTargetActive(this.cascaderSrv.options.find((t) => t.active));\r\n      this.cascaderSrv.columnList.splice(1);\r\n      if (this.innerInput) {\r\n        this.innerInput.nativeElement.focus();\r\n      }\r\n    }\r\n\r\n    if (isOpen && !this.multiple && this.allowSearch) {\r\n      this.outerInput.nativeElement.focus();\r\n    }\r\n\r\n    if (!isOpen && this.allowSearch) {\r\n      if (!this.cascaderSrv.currentValue.length) {\r\n        this.showTextValue = null;\r\n      } else {\r\n        this.writeValue(this.cascaderSrv.currentValue);\r\n      }\r\n      // 在动画结束后再设置参数，防止panel中内容突变，动画时间200\r\n      this.timer = setTimeout(() => {\r\n        this.showSearchPanel = false;\r\n      }, 200);\r\n    }\r\n\r\n    if (isOpen) {\r\n      this.rePosition();\r\n    }\r\n  }\r\n\r\n  // 防止位置超出overlay边界\r\n  rePosition(): void {\r\n    if (typeof window === undefined || !this.appendToBody) {\r\n      return;\r\n    }\r\n    setTimeout(() => {\r\n      this.dropdownComp.reposition();\r\n      const width = this.dropdownComp.overlay.overlayRef?.overlayElement.clientWidth;\r\n      const offsetX = this.dropdownComp.overlay.overlayRef?.overlayElement.offsetLeft;\r\n      const offsetRight = window.innerWidth - width - offsetX - 20;\r\n      this.subMenuDirections.forEach((t) => {\r\n        t.offsetX = offsetRight < 0 ? offsetRight : 0;\r\n      });\r\n      this.dropdownComp.reposition();\r\n    }, 0);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unsubscribe$.next();\r\n    this.unsubscribe$.complete();\r\n    this.searchValueChange.complete();\r\n  }\r\n}\r\n","<div\r\n  [ngStyle]=\"{ width: width + 'px' }\"\r\n  *ngIf=\"appendToBody\"\r\n  dDropDown\r\n  appendToBody\r\n  [trigger]=\"disabled ? 'manually' : 'click'\"\r\n  [closeScope]=\"'blank'\"\r\n  #mainDropdown=\"d-dropdown\"\r\n  (toggleEvent)=\"onToggle($event)\"\r\n  [showAnimation]=\"showAnimation\"\r\n  [appendToBodyDirections]=\"subMenuDirections\"\r\n  [ngClass]=\"{ 'dropdown-show-clear': allowClear && (showTextValue || multipleValueList.length) }\"\r\n>\r\n  <div dDropDownToggle (focus)=\"showSearchInput = true\" [class.devui-gray-style]=\"styleType === 'gray'\">\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"hostTemplate || default\"\r\n      [ngTemplateOutletContext]=\"{ value: showTextValue || multipleValueList }\"\r\n    ></ng-template>\r\n  </div>\r\n\r\n  <ng-template #default>\r\n    <input\r\n      *ngIf=\"!multiple\"\r\n      #outerInput\r\n      [placeholder]=\"placeholder\"\r\n      type=\"text\"\r\n      class=\"devui-form-control devui-select-input devui-input\"\r\n      [ngClass]=\"{ 'devui-search-cascader': allowSearch }\"\r\n      [readonly]=\"!allowSearch\"\r\n      [disabled]=\"disabled\"\r\n      [ngModel]=\"showTextValue\"\r\n      (ngModelChange)=\"valueChanges($event)\"\r\n    />\r\n    <div class=\"devui-tags-input-wrapper\" *ngIf=\"multiple\">\r\n      <div class=\"devui-tags-input devui-scrollbar\">\r\n        <d-tag\r\n          *ngFor=\"let item of multipleValueList; let index = index\"\r\n          [tag]=\"item.pathLabel || item.label\"\r\n          [labelStyle]=\"item.disabled ? 'tag-disabled' : ''\"\r\n          [deletable]=\"!item.disabled\"\r\n          (tagDelete)=\"deleteTag($event, item)\"\r\n          [maxWidth]=\"tagMaxWidth\"\r\n        ></d-tag>\r\n        <input\r\n          #innerInput\r\n          (blur)=\"showSearchInput = false\"\r\n          *ngIf=\"allowSearch && showSearchInput\"\r\n          dTextInput\r\n          class=\"inner-input\"\r\n          [placeholder]=\"multipleValueList.length ? '' : placeholder\"\r\n          [ngModel]=\"showTextValue\"\r\n          (ngModelChange)=\"valueChanges($event)\"\r\n        />\r\n        <span *ngIf=\"!multipleValueList.length && !allowSearch\" class=\"devui-dropdown-placeholder\">{{ placeholder }}</span>\r\n      </div>\r\n      <div class=\"devui-drop-icon-wrapper\">\r\n        <span class=\"devui-drop-icon\" [ngClass]=\"{ 'devui-drop-icon-animation': showAnimation }\">\r\n          <svg\r\n            width=\"16px\"\r\n            height=\"16px\"\r\n            viewBox=\"0 0 16 16\"\r\n            version=\"1.1\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n          >\r\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n              <path\r\n                d=\"M3.64644661,5.64644661 C3.82001296,5.47288026 4.08943736,5.45359511 4.2843055,5.58859116 L4.35355339,5.64644661 L8,9.293 L11.6464466,5.64644661 C11.820013,5.47288026 12.0894374,5.45359511 12.2843055,5.58859116 L12.3535534,5.64644661 C12.5271197,5.82001296 12.5464049,6.08943736 12.4114088,6.2843055 L12.3535534,6.35355339 L8.35355339,10.3535534 C8.17998704,10.5271197 7.91056264,10.5464049 7.7156945,10.4114088 L7.64644661,10.3535534 L3.64644661,6.35355339 C3.45118446,6.15829124 3.45118446,5.84170876 3.64644661,5.64644661 Z\"\r\n              ></path>\r\n            </g>\r\n          </svg>\r\n        </span>\r\n        <span class=\"devui-cascader-close-icon\" (click)=\"clearTags()\">\r\n          <svg\r\n            width=\"12px\"\r\n            height=\"12px\"\r\n            viewBox=\"0 0 12 12\"\r\n            version=\"1.1\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n          >\r\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n              <path\r\n                d=\"M8.86785321,3.13214679 C9.02624037,3.29053395 9.02624037,3.54733027 8.86785321,3.70571743 L6.573,6 L8.86785321,8.29428257 C9.02624037,8.45266973 9.02624037,8.70946605 8.86785321,8.86785321 C8.70946605,9.02624037 8.45266973,9.02624037 8.29428257,8.86785321 L6,6.573 L3.70571743,8.86785321 C3.54733027,9.02624037 3.29053395,9.02624037 3.13214679,8.86785321 C2.97375963,8.70946605 2.97375963,8.45266973 3.13214679,8.29428257 L5.427,6 L3.13214679,3.70571743 C2.97375963,3.54733027 2.97375963,3.29053395 3.13214679,3.13214679 C3.29053395,2.97375963 3.54733027,2.97375963 3.70571743,3.13214679 L6,5.427 L8.29428257,3.13214679 C8.45266973,2.97375963 8.70946605,2.97375963 8.86785321,3.13214679 Z\"\r\n                fill-rule=\"nonzero\"\r\n              ></path>\r\n            </g>\r\n          </svg>\r\n        </span>\r\n      </div>\r\n    </div>\r\n    <div class=\"devui-single-drop-icon-wrapper\" *ngIf=\"!multiple\">\r\n      <span class=\"devui-drop-icon\" [ngClass]=\"{ 'devui-drop-icon-animation': showAnimation }\">\r\n        <svg\r\n          width=\"16px\"\r\n          height=\"16px\"\r\n          viewBox=\"0 0 16 16\"\r\n          version=\"1.1\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n        >\r\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n            <path\r\n              d=\"M3.64644661,5.64644661 C3.82001296,5.47288026 4.08943736,5.45359511 4.2843055,5.58859116 L4.35355339,5.64644661 L8,9.293 L11.6464466,5.64644661 C11.820013,5.47288026 12.0894374,5.45359511 12.2843055,5.58859116 L12.3535534,5.64644661 C12.5271197,5.82001296 12.5464049,6.08943736 12.4114088,6.2843055 L12.3535534,6.35355339 L8.35355339,10.3535534 C8.17998704,10.5271197 7.91056264,10.5464049 7.7156945,10.4114088 L7.64644661,10.3535534 L3.64644661,6.35355339 C3.45118446,6.15829124 3.45118446,5.84170876 3.64644661,5.64644661 Z\"\r\n            ></path>\r\n          </g>\r\n        </svg>\r\n      </span>\r\n      <span class=\"devui-cascader-close-icon\" (click)=\"clearTags()\">\r\n        <svg\r\n          width=\"12px\"\r\n          height=\"12px\"\r\n          viewBox=\"0 0 12 12\"\r\n          version=\"1.1\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n        >\r\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n            <path\r\n              d=\"M8.86785321,3.13214679 C9.02624037,3.29053395 9.02624037,3.54733027 8.86785321,3.70571743 L6.573,6 L8.86785321,8.29428257 C9.02624037,8.45266973 9.02624037,8.70946605 8.86785321,8.86785321 C8.70946605,9.02624037 8.45266973,9.02624037 8.29428257,8.86785321 L6,6.573 L3.70571743,8.86785321 C3.54733027,9.02624037 3.29053395,9.02624037 3.13214679,8.86785321 C2.97375963,8.70946605 2.97375963,8.45266973 3.13214679,8.29428257 L5.427,6 L3.13214679,3.70571743 C2.97375963,3.54733027 2.97375963,3.29053395 3.13214679,3.13214679 C3.29053395,2.97375963 3.54733027,2.97375963 3.70571743,3.13214679 L6,5.427 L8.29428257,3.13214679 C8.45266973,2.97375963 8.70946605,2.97375963 8.86785321,3.13214679 Z\"\r\n              fill-rule=\"nonzero\"\r\n            ></path>\r\n          </g>\r\n        </svg>\r\n      </span>\r\n    </div>\r\n  </ng-template>\r\n\r\n  <div dDropDownMenu class=\"devui-drop-menu-wrapper {{ dropdownPanelClass }}\">\r\n    <ng-container *ngIf=\"!showSearchPanel\">\r\n      <ul\r\n        *ngFor=\"let optionList of columnList; let i = index\"\r\n        class=\"devui-cascader-list devui-scrollbar\"\r\n        [ngClass]=\"{ 'devui-drop-no-data': !options.length }\"\r\n        [ngStyle]=\"{ width: dropdownWidth + 'px' }\"\r\n        role=\"menu\"\r\n        (click)=\"$event.stopPropagation()\"\r\n      >\r\n        <ng-container *ngIf=\"dropdownHeaderTemplate\">\r\n          <ng-template [ngTemplateOutlet]=\"dropdownHeaderTemplate\" [ngTemplateOutletContext]=\"{ index: i }\"> </ng-template>\r\n        </ng-container>\r\n\r\n        <ng-container *ngIf=\"optionList.length\">\r\n          <d-cascader-li\r\n            *ngFor=\"let option of optionList\"\r\n            [option]=\"option\"\r\n            [trigger]=\"trigger\"\r\n            [width]=\"dropdownWidth\"\r\n            [multiple]=\"multiple\"\r\n            [colIndex]=\"i\"\r\n            [dropDownItemTemplate]=\"dropDownItemTemplate\"\r\n            [isLazyLoad]=\"isLazyLoad\"\r\n            [canSelectParent]=\"canSelectParent\"\r\n            [checkboxRelation]=\"checkboxRelation\"\r\n          ></d-cascader-li>\r\n        </ng-container>\r\n        <div *ngIf=\"!optionList.length\" class=\"devui-no-data-tip\">{{ i18nCommonText.noData }}</div>\r\n      </ul>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"showSearchPanel\">\r\n      <ul\r\n        class=\"devui-cascader-list devui-scrollbar\"\r\n        [style.minWidth]=\"dropdownWidth - 2 + 'px'\"\r\n        [ngClass]=\"{ 'devui-drop-no-data': !searchResultList.length }\"\r\n      >\r\n        <li\r\n          *ngFor=\"let item of searchResultList\"\r\n          class=\"devui-cascader-list-item\"\r\n          [ngClass]=\"{ 'active-li': item.checked }\"\r\n          (click)=\"chooseSearchResult(item)\"\r\n        >\r\n          {{ item.label }}\r\n        </li>\r\n        <div *ngIf=\"!searchResultList.length\" class=\"devui-no-data-tip\">{{ i18nCommonText.noData }}</div>\r\n      </ul>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n\r\n<div\r\n  *ngIf=\"!appendToBody\"\r\n  [ngStyle]=\"{ width: width + 'px' }\"\r\n  dDropDown\r\n  [trigger]=\"'click'\"\r\n  [closeScope]=\"'blank'\"\r\n  #mainDropdown=\"d-dropdown\"\r\n  (toggleEvent)=\"onToggle($event)\"\r\n  [showAnimation]=\"showAnimation\"\r\n>\r\n  <div dDropDownToggle (focus)=\"showSearchInput = true\">\r\n    <ng-template\r\n      [ngTemplateOutlet]=\"hostTemplate || default\"\r\n      [ngTemplateOutletContext]=\"{ value: showTextValue || multipleValueList }\"\r\n    ></ng-template>\r\n  </div>\r\n  <ng-template #default>\r\n    <input\r\n      *ngIf=\"!multiple\"\r\n      #outerInput\r\n      [placeholder]=\"placeholder\"\r\n      type=\"text\"\r\n      class=\"devui-form-control devui-select-input devui-input\"\r\n      [ngClass]=\"{ 'devui-search-cascader': allowSearch }\"\r\n      [readonly]=\"!allowSearch\"\r\n      [disabled]=\"disabled\"\r\n      [ngModel]=\"showTextValue\"\r\n      (ngModelChange)=\"valueChanges($event)\"\r\n    />\r\n    <div class=\"devui-tags-input-wrapper\" *ngIf=\"multiple\">\r\n      <div class=\"devui-tags-input devui-scrollbar\">\r\n        <d-tag\r\n          *ngFor=\"let item of multipleValueList; let index = index\"\r\n          [tag]=\"item.label\"\r\n          [deletable]=\"true\"\r\n          (tagDelete)=\"deleteTag($event, item)\"\r\n        ></d-tag>\r\n        <input\r\n          #innerInput\r\n          (blur)=\"showSearchInput = false\"\r\n          *ngIf=\"allowSearch && showSearchInput\"\r\n          dTextInput\r\n          class=\"inner-input\"\r\n          [placeholder]=\"multipleValueList.length ? '' : placeholder\"\r\n          [ngModel]=\"showTextValue\"\r\n          (ngModelChange)=\"valueChanges($event)\"\r\n        />\r\n        <span *ngIf=\"!multipleValueList.length && !allowSearch\" class=\"devui-dropdown-placeholder\">{{ placeholder }}</span>\r\n      </div>\r\n      <div class=\"devui-drop-icon-wrapper\">\r\n        <span class=\"devui-drop-icon\" [ngClass]=\"{ 'devui-drop-icon-animation': showAnimation }\">\r\n          <svg\r\n            width=\"16px\"\r\n            height=\"16px\"\r\n            viewBox=\"0 0 16 16\"\r\n            version=\"1.1\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n          >\r\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n              <path\r\n                d=\"M3.64644661,5.64644661 C3.82001296,5.47288026 4.08943736,5.45359511 4.2843055,5.58859116 L4.35355339,5.64644661 L8,9.293 L11.6464466,5.64644661 C11.820013,5.47288026 12.0894374,5.45359511 12.2843055,5.58859116 L12.3535534,5.64644661 C12.5271197,5.82001296 12.5464049,6.08943736 12.4114088,6.2843055 L12.3535534,6.35355339 L8.35355339,10.3535534 C8.17998704,10.5271197 7.91056264,10.5464049 7.7156945,10.4114088 L7.64644661,10.3535534 L3.64644661,6.35355339 C3.45118446,6.15829124 3.45118446,5.84170876 3.64644661,5.64644661 Z\"\r\n              ></path>\r\n            </g>\r\n          </svg>\r\n        </span>\r\n        <span class=\"devui-cascader-close-icon\" (click)=\"clearTags()\">\r\n          <svg\r\n            width=\"12px\"\r\n            height=\"12px\"\r\n            viewBox=\"0 0 12 12\"\r\n            version=\"1.1\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n          >\r\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n              <path\r\n                d=\"M8.86785321,3.13214679 C9.02624037,3.29053395 9.02624037,3.54733027 8.86785321,3.70571743 L6.573,6 L8.86785321,8.29428257 C9.02624037,8.45266973 9.02624037,8.70946605 8.86785321,8.86785321 C8.70946605,9.02624037 8.45266973,9.02624037 8.29428257,8.86785321 L6,6.573 L3.70571743,8.86785321 C3.54733027,9.02624037 3.29053395,9.02624037 3.13214679,8.86785321 C2.97375963,8.70946605 2.97375963,8.45266973 3.13214679,8.29428257 L5.427,6 L3.13214679,3.70571743 C2.97375963,3.54733027 2.97375963,3.29053395 3.13214679,3.13214679 C3.29053395,2.97375963 3.54733027,2.97375963 3.70571743,3.13214679 L6,5.427 L8.29428257,3.13214679 C8.45266973,2.97375963 8.70946605,2.97375963 8.86785321,3.13214679 Z\"\r\n                fill-rule=\"nonzero\"\r\n              ></path>\r\n            </g>\r\n          </svg>\r\n        </span>\r\n      </div>\r\n    </div>\r\n    <div class=\"devui-single-drop-icon-wrapper\" *ngIf=\"!multiple\">\r\n      <span class=\"devui-drop-icon\" [ngClass]=\"{ 'devui-drop-icon-animation': showAnimation }\">\r\n        <svg\r\n          width=\"16px\"\r\n          height=\"16px\"\r\n          viewBox=\"0 0 16 16\"\r\n          version=\"1.1\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n        >\r\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n            <path\r\n              d=\"M3.64644661,5.64644661 C3.82001296,5.47288026 4.08943736,5.45359511 4.2843055,5.58859116 L4.35355339,5.64644661 L8,9.293 L11.6464466,5.64644661 C11.820013,5.47288026 12.0894374,5.45359511 12.2843055,5.58859116 L12.3535534,5.64644661 C12.5271197,5.82001296 12.5464049,6.08943736 12.4114088,6.2843055 L12.3535534,6.35355339 L8.35355339,10.3535534 C8.17998704,10.5271197 7.91056264,10.5464049 7.7156945,10.4114088 L7.64644661,10.3535534 L3.64644661,6.35355339 C3.45118446,6.15829124 3.45118446,5.84170876 3.64644661,5.64644661 Z\"\r\n            ></path>\r\n          </g>\r\n        </svg>\r\n      </span>\r\n      <span class=\"devui-cascader-close-icon\" (click)=\"clearTags()\">\r\n        <svg\r\n          width=\"12px\"\r\n          height=\"12px\"\r\n          viewBox=\"0 0 12 12\"\r\n          version=\"1.1\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n        >\r\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n            <path\r\n              d=\"M8.86785321,3.13214679 C9.02624037,3.29053395 9.02624037,3.54733027 8.86785321,3.70571743 L6.573,6 L8.86785321,8.29428257 C9.02624037,8.45266973 9.02624037,8.70946605 8.86785321,8.86785321 C8.70946605,9.02624037 8.45266973,9.02624037 8.29428257,8.86785321 L6,6.573 L3.70571743,8.86785321 C3.54733027,9.02624037 3.29053395,9.02624037 3.13214679,8.86785321 C2.97375963,8.70946605 2.97375963,8.45266973 3.13214679,8.29428257 L5.427,6 L3.13214679,3.70571743 C2.97375963,3.54733027 2.97375963,3.29053395 3.13214679,3.13214679 C3.29053395,2.97375963 3.54733027,2.97375963 3.70571743,3.13214679 L6,5.427 L8.29428257,3.13214679 C8.45266973,2.97375963 8.70946605,2.97375963 8.86785321,3.13214679 Z\"\r\n              fill-rule=\"nonzero\"\r\n            ></path>\r\n          </g>\r\n        </svg>\r\n      </span>\r\n    </div>\r\n  </ng-template>\r\n\r\n  <div dDropDownMenu class=\"devui-drop-menu-wrapper {{ dropdownPanelClass }}\">\r\n    <ng-container *ngIf=\"!showSearchPanel\">\r\n      <ul\r\n        *ngFor=\"let optionList of columnList; let i = index\"\r\n        class=\"devui-cascader-list devui-scrollbar\"\r\n        [ngClass]=\"{ 'devui-drop-no-data': !options.length }\"\r\n        [ngStyle]=\"{ width: dropdownWidth + 'px' }\"\r\n        role=\"menu\"\r\n        (click)=\"$event.stopPropagation()\"\r\n      >\r\n        <ng-container *ngIf=\"dropdownHeaderTemplate\">\r\n          <ng-template [ngTemplateOutlet]=\"dropdownHeaderTemplate\" [ngTemplateOutletContext]=\"{ index: i }\"> </ng-template>\r\n        </ng-container>\r\n\r\n        <ng-container *ngIf=\"optionList.length\">\r\n          <d-cascader-li\r\n            *ngFor=\"let option of optionList\"\r\n            [option]=\"option\"\r\n            [trigger]=\"trigger\"\r\n            [width]=\"dropdownWidth\"\r\n            [multiple]=\"multiple\"\r\n            [colIndex]=\"i\"\r\n            [dropDownItemTemplate]=\"dropDownItemTemplate\"\r\n            [isLazyLoad]=\"isLazyLoad\"\r\n            [canSelectParent]=\"canSelectParent\"\r\n            [checkboxRelation]=\"checkboxRelation\"\r\n          ></d-cascader-li>\r\n        </ng-container>\r\n        <div *ngIf=\"!optionList.length\" class=\"devui-no-data-tip\">{{ i18nCommonText.noData }}</div>\r\n      </ul>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"showSearchPanel\">\r\n      <ul\r\n        class=\"devui-cascader-list devui-scrollbar\"\r\n        [style.minWidth]=\"dropdownWidth - 2 + 'px'\"\r\n        [ngClass]=\"{ 'devui-drop-no-data': !searchResultList.length }\"\r\n      >\r\n        <li\r\n          *ngFor=\"let item of searchResultList\"\r\n          class=\"devui-cascader-list-item\"\r\n          [ngClass]=\"{ 'active-li': item.checked }\"\r\n          (click)=\"chooseSearchResult(item)\"\r\n        >\r\n          {{ item.label }}\r\n        </li>\r\n        <div *ngIf=\"!searchResultList.length\" class=\"devui-no-data-tip\">{{ i18nCommonText.noData }}</div>\r\n      </ul>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckBoxModule } from 'ng-devui/checkbox';\nimport { DropDownModule,  } from 'ng-devui/dropdown';\nimport { SelectModule } from 'ng-devui/select';\nimport { TagsModule } from 'ng-devui/tags';\nimport { CascaderLiComponent } from './cascader-li.component';\nimport { CascaderComponent } from './cascader.component';\n\n@NgModule({\n  declarations: [\n    CascaderComponent,\n    CascaderLiComponent\n  ],\n  imports: [\n    CommonModule,\n    SelectModule,\n    FormsModule,\n    DropDownModule,\n    TagsModule,\n    CheckBoxModule\n  ],\n  exports: [ CascaderComponent ],\n})\nexport class CascaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CascaderService","i2","i3","i4","i8.CascaderLiComponent"],"mappings":"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"}