UNPKG

various-ui

Version:

This is a test version of the Vue 3 component library

130 lines (126 loc) 4.24 kB
'use strict'; var vue = require('vue'); var gsap = require('gsap'); require('../../../../utils/index.js'); var index = require('../../../../utils/src/node/index.js'); var lodashEs = require('lodash-es'); const useComposable = (define, emits) => { const vars = { spacing: { x: "", y: "" }, //* 内间距属性 overflow: "" //* overflow属性 }; const refs = { open: vue.ref(false) }; const nodes = { main: vue.ref(), container: vue.ref() }; const computeds = { site: vue.computed(() => { switch (define.direction) { case "top": return { leave: { yPercent: -100 }, enter: { yPercent: 0 } }; case "left": return { leave: { xPercent: -100 }, enter: { xPercent: 0 } }; case "right": return { leave: { xPercent: 100 }, enter: { xPercent: 0 } }; default: return { leave: { yPercent: 100 }, enter: { yPercent: 0 } }; } }) }; const methods = { //* Modal关闭函数 closeModal: () => { refs.open.value = false; emits("close"); }, //* Modal启动函数 openModal: () => { var _a; if (!refs.open.value) { vars.spacing = { x: document.body.style.paddingRight, y: document.body.style.paddingBottom }; vars.overflow = document.body.style.overflow; index.scrollbarHidden(); } (_a = nodes.container.value) == null ? void 0 : _a.scrollTo({ top: 0 }); refs.open.value = true; emits("open"); }, //* Modal滚动条函数 scrollTo: (options) => { var _a; (_a = nodes.container.value) == null ? void 0 : _a.scrollTo(options); } }; const binds = vue.reactive({ content: vue.computed(() => { return { style: { padding: define.spacing } }; }), container: vue.computed(() => { const result = { width: "100vw", height: "100vh" }; if (define.direction == "right" || define.direction == "left") { result.width = lodashEs.isNumber(define.width) ? define.width + "px" : define.width; 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; } result.top = "0"; if (define.direction == "left") result.left = "0"; else { result.right = "0"; } } else { result.height = lodashEs.isNumber(define.height) ? define.height + "px" : define.height; 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; } result.left = "0"; if (define.direction == "bottom") result.bottom = "0"; else { result.top = "0"; } } return { style: result }; }) }); const ons = { animation: { "before-enter": () => { nodes.container.value && gsap.gsap.set(nodes.container.value, Object.assign(computeds.site.value.leave, { opacity: 0 })); }, "after-leave": () => { document.body.style.overflow = vars.overflow; document.body.style.paddingRight = vars.spacing.x; document.body.style.paddingBottom = vars.spacing.y; emits("after-leave"); }, "enter": (_el, done) => { if (nodes.container.value) { gsap.gsap.to( nodes.container.value, Object.assign(computeds.site.value.enter, { duration: 0.5, opacity: 1, onComplete: () => done() }) ); } }, "leave": (_el, done) => { if (nodes.container.value) { gsap.gsap.to( nodes.container.value, Object.assign(computeds.site.value.leave, { duration: 0.5, opacity: 0, onComplete: () => done() }) ); } } } }; return { ons, vars, refs, nodes, binds, methods, computeds }; }; exports.useComposable = useComposable; //# sourceMappingURL=composable.js.map