UNPKG

various-ui

Version:

This is a test version of the Vue 3 component library

91 lines (87 loc) 2.84 kB
'use strict'; 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