collapse-transition.js 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. require('../../../hooks/index.js');
  5. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  6. var index = require('../../../hooks/use-namespace/index.js');
  7. const __default__ = vue.defineComponent({
  8. name: "ElCollapseTransition"
  9. });
  10. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  11. ...__default__,
  12. setup(__props) {
  13. const ns = index.useNamespace("collapse-transition");
  14. const on = {
  15. beforeEnter(el) {
  16. if (!el.dataset)
  17. el.dataset = {};
  18. el.dataset.oldPaddingTop = el.style.paddingTop;
  19. el.dataset.oldPaddingBottom = el.style.paddingBottom;
  20. el.style.maxHeight = 0;
  21. el.style.paddingTop = 0;
  22. el.style.paddingBottom = 0;
  23. },
  24. enter(el) {
  25. el.dataset.oldOverflow = el.style.overflow;
  26. if (el.scrollHeight !== 0) {
  27. el.style.maxHeight = `${el.scrollHeight}px`;
  28. el.style.paddingTop = el.dataset.oldPaddingTop;
  29. el.style.paddingBottom = el.dataset.oldPaddingBottom;
  30. } else {
  31. el.style.maxHeight = 0;
  32. el.style.paddingTop = el.dataset.oldPaddingTop;
  33. el.style.paddingBottom = el.dataset.oldPaddingBottom;
  34. }
  35. el.style.overflow = "hidden";
  36. },
  37. afterEnter(el) {
  38. el.style.maxHeight = "";
  39. el.style.overflow = el.dataset.oldOverflow;
  40. },
  41. beforeLeave(el) {
  42. if (!el.dataset)
  43. el.dataset = {};
  44. el.dataset.oldPaddingTop = el.style.paddingTop;
  45. el.dataset.oldPaddingBottom = el.style.paddingBottom;
  46. el.dataset.oldOverflow = el.style.overflow;
  47. el.style.maxHeight = `${el.scrollHeight}px`;
  48. el.style.overflow = "hidden";
  49. },
  50. leave(el) {
  51. if (el.scrollHeight !== 0) {
  52. el.style.maxHeight = 0;
  53. el.style.paddingTop = 0;
  54. el.style.paddingBottom = 0;
  55. }
  56. },
  57. afterLeave(el) {
  58. el.style.maxHeight = "";
  59. el.style.overflow = el.dataset.oldOverflow;
  60. el.style.paddingTop = el.dataset.oldPaddingTop;
  61. el.style.paddingBottom = el.dataset.oldPaddingBottom;
  62. }
  63. };
  64. return (_ctx, _cache) => {
  65. return vue.openBlock(), vue.createBlock(vue.Transition, vue.mergeProps({
  66. name: vue.unref(ns).b()
  67. }, vue.toHandlers(on)), {
  68. default: vue.withCtx(() => [
  69. vue.renderSlot(_ctx.$slots, "default")
  70. ]),
  71. _: 3
  72. }, 16, ["name"]);
  73. };
  74. }
  75. });
  76. var CollapseTransition = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/collapse-transition/src/collapse-transition.vue"]]);
  77. exports["default"] = CollapseTransition;
  78. //# sourceMappingURL=collapse-transition.js.map