@ctsy/layui-vue
Version:
a component library for Vue 3 base on layui-vue
137 lines (136 loc) • 5.06 kB
JavaScript
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 _ };