vuetify
Version:
Vue Material Component Framework
1 lines • 5.05 kB
Source Map (JSON)
{"version":3,"file":"expand-transition.mjs","names":["camelize","expandedParentClass","x","sizeProperty","offsetProperty","onBeforeEnter","el","_parent","parentNode","_initialStyle","transition","style","overflow","onEnter","initialStyle","setProperty","offset","offsetHeight","classList","add","requestAnimationFrame","onAfterEnter","resetStyles","onEnterCancelled","onLeave","onAfterLeave","onLeaveCancelled","remove","size"],"sources":["../../../src/components/transitions/expand-transition.ts"],"sourcesContent":["// Utilities\nimport { camelize } from 'vue'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = camelize(`offset-${sizeProperty}`) as 'offsetHeight' | 'offsetWidth'\n\n return {\n onBeforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n onEnter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n onAfterEnter: resetStyles,\n onEnterCancelled: resetStyles,\n\n onLeave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n onAfterLeave,\n onLeaveCancelled: onAfterLeave,\n }\n\n function onAfterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n"],"mappings":"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"}