hongluan-ui
Version:
Hongluan Component Library for Vue 3
1 lines • 4.39 kB
Source Map (JSON)
{"version":3,"file":"collapse-transition.mjs","sources":["../../../../../../packages/components/collapse-transition/src/collapse-transition.vue"],"sourcesContent":["<template>\n <transition name=\"collapse-transition\" v-on=\"on\">\n <slot></slot>\n </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport type { RendererElement } from '@vue/runtime-core'\n\nexport default defineComponent({\n name: 'CollapseTransition',\n setup() {\n const reset = (el: RendererElement) => {\n el.style.maxHeight = ''\n el.style.overflow = el.dataset.oldOverflow\n el.style.paddingTop = el.dataset.oldPaddingTop\n el.style.paddingBottom = el.dataset.oldPaddingBottom\n }\n\n return {\n on: {\n beforeEnter(el: RendererElement) {\n if (!el.dataset) el.dataset = {}\n\n el.dataset.oldPaddingTop = el.style.paddingTop\n el.dataset.oldPaddingBottom = el.style.paddingBottom\n if (el.style.height) el.dataset.elExistsHeight = el.style.height\n\n el.style.maxHeight = 0\n el.style.paddingTop = 0\n el.style.paddingBottom = 0\n },\n\n enter(el: RendererElement) {\n requestAnimationFrame(() => {\n el.dataset.oldOverflow = el.style.overflow\n if (el.dataset.elExistsHeight) {\n el.style.maxHeight = el.dataset.elExistsHeight\n } else if (el.scrollHeight !== 0) {\n el.style.maxHeight = `${el.scrollHeight}px`\n } else {\n el.style.maxHeight = 0\n }\n\n el.style.paddingTop = el.dataset.oldPaddingTop\n el.style.paddingBottom = el.dataset.oldPaddingBottom\n el.style.overflow = 'hidden'\n })\n },\n\n afterEnter(el: RendererElement) {\n el.style.maxHeight = ''\n el.style.overflow = el.dataset.oldOverflow\n },\n\n enterCancelled(el: RendererElement) {\n reset(el)\n },\n\n beforeLeave(el: RendererElement) {\n if (!el.dataset) el.dataset = {}\n el.dataset.oldPaddingTop = el.style.paddingTop\n el.dataset.oldPaddingBottom = el.style.paddingBottom\n el.dataset.oldOverflow = el.style.overflow\n\n el.style.maxHeight = `${el.scrollHeight}px`\n el.style.overflow = 'hidden'\n },\n\n leave(el: RendererElement) {\n if (el.scrollHeight !== 0) {\n el.style.maxHeight = 0\n el.style.paddingTop = 0\n el.style.paddingBottom = 0\n }\n },\n\n afterLeave(el: RendererElement) {\n reset(el)\n },\n leaveCancelled(el: RendererElement) {\n reset(el)\n },\n },\n }\n },\n})\n</script>\n"],"names":["_createBlock","_Transition","_mergeProps","_toHandlers","_renderSlot"],"mappings":";;;AASA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AACN,UAAM,QAAQ,CAAC,OAAwB;AACrC,SAAG,MAAM,YAAY;AACrB,SAAG,MAAM,WAAW,GAAG,QAAQ;AAC/B,SAAG,MAAM,aAAa,GAAG,QAAQ;AACjC,SAAG,MAAM,gBAAgB,GAAG,QAAQ;AAAA;AAGtC,WAAO;AAAA,MACL,IAAI;AAAA,QACF,YAAY,IAAqB;AAC/B,cAAI,CAAC,GAAG;AAAS,eAAG,UAAU;AAE9B,aAAG,QAAQ,gBAAgB,GAAG,MAAM;AACpC,aAAG,QAAQ,mBAAmB,GAAG,MAAM;AACvC,cAAI,GAAG,MAAM;AAAQ,eAAG,QAAQ,iBAAiB,GAAG,MAAM;AAE1D,aAAG,MAAM,YAAY;AACrB,aAAG,MAAM,aAAa;AACtB,aAAG,MAAM,gBAAgB;AAAA;AAC3B,QAEA,MAAM,IAAqB;AACzB,gCAAsB,MAAM;AAC1B,eAAG,QAAQ,cAAc,GAAG,MAAM;AAClC,gBAAI,GAAG,QAAQ,gBAAgB;AAC7B,iBAAG,MAAM,YAAY,GAAG,QAAQ;AAAA,uBACvB,GAAG,iBAAiB,GAAG;AAChC,iBAAG,MAAM,YAAY,GAAG,GAAG;AAAA,mBACtB;AACL,iBAAG,MAAM,YAAY;AAAA;AAGvB,eAAG,MAAM,aAAa,GAAG,QAAQ;AACjC,eAAG,MAAM,gBAAgB,GAAG,QAAQ;AACpC,eAAG,MAAM,WAAW;AAAA,WACrB;AAAA;AACH,QAEA,WAAW,IAAqB;AAC9B,aAAG,MAAM,YAAY;AACrB,aAAG,MAAM,WAAW,GAAG,QAAQ;AAAA;AACjC,QAEA,eAAe,IAAqB;AAClC,gBAAM,EAAE;AAAA;AACV,QAEA,YAAY,IAAqB;AAC/B,cAAI,CAAC,GAAG;AAAS,eAAG,UAAU;AAC9B,aAAG,QAAQ,gBAAgB,GAAG,MAAM;AACpC,aAAG,QAAQ,mBAAmB,GAAG,MAAM;AACvC,aAAG,QAAQ,cAAc,GAAG,MAAM;AAElC,aAAG,MAAM,YAAY,GAAG,GAAG;AAC3B,aAAG,MAAM,WAAW;AAAA;AACtB,QAEA,MAAM,IAAqB;AACzB,cAAI,GAAG,iBAAiB,GAAG;AACzB,eAAG,MAAM,YAAY;AACrB,eAAG,MAAM,aAAa;AACtB,eAAG,MAAM,gBAAgB;AAAA;AAC3B;AACF,QAEA,WAAW,IAAqB;AAC9B,gBAAM,EAAE;AAAA;AACV,QACA,eAAe,IAAqB;AAClC,gBAAM,EAAE;AAAA;AACV;AACF;AACF;AAEJ,CAAC;;sBArFCA,YAEaC,YAFbC,WAEa,EAFD,MAAK,yBAAsBC,WAAM,KAAG,EAAD;AAAA,qBAC7C,MAAa;AAAA,MAAbC,WAAa;AAAA;;;;;;;;"}