f01c5aced915d83953c539fc4806d1d646eebcfa3536412b7060a6cca5997b9019ac8e20ab1bde7e189303c678233e484330518b787413c50e1e07d6cb419e 3.0 KB

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