UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

78 lines 6.41 kB
/** * @fileoverview added by tsickle * Generated from: dropdown.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; export class DropDownService { constructor() { this.closeDropdownBind = this.closeDropdown.bind(this); } /** * @param {?} dropdownScope * @return {?} */ open(dropdownScope) { if (!this.openScope) { // 延时绑定document事件,防止事件冒泡导致立即触发 setTimeout((/** * @return {?} */ () => { window.document.addEventListener('click', this.closeDropdownBind); })); } this.openScope = dropdownScope; } /** * @param {?} dropdownScope * @return {?} */ close(dropdownScope) { if (this.openScope !== dropdownScope) { return; } this.openScope = null; window.document.removeEventListener('click', this.closeDropdownBind); } /** * @private * @param {?} event * @return {?} */ closeDropdown(event) { if (!this.openScope) { return; } /** @type {?} */ const menuEl = this.openScope.menuEl.nativeElement; if (event && this.openScope.menuEl && ((/input|textarea/i.test(((/** @type {?} */ (event.target))).tagName) && menuEl.contains(event.target)) || this.openScope.closeScope === 'none' || (menuEl.contains(event.target) && this.openScope.closeScope === 'blank') || (this.openScope.dropdownChildren.some((/** * @param {?} children * @return {?} */ children => children.toggleEl.nativeElement.contains(event.target)))))) { return; } this.openScope.isOpen = false; } } DropDownService.decorators = [ { type: Injectable } ]; if (false) { /** * @type {?} * @private */ DropDownService.prototype.openScope; /** * @type {?} * @private */ DropDownService.prototype.closeDropdownBind; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL2Ryb3Bkb3duLyIsInNvdXJjZXMiOlsiZHJvcGRvd24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFJVSxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFtQzNFLENBQUM7Ozs7O0lBakNRLElBQUksQ0FBQyxhQUFnQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQiw4QkFBOEI7WUFDOUIsVUFBVTs7O1lBQUMsR0FBRyxFQUFFO2dCQUNkLE1BQU0sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3BFLENBQUMsRUFBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsQ0FBQztJQUNqQyxDQUFDOzs7OztJQUVNLEtBQUssQ0FBQyxhQUFnQztRQUMzQyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssYUFBYSxFQUFFO1lBQ3BDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Ozs7OztJQUVPLGFBQWEsQ0FBQyxLQUFpQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7O2NBQ0ssTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGFBQWE7UUFDbEQsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNO1lBQ2hDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxtQkFBTSxLQUFLLENBQUMsTUFBTSxFQUFBLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQzttQkFDckYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEtBQUssTUFBTTttQkFDcEMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUM7bUJBQ3hFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJOzs7O2dCQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBQyxDQUFDLENBQzVHLEVBQUU7WUFDSCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQzs7O1lBdENGLFVBQVU7Ozs7Ozs7SUFFVCxvQ0FBcUM7Ozs7O0lBRXJDLDRDQUF5RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHJvcERvd25EaXJlY3RpdmUgfSBmcm9tICcuL2Ryb3Bkb3duLmRpcmVjdGl2ZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBEcm9wRG93blNlcnZpY2Uge1xyXG4gIHByaXZhdGUgb3BlblNjb3BlOiBEcm9wRG93bkRpcmVjdGl2ZTtcclxuXHJcbiAgcHJpdmF0ZSBjbG9zZURyb3Bkb3duQmluZDogRXZlbnRMaXN0ZW5lciA9IHRoaXMuY2xvc2VEcm9wZG93bi5iaW5kKHRoaXMpO1xyXG5cclxuICBwdWJsaWMgb3Blbihkcm9wZG93blNjb3BlOiBEcm9wRG93bkRpcmVjdGl2ZSkge1xyXG4gICAgaWYgKCF0aGlzLm9wZW5TY29wZSkge1xyXG4gICAgICAvLyDlu7bml7bnu5Hlrppkb2N1bWVudOS6i+S7tu+8jOmYsuatouS6i+S7tuWGkuazoeWvvOiHtOeri+WNs+inpuWPkVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsb3NlRHJvcGRvd25CaW5kKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5TY29wZSA9IGRyb3Bkb3duU2NvcGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2UoZHJvcGRvd25TY29wZTogRHJvcERvd25EaXJlY3RpdmUpIHtcclxuICAgIGlmICh0aGlzLm9wZW5TY29wZSAhPT0gZHJvcGRvd25TY29wZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5TY29wZSA9IG51bGw7XHJcbiAgICB3aW5kb3cuZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsb3NlRHJvcGRvd25CaW5kKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLm9wZW5TY29wZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBtZW51RWwgPSB0aGlzLm9wZW5TY29wZS5tZW51RWwubmF0aXZlRWxlbWVudDtcclxuICAgIGlmIChldmVudCAmJiB0aGlzLm9wZW5TY29wZS5tZW51RWwgJiZcclxuICAgICAgKCgvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KCg8YW55PiBldmVudC50YXJnZXQpLnRhZ05hbWUpICYmIG1lbnVFbC5jb250YWlucyhldmVudC50YXJnZXQpKVxyXG4gICAgICB8fCB0aGlzLm9wZW5TY29wZS5jbG9zZVNjb3BlID09PSAnbm9uZSdcclxuICAgICAgfHwgKG1lbnVFbC5jb250YWlucyhldmVudC50YXJnZXQpICYmIHRoaXMub3BlblNjb3BlLmNsb3NlU2NvcGUgPT09ICdibGFuaycpXHJcbiAgICAgIHx8ICh0aGlzLm9wZW5TY29wZS5kcm9wZG93bkNoaWxkcmVuLnNvbWUoY2hpbGRyZW4gPT4gY2hpbGRyZW4udG9nZ2xlRWwubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSlcclxuICAgICAgKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLm9wZW5TY29wZS5pc09wZW4gPSBmYWxzZTtcclxuICB9XHJcbn1cclxuIl19