{"version":3,"file":"ng-devui-multi-auto-complete.mjs","sources":["../../devui/multi-auto-complete/multi-auto-complete.component.ts","../../devui/multi-auto-complete/multi-auto-complete.component.html","../../devui/multi-auto-complete/multi-auto-complete.module.ts","../../devui/multi-auto-complete/ng-devui-multi-auto-complete.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ComponentRef,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\r\n  Input,\r\n  OnChanges,\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 { AutoCompleteDirective, AutoCompletePopupComponent } from 'ng-devui/auto-complete';\r\nimport { addClassToOrigin, AppendToBodyDirection, DevConfigService, removeClassFromOrigin, WithConfig } from 'ng-devui/utils';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'd-multi-auto-complete',\r\n  templateUrl: './multi-auto-complete.component.html',\r\n  styleUrls: ['multi-auto-complete.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => MultiAutoCompleteComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class MultiAutoCompleteComponent implements OnInit, OnChanges, ControlValueAccessor {\r\n  static ID_SEED = 0;\r\n  @Input() appendToBody = false;\r\n  @Input() appendToBodyDirections: Array<AppendToBodyDirection | ConnectedPosition> = ['rightDown', 'leftDown', 'rightUp', 'leftUp'];\r\n  /**\r\n   * @deprecated\r\n   */\r\n  @Input() cssClass: string;\r\n  /**\r\n   * @deprecated\r\n   * overview: border none multiline single\r\n   */\r\n  @Input() overview = 'border';\r\n  @Input() tipsText: string; // 提示文字\r\n  @Input() placeholder = ''; // placeholder\r\n  @Input() disabled = false;\r\n  @Input() retainInputValue = false;\r\n  @Input() source: any[];\r\n  @Input() latestSource: any[]; // 最近输入\r\n  @Input() disabledKey: string; // 单个选项禁用\r\n  @Input() width: number;\r\n  @Input() itemTemplate: TemplateRef<any>;\r\n  @Input() noResultItemTemplate: TemplateRef<any>;\r\n  @Input() delay: number;\r\n  @Input() searchFn: (term: string) => Observable<any[]>;\r\n  @Input() formatter: (item: any) => string;\r\n  @Input() valueParser: (item: any) => any;\r\n  @Input() @WithConfig() showAnimation = true;\r\n  @Input() @WithConfig() showGlowStyle = true;\r\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\r\n    return this.showGlowStyle;\r\n  }\r\n  @Output() autoSubmit = new EventEmitter<any>(); // 失焦自动提交\r\n  @ViewChild('multiAutoCompleteInput') multiAutoCompleteInputElement: ElementRef;\r\n  @ViewChild('multiAutoCompleteWrapper') multiAutoCompleteWrapperElement: ElementRef;\r\n  @ViewChild(AutoCompleteDirective) autoCompleteDirective: AutoCompleteDirective;\r\n  multiItems: any[] = [];\r\n  inputValue: any;\r\n  multipleLabelClassNameSuffix: string = this.overview;\r\n  inputEdit = false;\r\n  multipleLabelClassNameConfig: any = {\r\n    border: {\r\n      focus: 'border',\r\n      blur: 'border',\r\n    },\r\n    none: {\r\n      focus: 'border',\r\n      blur: 'none',\r\n    },\r\n    multiline: {\r\n      focus: 'multiline',\r\n      blur: 'multiline',\r\n    },\r\n    single: {\r\n      focus: 'single-focus',\r\n      blur: 'single',\r\n    },\r\n  };\r\n  id: number;\r\n  clonePlaceholder: string = this.placeholder;\r\n  get placeholderView() {\r\n    if (this.multiItems.length > 0) {\r\n      return '';\r\n    } else {\r\n      return this.placeholder;\r\n    }\r\n  }\r\n\r\n  private popupRef: ComponentRef<AutoCompletePopupComponent>;\r\n  private value: any;\r\n  private placement = 'bottom-left';\r\n\r\n  private onChange = (_: any) => null;\r\n  private onTouched = () => null;\r\n\r\n  constructor(private changeDetectorRef: ChangeDetectorRef, private devConfigService: DevConfigService) {\r\n    this.formatter = (item) => (item ? item.label || item.toString() : '');\r\n    this.valueParser = (item) => item;\r\n    this.id = MultiAutoCompleteComponent.ID_SEED++;\r\n  }\r\n\r\n  writeValue(obj: any): void {\r\n    const value = obj || [];\r\n    this.multiItems = value;\r\n    if (this.overview === 'single') {\r\n      this.inputEdit = this.multiItems.length === 0;\r\n    }\r\n    this.setSinglePlaceholder();\r\n    this.changeDetectorRef.markForCheck();\r\n  }\r\n\r\n  ngOnInit() {\r\n    if (this.source && !this.searchFn) {\r\n      this.searchFn = (term) => {\r\n        return of(\r\n          this.source.filter((lang) => this.multiItems.indexOf(lang) === -1 && lang.toLowerCase().indexOf(term.toLowerCase()) !== -1)\r\n        );\r\n      };\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    const { overview, placeholder } = changes;\r\n    if (overview) {\r\n      this.multipleLabelClassNameSuffix = overview.currentValue;\r\n    }\r\n    if (placeholder) {\r\n      this.clonePlaceholder = placeholder.currentValue;\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.onTouched = fn;\r\n  }\r\n\r\n  singleClick($event: any) {\r\n    this.inputEdit = true;\r\n  }\r\n\r\n  onMultipleSearch(item?: any) {\r\n    if (this.overview !== 'single' && item) {\r\n      let inArray = false;\r\n      for (let i = 0; i < this.multiItems.length; i++) {\r\n        if (item.label) {\r\n          if (item.label === this.multiItems[i].label) {\r\n            inArray = true;\r\n            break;\r\n          }\r\n        } else {\r\n          if (item === this.multiItems[i]) {\r\n            inArray = true;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n      if (!inArray) {\r\n        this.multiItems.push(item);\r\n      } else {\r\n        this.multiItems = this.multiItems.filter((data) => {\r\n          if (data.label) {\r\n            return data.label !== item.label;\r\n          } else {\r\n            return data !== item;\r\n          }\r\n        });\r\n      }\r\n    } else if (this.overview === 'single' && item) {\r\n      this.multiItems = [];\r\n      this.multiItems.push(item);\r\n      this.inputEdit = false;\r\n      this.multipleLabelClassNameSuffix = this.multipleLabelClassNameConfig[this.overview].blur;\r\n    }\r\n    this.setSinglePlaceholder();\r\n    this.autoSubmit.emit(this.multiItems);\r\n    this.onChange(this.multiItems);\r\n    this.clearInputValue();\r\n  }\r\n\r\n  public removeLabel(label: any) {\r\n    if (this.multiItems.indexOf(label) !== -1) {\r\n      this.multiItems = this.multiItems.filter((item) => item !== label);\r\n    }\r\n    this.setSinglePlaceholder();\r\n    this.autoSubmit.emit(this.multiItems);\r\n    this.onChange(this.multiItems);\r\n  }\r\n\r\n  getInputFocusFlag($event: any) {\r\n    this.inputEdit = this.multiItems.length === 0 || $event.focus;\r\n    this.popupRef = $event.popupRef;\r\n    this.setSinglePlaceholder();\r\n    if ($event.focus) {\r\n      this.multipleLabelClassNameSuffix = this.multipleLabelClassNameConfig[this.overview].focus;\r\n      setTimeout(() => {\r\n        // 这里需要等待一会才能聚焦\r\n        this.multiAutoCompleteInputElement.nativeElement.focus();\r\n      }, 0);\r\n    } else {\r\n      this.multipleLabelClassNameSuffix = this.multipleLabelClassNameConfig[this.overview].blur;\r\n      this.clearInputValue();\r\n      this.autoSubmit.emit(this.multiItems);\r\n    }\r\n  }\r\n\r\n  clearInputValue() {\r\n    if (!this.retainInputValue) {\r\n      this.inputValue = null;\r\n      this.multiAutoCompleteInputElement.nativeElement.value = '';\r\n    }\r\n  }\r\n\r\n  onBackspaceKeyUp($event: any, inputValue: any) {\r\n    if (this.multiItems.length > 0 && !inputValue) {\r\n      this.multiItems.pop();\r\n    }\r\n    this.setSinglePlaceholder();\r\n    this.autoSubmit.emit(this.multiItems);\r\n    this.onChange(this.multiItems);\r\n  }\r\n\r\n  setSinglePlaceholder() {\r\n    if (this.overview === 'single') {\r\n      if (this.multiItems && this.multiItems.length > 0) {\r\n        this.placeholder = '';\r\n      } else {\r\n        this.placeholder = this.clonePlaceholder;\r\n      }\r\n    }\r\n  }\r\n\r\n  changePopUp(open) {\r\n    if (open) {\r\n      addClassToOrigin(this.multiAutoCompleteWrapperElement);\r\n    } else {\r\n      removeClassFromOrigin(this.multiAutoCompleteWrapperElement);\r\n    }\r\n  }\r\n\r\n  inputBlur() {\r\n    this.onTouched();\r\n  }\r\n}\r\n","<div class=\"form-group multi-auto-complete\">\n  <label\n    for=\"multiple-label-auto-complete-{{ id }}\"\n    class=\"multiple-label-auto-complete multiple-label-auto-complete-{{ multipleLabelClassNameSuffix }}\"\n    [ngClass]=\"{ 'multiple-label-auto-complete-disabled': disabled }\"\n  >\n    <ul *ngIf=\"overview !== 'single'\" class=\"devui-dropdown-origin\" #multiAutoCompleteWrapper>\n      <li *ngFor=\"let item of multiItems\">\n        <ng-template\n          [ngTemplateOutlet]=\"disabled || (overview === 'none' && !inputEdit) ? transparentTemplate : defaultTemplate\"\n          [ngTemplateOutletContext]=\"{\n            item: item,\n            formatter: formatter,\n            parent: multiItems\n          }\"\n        ></ng-template>\n      </li>\n      <li *ngIf=\"!disabled\">\n        <input\n          #multiAutoCompleteInput\n          id=\"multiple-label-auto-complete-{{ id }}\"\n          type=\"text\"\n          name=\"autoCompleteControl\"\n          class=\"auto-complete-control\"\n          [placeholder]=\"placeholderView\"\n          [tipsText]=\"tipsText\"\n          [latestSource]=\"latestSource\"\n          (selectValue)=\"onMultipleSearch($event)\"\n          (transInputFocusEmit)=\"getInputFocusFlag($event)\"\n          (keydown.backspace)=\"onBackspaceKeyUp($event, inputValue)\"\n          [formatter]=\"formatter\"\n          [valueParser]=\"valueParser\"\n          [itemTemplate]=\"itemTemplate\"\n          [noResultItemTemplate]=\"noResultItemTemplate\"\n          [cssClass]=\"cssClass\"\n          [overview]=\"overview\"\n          [disabled]=\"disabled\"\n          [(ngModel)]=\"inputValue\"\n          [delay]=\"delay\"\n          [dAutoCompleteWidth]=\"width\"\n          dAutoComplete\n          [retainInputValue]=\"retainInputValue\"\n          [showAnimation]=\"showAnimation\"\n          [searchFn]=\"searchFn\"\n          [appendToBody]=\"appendToBody\"\n          [appendToBodyDirections]=\"appendToBodyDirections\"\n          [cdkOverlayOffsetY]=\"3\"\n          [disabledKey]=\"disabledKey\"\n          (blur)=\"inputBlur()\"\n          (changeDropDownStatus)=\"changePopUp($event)\"\n        />\n      </li>\n    </ul>\n\n    <!--单选模板-->\n    <ul *ngIf=\"overview === 'single'\" title=\"{{ formatter(multiItems[0]) }}\" (click)=\"singleClick($event)\">\n      <li *ngFor=\"let item of multiItems\">\n        <ng-template\n          [ngTemplateOutlet]=\"transparentTemplate\"\n          [ngTemplateOutletContext]=\"{\n            item: item,\n            formatter: formatter,\n            parent: multiItems\n          }\"\n        ></ng-template>\n      </li>\n      <li *ngIf=\"!disabled && inputEdit\">\n        <input\n          #multiAutoCompleteInput\n          id=\"multiple-label-auto-complete-{{ id }}\"\n          type=\"text\"\n          name=\"autoCompleteControl\"\n          class=\"auto-complete-control\"\n          [placeholder]=\"placeholder\"\n          [tipsText]=\"tipsText\"\n          [latestSource]=\"latestSource\"\n          (selectValue)=\"onMultipleSearch($event)\"\n          (transInputFocusEmit)=\"getInputFocusFlag($event)\"\n          (keydown.backspace)=\"onBackspaceKeyUp($event, inputValue)\"\n          [formatter]=\"formatter\"\n          [valueParser]=\"valueParser\"\n          [itemTemplate]=\"itemTemplate\"\n          [noResultItemTemplate]=\"noResultItemTemplate\"\n          [cssClass]=\"cssClass\"\n          [overview]=\"overview\"\n          [disabled]=\"disabled\"\n          [(ngModel)]=\"inputValue\"\n          [delay]=\"delay\"\n          [dAutoCompleteWidth]=\"width\"\n          dAutoComplete\n          [searchFn]=\"searchFn\"\n          (blur)=\"inputBlur()\"\n          (changeDropDownStatus)=\"changePopUp($event)\"\n        />\n      </li>\n    </ul>\n  </label>\n</div>\n\n<!--黄底模板-->\n<ng-template #defaultTemplate let-item=\"item\" let-formatter=\"formatter\">\n  <d-tag [deletable]=\"true\" [tag]=\"formatter(item)\" (tagDelete)=\"removeLabel(item)\"></d-tag>\n</ng-template>\n\n<!--无底色模板-->\n<ng-template #transparentTemplate let-item=\"item\" let-formatter=\"formatter\" let-parent=\"parent\">\n  <d-tag [tag]=\"formatter(item)\"></d-tag>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AutoCompleteModule } from 'ng-devui/auto-complete';\nimport { TagsModule } from 'ng-devui/tags';\nimport { MultiAutoCompleteComponent } from './multi-auto-complete.component';\n\n@NgModule({\n  imports: [CommonModule, AutoCompleteModule, FormsModule, TagsModule],\n  exports: [MultiAutoCompleteComponent],\n  declarations: [MultiAutoCompleteComponent],\n  providers: [],\n})\nexport class MultiAutoCompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}