{"version":3,"file":"ng-devui-select.mjs","sources":["../../devui/select/before-checkbox-change.pipe.ts","../../devui/select/select.component.ts","../../devui/select/select.component.html","../../devui/select/select.module.ts","../../devui/select/ng-devui-select.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'dBeforeCheckboxChangePipe',\n})\nexport class BeforeCheckboxChangePipe implements PipeTransform {\n  transform(func: Function, option: any, index: number): any {\n    return func ? () => func(index, option, 'checkbox') : undefined;\n  }\n}\n","import {\r\n  CdkConnectedOverlay,\r\n  CdkOverlayOrigin,\r\n  ConnectedOverlayPositionChange,\r\n  ConnectedPosition,\r\n  ScrollStrategy,\r\n  ScrollStrategyOptions,\r\n  VerticalConnectionPos,\r\n} from '@angular/cdk/overlay';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport {\r\n  AppendToBodyDirection,\r\n  AppendToBodyDirectionsConfig,\r\n  AppendToBodyScrollStrategyType,\r\n  DevConfigService,\r\n  WithConfig,\r\n  addClassToOrigin,\r\n  fadeInOut,\r\n  formWithDropDown,\r\n  removeClassFromOrigin,\r\n} from 'ng-devui/utils';\r\nimport { WindowRef } from 'ng-devui/window-ref';\r\nimport { differenceBy, isEqual } from 'lodash-es';\r\nimport { BehaviorSubject, Observable, Subscription, fromEvent, of } from 'rxjs';\r\nimport { debounceTime, filter, map, switchMap } from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'd-select',\r\n  templateUrl: './select.component.html',\r\n  styleUrls: [`./select.component.scss`],\r\n  exportAs: 'select',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => SelectComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  animations: [fadeInOut],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class SelectComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n  /**\r\n   * 【必选】下拉选项资源，支持Array<string>, Array<{key: value}>\r\n   */\r\n  @Input() options = [];\r\n  /**\r\n   * 【可选】是否支持过滤搜索\r\n   */\r\n  @Input() isSearch = false;\r\n  /**\r\n   * 【可选】是否支持聚焦自动展开下拉\r\n   */\r\n  @Input() toggleOnFocus = false;\r\n  /**\r\n   * 【可选】下拉菜单高度，建议使用px作为高度单位\r\n   */\r\n  @Input() scrollHight = '300px';\r\n  /**\r\n   * 【可选】下拉高亮css\r\n   */\r\n  @Input() highlightItemClass = 'active';\r\n  /**\r\n   * 【当传入资源（options）类型为Array<{key: value}，必选】针对传入资源options的每项对应字段做过滤操作\r\n   */\r\n  @Input() filterKey: string;\r\n  /**\r\n   * 【当传入资源（options）类型为Array<{key: value}，可选】选项与选中值类型不一致时用于指定赋值属性\r\n   */\r\n  @Input() valueKey: string;\r\n  /**\r\n   * 【可选】是否支持多选\r\n   */\r\n  @Input() multiple: boolean;\r\n  /**\r\n   * 【可选】是否支持全选\r\n   */\r\n  @Input() isSelectAll = false;\r\n  /**\r\n   * 【可选】是否可以输入\r\n   */\r\n  @Input() readonly = true;\r\n  /**\r\n   * 【可选】下拉选框尺寸\r\n   */\r\n  @Input() size: '' | 'sm' | 'lg';\r\n  /**\r\n   * 【可选】是否appendToBody\r\n   */\r\n  @Input() appendToBody = false;\r\n  /**\r\n   * 【可选】cdk模式overlay Positions的控制\r\n   */\r\n  @Input() appendToBodyDirections: Array<AppendToBodyDirection | ConnectedPosition> = ['rightDown', 'leftDown', 'rightUp', 'leftUp'];\r\n  @Input() @WithConfig() appendToBodyScrollStrategy: AppendToBodyScrollStrategyType;\r\n  /**\r\n   * 【可选】cdk模式origin width\r\n   */\r\n  @Input() width: number;\r\n  /**\r\n   * 【可选】模板高度\r\n   */\r\n  @Input() templateItemSize: number; // 模板itemSize，appendToBody为true\r\n  /**\r\n   * 【可选】是否禁用下拉框\r\n   */\r\n  @Input() disabled = false;\r\n  /**\r\n   * 【可选】下拉默认显示文字\r\n   */\r\n  @Input() placeholder = '';\r\n  @Input() searchPlaceholder = '';\r\n  /**\r\n   * 【可选】搜索函数，当需要自定义下拉选择过滤规则时可以使用\r\n   *  请保证返回值有id和option字段，id是确保尤其多选的时候能正确索引对应选项\r\n   *  简单实现参考：\r\n   *  search = (term) => {\r\n   *    return of(\r\n   *     [Lily, May, Jorsh, Shiwa, Nanth]\r\n   *     .map((option, index) => ({id: index, option: option}))\r\n   *     .filter(item => item.option.name.toLowerCase().indexOf(term.toLowerCase()) !== -1)\r\n   *   );\r\n   *  }\r\n   */\r\n  @Input() searchFn: (term: string) => Observable<Array<{ id: string | number; option: any }>>;\r\n  /**\r\n   * 【可选】决定选择框文字如何显示，默认显示filterKey字段或者本身的值\r\n   */\r\n  @Input() valueParser: (item: any) => any;\r\n  /**\r\n   * 【可选】决定下拉框没项文字如何显示，默认显示filterKey字段或者本身的值\r\n   */\r\n  @Input() formatter: (item: any) => string;\r\n  @Input() direction: 'up' | 'down' | 'auto' = 'down';\r\n  @Input() overview: 'border' | 'underlined' = 'border';\r\n  /**\r\n   *  【可选】是否开启clear功能（是否开启只对单选生效）\r\n   */\r\n  @Input() allowClear = false;\r\n  @Input() color;\r\n  /**\r\n   *  【可选】启用数据懒加载，默认不启用\r\n   */\r\n  @Input() enableLazyLoad = false;\r\n  /**\r\n   * 是否虚拟滚动\r\n   */\r\n  @Input() virtualScroll;\r\n  /**\r\n   * 非必填，如传入，会忽略ContentChild\r\n   */\r\n  @Input() inputItemTemplate: TemplateRef<any>;\r\n  @Input() extraConfig: {\r\n    labelization?: {\r\n      // 选中项显示成标签一样，带有删除按钮可以单个删除\r\n      enable: boolean; // 默认值为false\r\n      overflow?: 'normal' | 'scroll-y' | 'multiple-line' | string; // 默认值为''\r\n      containerMaxHeight?: string; // 默认值1.8em\r\n      /**\r\n       * @deprecated\r\n       */\r\n      containnerMaxHeight?: string; // 默认值1.8em\r\n      labelMaxWidth?: string; // 默认100%\r\n      maxTags?: number; // 可点选最大标签数，超出则省略显示\r\n    };\r\n    selectedItemWithTemplate?: {\r\n      // 单选情况下，显示选项使用了template的情况下，顶部选中的内容是否也以template展示\r\n      enable: boolean; // 默认值为false\r\n    };\r\n    // 多选情况下，用户搜索后按回车默认操作结果的第一个选项，没有结果则关闭下拉列表\r\n    enableFocusFirstFilteredOption?: boolean;\r\n    [feature: string]: any;\r\n  };\r\n  /**\r\n   * 【当传入资源（options）类型为Array<{key: value}，必选】针对传入资源options的每项对应字段做禁用操作的key\r\n   */\r\n  @Input() optionDisabledKey = '';\r\n  /**\r\n   * 【当传入资源（options）类型为Array<{key: value}，必选】针对传入资源options的每项对应字段禁止变更的key\r\n   */\r\n  @Input() optionImmutableKey = '';\r\n  /**\r\n   * 【可选】配置无数据展示\r\n   */\r\n  @Input() noResultItemTemplate: TemplateRef<any>;\r\n  /**\r\n   * 【可选】配置多选的时候是否维持原数组排序还是用户选择的顺序排序，默认是用户顺序\r\n   */\r\n  @Input() keepMultipleOrder: 'origin' | 'user-select' = 'user-select';\r\n  @Input() customViewTemplate: TemplateRef<any>;\r\n  /**\r\n   * customViewTemplate的方向，支持下方和右方\r\n   */\r\n  @Input() customViewDirection: 'bottom' | 'right' | 'left' | 'top' = 'bottom';\r\n  @Input() autoScrollIntoActive = false;\r\n  @Input() autoFocus = false;\r\n  @Input() notAutoScroll = false; // 自动聚焦的时候，自动滚动到select位置\r\n  @Input() loadingTemplateRef: TemplateRef<any>;\r\n  @Input() showItemTitle = false;\r\n  @Input() @WithConfig() showAnimation = true;\r\n  @Input() @WithConfig() styleType = 'default';\r\n  @Input() @WithConfig() showGlowStyle = true;\r\n  @Input() beforeChange: (index, option, action) => boolean | Promise<boolean> | Observable<boolean>;\r\n  /**\r\n   * select下拉toggle事件，值为true或false\r\n   */\r\n  @Output() toggleChange = new EventEmitter<boolean>();\r\n  @Output() loadMore = new EventEmitter<any>();\r\n  /**\r\n   * 输出函数，当选中某个选项项后，将会调用此函数，参数为当前选择项的值。如果需要获取所有选择状态的值，请参考(ngModelChange)方法\r\n   */\r\n  @Output() valueChange = new EventEmitter<any>();\r\n  @ContentChild(TemplateRef) itemTemplate: TemplateRef<any>;\r\n  @ViewChild('selectWrapper', { static: true }) selectWrapper: ElementRef;\r\n  @ViewChild('selectInput') selectInputElement: ElementRef;\r\n  @ViewChild('selectMenu') selectMenuElement: ElementRef;\r\n  @ViewChild('selectBox', { static: true }) selectBoxElement: ElementRef;\r\n  @ViewChild('selectInputWithTemplate') selectInputWithTemplateElement: ElementRef;\r\n  @ViewChild('selectInputWithLabel') selectInputWithLabelElement: ElementRef;\r\n  @ViewChild('filterInput') filterInputElement: ElementRef;\r\n  @ViewChild('dropdownUl') dropdownUl: ElementRef;\r\n  @ViewChild(CdkConnectedOverlay) connectedOverlay: CdkConnectedOverlay;\r\n  @ViewChild(CdkVirtualScrollViewport) virtualScrollViewport: CdkVirtualScrollViewport;\r\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\r\n    return this.showGlowStyle;\r\n  }\r\n\r\n  set isOpen(value) {\r\n    this._isOpen = value;\r\n    this.toggleChange.emit(value);\r\n    this.setDocumentClickListener();\r\n    if (this.selectWrapper) {\r\n      this.dropDownWidth = this.width ? this.width : this.selectWrapper.nativeElement.offsetWidth;\r\n    }\r\n    if (value) {\r\n      addClassToOrigin(this.selectWrapper);\r\n      setTimeout(() => {\r\n        this.startAnimation = true;\r\n        this.changeDetectorRef.detectChanges();\r\n        this.resetScrollTop();\r\n      });\r\n    } else {\r\n      this.resetScrollTop(true);\r\n      removeClassFromOrigin(this.selectWrapper);\r\n      this.onTouch();\r\n      if (this.direction === 'auto') {\r\n        this.clearText();\r\n      }\r\n    }\r\n  }\r\n\r\n  get isOpen() {\r\n    return this._isOpen;\r\n  }\r\n\r\n  get isClearIconShow() {\r\n    const hasValue = this.multiple ? this.multiItems?.length : this.value;\r\n    return this.allowClear && !this.disabled && hasValue;\r\n  }\r\n\r\n  get showMoreTags() {\r\n    return this.multiItems.length > (this.extraConfig?.labelization?.maxTags || 40) && this.isSelectAll && this.virtualScroll;\r\n  }\r\n\r\n  get moreTagsNum() {\r\n    return `+${this.multiItems.length - 1}`;\r\n  }\r\n\r\n  _inputValue: any;\r\n  _isOpen = false;\r\n  allChecked = false;\r\n  halfChecked = false;\r\n  isMouseEvent = false;\r\n  showLoading = false;\r\n  startAnimation = false;\r\n  limitMaxHeight = false;\r\n  availableOptions = [];\r\n  multiItems = [];\r\n  value: any;\r\n  filter = '';\r\n  activeIndex = -1;\r\n  selectIndex = -1;\r\n  popDirection: 'top' | 'bottom';\r\n  menuPosition: VerticalConnectionPos = 'bottom';\r\n  i18nCommonText: I18nInterface['common'];\r\n  i18nSubscription: Subscription;\r\n  document: Document;\r\n  dropDownWidth: number;\r\n  scrollHeightNum: number;\r\n  lastCloseScrollHeight: number;\r\n  minBuffer: number;\r\n  maxBuffer: number;\r\n  scrollStrategy: ScrollStrategy;\r\n  cdkConnectedOverlayOrigin: CdkOverlayOrigin;\r\n  overlayPositions: Array<ConnectedPosition>;\r\n  virtualScrollViewportSizeMightChange = false;\r\n  virtualScrollItemSize: any = {\r\n    sm: 30,\r\n    normal: 36,\r\n    lg: 50,\r\n    space: 4,\r\n  };\r\n  // 容器边距，虚拟滚动设置高度需考虑上下边距\r\n  CONTAINER_MARGINS = 12;\r\n  ANIMATION_DELAY = 300;\r\n\r\n  get showSelectAll() {\r\n    return this.isSelectAll && this.multiple && this.availableOptions.length > 0;\r\n  }\r\n\r\n  private sourceSubscription: BehaviorSubject<any>;\r\n  private filterSubscription: Subscription;\r\n  private resetting = false;\r\n  private onChange = (_: any) => null;\r\n  private onTouch = () => null;\r\n\r\n  constructor(\r\n    @Inject(DOCUMENT) private doc: any,\r\n    private renderer: Renderer2,\r\n    private windowRef: WindowRef,\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    private i18n: I18nService,\r\n    private ngZone: NgZone,\r\n    private el: ElementRef,\r\n    private devConfigService: DevConfigService,\r\n    private scrollStrategyOption: ScrollStrategyOptions\r\n  ) {\r\n    this.valueParser = (item) => this.getValue(item, this.filterKey);\r\n    this.formatter = (item) => this.getValue(item, this.filterKey);\r\n    this.scrollStrategy = this.scrollStrategyOption.reposition();\r\n    this.document = this.doc;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (!this.searchFn) {\r\n      this.searchFn = (term: any) => {\r\n        return of(\r\n          (this.options || [])\r\n            .map((option, index) => ({ option: option, id: index }))\r\n            .filter((item) => this.formatter(item.option).toLowerCase().indexOf(term.toLowerCase()) !== -1)\r\n        );\r\n      };\r\n    }\r\n\r\n    // 只有多选的情况isSelectAll为true才有意义\r\n    if (!this.multiple) {\r\n      this.isSelectAll = false;\r\n    }\r\n    this.setI18nText();\r\n    this.registerFilterChange();\r\n    this.setPositions();\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    if (this.autoFocus && this.selectBoxElement) {\r\n      setTimeout(() => {\r\n        this.selectBoxElement.nativeElement.focus({\r\n          preventScroll: this.notAutoScroll,\r\n        });\r\n      });\r\n    }\r\n    // 当d-select添加limit-max-height样式类时为devui-dropdown-menu-wrap容器添加最大高度限制样式，避免当窗口高度小于指定下拉最大高度时，下拉内容超出cdk容器\r\n    if (this.el.nativeElement?.className.includes('limit-max-height')) {\r\n      this.limitMaxHeight = true;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.sourceSubscription) {\r\n      this.sourceSubscription.unsubscribe();\r\n    }\r\n    if (this.filterSubscription) {\r\n      this.filterSubscription.unsubscribe();\r\n    }\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n    this.document.removeEventListener('click', this.onDocumentClick);\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { searchFn, options, appendToBodyDirections, appendToBodyScrollStrategy, disabled } = changes;\r\n    const globalScrollStrategy = this.devConfigService.getConfigForApi('appendToBodyScrollStrategy');\r\n    if (searchFn || options) {\r\n      this.resetSource();\r\n      if (this.virtualScroll && this.virtualScrollViewport) {\r\n        this.virtualScrollViewportSizeMightChange = true;\r\n        this.virtualScrollViewport.checkViewportSize();\r\n      }\r\n    }\r\n    if (appendToBodyDirections) {\r\n      this.setPositions();\r\n    }\r\n    if (this.appendToBodyScrollStrategy && (appendToBodyScrollStrategy || globalScrollStrategy)) {\r\n      const func = this.scrollStrategyOption[this.appendToBodyScrollStrategy];\r\n      this.scrollStrategy = func();\r\n    }\r\n    if (disabled && this.isOpen) {\r\n      this.toggle();\r\n    }\r\n  }\r\n\r\n  setPositions() {\r\n    if (this.appendToBodyDirections && this.appendToBodyDirections.length > 0) {\r\n      this.overlayPositions = this.appendToBodyDirections\r\n        .map((position) => {\r\n          if (typeof position === 'string') {\r\n            return AppendToBodyDirectionsConfig[position];\r\n          } else {\r\n            return position;\r\n          }\r\n        })\r\n        .filter((position) => position !== undefined);\r\n    } else {\r\n      this.overlayPositions = undefined;\r\n    }\r\n  }\r\n\r\n  setI18nText() {\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  getVirtualScrollHeight(len, size) {\r\n    if (len > 0) {\r\n      let height =\r\n        (this.templateItemSize || this.virtualScrollItemSize[size || 'normal']) * len + this.virtualScrollItemSize.space * (len - 1);\r\n      if (this.isSelectAll && this.multiple) {\r\n        height += this.virtualScrollItemSize[size ? size : 'normal'] + this.virtualScrollItemSize.space;\r\n      }\r\n      const scrollHeight = parseInt(this.scrollHight, 10);\r\n      this.scrollHeightNum = height > scrollHeight ? scrollHeight : height;\r\n      return `${this.scrollHeightNum + this.CONTAINER_MARGINS * 2}px`;\r\n    }\r\n  }\r\n\r\n  get realVirtualScrollItemSize() {\r\n    const itemSize = (this.templateItemSize || this.virtualScrollItemSize[this.size || 'normal']) + this.virtualScrollItemSize.space;\r\n    const num = Math.round(this.scrollHeightNum / itemSize) || 10;\r\n    this.minBuffer = num * 1.5 * itemSize;\r\n    this.maxBuffer = num * 2.5 * itemSize;\r\n    return itemSize;\r\n  }\r\n\r\n  resetSource() {\r\n    if (this.sourceSubscription && this.searchFn) {\r\n      this.resetting = true;\r\n      this.sourceSubscription.next('');\r\n    }\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouch = fn;\r\n  }\r\n\r\n  registerFilterChange(): void {\r\n    this.sourceSubscription = new BehaviorSubject<any>('');\r\n    this.sourceSubscription.pipe(switchMap((term) => this.searchFn(term))).subscribe((options) => {\r\n      this.availableOptions = options;\r\n      this.setAvailableOptions();\r\n      this.setAllChecked();\r\n      this.changeDetectorRef.markForCheck();\r\n      if (this.appendToBody) {\r\n        setTimeout(() => {\r\n          if (this.connectedOverlay && this.connectedOverlay.overlayRef) {\r\n            this.connectedOverlay.overlayRef.updatePosition();\r\n          }\r\n        });\r\n      }\r\n      if (\r\n        !this.multiple &&\r\n        (!this.value || (this.availableOptions && !this.availableOptions.find((option) => option.option === this.value)))\r\n      ) {\r\n        this.selectIndex = this.filter && this.availableOptions && this.availableOptions.length > 0 ? 0 : -1;\r\n      }\r\n    });\r\n\r\n    this.sourceSubscription.subscribe((term) => {\r\n      if (this.resetting && term === '') {\r\n        this.writeValue(this.value);\r\n        this.resetting = false;\r\n      }\r\n    });\r\n\r\n    this.searchInputValueChangeEvent();\r\n  }\r\n\r\n  searchInputValueChangeEvent() {\r\n    if (this.isSearch && this.isOpen && this.filterInputElement) {\r\n      this.filterInputElement.nativeElement.focus();\r\n      if (!this.filterSubscription || this.appendToBody) {\r\n        // 避免重复订阅\r\n        this.filterSubscription = fromEvent(this.filterInputElement.nativeElement, 'input')\r\n          .pipe(\r\n            map((e: any) => e.target.value),\r\n            filter((term) => !this.disabled && this.searchFn && term.length >= 0),\r\n            debounceTime(this.ANIMATION_DELAY)\r\n          )\r\n          .subscribe((term) => {\r\n            this.selectIndex = -1;\r\n            return this.sourceSubscription.next(term);\r\n          });\r\n      }\r\n    }\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    if (this.multiple) {\r\n      this.value = value ?? [];\r\n      if (this.showMoreTags) {\r\n        this.value = this.value || [];\r\n        this.value = Array.isArray(this.value) ? this.value : [this.value];\r\n      } else {\r\n        this.getMultipleSelectedOption();\r\n        this.setAllChecked();\r\n      }\r\n    } else {\r\n      this.value = value ?? '';\r\n      this.getSingleSelectedOption();\r\n      if (this.autoScrollIntoActive) {\r\n        this.scrollIntoActive();\r\n      }\r\n    }\r\n    this.writeIntoInput(this.value);\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  writeIntoInput(value): void {\r\n    let valueItem = value;\r\n    if (this.valueKey) {\r\n      valueItem = this.multiple ? this.multiItems.map((item) => item.option) : this.getOption(this.availableOptions, value, true);\r\n      valueItem = valueItem ?? '';\r\n    }\r\n    this._inputValue = this.multiple ? (valueItem || []).map((option) => this.valueParser(option)).join(', ') : this.valueParser(valueItem);\r\n    this.setAvailableOptions();\r\n    if (this.showMoreTags) {\r\n      this.multiItems = this.availableOptions.filter((item) => item.isChecked);\r\n      this.setAllChecked();\r\n    }\r\n  }\r\n\r\n  setAvailableOptions() {\r\n    const hasNoValue = this.value === undefined || this.value === '';\r\n    if (hasNoValue || !Array.isArray(this.availableOptions)) {\r\n      return;\r\n    }\r\n    let _value = this.value;\r\n    if (!this.multiple) {\r\n      _value = [_value];\r\n    }\r\n    this.availableOptions = this.availableOptions.map((item) => ({\r\n      isChecked: _value.findIndex((i) => isEqual(i, this.valueKey ? item.option[this.valueKey] : item.option)) > -1,\r\n      id: item.id,\r\n      option: item.option,\r\n    }));\r\n  }\r\n\r\n  getMultipleSelectedOption() {\r\n    this.value = this.value || [];\r\n    this.value = Array.isArray(this.value) ? this.value : [this.value];\r\n    this.multiItems = this.valueKey\r\n      ? this.value.map((value) => this.getOption(this.availableOptions, value)).filter((item) => item)\r\n      : this.value.map((option) => ({ option: option, id: this.getOptionIndex(option) }));\r\n  }\r\n\r\n  getSingleSelectedOption() {\r\n    const selectedItem = this.valueKey\r\n      ? this.getOption(this.availableOptions, this.value)\r\n      : this.availableOptions.find((item) => this.formatter(item.option) === this.formatter(this.value));\r\n    this.activeIndex = selectedItem ? selectedItem.id : -1;\r\n    this.selectIndex = this.activeIndex >= 0 ? this.activeIndex : -1;\r\n  }\r\n\r\n  getOption(data, value, hasOption?) {\r\n    const hasValue = (value ?? undefined) !== undefined;\r\n    const valueItem = this.getValue(value, this.valueKey);\r\n    const result = hasValue ? data.find((item) => this.getValue(item.option, this.valueKey) === valueItem) || '' : '';\r\n    return hasOption && result ? result.option : result;\r\n  }\r\n\r\n  getOptionIndex(option) {\r\n    return this.options?.length\r\n      ? this.options.findIndex((item) => isEqual(item, option))\r\n      : this.availableOptions.findIndex((item) => isEqual(item.option, option));\r\n  }\r\n\r\n  getValue = (item, key) => {\r\n    let result = item ?? '';\r\n    if (typeof item === 'object') {\r\n      result = item[key] ?? '';\r\n    }\r\n    return String(result);\r\n  };\r\n\r\n  scrollIntoActive() {\r\n    if (this.activeIndex >= 0) {\r\n      setTimeout(() => {\r\n        const items = this.dropdownUl?.nativeElement.querySelectorAll('.devui-dropdown-item') || [];\r\n        if (items[this.activeIndex]) {\r\n          items[this.activeIndex].scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\r\n        }\r\n      }, this.ANIMATION_DELAY);\r\n    }\r\n  }\r\n\r\n  canChange(option, index, action: string) {\r\n    let changeResult = Promise.resolve(true);\r\n\r\n    if (this.beforeChange) {\r\n      const result: any = this.beforeChange(index, option, action);\r\n      if (typeof result !== 'undefined') {\r\n        if (result.then) {\r\n          changeResult = result;\r\n        } else if (result.subscribe) {\r\n          changeResult = (result as Observable<boolean>).toPromise();\r\n        } else {\r\n          changeResult = Promise.resolve(result);\r\n        }\r\n      }\r\n    }\r\n\r\n    return changeResult;\r\n  }\r\n\r\n  choose = (option, index, $event?: Event, operate?: string) => {\r\n    if ($event) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n    }\r\n\r\n    if (typeof option === 'object') {\r\n      if (Object.keys(option).length === 0 || this.disabled) {\r\n        this.isOpen = false;\r\n        return;\r\n      }\r\n    } else {\r\n      if (this.disabled) {\r\n        this.isOpen = false;\r\n        return;\r\n      }\r\n    }\r\n\r\n    if (this.optionDisabledKey && option[this.optionDisabledKey]) {\r\n      return;\r\n    }\r\n\r\n    if (this.optionImmutableKey && option[this.optionImmutableKey]) {\r\n      return;\r\n    }\r\n\r\n    this.canChange(option, index, operate || 'select').then((change) => {\r\n      if (!change) {\r\n        return;\r\n      }\r\n      if (this.multiple) {\r\n        const indexOfOption = this.multiItems.findIndex((item) => isEqual(item.option, option));\r\n        if (indexOfOption === -1) {\r\n          this.multiItems.push({ id: index, option });\r\n        } else {\r\n          this.multiItems.splice(indexOfOption, 1);\r\n        }\r\n        if (this.keepMultipleOrder === 'origin') {\r\n          this.multiItems.sort((a, b) => a.id - b.id);\r\n        }\r\n        this.value = this.valueKey ? this.multiItems.map((item) => item.option[this.valueKey]) : this.multiItems.map((item) => item.option);\r\n        this.setAllChecked();\r\n      } else {\r\n        this.value = this.valueKey ? option[this.valueKey] : option;\r\n        this.activeIndex = index;\r\n        this.selectIndex = index;\r\n        this.toggle();\r\n      }\r\n      this.writeIntoInput(this.value);\r\n      this.onChange(this.value);\r\n      this.valueChange.emit(option);\r\n    });\r\n  };\r\n\r\n  updateCdkConnectedOverlayOrigin() {\r\n    if (this.selectWrapper.nativeElement) {\r\n      this.cdkConnectedOverlayOrigin = new CdkOverlayOrigin(formWithDropDown(this.selectWrapper) || this.selectWrapper.nativeElement);\r\n    }\r\n  }\r\n\r\n  resetScrollTop(isClose = false) {\r\n    const menuDom = this.selectMenuElement?.nativeElement.querySelector('ul.devui-select-list-unstyled.devui-scrollbar');\r\n    if (this.enableLazyLoad && menuDom) {\r\n      if (isClose) {\r\n        this.lastCloseScrollHeight = menuDom.scrollHeight ?? 0;\r\n      } else if (menuDom.scrollHeight < this.lastCloseScrollHeight) {\r\n        menuDom.scrollTop = 0;\r\n      }\r\n    }\r\n  }\r\n\r\n  autoToggle($event) {\r\n    $event.preventDefault();\r\n    $event.stopPropagation();\r\n    if (this.toggleOnFocus && !this.disabled && !this.isOpen && !this.isMouseEvent) {\r\n      this.toggle();\r\n    }\r\n  }\r\n\r\n  // mousedown mouseup解决focus与click冲突问题\r\n  @HostListener('mousedown', ['$event'])\r\n  public setMouseEventTrue(event) {\r\n    this.isMouseEvent = true;\r\n  }\r\n  @HostListener('mouseup', ['$event'])\r\n  public setMouseEventFalse(event) {\r\n    this.isMouseEvent = false;\r\n  }\r\n\r\n  toggle() {\r\n    if (this.disabled) {\r\n      if (this.isOpen) {\r\n        this.isOpen = false;\r\n      }\r\n      return;\r\n    }\r\n\r\n    if (!this.isOpen) {\r\n      this.filter = '';\r\n      this.resetSource();\r\n      if (!this.appendToBody) {\r\n        let direction = '';\r\n        switch (this.direction) {\r\n        case 'auto':\r\n          direction = this.isBottomRectEnough() ? 'bottom' : 'top';\r\n          break;\r\n        case 'down':\r\n          direction = 'bottom';\r\n          break;\r\n        case 'up':\r\n          direction = 'top';\r\n          break;\r\n        default:\r\n          direction = 'bottom';\r\n        }\r\n        this.popDirection = <any>direction;\r\n      } else {\r\n        this.updateCdkConnectedOverlayOrigin();\r\n      }\r\n    } else if (!this.showAnimation) {\r\n      this.startAnimation = false;\r\n    }\r\n    this.isOpen = !this.isOpen;\r\n    if (this.virtualScrollViewportSizeMightChange) {\r\n      // 解决虚拟滚动更新options长度展开前无法获取正确高度影响\r\n      setTimeout(() => {\r\n        if (this.virtualScrollViewportSizeMightChange && this.virtualScrollViewport) {\r\n          this.virtualScrollViewportSizeMightChange = false;\r\n          this.virtualScrollViewport.checkViewportSize();\r\n        }\r\n      }, 0);\r\n    }\r\n    if (this.isSearch && this.isOpen) {\r\n      // 条件外移减少setTimeout\r\n      setTimeout(() => this.searchInputValueChangeEvent(), 100);\r\n    }\r\n  }\r\n\r\n  isBottomRectEnough() {\r\n    const selectMenuElement = this.selectMenuElement.nativeElement;\r\n    const selectInputElement = this.selectInputElement || this.selectInputWithLabelElement || this.selectInputWithTemplateElement;\r\n    const displayStyle = selectMenuElement.style.display || (<any>window).getComputedStyle(selectMenuElement).display;\r\n    let tempStyle;\r\n    if (displayStyle === 'none') {\r\n      // 必要， 否则首次展开必有问题， 如果animationEnd之后设置为none也会有问题\r\n      tempStyle = {\r\n        visibility: selectMenuElement.style.visibility,\r\n        display: selectMenuElement.style.display,\r\n        transform: selectMenuElement.style.transform,\r\n      };\r\n      this.renderer.setStyle(selectMenuElement, 'visibility', 'hidden');\r\n      this.renderer.setStyle(selectMenuElement, 'display', 'block');\r\n      this.renderer.setStyle(selectMenuElement, 'transform', 'translate(0, -9999)');\r\n    }\r\n    const elementHeight = selectMenuElement.offsetHeight;\r\n    const bottomDistance = this.windowRef.innerHeight - selectInputElement.nativeElement.getBoundingClientRect().bottom;\r\n    const isBottomEnough = bottomDistance >= elementHeight;\r\n    if (displayStyle === 'none') {\r\n      this.renderer.setStyle(selectMenuElement, 'visibility', tempStyle.visibility);\r\n      this.renderer.setStyle(selectMenuElement, 'display', tempStyle.display);\r\n      this.renderer.setStyle(selectMenuElement, 'transform', tempStyle.transform);\r\n    }\r\n    return isBottomEnough;\r\n  }\r\n\r\n  setDocumentClickListener() {\r\n    this.ngZone.runOutsideAngular(() => {\r\n      if (this.isOpen) {\r\n        this.document.addEventListener('click', this.onDocumentClick);\r\n      } else {\r\n        this.document.removeEventListener('click', this.onDocumentClick);\r\n      }\r\n    });\r\n  }\r\n\r\n  onDocumentClick = ($event: Event) => {\r\n    if (this.isOpen && !this.selectBoxElement.nativeElement.contains($event.target)) {\r\n      this.isOpen = false;\r\n      this.selectIndex = this.activeIndex ? this.activeIndex : -1;\r\n      this.changeDetectorRef.detectChanges();\r\n    }\r\n  };\r\n\r\n  onEscKeyup($event) {\r\n    if (this.isOpen) {\r\n      $event.stopPropagation();\r\n    }\r\n    this.isOpen = false;\r\n  }\r\n\r\n  handleKeyUpEvent($event) {\r\n    if (this.isOpen) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n      this.selectIndex = this.selectIndex === 0 || this.selectIndex === -1 ? this.availableOptions.length - 1 : this.selectIndex - 1;\r\n      this.scrollToActive();\r\n    }\r\n  }\r\n\r\n  handleKeyDownEvent($event) {\r\n    if (this.isOpen) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n      this.selectIndex = this.selectIndex === this.availableOptions.length - 1 ? 0 : this.selectIndex + 1;\r\n      this.scrollToActive();\r\n    }\r\n  }\r\n\r\n  scrollToActive(): void {\r\n    const that = this;\r\n    setTimeout(() => {\r\n      try {\r\n        const selectIndex = that.selectIndex + (that.isSelectAll ? 1 : 0); // 多了个全选会导致问题，index需要加1\r\n        const scrollPane: any = that.dropdownUl.nativeElement.children[selectIndex];\r\n        if (scrollPane.scrollIntoViewIfNeeded) {\r\n          scrollPane.scrollIntoViewIfNeeded(false);\r\n        } else {\r\n          const containerInfo = that.dropdownUl.nativeElement.getBoundingClientRect();\r\n          const elementInfo = scrollPane.getBoundingClientRect();\r\n          if (elementInfo.bottom > containerInfo.bottom || elementInfo.top < containerInfo.top) {\r\n            scrollPane.scrollIntoView(false);\r\n          }\r\n        }\r\n      } catch (e) {}\r\n    });\r\n  }\r\n\r\n  handleKeyEnterEvent($event, isSearchInput = false) {\r\n    if (this.isOpen) {\r\n      $event.preventDefault();\r\n      $event.stopPropagation();\r\n      const item = this.getSelectedItem();\r\n      if (item) {\r\n        this.choose(item.option, item.id, $event);\r\n      } else if (!isSearchInput) {\r\n        this.toggle();\r\n      }\r\n    } else {\r\n      this.toggle();\r\n    }\r\n  }\r\n\r\n  getSelectedItem = () => {\r\n    return this.extraConfig?.enableFocusFirstFilteredOption && this.multiple && this.availableOptions.length\r\n      ? this.availableOptions[0]\r\n      : this.availableOptions[this.selectIndex];\r\n  };\r\n\r\n  removeItem(item, $event) {\r\n    this.choose(item.option, item.id, $event, 'remove');\r\n  }\r\n\r\n  selectAll() {\r\n    const mutableOption = this.optionImmutableKey\r\n      ? this.availableOptions.filter((item) => !item.option[this.optionImmutableKey])\r\n      : this.availableOptions;\r\n    const selectedImmutableOption = this.optionImmutableKey ? this.multiItems.filter((item) => item.option[this.optionImmutableKey]) : [];\r\n    const hasNotSelected = differenceBy(mutableOption, this.multiItems, 'id');\r\n\r\n    if (hasNotSelected.length) {\r\n      mutableOption.forEach((item) => {\r\n        const indexOfOption = this.multiItems.findIndex((i) => isEqual(i.option, item.option));\r\n        if (indexOfOption === -1) {\r\n          this.multiItems.push({ id: item.id, option: item.option });\r\n        }\r\n      });\r\n    } else if (mutableOption.length === this.multiItems.length - selectedImmutableOption.length) {\r\n      this.multiItems = [...selectedImmutableOption];\r\n    } else {\r\n      this.multiItems = differenceBy(this.multiItems, mutableOption, 'id');\r\n    }\r\n    this.value = this.valueKey ? this.multiItems.map((item) => item.option[this.valueKey]) : this.multiItems.map((item) => item.option);\r\n    this.writeIntoInput(this.value);\r\n    this.setAllChecked();\r\n    this.onChange(this.valueKey ? this.multiItems.map((item) => item.option[this.valueKey]) : this.value);\r\n    this.valueChange.emit(this.multiItems);\r\n  }\r\n\r\n  trackByFn(index, item) {\r\n    return index;\r\n  }\r\n\r\n  trackByOptionPointer(index, item) {\r\n    return item.option;\r\n  }\r\n\r\n  loadMoreEvent(event) {\r\n    this.showLoading = true;\r\n    this.loadMore.emit({ instance: this, event: event });\r\n  }\r\n\r\n  loadFinish() {\r\n    this.showLoading = false;\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  loadStart() {\r\n    this.showLoading = true;\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  onPositionChange(position: ConnectedOverlayPositionChange) {\r\n    this.menuPosition = position.connectionPair.originY;\r\n  }\r\n\r\n  animationEnd($event) {\r\n    if (!this.isOpen && this.selectMenuElement && this.showAnimation) {\r\n      const targetElement = this.selectMenuElement.nativeElement;\r\n      this.startAnimation = false;\r\n      setTimeout(() => {\r\n        // 动画会覆盖导致display还是block， 所以要等动画覆盖完\r\n        this.renderer.setStyle(targetElement, 'display', 'none');\r\n      });\r\n    }\r\n  }\r\n\r\n  setAllChecked() {\r\n    this.allChecked = false;\r\n    this.halfChecked = false;\r\n    if (!this.showSelectAll) {\r\n      return;\r\n    }\r\n    if (!this.multiItems || this.multiItems.length === 0) {\r\n      return;\r\n    }\r\n    // 从当前下拉选项中用 id 排除已选中选项\r\n    const result = differenceBy(this.availableOptions, this.multiItems, 'id');\r\n    if (result.length === 0) {\r\n      this.allChecked = true;\r\n    } else if (result.length === this.availableOptions.length) {\r\n      this.allChecked = false;\r\n    } else {\r\n      this.halfChecked = true;\r\n    }\r\n  }\r\n\r\n  public forceSearchNext() {\r\n    this.sourceSubscription.next(this.filter);\r\n  }\r\n\r\n  valueClear($event) {\r\n    $event.stopPropagation();\r\n    if (this.multiple) {\r\n      this.multiItems = [];\r\n      this.value = [];\r\n      this.setAllChecked();\r\n    } else {\r\n      this.value = undefined;\r\n    }\r\n    this.resetStatus();\r\n    this.onChange(this.value);\r\n    this.valueChange.emit(this.value);\r\n  }\r\n\r\n  resetStatus() {\r\n    this.writeIntoInput(this.value);\r\n    if (this.availableOptions && this.availableOptions[this.activeIndex]) {\r\n      this.availableOptions[this.activeIndex].isChecked = false;\r\n    }\r\n    this.activeIndex = -1;\r\n    this.selectIndex = -1;\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  clearText() {\r\n    this.filter = '';\r\n    this.forceSearchNext();\r\n  }\r\n}\r\n","<div\n  class=\"devui-drop{{ popDirection === 'bottom' ? 'down' : 'up' }} \n  {{ size ? 'devui-select-' + size : '' }} \n  devui-dropdown-origin\"\n  [ngClass]=\"{\n    'devui-select-underlined-border': overview === 'underlined',\n    disabled: disabled,\n    open: isOpen,\n    'devui-gray-style': overview !== 'underlined' && styleType === 'gray'\n  }\"\n  #selectWrapper\n>\n  <div\n    #selectBox\n    class=\"devui-form-group devui-has-feedback\"\n    (click)=\"toggle()\"\n    (focus)=\"autoToggle($event)\"\n    [tabindex]=\"0\"\n    (keydown.esc)=\"onEscKeyup($event)\"\n    (keydown.ArrowUp)=\"handleKeyUpEvent($event)\"\n    (keydown.ArrowDown)=\"handleKeyDownEvent($event)\"\n    (keydown.enter)=\"handleKeyEnterEvent($event)\"\n  >\n    <input\n      #selectInput\n      [placeholder]=\"placeholder\"\n      [disabled]=\"disabled\"\n      [ngClass]=\"[size ? 'devui-select-input-' + size : '']\"\n      type=\"text\"\n      class=\"devui-form-control devui-select-input devui-input\"\n      [minLength]=\"0\"\n      autocomplete=\"off\"\n      [tabindex]=\"-1\"\n      [readonly]=\"readonly\"\n      [value]=\"_inputValue || ''\"\n      *ngIf=\"\n        !(extraConfig?.labelization?.enable && multiple) &&\n        !(!extraConfig?.labelization?.enable && extraConfig?.selectedItemWithTemplate?.enable && (inputItemTemplate || itemTemplate))\n      \"\n    />\n    <div\n      #selectInputWithTemplate\n      class=\"devui-select-list-wrapper devui-form-control {{ size ? 'devui-select-input-' + size : '' }}\"\n      *ngIf=\"extraConfig?.selectedItemWithTemplate?.enable && (inputItemTemplate || itemTemplate) && !extraConfig?.labelization?.enable\"\n    >\n      <div class=\"devui-select-placeholder\" *ngIf=\"!_inputValue\">\n        {{ placeholder }}\n      </div>\n      <div class=\"devui-select-selected-item-with-template\" *ngIf=\"_inputValue\">\n        <ng-template\n          [ngTemplateOutlet]=\"inputItemTemplate || itemTemplate\"\n          [ngTemplateOutletContext]=\"{\n            option: value,\n            filterKey: filterKey,\n            position: 'result',\n            inputValue: _inputValue\n          }\"\n        >\n        </ng-template>\n      </div>\n    </div>\n\n    <div\n      #selectInputWithLabel\n      class=\"devui-select-list-wrapper devui-form-control {{ size ? 'devui-select-input-' + size : '' }}\"\n      *ngIf=\"extraConfig?.labelization?.enable && multiple\"\n    >\n      <div class=\"devui-select-placeholder\" *ngIf=\"multiItems.length === 0\">\n        {{ placeholder }}\n      </div>\n      <ul\n        *ngIf=\"multiItems.length > 0\"\n        class=\"devui-select-tag-list devui-scrollbar {{ extraConfig?.labelization?.overflow }}\"\n        [style.maxHeight]=\"extraConfig?.labelization?.containerMaxHeight || extraConfig?.labelization?.containnerMaxHeight\"\n      >\n        <li\n          class=\"devui-select-tag-item\"\n          *ngFor=\"let item of showMoreTags ? [multiItems[0]] : multiItems; let index = index; trackBy: trackByOptionPointer\"\n          [style.maxWidth]=\"extraConfig?.labelization?.labelMaxWidth\"\n          [ngClass]=\"{\n            disabled: optionDisabledKey && item.option[optionDisabledKey]\n          }\"\n        >\n          <d-tag\n            [deletable]=\"!(disabled || (optionDisabledKey && item.option[optionDisabledKey]))\"\n            [maxWidth]=\"'100%'\"\n            [tag]=\"valueParser(item.option)\"\n            (tagDelete)=\"removeItem(item, $event?.event)\"\n          ></d-tag>\n        </li>\n        <li *ngIf=\"showMoreTags\" class=\"devui-select-tag-item\">\n          <d-tag [tag]=\"moreTagsNum\"></d-tag>\n        </li>\n      </ul>\n    </div>\n\n    <span class=\"devui-form-control-feedback devui-input-group-addon\" [ngClass]=\"{ 'devui-clear-icon-show': isClearIconShow }\">\n      <span class=\"devui-select-clear-icon\" (mousedown)=\"$event.preventDefault()\" (click)=\"valueClear($event)\">\n        <svg viewBox=\"0 0 16 16\">\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <path\n              d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\n              fill-rule=\"nonzero\"\n            ></path>\n          </g>\n        </svg>\n      </span>\n      <span class=\"devui-select-chevron-icon\" [ngClass]=\"{ 'devui-select-chevron-icon-animation': showAnimation }\">\n        <svg\n          width=\"16px\"\n          height=\"16px\"\n          viewBox=\"0 0 16 16\"\n          version=\"1.1\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        >\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n            <path\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\"\n            ></path>\n          </g>\n        </svg>\n      </span>\n    </span>\n  </div>\n  <ng-container *ngIf=\"appendToBody\">\n    <ng-template\n      cdk-connected-overlay\n      [cdkConnectedOverlayOrigin]=\"cdkConnectedOverlayOrigin\"\n      [cdkConnectedOverlayWidth]=\"dropDownWidth\"\n      [cdkConnectedOverlayOpen]=\"isOpen\"\n      [cdkConnectedOverlayPositions]=\"overlayPositions\"\n      [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n      (positionChange)=\"onPositionChange($event)\"\n      (backdropClick)=\"isOpen = false\"\n      (detach)=\"isOpen && (isOpen = false)\"\n    >\n      <ng-template [ngTemplateOutlet]=\"selectDropdownTpl\"></ng-template>\n    </ng-template>\n  </ng-container>\n  <ng-container *ngIf=\"!appendToBody\">\n    <ng-template [ngTemplateOutlet]=\"selectDropdownTpl\"></ng-template>\n  </ng-container>\n</div>\n\n<!--下拉模板-->\n<ng-template #selectDropdownTpl>\n  <div\n    #selectMenu\n    class=\"devui-dropdown-menu\"\n    [ngClass]=\"{\n      'devui-dropdown-menu-cdk': appendToBody,\n      'devui-custom-right': customViewTemplate && customViewDirection === 'right',\n      'devui-custom-left': customViewTemplate && customViewDirection === 'left',\n      'devui-custom-top': customViewTemplate && customViewDirection === 'top',\n      'devui-dropdown-menu-multiple': multiple\n    }\"\n    [@fadeInOut]=\"isOpen && startAnimation ? (appendToBody ? menuPosition : popDirection) : 'void'\"\n    (@fadeInOut.done)=\"animationEnd($event)\"\n    [@.disabled]=\"!showAnimation\"\n  >\n    <ul\n      dLoading\n      [showLoading]=\"showLoading\"\n      positionType=\"relative\"\n      [message]=\"i18nCommonText?.loading\"\n      [loadingTemplateRef]=\"loadingTemplateRef\"\n      [backdrop]=\"true\"\n      [class.limit-max-height]=\"limitMaxHeight\"\n      class=\"devui-dropdown-menu-wrap {{ size ? 'devui-dropdown-menu-' + size : '' }}\"\n      (click)=\"$event.stopPropagation(); $event.preventDefault()\"\n    >\n      <li [style.display]=\"isSearch ? 'block' : 'none'\">\n        <div class=\"devui-form-group devui-has-feedback\" [style.margin]=\"'0'\">\n          <input\n            #filterInput\n            [ngClass]=\"[size ? 'devui-select-input-' + size : '', filter ? 'devui-search-filter' : '']\"\n            name=\"select\"\n            type=\"text\"\n            [(ngModel)]=\"filter\"\n            autocomplete=\"off\"\n            [placeholder]=\"searchPlaceholder\"\n            class=\"devui-form-control devui-select-search devui-select-input\"\n            (keydown.ArrowUp)=\"handleKeyUpEvent($event)\"\n            (keydown.ArrowDown)=\"handleKeyDownEvent($event)\"\n            (keydown.enter)=\"handleKeyEnterEvent($event, true)\"\n            (keydown.esc)=\"onEscKeyup($event)\"\n          />\n          <span class=\"devui-form-control-feedback\">\n            <svg\n              width=\"14px\"\n              height=\"14px\"\n              viewBox=\"0 0 14 14\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n              class=\"svg-icon-search\"\n              style=\"vertical-align: middle\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-1.000000, -1.000000)\">\n                  <path\n                    d=\"M7.30811922,1 C10.7919973,1 13.6162384,3.82424117 13.6162384,7.30811922 C13.6162384,8.72507634 13.149053,10.0329164 12.3603151,11.0860065 L14.7360564,13.4616238 C15.0879812,13.8135487 15.0879812,14.3841316 14.7360564,14.7360564 C14.3841316,15.0879812 13.8135487,15.0879812 13.4616238,14.7360564 L11.0860065,12.3603151 C10.0329164,13.149053 8.72507634,13.6162384 7.30811922,13.6162384 C3.82424117,13.6162384 1,10.7919973 1,7.30811922 C1,3.82424117 3.82424117,1 7.30811922,1 Z M7.31,2.51 C4.6590332,2.51 2.51,4.6590332 2.51,7.31 C2.51,9.9609668 4.6590332,12.11 7.31,12.11 C9.9609668,12.11 12.11,9.9609668 12.11,7.31 C12.11,4.6590332 9.9609668,2.51 7.31,2.51 Z\"\n                    fill-rule=\"nonzero\"\n                  ></path>\n                </g>\n              </g>\n            </svg>\n          </span>\n          <span\n            #clearIcon\n            class=\"devui-form-control-feedback devui-search-clear\"\n            [ngClass]=\"size ? 'devui-search-clear-' + size : ''\"\n            (click)=\"clearText()\"\n            *ngIf=\"filter\"\n          >\n            <svg\n              width=\"16px\"\n              height=\"16px\"\n              viewBox=\"0 0 16 16\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <path\n                  d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\n                  fill-rule=\"nonzero\"\n                ></path>\n              </g>\n            </svg>\n          </span>\n        </div>\n      </li>\n      <ul\n        *ngIf=\"!virtualScroll || enableLazyLoad; else scrollViewTpl\"\n        class=\"devui-select-list-unstyled devui-scrollbar\"\n        dLazyLoad\n        [enableLazyLoad]=\"enableLazyLoad\"\n        (loadMore)=\"loadMoreEvent($event)\"\n        [ngStyle]=\"{ 'max-height': scrollHight, width: '100%' }\"\n        #dropdownUl\n      >\n        <ng-template [ngTemplateOutlet]=\"selectAllTpl\"></ng-template>\n        <ng-container *ngFor=\"let item of availableOptions; let index = index; trackBy: trackByFn\">\n          <ng-template [ngTemplateOutlet]=\"dropdownItemTpl\" [ngTemplateOutletContext]=\"{ item: item, index: index }\"></ng-template>\n        </ng-container>\n      </ul>\n      <div *ngIf=\"availableOptions?.length === 0 && !noResultItemTemplate && !this.showLoading\" class=\"devui-no-data-tip\">\n        <span>{{ filter ? i18nCommonText?.noRecordsFound : i18nCommonText?.noData }}</span>\n      </div>\n      <div *ngIf=\"availableOptions?.length === 0 && noResultItemTemplate && !this.showLoading\" class=\"devui-no-data-tip\">\n        <ng-template [ngTemplateOutlet]=\"noResultItemTemplate\" [ngTemplateOutletContext]=\"{ options: options }\"></ng-template>\n      </div>\n    </ul>\n    <ng-container *ngIf=\"customViewTemplate\">\n      <div class=\"devui-select-custom-area\">\n        <ng-template [ngTemplateOutlet]=\"customViewTemplate\" [ngTemplateOutletContext]=\"{ $implicit: this, choose: choose }\"></ng-template>\n      </div>\n    </ng-container>\n  </div>\n</ng-template>\n\n<!--虚拟滚动模板-->\n<ng-template #scrollViewTpl>\n  <cdk-virtual-scroll-viewport\n    *ngIf=\"availableOptions?.length > 0\"\n    [ngStyle]=\"{\n      height: getVirtualScrollHeight(availableOptions?.length, size),\n      width: '100%',\n      'max-height': scrollHight,\n      'min-height': availableOptions?.length === 0 ? '46px' : showSelectAll ? '100px' : '60px'\n    }\"\n    [itemSize]=\"realVirtualScrollItemSize\"\n    [minBufferPx]=\"minBuffer\"\n    [maxBufferPx]=\"maxBuffer\"\n    class=\"viewport-wrapper devui-select-list-unstyled devui-scrollbar\"\n    #dropdownUl\n  >\n    <ng-template [ngTemplateOutlet]=\"selectAllTpl\"></ng-template>\n    <ng-container *cdkVirtualFor=\"let item of availableOptions; let index = index; trackBy: trackByFn\">\n      <ng-template [ngTemplateOutlet]=\"dropdownItemTpl\" [ngTemplateOutletContext]=\"{ item: item, index: index }\"></ng-template>\n    </ng-container>\n  </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<!--全选模板-->\n<ng-template #selectAllTpl>\n  <li class=\"devui-dropdown-item\" *ngIf=\"showSelectAll\" (click)=\"selectAll()\">\n    <span>\n      <d-checkbox [label]=\"i18nCommonText.checkAll\" [isShowTitle]=\"false\" [halfchecked]=\"halfChecked\" [(ngModel)]=\"allChecked\"></d-checkbox>\n    </span>\n  </li>\n</ng-template>\n\n<!--下拉Item模板-->\n<ng-template #dropdownItemTpl let-item=\"item\" let-index=\"index\">\n  <li\n    [title]=\"!showItemTitle && (inputItemTemplate || itemTemplate) ? '' : formatter(item.option)\"\n    [ngClass]=\"[\n      'devui-dropdown-item',\n      item.isChecked ? highlightItemClass : '',\n      selectIndex === index && item.id !== activeIndex ? 'selected' : '',\n      optionDisabledKey && item.option[optionDisabledKey] ? 'disabled' : ''\n    ]\"\n    (click)=\"choose(item.option, item.id, $event)\"\n  >\n    <ng-template\n      [ngTemplateOutlet]=\"inputItemTemplate || itemTemplate || (multiple ? checkBoxItem : defaultItem)\"\n      [ngTemplateOutletContext]=\"\n        multiple\n          ? {\n              option: item.option,\n              checked: item.isChecked,\n              filterKey: filterKey,\n              position: 'list',\n              template: checkBoxItem,\n              index: index\n            }\n          : {\n              option: item.option,\n              filterKey: filterKey,\n              position: 'list',\n              template: defaultItem\n            }\n      \"\n    >\n    </ng-template>\n  </li>\n</ng-template>\n\n<ng-template #defaultItem let-option=\"option\">\n  {{ formatter(option) }}\n</ng-template>\n\n<ng-template #checkBoxItem let-option=\"option\" let-checked=\"checked\" let-index=\"index\">\n  <d-checkbox\n    [color]=\"color\"\n    [label]=\"formatter(option)\"\n    [cssClass]=\"'devui-select-checkbox'\"\n    [ngModel]=\"checked\"\n    [disabled]=\"option[optionDisabledKey]\"\n    [beforeChange]=\"beforeChange | dBeforeCheckboxChangePipe : option : index\"\n  >\n  </d-checkbox>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CheckBoxModule } from 'ng-devui/checkbox';\nimport { LoadingModule } from 'ng-devui/loading';\nimport { TagsModule } from 'ng-devui/tags';\nimport { LazyLoadModule } from 'ng-devui/utils';\nimport { WindowRefModule } from 'ng-devui/window-ref';\nimport { BeforeCheckboxChangePipe } from './before-checkbox-change.pipe';\nimport { SelectComponent } from './select.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    ScrollingModule,\n    CheckBoxModule,\n    LoadingModule,\n    LazyLoadModule,\n    WindowRefModule,\n    TagsModule,\n  ],\n  exports: [SelectComponent],\n  declarations: [SelectComponent, BeforeCheckboxChangePipe],\n})\nexport class SelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i11.BeforeCheckboxChangePipe"],"mappings":"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"}