UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 5.96 kB
{"version":3,"file":"createTransition.mjs","names":["h","Transition","TransitionGroup","genericComponent","createCssTransition","name","origin","mode","props","group","Boolean","hideOnLeave","leaveAbsolute","type","String","default","setup","slots","tag","onBeforeEnter","el","style","transformOrigin","onLeave","offsetTop","offsetLeft","offsetWidth","offsetHeight","_transitionInitialStyles","position","top","left","width","height","setProperty","onAfterLeave","createJavascriptTransition","functions"],"sources":["../../../src/components/transitions/createTransition.ts"],"sourcesContent":["// Utilities\nimport { h, Transition, TransitionGroup } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { FunctionalComponent, PropType } from 'vue'\n\nexport function createCssTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n) {\n return genericComponent()({\n name,\n\n props: {\n group: Boolean,\n hideOnLeave: Boolean,\n leaveAbsolute: Boolean,\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n setup (props, { slots }) {\n return () => {\n const tag = props.group ? TransitionGroup : Transition\n\n return h(tag as FunctionalComponent, {\n name,\n mode: props.mode,\n onBeforeEnter (el: HTMLElement) {\n el.style.transformOrigin = props.origin\n },\n onLeave (el: HTMLElement) {\n if (props.leaveAbsolute) {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = `${offsetTop}px`\n el.style.left = `${offsetLeft}px`\n el.style.width = `${offsetWidth}px`\n el.style.height = `${offsetHeight}px`\n }\n\n if (props.hideOnLeave) {\n el.style.setProperty('display', 'none', 'important')\n }\n },\n onAfterLeave (el: HTMLElement) {\n if (props.leaveAbsolute && el?._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n },\n }, slots.default)\n }\n },\n })\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record<string, any>,\n mode = 'in-out'\n) {\n return genericComponent()({\n name,\n\n props: {\n mode: {\n type: String as PropType<'in-out' | 'out-in' | 'default'>,\n default: mode,\n },\n },\n\n setup (props, { slots }) {\n return () => {\n return h(Transition, {\n name,\n // mode: props.mode, // TODO: vuejs/vue-next#3104\n ...functions,\n }, slots.default)\n }\n },\n })\n}\n"],"mappings":"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"}