@dialpad/dialtone-vue
Version:
Vue component library for Dialpad's design system Dialtone
97 lines (96 loc) • 2.32 kB
JavaScript
import { t as e } from "../../_plugin-vue_export-helper-BTgDAbhb.js";
import { Transition as t, createBlock as n, createCommentVNode as r, guardReactiveProps as i, mergeProps as a, normalizeProps as o, openBlock as s, renderSlot as c, resolveDynamicComponent as l, vShow as u, withCtx as d, withDirectives as f } from "vue";
//#region components/collapsible/collapsible_lazy_show.vue
var p = {
name: "DtCollapsibleLazyShow",
inheritAttrs: !1,
props: {
show: {
type: Boolean,
default: null
},
appear: {
type: Boolean,
default: !1
},
elementType: {
type: String,
default: "div"
}
},
data() {
return { initialized: !!this.show };
},
computed: { isCSSEnabled() {
return process.env.NODE_ENV !== "test";
} },
watch: { show: function(e) {
!e || this.initialized || (this.initialized = !0);
} },
methods: {
beforeEnter(e) {
requestAnimationFrame(() => {
e.style.height || (e.style.height = "0px");
});
},
enter(e) {
requestAnimationFrame(() => {
requestAnimationFrame(() => {
e.style.height = `${e.scrollHeight}px`;
});
});
},
afterEnter(e) {
e.style.height = null;
},
beforeLeave(e) {
requestAnimationFrame(() => {
e.style.height || (e.style.height = `${e.offsetHeight}px`);
});
},
leave(e) {
requestAnimationFrame(() => {
requestAnimationFrame(() => {
e.style.height = "0px";
});
});
},
afterLeave(e) {
e.style.height = null;
}
}
};
function m(e, p, m, h, g, _) {
return s(), n(t, a({
appear: m.appear,
"enter-active-class": "d-collapsible__enter-active",
"leave-active-class": "d-collapsible__leave-active"
}, e.$attrs, {
css: _.isCSSEnabled,
onBeforeEnter: _.beforeEnter,
onEnter: _.enter,
onAfterEnter: _.afterEnter,
onBeforeLeave: _.beforeLeave,
onLeave: _.leave,
onAfterLeave: _.afterLeave
}), {
default: d(() => [f((s(), n(l(m.elementType), o(i(e.$attrs)), {
default: d(() => [g.initialized ? c(e.$slots, "default", { key: 0 }) : r("", !0)]),
_: 3
}, 16)), [[u, m.show]])]),
_: 3
}, 16, [
"appear",
"css",
"onBeforeEnter",
"onEnter",
"onAfterEnter",
"onBeforeLeave",
"onLeave",
"onAfterLeave"
]);
}
var h = /* @__PURE__ */ e(p, [["render", m]]);
//#endregion
export { h as default };
//# sourceMappingURL=collapsible-lazy-show.js.map