various-ui
Version:
This is a test version of the Vue 3 component library
89 lines (86 loc) • 2.76 kB
JavaScript
import { ref, computed, nextTick, reactive } from 'vue';
import '../../../../utils/index.mjs';
import { isNumber } from 'lodash-es';
const useComposable = (define, emit) => {
const refs = {
open: ref(false),
main: ref(),
observer: ref(),
container: ref()
};
const computeds = {
//* 主体样式
mainStyle: computed(() => {
return {
padding: define.margin,
zIndex: define.zIndex
};
}),
//* 容器样式
containerStyle: computed(() => {
const result = {
width: isNumber(define.width) ? define.width + "px" : define.width,
height: isNumber(define.height) ? define.height + "px" : define.height,
padding: define.spacing
};
if (define.minHeight) result["min-height"] = isNumber(define.minHeight) ? define.minHeight + "px" : define.minHeight;
if (define.maxHeight) result["max-height"] = isNumber(define.maxHeight) ? define.maxHeight + "px" : define.maxHeight;
if (define.minWidth) result["min-width"] = isNumber(define.minWidth) ? define.minWidth + "px" : define.minWidth;
if (define.maxWidth) {
result["max-width"] = isNumber(define.maxWidth) ? define.maxWidth + "px" : define.maxWidth;
}
return result;
})
};
const methods = {
//* 窗口初始化函数
resizeHandler: () => {
nextTick(() => {
if (!refs.container.value || !refs.main.value) return;
if (refs.container.value.offsetHeight >= window.innerHeight) {
refs.main.value.style.alignItems = "flex-start";
} else {
refs.main.value.style.alignItems = "center";
}
});
},
//* Modal关闭函数
closeModal: () => {
if (!refs.main.value || !refs.observer.value) return;
else {
document.body.style.overflow = "";
refs.observer.value.disconnect();
refs.open.value = false;
emit("close");
}
},
//* Modal启动函数
openModal: () => {
var _a;
if (!refs.main.value || !refs.observer.value) return;
else {
document.body.style.overflow = "hidden";
(_a = refs.main.value) == null ? void 0 : _a.scrollTo({ top: 0 });
refs.observer.value.observe(refs.main.value);
refs.open.value = true;
emit("open");
}
},
//* Modal滚动条函数
scrollTo: (options) => {
var _a;
(_a = refs.main.value) == null ? void 0 : _a.scrollTo(options);
}
};
const binds = reactive({
main: computed(() => {
return {
style: computeds.mainStyle.value,
class: define.classExtraName
};
})
});
return { refs, binds, methods, computeds };
};
export { useComposable };
//# sourceMappingURL=composable.mjs.map