UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

299 lines 21.2 kB
/** * @fileoverview added by tsickle * Generated from: auto-complete-popup.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ElementRef, Input, TemplateRef, ViewChild } from '@angular/core'; import { fadeInOut } from '@duoduo-oba/ng-devui/utils'; var AutoCompletePopupComponent = /** @class */ (function () { function AutoCompletePopupComponent() { this.activeIndex = 0; this.showLoading = false; this.labelMinHeight = 20; // position.top小于20px时候,表示光标在第一行 // position.top小于20px时候,表示光标在第一行 this.onChange = (/** * @param {?} _ * @return {?} */ function (_) { return null; }); this.onTouched = (/** * @return {?} */ function () { return null; }); this.formatter = (/** * @param {?} item * @return {?} */ function (item) { return item ? (item.label || item.toString()) : ''; }); this.maxHeight = 300; } /** * @param {?} obj * @return {?} */ AutoCompletePopupComponent.prototype.writeValue = /** * @param {?} obj * @return {?} */ function (obj) { this.value = obj; }; /** * @param {?} isDisabled * @return {?} */ AutoCompletePopupComponent.prototype.setDisabledState = /** * @param {?} isDisabled * @return {?} */ function (isDisabled) { this.disabled = isDisabled; }; /** * @param {?} fn * @return {?} */ AutoCompletePopupComponent.prototype.registerOnChange = /** * @param {?} fn * @return {?} */ function (fn) { this.onChange = fn; }; /** * @param {?} fn * @return {?} */ AutoCompletePopupComponent.prototype.registerOnTouched = /** * @param {?} fn * @return {?} */ function (fn) { this.onTouched = fn; }; /** * @param {?} event * @param {?} item * @return {?} */ AutoCompletePopupComponent.prototype.onSelect = /** * @param {?} event * @param {?} item * @return {?} */ function (event, item) { if (this.disabledKey && item[this.disabledKey]) { event.preventDefault(); event.stopPropagation(); return; } if (this.overview === 'single') { // 单选场景和单行场景不需要冒泡 event.preventDefault(); event.stopPropagation(); } this.value = item; this.onTouched(); this.onChange({ type: 'select', value: this.value }); }; /** * @param {?} event * @return {?} */ AutoCompletePopupComponent.prototype.selectCurrentItem = /** * @param {?} event * @return {?} */ function (event) { this.onSelect(event, this.source[this.activeIndex]); }; /** * @param {?} index * @return {?} */ AutoCompletePopupComponent.prototype.onActiveIndexChange = /** * @param {?} index * @return {?} */ function (index) { this.activeIndex = index; }; /** * @return {?} */ AutoCompletePopupComponent.prototype.reset = /** * @return {?} */ function () { this.activeIndex = 0; }; /** * @return {?} */ AutoCompletePopupComponent.prototype.next = /** * @return {?} */ function () { if (this.isOpen && this.source && this.source.length) { if (this.activeIndex === this.source.length - 1) { this.activeIndex = 0; return; } this.activeIndex = this.activeIndex + 1; } }; /** * @return {?} */ AutoCompletePopupComponent.prototype.prev = /** * @return {?} */ function () { if (this.isOpen && this.source && this.source.length) { if (this.activeIndex === 0) { this.activeIndex = this.source.length - 1; return; } this.activeIndex = this.activeIndex - 1; } }; /** * @param {?} index * @param {?} item * @return {?} */ AutoCompletePopupComponent.prototype.trackByFn = /** * @param {?} index * @param {?} item * @return {?} */ function (index, item) { return index; }; /** * @param {?} $event * @return {?} */ AutoCompletePopupComponent.prototype.animationEnd = /** * @param {?} $event * @return {?} */ function ($event) { if (!this.isOpen) { /** @type {?} */ var targetElement = this.selectMenuElement.nativeElement; targetElement.style.display = 'none'; } }; /** * @param {?} $event * @return {?} */ AutoCompletePopupComponent.prototype.loadMoreEvent = /** * @param {?} $event * @return {?} */ function ($event) { this.showLoading = true; this.onChange({ type: 'loadMore', value: this }); }; /** * @param {?} $event * @return {?} */ AutoCompletePopupComponent.prototype.loadFinish = /** * @param {?} $event * @return {?} */ function ($event) { this.showLoading = false; }; AutoCompletePopupComponent.decorators = [ { type: Component, args: [{ selector: 'd-auto-complete-popup', template: "<div\r\n class=\"devui-dropdown-menu\"\r\n [style.display]=\"isOpen && (source?.length || noResultItemTemplate) ? 'inline-block' : 'none'\"\r\n [style.top]=\"overview === 'multiline' ? (position?.top < labelMinHeight ? '50%' : '100%') : '100%'\"\r\n [style.left]=\"overview === 'multiline' ? position?.left + 'px' : '0'\"\r\n [@fadeInOut]=\"isOpen ? 'bottom' : 'void'\"\r\n (@fadeInOut.done)=\"animationEnd($event)\"\r\n #selectMenuElement\r\n dLoading\r\n [showLoading]=\"showLoading\"\r\n [backdrop]=\"true\"\r\n>\r\n <ul\r\n class=\"devui-list-unstyled scroll-height\"\r\n [style.maxHeight]=\"maxHeight + 'px'\"\r\n dLazyLoad\r\n [enableLazyLoad]=\"enableLazyLoad\"\r\n (loadMore)=\"loadMoreEvent($event)\"\r\n >\r\n <li *ngIf=\"popTipsText && popTipsText.length > 0\" class=\"devui-popup-tips\">\r\n {{ popTipsText }}\r\n </li>\r\n <li\r\n *ngFor=\"let item of source; let $index = index; trackBy: trackByFn\"\r\n class=\"devui-dropdown-item\"\r\n [title]=\"formatter(item)\"\r\n [ngClass]=\"{\r\n 'devui-dropdown-bg': $index == activeIndex,\r\n disabled: disabledKey && item[disabledKey]\r\n }\"\r\n (click)=\"onSelect($event, item)\"\r\n (mouseenter)=\"onActiveIndexChange($index)\"\r\n >\r\n <ng-template\r\n [ngTemplateOutlet]=\"itemTemplate || defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n formatter: formatter,\r\n term: term,\r\n source: source,\r\n item: item,\r\n $index: $index\r\n }\"\r\n >\r\n </ng-template>\r\n </li>\r\n <li class=\"devui-dropdown-item devui-no-result-template\" *ngIf=\"!source?.length && noResultItemTemplate != null\">\r\n <ng-template [ngTemplateOutlet]=\"noResultItemTemplate\" [ngTemplateOutletContext]=\"{ term: term, source: source }\"> </ng-template>\r\n </li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #defaultItemTemplate let-item=\"item\" let-term=\"term\">\r\n <d-highlight [value]=\"formatter(item)\" [term]=\"term\"></d-highlight>\r\n</ng-template>\r\n", animations: [fadeInOut], styles: ["@charset \"UTF-8\";.devui-dropdown-menu{width:100%;display:block}.devui-dropdown-item{cursor:pointer;display:block;width:100%;padding:8px 1rem;clear:both;border:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.devui-no-result-template{cursor:not-allowed}.devui-no-result-template:hover{background:0 0!important}.devui-dropdown-item.disabled,.devui-dropdown-item.disabled:hover{cursor:not-allowed;opacity:.3;color:#252b3a;background:#fff}ul.devui-list-unstyled{margin:0;overflow-y:auto}:host(.devui-dropdown-menu){width:100%;margin:0;padding:5px 0}.devui-dropdown-bg{background:#f2f5fc}.devui-popup-tips{color:#adb0b8;padding:3px 1rem}"] }] } ]; /** @nocollapse */ AutoCompletePopupComponent.ctorParameters = function () { return []; }; AutoCompletePopupComponent.propDecorators = { cssClass: [{ type: Input }], maxHeight: [{ type: Input }], disabled: [{ type: Input }], disabledKey: [{ type: Input }], source: [{ type: Input }], position: [{ type: Input }], isOpen: [{ type: Input }], term: [{ type: Input }], popTipsText: [{ type: Input }], overview: [{ type: Input }], itemTemplate: [{ type: Input }], noResultItemTemplate: [{ type: Input }], formatter: [{ type: Input }], dropdown: [{ type: Input }], selectWidth: [{ type: Input }], enableLazyLoad: [{ type: Input }], selectMenuElement: [{ type: ViewChild, args: ['selectMenuElement', { static: true },] }] }; return AutoCompletePopupComponent; }()); export { AutoCompletePopupComponent }; if (false) { /** @type {?} */ AutoCompletePopupComponent.prototype.activeIndex; /** @type {?} */ AutoCompletePopupComponent.prototype.cssClass; /** @type {?} */ AutoCompletePopupComponent.prototype.maxHeight; /** @type {?} */ AutoCompletePopupComponent.prototype.disabled; /** @type {?} */ AutoCompletePopupComponent.prototype.disabledKey; /** @type {?} */ AutoCompletePopupComponent.prototype.source; /** @type {?} */ AutoCompletePopupComponent.prototype.position; /** @type {?} */ AutoCompletePopupComponent.prototype.isOpen; /** @type {?} */ AutoCompletePopupComponent.prototype.term; /** @type {?} */ AutoCompletePopupComponent.prototype.popTipsText; /** @type {?} */ AutoCompletePopupComponent.prototype.overview; /** @type {?} */ AutoCompletePopupComponent.prototype.itemTemplate; /** @type {?} */ AutoCompletePopupComponent.prototype.noResultItemTemplate; /** @type {?} */ AutoCompletePopupComponent.prototype.formatter; /** @type {?} */ AutoCompletePopupComponent.prototype.dropdown; /** @type {?} */ AutoCompletePopupComponent.prototype.selectWidth; /** @type {?} */ AutoCompletePopupComponent.prototype.enableLazyLoad; /** @type {?} */ AutoCompletePopupComponent.prototype.selectMenuElement; /** @type {?} */ AutoCompletePopupComponent.prototype.showLoading; /** * @type {?} * @private */ AutoCompletePopupComponent.prototype.value; /** @type {?} */ AutoCompletePopupComponent.prototype.labelMinHeight; /** * @type {?} * @private */ AutoCompletePopupComponent.prototype.onChange; /** * @type {?} * @private */ AutoCompletePopupComponent.prototype.onTouched; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS9hdXRvLWNvbXBsZXRlLyIsInNvdXJjZXMiOlsiYXV0by1jb21wbGV0ZS1wb3B1cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0M7SUErQkU7UUF4QkEsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFrQmhCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLG1CQUFjLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0NBQWdDOztRQUM3QyxhQUFROzs7O1FBQUcsVUFBQyxDQUFNLElBQUssT0FBQSxJQUFJLEVBQUosQ0FBSSxFQUFDO1FBQzVCLGNBQVM7OztRQUFHLGNBQU0sT0FBQSxJQUFJLEVBQUosQ0FBSSxFQUFDO1FBRzdCLElBQUksQ0FBQyxTQUFTOzs7O1FBQUcsVUFBQyxJQUFTLElBQUssT0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUEzQyxDQUEyQyxDQUFBLENBQUM7UUFDNUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFFRCwrQ0FBVTs7OztJQUFWLFVBQVcsR0FBUTtRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDOzs7OztJQUVELHFEQUFnQjs7OztJQUFoQixVQUFpQixVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzs7OztJQUVELHFEQUFnQjs7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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgZmFkZUluT3V0IH0gZnJvbSAnbmctZGV2dWkvdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLWF1dG8tY29tcGxldGUtcG9wdXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvLWNvbXBsZXRlLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnYXV0by1jb21wbGV0ZS1wb3B1cC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGFuaW1hdGlvbnM6IFtmYWRlSW5PdXRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBhY3RpdmVJbmRleCA9IDA7XHJcbiAgQElucHV0KCkgY3NzQ2xhc3M6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXhIZWlnaHQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlZEtleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNvdXJjZTogYW55W107XHJcbiAgQElucHV0KCkgcG9zaXRpb246IGFueTtcclxuICBASW5wdXQoKSBpc09wZW46IGJvb2xlYW47XHJcbiAgQElucHV0KCkgdGVybTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHBvcFRpcHNUZXh0OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgb3ZlcnZpZXc6IHN0cmluZztcclxuICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgbm9SZXN1bHRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgZm9ybWF0dGVyOiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZHJvcGRvd246IGJvb2xlYW47XHJcbiAgQElucHV0KCkgc2VsZWN0V2lkdGg6IGFueTtcclxuICBASW5wdXQoKSBlbmFibGVMYXp5TG9hZDogYm9vbGVhbjtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RNZW51RWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHNlbGVjdE1lbnVFbGVtZW50OiBFbGVtZW50UmVmO1xyXG4gIHNob3dMb2FkaW5nID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB2YWx1ZTogYW55O1xyXG4gIGxhYmVsTWluSGVpZ2h0ID0gMjA7IC8vIHBvc2l0aW9uLnRvcOWwj+S6jjIwcHjml7blgJnvvIzooajnpLrlhYnmoIflnKjnrKzkuIDooYxcclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKF86IGFueSkgPT4gbnVsbDtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5mb3JtYXR0ZXIgPSAoaXRlbTogYW55KSA9PiBpdGVtID8gKGl0ZW0ubGFiZWwgfHwgaXRlbS50b1N0cmluZygpKSA6ICcnO1xyXG4gICAgdGhpcy5tYXhIZWlnaHQgPSAzMDA7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0KGV2ZW50OiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWRLZXkgJiYgaXRlbVt0aGlzLmRpc2FibGVkS2V5XSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub3ZlcnZpZXcgPT09ICdzaW5nbGUnKSB7IC8vIOWNlemAieWcuuaZr+WSjOWNleihjOWcuuaZr+S4jemcgOimgeWGkuazoVxyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZhbHVlID0gaXRlbTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHsgdHlwZTogJ3NlbGVjdCcsIHZhbHVlOiB0aGlzLnZhbHVlIH0pO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q3VycmVudEl0ZW0oZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vblNlbGVjdChldmVudCwgdGhpcy5zb3VyY2VbdGhpcy5hY3RpdmVJbmRleF0pO1xyXG4gIH1cclxuXHJcbiAgb25BY3RpdmVJbmRleENoYW5nZShpbmRleDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICByZXNldCgpIHtcclxuICAgIHRoaXMuYWN0aXZlSW5kZXggPSAwO1xyXG4gIH1cclxuXHJcbiAgbmV4dCgpIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLnNvdXJjZSAmJiB0aGlzLnNvdXJjZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT09IHRoaXMuc291cmNlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gMDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXggKyAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJldigpIHtcclxuICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLnNvdXJjZSAmJiB0aGlzLnNvdXJjZS5sZW5ndGgpIHtcclxuICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggPT09IDApIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gdGhpcy5zb3VyY2UubGVuZ3RoIC0gMTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IHRoaXMuYWN0aXZlSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBhbnksIGl0ZW06IGFueSkge1xyXG4gICAgcmV0dXJuIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgYW5pbWF0aW9uRW5kKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB0aGlzLnNlbGVjdE1lbnVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgIHRhcmdldEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRNb3JlRXZlbnQoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvd0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh7IHR5cGU6ICdsb2FkTW9yZScsIHZhbHVlOiB0aGlzIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbmlzaCgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zaG93TG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxufVxyXG4iXX0=