@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
81 lines • 7.38 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: tree-mask.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { TreeUtils } from '@duoduo-oba/ng-devui/utils';
export class TreeMaskService {
/**
* @return {?}
*/
static creatMaskElement() {
/** @type {?} */
const maskElement = document.createElement('span');
/** @type {?} */
const style = {
display: 'none',
position: 'absolute',
top: '0',
right: '0',
'z-index': '-1' // 设置z-index防止挡住tree
};
maskElement.classList.add('devui-tree-mask');
TreeUtils.addElStyles(maskElement, style);
return maskElement;
}
/**
* @param {?} hostElement
* @param {?} maskElement
* @param {?} treeWidth
* @return {?}
*/
static addMask(hostElement, maskElement, treeWidth) {
event.stopPropagation();
if (treeWidth) {
/** @type {?} */
const nodeHeight = hostElement.clientHeight;
maskElement.style.width = treeWidth + 'px';
maskElement.style.height = nodeHeight + 'px';
maskElement.style.display = 'block';
hostElement.appendChild(maskElement);
}
}
/**
* @param {?} hostElement
* @param {?} maskElement
* @return {?}
*/
static removeMask(hostElement, maskElement) {
maskElement.style.display = 'none';
hostElement.removeChild(maskElement);
}
/**
* @param {?} treeNode
* @param {?=} index
* @return {?}
*/
static calcWidth(treeNode, index) {
/** @type {?} */
let treeWidth;
// 若传入的有width说明是nativeElement则直接设置宽度,若有Length说明是queryList则找子元素宽度
if (treeNode.clientWidth) {
treeWidth = treeNode.clientWidth;
}
else if (treeNode.length) {
/** @type {?} */
const nodeList = treeNode['_results'];
if (index >= 0) { // 若index小于0则必定不合法,NaN和undefined都不大于0
treeWidth = nodeList[index].nativeElement.clientWidth;
}
else { // index不合法的和没传的都找子element里最大的
treeWidth = Math.max(...nodeList.map((/**
* @param {?} node
* @return {?}
*/
node => node.nativeElement.clientWidth)));
}
}
return treeWidth;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1tYXNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS90cmVlLyIsInNvdXJjZXMiOlsidHJlZS1tYXNrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsTUFBTSxPQUFPLGVBQWU7Ozs7SUFFbkIsTUFBTSxDQUFDLGdCQUFnQjs7Y0FDdEIsV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDOztjQUM1QyxLQUFLLEdBQUc7WUFDWixPQUFPLEVBQUUsTUFBTTtZQUNmLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsS0FBSyxFQUFFLEdBQUc7WUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtTQUNyQztRQUNELFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0MsU0FBUyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQzs7Ozs7OztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBZ0IsRUFBRSxXQUFnQixFQUFFLFNBQWlCO1FBQ3pFLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLFNBQVMsRUFBRTs7a0JBQ1AsVUFBVSxHQUFHLFdBQVcsQ0FBQyxZQUFZO1lBQzNDLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDM0MsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQztZQUM3QyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDcEMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN0QztJQUNILENBQUM7Ozs7OztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBZ0IsRUFBRSxXQUFnQjtRQUN6RCxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDbkMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDOzs7Ozs7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQWEsRUFBRSxLQUFjOztZQUMvQyxTQUFTO1FBQ2IsZ0VBQWdFO1FBQ2hFLElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUN4QixTQUFTLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztTQUNsQzthQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTs7a0JBQ3BCLFFBQVEsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQ3JDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxFQUFFLHFDQUFxQztnQkFDckQsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO2FBQ3ZEO2lCQUFNLEVBQUUsOEJBQThCO2dCQUNyQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHOzs7O2dCQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDO2FBQy9FO1NBQ0Y7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmVlVXRpbHMgfSBmcm9tICduZy1kZXZ1aS91dGlscyc7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJlZU1hc2tTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBjcmVhdE1hc2tFbGVtZW50KCkge1xyXG4gICAgY29uc3QgbWFza0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICBjb25zdCBzdHlsZSA9IHtcclxuICAgICAgZGlzcGxheTogJ25vbmUnLFxyXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgdG9wOiAnMCcsXHJcbiAgICAgIHJpZ2h0OiAnMCcsXHJcbiAgICAgICd6LWluZGV4JzogJy0xJyAvLyDorr7nva56LWluZGV46Ziy5q2i5oyh5L2PdHJlZVxyXG4gICAgfTtcclxuICAgIG1hc2tFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RldnVpLXRyZWUtbWFzaycpO1xyXG4gICAgVHJlZVV0aWxzLmFkZEVsU3R5bGVzKG1hc2tFbGVtZW50LCBzdHlsZSk7XHJcbiAgICByZXR1cm4gbWFza0VsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGFkZE1hc2soaG9zdEVsZW1lbnQ6IGFueSwgbWFza0VsZW1lbnQ6IGFueSwgdHJlZVdpZHRoOiBudW1iZXIpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgaWYgKHRyZWVXaWR0aCkge1xyXG4gICAgICBjb25zdCBub2RlSGVpZ2h0ID0gaG9zdEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xyXG4gICAgICBtYXNrRWxlbWVudC5zdHlsZS53aWR0aCA9IHRyZWVXaWR0aCArICdweCc7XHJcbiAgICAgIG1hc2tFbGVtZW50LnN0eWxlLmhlaWdodCA9IG5vZGVIZWlnaHQgKyAncHgnO1xyXG4gICAgICBtYXNrRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgaG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQobWFza0VsZW1lbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZW1vdmVNYXNrKGhvc3RFbGVtZW50OiBhbnksIG1hc2tFbGVtZW50OiBhbnkpIHtcclxuICAgIG1hc2tFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICBob3N0RWxlbWVudC5yZW1vdmVDaGlsZChtYXNrRWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGNhbGNXaWR0aCh0cmVlTm9kZTogYW55LCBpbmRleD86IG51bWJlcikge1xyXG4gICAgbGV0IHRyZWVXaWR0aDtcclxuICAgIC8vIOiLpeS8oOWFpeeahOaciXdpZHRo6K+05piO5pivbmF0aXZlRWxlbWVudOWImeebtOaOpeiuvue9ruWuveW6pu+8jOiLpeaciUxlbmd0aOivtOaYjuaYr3F1ZXJ5TGlzdOWImeaJvuWtkOWFg+e0oOWuveW6plxyXG4gICAgaWYgKHRyZWVOb2RlLmNsaWVudFdpZHRoKSB7XHJcbiAgICAgIHRyZWVXaWR0aCA9IHRyZWVOb2RlLmNsaWVudFdpZHRoO1xyXG4gICAgfSBlbHNlIGlmICh0cmVlTm9kZS5sZW5ndGgpIHtcclxuICAgICAgY29uc3Qgbm9kZUxpc3QgPSB0cmVlTm9kZVsnX3Jlc3VsdHMnXTtcclxuICAgICAgaWYgKGluZGV4ID49IDApIHsgLy8g6IulaW5kZXjlsI/kuo4w5YiZ5b+F5a6a5LiN5ZCI5rOV77yMTmFO5ZKMdW5kZWZpbmVk6YO95LiN5aSn5LqOMFxyXG4gICAgICAgIHRyZWVXaWR0aCA9IG5vZGVMaXN0W2luZGV4XS5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gICAgICB9IGVsc2UgeyAvLyBpbmRleOS4jeWQiOazleeahOWSjOayoeS8oOeahOmDveaJvuWtkGVsZW1lbnTph4zmnIDlpKfnmoRcclxuICAgICAgICB0cmVlV2lkdGggPSBNYXRoLm1heCguLi5ub2RlTGlzdC5tYXAobm9kZSA9PiBub2RlLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGgpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRyZWVXaWR0aDtcclxuICB9XHJcbn1cclxuIl19