/* * @Description: * @Author: Format-qi 283810417@qq.com * @Date: 2022-06-25 15:52:48 * @LastEditors: Format-qi 283810417@qq.com * @LastEditTime: 2022-06-25 15:53:14 */ import type { PropType } from 'vue'; import { defineComponent, Transition, TransitionGroup } from 'vue'; import { getSlot } from '/@/utils/helper/tsxHelper'; type Mode = 'in-out' | 'out-in' | 'default' | undefined; export function createSimpleTransition(name: string, origin = 'top center 0', mode?: Mode) { return defineComponent({ name, props: { group: { type: Boolean as PropType, default: false, }, mode: { type: String as PropType, default: mode, }, origin: { type: String as PropType, default: origin, }, }, setup(props, { slots, attrs }) { const onBeforeEnter = (el: HTMLElement) => { el.style.transformOrigin = props.origin; }; return () => { const Tag = !props.group ? Transition : TransitionGroup; return ( {() => getSlot(slots)} ); }; }, }); } export function createJavascriptTransition( name: string, functions: Recordable, mode: Mode = 'in-out', ) { return defineComponent({ name, props: { mode: { type: String as PropType, default: mode, }, }, setup(props, { attrs, slots }) { return () => { return ( {() => getSlot(slots)} ); }; }, }); }