various-ui
Version:
This is a test version of the Vue 3 component library
91 lines (87 loc) • 2.84 kB
JavaScript
;
var vue = require('vue');
require('../../../../utils/index.js');
var lodashEs = require('lodash-es');
const useComposable = (define, emit) => {
const refs = {
open: vue.ref(false),
main: vue.ref(),
observer: vue.ref(),
container: vue.ref()
};
const computeds = {
//* 主体样式
mainStyle: vue.computed(() => {
return {
padding: define.margin,
zIndex: define.zIndex
};
}),
//* 容器样式
containerStyle: vue.computed(() => {
const result = {
width: lodashEs.isNumber(define.width) ? define.width + "px" : define.width,
height: lodashEs.isNumber(define.height) ? define.height + "px" : define.height,
padding: define.spacing
};
if (define.minHeight) result["min-height"] = lodashEs.isNumber(define.minHeight) ? define.minHeight + "px" : define.minHeight;
if (define.maxHeight) result["max-height"] = lodashEs.isNumber(define.maxHeight) ? define.maxHeight + "px" : define.maxHeight;
if (define.minWidth) result["min-width"] = lodashEs.isNumber(define.minWidth) ? define.minWidth + "px" : define.minWidth;
if (define.maxWidth) {
result["max-width"] = lodashEs.isNumber(define.maxWidth) ? define.maxWidth + "px" : define.maxWidth;
}
return result;
})
};
const methods = {
//* 窗口初始化函数
resizeHandler: () => {
vue.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 = vue.reactive({
main: vue.computed(() => {
return {
style: computeds.mainStyle.value,
class: define.classExtraName
};
})
});
return { refs, binds, methods, computeds };
};
exports.useComposable = useComposable;
//# sourceMappingURL=composable.js.map