UNPKG

ng-devui

Version:

DevUI components based on Angular

288 lines 63 kB
import { __decorate, __metadata } from "tslib"; import { ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, Output, TemplateRef, ViewChild, } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { AutoCompleteDirective } from 'ng-devui/auto-complete'; import { addClassToOrigin, DevConfigService, removeClassFromOrigin, WithConfig } from 'ng-devui/utils'; import { of } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "ng-devui/utils"; import * as i2 from "@angular/common"; import * as i3 from "ng-devui/auto-complete"; import * as i4 from "@angular/forms"; import * as i5 from "ng-devui/tags"; export class MultiAutoCompleteComponent { static { this.ID_SEED = 0; } get hasGlowStyle() { return this.showGlowStyle; } get placeholderView() { if (this.multiItems.length > 0) { return ''; } else { return this.placeholder; } } constructor(changeDetectorRef, devConfigService) { this.changeDetectorRef = changeDetectorRef; this.devConfigService = devConfigService; this.appendToBody = false; this.appendToBodyDirections = ['rightDown', 'leftDown', 'rightUp', 'leftUp']; /** * @deprecated * overview: border none multiline single */ this.overview = 'border'; this.placeholder = ''; // placeholder this.disabled = false; this.retainInputValue = false; this.showAnimation = true; this.showGlowStyle = true; this.autoSubmit = new EventEmitter(); // 失焦自动提交 this.multiItems = []; this.multipleLabelClassNameSuffix = this.overview; this.inputEdit = false; this.multipleLabelClassNameConfig = { border: { focus: 'border', blur: 'border', }, none: { focus: 'border', blur: 'none', }, multiline: { focus: 'multiline', blur: 'multiline', }, single: { focus: 'single-focus', blur: 'single', }, }; this.clonePlaceholder = this.placeholder; this.placement = 'bottom-left'; this.onChange = (_) => null; this.onTouched = () => null; this.formatter = (item) => (item ? item.label || item.toString() : ''); this.valueParser = (item) => item; this.id = MultiAutoCompleteComponent.ID_SEED++; } writeValue(obj) { const value = obj || []; this.multiItems = value; if (this.overview === 'single') { this.inputEdit = this.multiItems.length === 0; } this.setSinglePlaceholder(); this.changeDetectorRef.markForCheck(); } ngOnInit() { if (this.source && !this.searchFn) { this.searchFn = (term) => { return of(this.source.filter((lang) => this.multiItems.indexOf(lang) === -1 && lang.toLowerCase().indexOf(term.toLowerCase()) !== -1)); }; } } ngOnChanges(changes) { const { overview, placeholder } = changes; if (overview) { this.multipleLabelClassNameSuffix = overview.currentValue; } if (placeholder) { this.clonePlaceholder = placeholder.currentValue; } } registerOnChange(fn) { this.onChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } singleClick($event) { this.inputEdit = true; } onMultipleSearch(item) { if (this.overview !== 'single' && item) { let inArray = false; for (let i = 0; i < this.multiItems.length; i++) { if (item.label) { if (item.label === this.multiItems[i].label) { inArray = true; break; } } else { if (item === this.multiItems[i]) { inArray = true; break; } } } if (!inArray) { this.multiItems.push(item); } else { this.multiItems = this.multiItems.filter((data) => { if (data.label) { return data.label !== item.label; } else { return data !== item; } }); } } else if (this.overview === 'single' && item) { this.multiItems = []; this.multiItems.push(item); this.inputEdit = false; this.multipleLabelClassNameSuffix = this.multipleLabelClassNameConfig[this.overview].blur; } this.setSinglePlaceholder(); this.autoSubmit.emit(this.multiItems); this.onChange(this.multiItems); this.clearInputValue(); } removeLabel(label) { if (this.multiItems.indexOf(label) !== -1) { this.multiItems = this.multiItems.filter((item) => item !== label); } this.setSinglePlaceholder(); this.autoSubmit.emit(this.multiItems); this.onChange(this.multiItems); } getInputFocusFlag($event) { this.inputEdit = this.multiItems.length === 0 || $event.focus; this.popupRef = $event.popupRef; this.setSinglePlaceholder(); if ($event.focus) { this.multipleLabelClassNameSuffix = this.multipleLabelClassNameConfig[this.overview].focus; setTimeout(() => { // 这里需要等待一会才能聚焦 this.multiAutoCompleteInputElement.nativeElement.focus(); }, 0); } else { this.multipleLabelClassNameSuffix = this.multipleLabelClassNameConfig[this.overview].blur; this.clearInputValue(); this.autoSubmit.emit(this.multiItems); } } clearInputValue() { if (!this.retainInputValue) { this.inputValue = null; this.multiAutoCompleteInputElement.nativeElement.value = ''; } } onBackspaceKeyUp($event, inputValue) { if (this.multiItems.length > 0 && !inputValue) { this.multiItems.pop(); } this.setSinglePlaceholder(); this.autoSubmit.emit(this.multiItems); this.onChange(this.multiItems); } setSinglePlaceholder() { if (this.overview === 'single') { if (this.multiItems && this.multiItems.length > 0) { this.placeholder = ''; } else { this.placeholder = this.clonePlaceholder; } } } changePopUp(open) { if (open) { addClassToOrigin(this.multiAutoCompleteWrapperElement); } else { removeClassFromOrigin(this.multiAutoCompleteWrapperElement); } } inputBlur() { this.onTouched(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiAutoCompleteComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.DevConfigService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultiAutoCompleteComponent, selector: "d-multi-auto-complete", inputs: { appendToBody: "appendToBody", appendToBodyDirections: "appendToBodyDirections", cssClass: "cssClass", overview: "overview", tipsText: "tipsText", placeholder: "placeholder", disabled: "disabled", retainInputValue: "retainInputValue", source: "source", latestSource: "latestSource", disabledKey: "disabledKey", width: "width", itemTemplate: "itemTemplate", noResultItemTemplate: "noResultItemTemplate", delay: "delay", searchFn: "searchFn", formatter: "formatter", valueParser: "valueParser", showAnimation: "showAnimation", showGlowStyle: "showGlowStyle" }, outputs: { autoSubmit: "autoSubmit" }, host: { properties: { "class.devui-glow-style": "this.hasGlowStyle" } }, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MultiAutoCompleteComponent), multi: true, }, ], viewQueries: [{ propertyName: "multiAutoCompleteInputElement", first: true, predicate: ["multiAutoCompleteInput"], descendants: true }, { propertyName: "multiAutoCompleteWrapperElement", first: true, predicate: ["multiAutoCompleteWrapper"], descendants: true }, { propertyName: "autoCompleteDirective", first: true, predicate: AutoCompleteDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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 <!--\u5355\u9009\u6A21\u677F-->\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<!--\u9EC4\u5E95\u6A21\u677F-->\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<!--\u65E0\u5E95\u8272\u6A21\u677F-->\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", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.form-group label{cursor:pointer;font-size:var(--devui-font-size, 12px);margin-bottom:0;width:100%}.multiple-label-auto-complete{padding:0;font-weight:400}.multiple-label-auto-complete ul{display:flex;flex-wrap:wrap;align-items:center;list-style:none;background:var(--devui-base-bg, #ffffff);border-radius:var(--devui-border-radius, 2px);padding:4px 4px 0}.multiple-label-auto-complete-single ul,.multiple-label-auto-complete-single-focus ul,.multiple-label-auto-complete-border ul,.multiple-label-auto-complete-multiline ul{border:1px solid var(--devui-line, #dbdbdb)}.multiple-label-auto-complete-single ul:hover,.multiple-label-auto-complete-single-focus ul:hover,.multiple-label-auto-complete-border ul:hover,.multiple-label-auto-complete-multiline ul:hover{border-color:var(--devui-form-control-line-hover, #808080)}.multiple-label-auto-complete-single ul:active,.multiple-label-auto-complete-single-focus ul:active,.multiple-label-auto-complete-border ul:active,.multiple-label-auto-complete-multiline ul:active{border-color:var(--devui-form-control-line-active, #0a59f7)}.multiple-label-auto-complete-single ul,.multiple-label-auto-complete-single-focus ul{overflow:hidden}.multiple-label-auto-complete-multiline ul{height:60px;overflow:auto}.multiple-label-auto-complete-none ul{border:1px solid transparent}.multiple-label-auto-complete-none ul:hover,.multiple-label-auto-complete-none ul:active{border-color:transparent}.multiple-label-auto-complete:not(.multiple-label-auto-complete-disabled) ul li:last-child{border-color:transparent}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul{cursor:not-allowed}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul,.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul:hover{border-color:var(--devui-disabled-line, #e6e6e6);background-color:var(--devui-disabled-bg, #f3f3f3)}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul li{border-color:var(--devui-disabled-line, #e6e6e6)}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul li .label-text,.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul li .label-text:hover{background-color:var(--devui-disabled-bg, #f3f3f3);color:var(--devui-disabled-text, #c2c2c2)}.multiple-label-auto-complete ul::-ms-expand{border:0;background-color:transparent}::-ms-clear,::-ms-reveal{display:none}.multiple-label-auto-complete ul li{position:relative;display:inline-block;line-height:1;margin:0 4px 4px 0}.multiple-label-auto-complete-none ul li{margin-right:0}.multiple-label-auto-complete-single ul li,.multiple-label-auto-complete-single-focus ul li,.multiple-label-auto-complete-multiline ul li{position:static}.multiple-label-auto-complete-single ul li,.multiple-label-auto-complete-single-focus ul li{float:left;width:100%}.multiple-label-auto-complete-single-focus ul li:first-child{max-width:calc(100% - 5px);margin-right:0;width:auto}.multiple-label-auto-complete-single-focus ul li:last-child{width:5px;margin-right:0;margin-left:0}.multiple-label-auto-complete ul li .label-close,.multiple-label-auto-complete ul li .label-text{font-size:var(--devui-font-size, 12px);line-height:20px;padding:0 8px;color:var(--devui-text-weak, #333333);font-weight:400;background-color:var(--devui-label-bg, #f0f0f0)}.multiple-label-auto-complete ul li .label-close{padding-left:4px;display:flex;align-items:center}.multiple-label-auto-complete ul li .label-close svg rect{fill:var(--devui-line, #dbdbdb)}.multiple-label-auto-complete ul li .label-close svg path{fill:var(--devui-light-text, #ffffff)}.multiple-label-auto-complete ul li .label-close:hover svg rect{fill:var(--devui-icon-fill-active-hover, #000000)}.multiple-label-auto-complete ul li .label-text:hover{color:var(--devui-icon-fill-active-hover, #000000)}.multiple-label-auto-complete ul li .label-text{border-radius:var(--devui-border-radius, 2px) 0 0 var(--devui-border-radius, 2px)}.multiple-label-auto-complete ul li .label-close{cursor:pointer;border-radius:0 var(--devui-border-radius, 2px) var(--devui-border-radius, 2px) 0}.multiple-label-auto-complete-single ul li .label-text,.multiple-label-auto-complete-single-focus ul li .label-text,.multiple-label-auto-complete-none ul li .label-text{background-color:transparent}.multiple-label-auto-complete-single ul li .label-text{width:100%;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;height:20px;line-height:20px}.multiple-label-auto-complete-single-focus ul li .label-text{width:100%;text-align:left;display:block;height:20px;line-height:20px}.multiple-label-auto-complete .auto-complete-control{min-width:160px;height:20px;border:none;outline:none;background:var(--devui-base-bg, #ffffff);color:var(--devui-text, #191919)}.multiple-label-auto-complete .auto-complete-control:focus,.multiple-label-auto-complete .auto-complete-control:hover{border:none;outline:none}.multiple-label-auto-complete-none .auto-complete-control{width:0}:host label{color:inherit}:host ::ng-deep .multiple-label-auto-complete-disabled li{border:solid 1px var(--devui-disabled-line, #e6e6e6);border-radius:var(--devui-border-radius, 2px)}:host ::ng-deep .multiple-label-auto-complete-disabled li d-tag .devui-tag-item{background-color:var(--devui-disabled-bg, #f3f3f3);color:var(--devui-disabled-text, #c2c2c2);cursor:not-allowed}:host ::ng-deep .multiple-label-auto-complete-border ul li .devui-dropdown-menu{margin-top:8px}:host ::ng-deep .multiple-label-auto-complete-multiline ul li .devui-dropdown-menu{margin-top:0;width:170px}:host-context(d-data-table) .multiple-label-auto-complete-single ul,:host-context(d-data-table) .multiple-label-auto-complete-single ul li .auto-complete-control{border-color:transparent;background-color:transparent}:host-context(d-data-table) .multiple-label-auto-complete-single ul{padding-left:0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.AutoCompleteDirective, selector: "[dAutoComplete]", inputs: ["disabled", "cssClass", "delay", "showGlowStyle", "minLength", "itemTemplate", "noResultItemTemplate", "searchingTemplate", "isSearching", "appendToBody", "appendToBodyDirections", "appendToBodyScrollStrategy", "cdkOverlayOffsetY", "dAutoCompleteWidth", "formatter", "sceneType", "tipsText", "overview", "latestSource", "source", "valueParser", "searchFn", "dropdown", "maxHeight", "disabledKey", "showAnimation", "enableLazyLoad", "retainInputValue", "allowEmptyValueSearch", "customViewTemplate", "customViewDirection"], outputs: ["loadMore", "selectValue", "transInputFocusEmit", "changeDropDownStatus", "toggleChange", "hoverItem"], exportAs: ["autoComplete"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.TagComponent, selector: "d-tag", inputs: ["tag", "labelStyle", "customColor", "deletable", "titleContent", "mode", "size", "checked", "maxWidth", "customViewTemplate", "beforeDelete"], outputs: ["tagDelete", "checkedChange"], exportAs: ["Tag"] }] }); } } __decorate([ WithConfig(), __metadata("design:type", Object) ], MultiAutoCompleteComponent.prototype, "showAnimation", void 0); __decorate([ WithConfig(), __metadata("design:type", Object) ], MultiAutoCompleteComponent.prototype, "showGlowStyle", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultiAutoCompleteComponent, decorators: [{ type: Component, args: [{ selector: 'd-multi-auto-complete', providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MultiAutoCompleteComponent), multi: true, }, ], preserveWhitespaces: false, template: "<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 <!--\u5355\u9009\u6A21\u677F-->\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<!--\u9EC4\u5E95\u6A21\u677F-->\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<!--\u65E0\u5E95\u8272\u6A21\u677F-->\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", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.form-group label{cursor:pointer;font-size:var(--devui-font-size, 12px);margin-bottom:0;width:100%}.multiple-label-auto-complete{padding:0;font-weight:400}.multiple-label-auto-complete ul{display:flex;flex-wrap:wrap;align-items:center;list-style:none;background:var(--devui-base-bg, #ffffff);border-radius:var(--devui-border-radius, 2px);padding:4px 4px 0}.multiple-label-auto-complete-single ul,.multiple-label-auto-complete-single-focus ul,.multiple-label-auto-complete-border ul,.multiple-label-auto-complete-multiline ul{border:1px solid var(--devui-line, #dbdbdb)}.multiple-label-auto-complete-single ul:hover,.multiple-label-auto-complete-single-focus ul:hover,.multiple-label-auto-complete-border ul:hover,.multiple-label-auto-complete-multiline ul:hover{border-color:var(--devui-form-control-line-hover, #808080)}.multiple-label-auto-complete-single ul:active,.multiple-label-auto-complete-single-focus ul:active,.multiple-label-auto-complete-border ul:active,.multiple-label-auto-complete-multiline ul:active{border-color:var(--devui-form-control-line-active, #0a59f7)}.multiple-label-auto-complete-single ul,.multiple-label-auto-complete-single-focus ul{overflow:hidden}.multiple-label-auto-complete-multiline ul{height:60px;overflow:auto}.multiple-label-auto-complete-none ul{border:1px solid transparent}.multiple-label-auto-complete-none ul:hover,.multiple-label-auto-complete-none ul:active{border-color:transparent}.multiple-label-auto-complete:not(.multiple-label-auto-complete-disabled) ul li:last-child{border-color:transparent}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul{cursor:not-allowed}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul,.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul:hover{border-color:var(--devui-disabled-line, #e6e6e6);background-color:var(--devui-disabled-bg, #f3f3f3)}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul li{border-color:var(--devui-disabled-line, #e6e6e6)}.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul li .label-text,.multiple-label-auto-complete.multiple-label-auto-complete-disabled ul li .label-text:hover{background-color:var(--devui-disabled-bg, #f3f3f3);color:var(--devui-disabled-text, #c2c2c2)}.multiple-label-auto-complete ul::-ms-expand{border:0;background-color:transparent}::-ms-clear,::-ms-reveal{display:none}.multiple-label-auto-complete ul li{position:relative;display:inline-block;line-height:1;margin:0 4px 4px 0}.multiple-label-auto-complete-none ul li{margin-right:0}.multiple-label-auto-complete-single ul li,.multiple-label-auto-complete-single-focus ul li,.multiple-label-auto-complete-multiline ul li{position:static}.multiple-label-auto-complete-single ul li,.multiple-label-auto-complete-single-focus ul li{float:left;width:100%}.multiple-label-auto-complete-single-focus ul li:first-child{max-width:calc(100% - 5px);margin-right:0;width:auto}.multiple-label-auto-complete-single-focus ul li:last-child{width:5px;margin-right:0;margin-left:0}.multiple-label-auto-complete ul li .label-close,.multiple-label-auto-complete ul li .label-text{font-size:var(--devui-font-size, 12px);line-height:20px;padding:0 8px;color:var(--devui-text-weak, #333333);font-weight:400;background-color:var(--devui-label-bg, #f0f0f0)}.multiple-label-auto-complete ul li .label-close{padding-left:4px;display:flex;align-items:center}.multiple-label-auto-complete ul li .label-close svg rect{fill:var(--devui-line, #dbdbdb)}.multiple-label-auto-complete ul li .label-close svg path{fill:var(--devui-light-text, #ffffff)}.multiple-label-auto-complete ul li .label-close:hover svg rect{fill:var(--devui-icon-fill-active-hover, #000000)}.multiple-label-auto-complete ul li .label-text:hover{color:var(--devui-icon-fill-active-hover, #000000)}.multiple-label-auto-complete ul li .label-text{border-radius:var(--devui-border-radius, 2px) 0 0 var(--devui-border-radius, 2px)}.multiple-label-auto-complete ul li .label-close{cursor:pointer;border-radius:0 var(--devui-border-radius, 2px) var(--devui-border-radius, 2px) 0}.multiple-label-auto-complete-single ul li .label-text,.multiple-label-auto-complete-single-focus ul li .label-text,.multiple-label-auto-complete-none ul li .label-text{background-color:transparent}.multiple-label-auto-complete-single ul li .label-text{width:100%;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;height:20px;line-height:20px}.multiple-label-auto-complete-single-focus ul li .label-text{width:100%;text-align:left;display:block;height:20px;line-height:20px}.multiple-label-auto-complete .auto-complete-control{min-width:160px;height:20px;border:none;outline:none;background:var(--devui-base-bg, #ffffff);color:var(--devui-text, #191919)}.multiple-label-auto-complete .auto-complete-control:focus,.multiple-label-auto-complete .auto-complete-control:hover{border:none;outline:none}.multiple-label-auto-complete-none .auto-complete-control{width:0}:host label{color:inherit}:host ::ng-deep .multiple-label-auto-complete-disabled li{border:solid 1px var(--devui-disabled-line, #e6e6e6);border-radius:var(--devui-border-radius, 2px)}:host ::ng-deep .multiple-label-auto-complete-disabled li d-tag .devui-tag-item{background-color:var(--devui-disabled-bg, #f3f3f3);color:var(--devui-disabled-text, #c2c2c2);cursor:not-allowed}:host ::ng-deep .multiple-label-auto-complete-border ul li .devui-dropdown-menu{margin-top:8px}:host ::ng-deep .multiple-label-auto-complete-multiline ul li .devui-dropdown-menu{margin-top:0;width:170px}:host-context(d-data-table) .multiple-label-auto-complete-single ul,:host-context(d-data-table) .multiple-label-auto-complete-single ul li .auto-complete-control{border-color:transparent;background-color:transparent}:host-context(d-data-table) .multiple-label-auto-complete-single ul{padding-left:0}\n"] }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.DevConfigService }], propDecorators: { appendToBody: [{ type: Input }], appendToBodyDirections: [{ type: Input }], cssClass: [{ type: Input }], overview: [{ type: Input }], tipsText: [{ type: Input }], placeholder: [{ type: Input }], disabled: [{ type: Input }], retainInputValue: [{ type: Input }], source: [{ type: Input }], latestSource: [{ type: Input }], disabledKey: [{ type: Input }], width: [{ type: Input }], itemTemplate: [{ type: Input }], noResultItemTemplate: [{ type: Input }], delay: [{ type: Input }], searchFn: [{ type: Input }], formatter: [{ type: Input }], valueParser: [{ type: Input }], showAnimation: [{ type: Input }], showGlowStyle: [{ type: Input }], hasGlowStyle: [{ type: HostBinding, args: ['class.devui-glow-style'] }], autoSubmit: [{ type: Output }], multiAutoCompleteInputElement: [{ type: ViewChild, args: ['multiAutoCompleteInput'] }], multiAutoCompleteWrapperElement: [{ type: ViewChild, args: ['multiAutoCompleteWrapper'] }], autoCompleteDirective: [{ type: ViewChild, args: [AutoCompleteDirective] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS9tdWx0aS1hdXRvLWNvbXBsZXRlL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2dWkvbXVsdGktYXV0by1jb21wbGV0ZS9tdWx0aS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQThCLE1BQU0sd0JBQXdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGdCQUFnQixFQUF5QixnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5SCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBZXRDLE1BQU0sT0FBTywwQkFBMEI7YUFDOUIsWUFBTyxHQUFHLENBQUMsQUFBSixDQUFLO0lBNEJuQixJQUEyQyxZQUFZO1FBQ3JELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBNkJELElBQUksZUFBZTtRQUNqQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFTRCxZQUFvQixpQkFBb0MsRUFB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SztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDaUIsYUFBYTtzQkFBbkMsS0FBSztnQkFDaUIsYUFBYTtzQkFBbkMsS0FBSztnQkFDcUMsWUFBWTtzQkFBdEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBRzNCLFVBQVU7c0JBQW5CLE1BQU07Z0JBQzhCLDZCQUE2QjtzQkFBakUsU0FBUzt1QkFBQyx3QkFBd0I7Z0JBQ0ksK0JBQStCO3NCQUFyRSxTQUFTO3VCQUFDLDBCQUEwQjtnQkFDSCxxQkFBcUI7c0JBQXRELFNBQVM7dUJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29ubmVjdGVkUG9zaXRpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEF1dG9Db21wbGV0ZURpcmVjdGl2ZSwgQXV0b0NvbXBsZXRlUG9wdXBDb21wb25lbnQgfSBmcm9tICduZy1kZXZ1aS9hdXRvLWNvbXBsZXRlJztcclxuaW1wb3J0IHsgYWRkQ2xhc3NUb09yaWdpbiwgQXBwZW5kVG9Cb2R5RGlyZWN0aW9uLCBEZXZDb25maWdTZXJ2aWNlLCByZW1vdmVDbGFzc0Zyb21PcmlnaW4sIFdpdGhDb25maWcgfSBmcm9tICduZy1kZXZ1aS91dGlscyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2QtbXVsdGktYXV0by1jb21wbGV0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWF1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydtdWx0aS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTXVsdGlBdXRvQ29tcGxldGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIHN0YXRpYyBJRF9TRUVEID0gMDtcclxuICBASW5wdXQoKSBhcHBlbmRUb0JvZHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBhcHBlbmRUb0JvZHlEaXJlY3Rpb25zOiBBcnJheTxBcHBlbmRUb0JvZHlEaXJlY3Rpb24gfCBDb25uZWN0ZWRQb3NpdGlvbj4gPSBbJ3JpZ2h0RG93bicsICdsZWZ0RG93bicsICdyaWdodFVwJywgJ2xlZnRVcCddO1xyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgQElucHV0KCkgY3NzQ2xhc3M6IHN0cmluZztcclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqIG92ZXJ2aWV3OiBib3JkZXIgbm9uZSBtdWx0aWxpbmUgc2luZ2xlXHJcbiAgICovXHJcbiAgQElucHV0KCkgb3ZlcnZpZXcgPSAnYm9yZGVyJztcclxuICBASW5wdXQoKSB0aXBzVGV4dDogc3RyaW5nOyAvLyDmj5DnpLrmloflrZdcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnOyAvLyBwbGFjZWhvbGRlclxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmV0YWluSW5wdXRWYWx1ZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNvdXJjZTogYW55W107XHJcbiAgQElucHV0KCkgbGF0ZXN0U291cmNlOiBhbnlbXTsgLy8g5pyA6L+R6L6T5YWlXHJcbiAgQElucHV0KCkgZGlzYWJsZWRLZXk6IHN0cmluZzsgLy8g5Y2V5Liq6YCJ6aG556aB55SoXHJcbiAgQElucHV0KCkgd2lkdGg6IG51bWJlcjtcclxuICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgbm9SZXN1bHRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgZGVsYXk6IG51bWJlcjtcclxuICBASW5wdXQoKSBzZWFyY2hGbjogKHRlcm06IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgQElucHV0KCkgZm9ybWF0dGVyOiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFsdWVQYXJzZXI6IChpdGVtOiBhbnkpID0+IGFueTtcclxuICBASW5wdXQoKSBAV2l0aENvbmZpZygpIHNob3dBbmltYXRpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIEBXaXRoQ29uZmlnKCkgc2hvd0dsb3dTdHlsZSA9IHRydWU7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5kZXZ1aS1nbG93LXN0eWxlJykgZ2V0IGhhc0dsb3dTdHlsZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNob3dHbG93U3R5bGU7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBhdXRvU3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7IC8vIOWkseeEpuiHquWKqOaPkOS6pFxyXG4gIEBWaWV3Q2hpbGQoJ211bHRpQXV0b0NvbXBsZXRlSW5wdXQnKSBtdWx0aUF1dG9Db21wbGV0ZUlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdtdWx0aUF1dG9Db21wbGV0ZVdyYXBwZXInKSBtdWx0aUF1dG9Db21wbGV0ZVdyYXBwZXJFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoQXV0b0NvbXBsZXRlRGlyZWN0aXZlKSBhdXRvQ29tcGxldGVEaXJlY3RpdmU6IEF1dG9Db21wbGV0ZURpcmVjdGl2ZTtcclxuICBtdWx0aUl0ZW1zOiBhbnlbXSA9IFtdO1xyXG4gIGlucHV0VmFsdWU6IGFueTtcclxuICBtdWx0aXBsZUxhYmVsQ2xhc3NOYW1lU3VmZml4OiBzdHJpbmcgPSB0aGlzLm92ZXJ2aWV3O1xyXG4gIGlucHV0RWRpdCA9IGZhbHNlO1xyXG4gIG11bHRpcGxlTGFiZWxDbGFzc05hbWVDb25m