vite-uni-dev-tool
Version:
vite-uni-dev-tool, debug, uni-app, 一处编写,到处调试
50 lines (44 loc) • 1.18 kB
text/typescript
import type { ComponentInternalInstance, ComponentPublicInstance } from 'vue';
export function getRect(
selector: string,
context: ComponentInternalInstance | null | any,
node: boolean = false,
) {
// 之前是个对象,现在改成实例,防止旧版会报错
if (context == null) {
return Promise.reject('context is null');
}
if (context?.context) {
context = context.context;
}
return new Promise<UniNamespace.NodeInfo>((resolve, reject) => {
const dom = uni.createSelectorQuery().in(context).select(selector);
const result: any = (rect: UniNamespace.NodeInfo) => {
if (rect) {
resolve(rect);
} else {
reject('no rect');
}
};
if (!node) {
dom.boundingClientRect(result).exec();
} else {
dom
.fields(
{
node: true,
size: true,
rect: true,
},
result,
)
.exec();
}
});
}
export function addUnit(value?: string | number): string {
if (!value) {
return '0px';
}
return typeof value === 'number' ? `${value}px` : value;
}