UNPKG

@ctsy/layui-vue

Version:

a component library for Vue 3 base on layui-vue

137 lines (136 loc) 5.06 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); import { defineComponent, openBlock, createBlock, Transition, withCtx, renderSlot, createElementBlock, Fragment, createCommentVNode } from "vue"; import { _ as _export_sfc } from "./plugin-vue_export-helper.js"; const __default__$1 = { name: "LayCollapseTransition" }; const _sfc_main$2 = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$1), { setup(__props) { const elTransition = "0.3s height ease-in-out, 0.3s padding-top ease-in-out, 0.3s padding-bottom ease-in-out"; const beforeEnter = (el) => { el.style.transition = elTransition; if (!el.dataset) el.dataset = {}; el.dataset.oldPaddingTop = el.style.paddingTop; el.dataset.oldPaddingBottom = el.style.paddingBottom; el.style.height = 0; el.style.paddingTop = 0; el.style.paddingBottom = 0; }; const enter = (el) => { el.dataset.oldOverflow = el.style.overflow; if (el.scrollHeight !== 0) { el.style.height = el.scrollHeight + "px"; el.style.paddingTop = el.dataset.oldPaddingTop; el.style.paddingBottom = el.dataset.oldPaddingBottom; } else { el.style.height = ""; el.style.paddingTop = el.dataset.oldPaddingTop; el.style.paddingBottom = el.dataset.oldPaddingBottom; } el.style.overflow = "hidden"; }; const afterEnter = (el) => { el.style.transition = ""; el.style.height = ""; el.style.overflow = el.dataset.oldOverflow; }; const beforeLeave = (el) => { if (!el.dataset) el.dataset = {}; el.dataset.oldPaddingTop = el.style.paddingTop; el.dataset.oldPaddingBottom = el.style.paddingBottom; el.dataset.oldOverflow = el.style.overflow; var computedStyle = getComputedStyle(el, null); el.style.height = el.scrollHeight - parseInt(computedStyle.paddingTop) - parseInt(computedStyle.paddingBottom) + "px"; el.style.overflow = "hidden"; }; const leave = (el) => { if (el.scrollHeight !== 0) { el.style.transition = elTransition; el.style.height = 0; el.style.paddingTop = 0; el.style.paddingBottom = 0; } }; const afterLeave = (el) => { el.style.transition = ""; el.style.height = ""; el.style.overflow = el.dataset.oldOverflow; el.style.paddingTop = el.dataset.oldPaddingTop; el.style.paddingBottom = el.dataset.oldPaddingBottom; }; return (_ctx, _cache) => { return openBlock(), createBlock(Transition, { onBeforeEnter: beforeEnter, onEnter: enter, onAfterEnter: afterEnter, onBeforeLeave: beforeLeave, onLeave: leave, onAfterLeave: afterLeave }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }); }; } })); var fadeTransition_vue_vue_type_style_index_0_lang = ""; const _sfc_main$1 = {}; function _sfc_render(_ctx, _cache) { return openBlock(), createBlock(Transition, { name: "fade" }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }); } var LayFadeTransition = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render]]); const __default__ = { name: "LayTransition" }; const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__), { props: { type: { default: "collapse" }, enable: { type: Boolean, default: true } }, setup(__props) { return (_ctx, _cache) => { return __props.enable ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ __props.type === "collapse" ? (openBlock(), createBlock(_sfc_main$2, { key: 0 }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 })) : createCommentVNode("", true), __props.type === "fade" ? (openBlock(), createBlock(LayFadeTransition, { key: 1 }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 })) : createCommentVNode("", true) ], 64)) : renderSlot(_ctx.$slots, "default", { key: 1 }); }; } })); export { _sfc_main as _ };