@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
78 lines • 6.41 kB
JavaScript
/**
* @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