UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

213 lines 17 kB
/** * @fileoverview added by tsickle * Generated from: editable-select.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input, TemplateRef, ViewChild, ChangeDetectorRef, forwardRef, Output, EventEmitter } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { AutoCompleteDirective } from '@duoduo-oba/ng-devui/auto-complete'; import { I18nService } from '@duoduo-oba/ng-devui/i18n'; export class EditableSelectComponent { /** * @param {?} changeDetectorRef * @param {?} i18n */ constructor(changeDetectorRef, i18n) { this.changeDetectorRef = changeDetectorRef; this.i18n = i18n; this.disabled = false; this.placeholder = ''; this.enableLazyLoad = false; this.loadMore = new EventEmitter(); this.multiItems = []; this.onChange = (/** * @param {?} _ * @return {?} */ (_) => null); this.onTouched = (/** * @return {?} */ () => null); this.i18nCommonText = this.i18n.getI18nText().common; } /** * @param {?} obj * @return {?} */ writeValue(obj) { /** @type {?} */ const value = obj || ''; this.inputValue = value; this.changeDetectorRef.markForCheck(); } /** * @return {?} */ ngOnInit() { this.i18nSubscription = this.i18n.langChange().subscribe((/** * @param {?} data * @return {?} */ (data) => { this.i18nCommonText = data.common; })); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes && changes['searchFn'] && typeof this.searchFn === 'function') { if (this.subscription) { this.subscription.unsubscribe(); } this.subscription = this.searchFn('').subscribe((/** * @param {?} source * @return {?} */ source => { this.source = source; })); } } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.onChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @param {?} value * @return {?} */ onTermChange(value) { this.inputValue = value; this.onChange(this.inputValue); } /** * @param {?} $event * @return {?} */ toggle($event) { this.autoCompleteDirective.popupRef.instance.isOpen = !this.autoCompleteDirective.popupRef.instance.isOpen; } /** * @param {?} $event * @return {?} */ loadMoreEvent($event) { this.loadMore.emit($event); } /** * @return {?} */ ngOnDestroy() { if (this.i18nSubscription) { this.i18nSubscription.unsubscribe(); } } } EditableSelectComponent.decorators = [ { type: Component, args: [{ selector: 'd-editable-select', template: "<div\r\n class=\"devui-form-group devui-has-feedback\"\r\n [style.padding-bottom.px]=\"2\"\r\n [style.padding-bottom.px]=\"2\"\r\n [ngClass]=\"{\r\n 'devui-select-open': autoCompleteDirective.popupRef ? !!autoCompleteDirective.popupRef.instance.isOpen : false\r\n }\"\r\n>\r\n <input\r\n (click)=\"toggle($event)\"\r\n style=\"cursor: pointer\"\r\n class=\"devui-form-control\"\r\n type=\"text\"\r\n name=\"autoCompleteControl\"\r\n [source]=\"source\"\r\n (ngModelChange)=\"onTermChange($event)\"\r\n [ngModel]=\"inputValue\"\r\n [searchFn]=\"searchFn\"\r\n [disabled]=\"disabled\"\r\n [disabledKey]=\"disabledKey\"\r\n [placeholder]=\"placeholder\"\r\n [itemTemplate]=\"itemTemplate\"\r\n [noResultItemTemplate]=\"noResultItemTemplate ? noResultItemTemplate : noDataTemplate\"\r\n [maxHeight]=\"maxHeight\"\r\n [sceneType]=\"'select'\"\r\n dAutoComplete\r\n [enableLazyLoad]=\"enableLazyLoad\"\r\n (loadMore)=\"loadMoreEvent($event)\"\r\n />\r\n <span class=\"devui-form-control-feedback\">\r\n <span class=\"devui-select-chevron-icon\">\r\n <svg\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n >\r\n <g id=\"chevron_down\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon id=\"chevron_down\" points=\"4.5 5 8 8.76923077 11.5 5 13 6.61538462 8 12 3 6.61538462\"></polygon>\r\n </g>\r\n </svg>\r\n </span>\r\n </span>\r\n</div>\r\n<ng-template #noDataTemplate>\r\n <div class=\"devui-no-data-tip\">\r\n <ng-container *ngIf=\"!inputValue\">{{ i18nCommonText?.noData }}</ng-container>\r\n <ng-container *ngIf=\"inputValue\">{{ i18nCommonText?.noRecordsFound }}</ng-container>\r\n </div>\r\n</ng-template>\r\n", exportAs: 'editable-select', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef((/** * @return {?} */ () => EditableSelectComponent)), multi: true }], styles: [".devui-select-chevron-icon{display:-webkit-inline-box;display:inline-flex;vertical-align:middle;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.devui-select-open .devui-select-chevron-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.devui-select-chevron-icon svg>g>polygon{fill:#252b3a}input::-ms-clear{display:none}.devui-no-data-tip{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:not-allowed;padding:5px 12px;opacity:.3}.devui-form-control{outline:0}"] }] } ]; /** @nocollapse */ EditableSelectComponent.ctorParameters = () => [ { type: ChangeDetectorRef }, { type: I18nService } ]; EditableSelectComponent.propDecorators = { cssClass: [{ type: Input }], disabled: [{ type: Input }], placeholder: [{ type: Input }], source: [{ type: Input }], isOpen: [{ type: Input }], itemTemplate: [{ type: Input }], noResultItemTemplate: [{ type: Input }], maxHeight: [{ type: Input }], disabledKey: [{ type: Input }], searchFn: [{ type: Input }], enableLazyLoad: [{ type: Input }], loadMore: [{ type: Output }], autoCompleteDirective: [{ type: ViewChild, args: [AutoCompleteDirective, { static: true },] }] }; if (false) { /** @type {?} */ EditableSelectComponent.prototype.cssClass; /** @type {?} */ EditableSelectComponent.prototype.disabled; /** @type {?} */ EditableSelectComponent.prototype.placeholder; /** @type {?} */ EditableSelectComponent.prototype.source; /** @type {?} */ EditableSelectComponent.prototype.isOpen; /** @type {?} */ EditableSelectComponent.prototype.itemTemplate; /** @type {?} */ EditableSelectComponent.prototype.noResultItemTemplate; /** @type {?} */ EditableSelectComponent.prototype.maxHeight; /** @type {?} */ EditableSelectComponent.prototype.disabledKey; /** @type {?} */ EditableSelectComponent.prototype.searchFn; /** @type {?} */ EditableSelectComponent.prototype.enableLazyLoad; /** @type {?} */ EditableSelectComponent.prototype.loadMore; /** @type {?} */ EditableSelectComponent.prototype.autoCompleteDirective; /** @type {?} */ EditableSelectComponent.prototype.multiItems; /** @type {?} */ EditableSelectComponent.prototype.inputValue; /** @type {?} */ EditableSelectComponent.prototype.subscription; /** @type {?} */ EditableSelectComponent.prototype.i18nCommonText; /** @type {?} */ EditableSelectComponent.prototype.i18nSubscription; /** * @type {?} * @private */ EditableSelectComponent.prototype.onChange; /** * @type {?} * @private */ EditableSelectComponent.prototype.onTouched; /** * @type {?} * @private */ EditableSelectComponent.prototype.changeDetectorRef; /** * @type {?} * @private */ EditableSelectComponent.prototype.i18n; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdGFibGUtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2VkaXRhYmxlLXNlbGVjdC8iLCJzb3VyY2VzIjpbImVkaXRhYmxlLXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBR1gsU0FBUyxFQUNULGlCQUFpQixFQUVqQixVQUFVLEVBQ1YsTUFBTSxFQUNOLFlBQVksRUFFYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekUsT0FBTyxFQUFHLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFjM0QsTUFBTSxPQUFPLHVCQUF1Qjs7Ozs7SUFDbEMsWUFBb0IsaUJBQW9DLEVBQVUsSUFBaUI7UUFBL0Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUFVLFNBQUksR0FBSixJQUFJLENBQWE7UUFJMUUsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQVFqQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN0QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV4QyxlQUFVLEdBQVUsRUFBRSxDQUFDO1FBS2YsYUFBUTs7OztRQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUM7UUFDNUIsY0FBUzs7O1FBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFDO1FBckI3QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3ZELENBQUM7Ozs7O0lBc0JELFVBQVUsQ0FBQyxHQUFROztjQUNYLEtBQUssR0FBRyxHQUFHLElBQUks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QUM3QiwyQ0FBdUQ7O0lBQ3ZELGlEQUFnQzs7SUFDaEMsMkNBQXdDOztJQUN4Qyx3REFBaUc7O0lBQ2pHLDZDQUF1Qjs7SUFDdkIsNkNBQWdCOztJQUNoQiwrQ0FBYTs7SUFDYixpREFBd0M7O0lBQ3hDLG1EQUErQjs7Ozs7SUFDL0IsMkNBQW9DOzs7OztJQUNwQyw0Q0FBK0I7Ozs7O0lBdEJuQixvREFBNEM7Ozs7O0lBQUUsdUNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBmb3J3YXJkUmVmLFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyAgQXV0b0NvbXBsZXRlRGlyZWN0aXZlIH0gZnJvbSAnbmctZGV2dWkvYXV0by1jb21wbGV0ZSc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJMThuSW50ZXJmYWNlIH0gZnJvbSAnbmctZGV2dWkvaTE4bic7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLWVkaXRhYmxlLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRhYmxlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdGFibGUtc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZXhwb3J0QXM6ICdlZGl0YWJsZS1zZWxlY3QnLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWRpdGFibGVTZWxlY3RDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdGFibGVTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UpIHtcclxuICAgIHRoaXMuaTE4bkNvbW1vblRleHQgPSB0aGlzLmkxOG4uZ2V0STE4blRleHQoKS5jb21tb247XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGNzc0NsYXNzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIHNvdXJjZTogYW55W107XHJcbiAgQElucHV0KCkgaXNPcGVuOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBub1Jlc3VsdEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBtYXhIZWlnaHQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlZEtleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlYXJjaEZuOiAodGVybTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueVtdPjtcclxuICBASW5wdXQoKSBlbmFibGVMYXp5TG9hZCA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBsb2FkTW9yZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKEF1dG9Db21wbGV0ZURpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgYXV0b0NvbXBsZXRlRGlyZWN0aXZlOiBBdXRvQ29tcGxldGVEaXJlY3RpdmU7XHJcbiAgbXVsdGlJdGVtczogYW55W10gPSBbXTtcclxuICBpbnB1dFZhbHVlOiBhbnk7XHJcbiAgc3Vic2NyaXB0aW9uO1xyXG4gIGkxOG5Db21tb25UZXh0OiBJMThuSW50ZXJmYWNlWydjb21tb24nXTtcclxuICBpMThuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfOiBhbnkpID0+IG51bGw7XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiBudWxsO1xyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IG9iaiB8fCAnJztcclxuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pMThuU3Vic2NyaXB0aW9uID0gdGhpcy5pMThuLmxhbmdDaGFuZ2UoKS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy5pMThuQ29tbW9uVGV4dCA9IGRhdGEuY29tbW9uO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydzZWFyY2hGbiddICYmIHR5cGVvZiB0aGlzLnNlYXJjaEZuID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaEZuKCcnKS5zdWJzY3JpYmUoc291cmNlID0+IHtcclxuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBvblRlcm1DaGFuZ2UodmFsdWUpIHtcclxuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlKCRldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuYXV0b0NvbXBsZXRlRGlyZWN0aXZlLnBvcHVwUmVmLmluc3RhbmNlLmlzT3BlbiA9ICF0aGlzLmF1dG9Db21wbGV0ZURpcmVjdGl2ZS5wb3B1cFJlZi5pbnN0YW5jZS5pc09wZW47XHJcbiAgfVxyXG4gIGxvYWRNb3JlRXZlbnQoJGV2ZW50KSB7XHJcbiAgICB0aGlzLmxvYWRNb3JlLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5pMThuU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuaTE4blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19