mirror of
https://github.com/element-plus/element-plus.git
synced 2024-11-21 01:02:59 +08:00
feat(hooks): add use-transition-fallthrough-hook
- Add transition-fallthrough-hook to get common logic extracted.
This commit is contained in:
parent
af88436258
commit
d970108d16
97
packages/hooks/use-transition-fallthrough/index.ts
Normal file
97
packages/hooks/use-transition-fallthrough/index.ts
Normal file
@ -0,0 +1,97 @@
|
||||
/* istanbul ignore file */
|
||||
import { getCurrentInstance } from 'vue'
|
||||
|
||||
const AFTER_APPEAR = 'after-appear'
|
||||
const AFTER_ENTER = 'after-enter'
|
||||
const AFTER_LEAVE = 'after-leave'
|
||||
const APPEAR = 'appear'
|
||||
const APPEAR_CANCELLED = 'appear-cancelled'
|
||||
const BEFORE_ENTER = 'before-enter'
|
||||
const BEFORE_LEAVE = 'before-leave'
|
||||
const ENTER = 'enter'
|
||||
const ENTER_CANCELLED = 'enter-cancelled'
|
||||
const LEAVE = 'leave'
|
||||
const LEAVE_CANCELLED = 'leave-cancelled'
|
||||
|
||||
export const useTransitionFallthroughEmits = [
|
||||
AFTER_APPEAR,
|
||||
AFTER_ENTER,
|
||||
AFTER_LEAVE,
|
||||
APPEAR,
|
||||
APPEAR_CANCELLED,
|
||||
BEFORE_ENTER,
|
||||
BEFORE_LEAVE,
|
||||
ENTER,
|
||||
ENTER_CANCELLED,
|
||||
LEAVE,
|
||||
LEAVE_CANCELLED,
|
||||
]
|
||||
|
||||
// Sometimes we want to delegate the transition emitted event
|
||||
// we have to right the function locally, which is not a good
|
||||
// approach to this, so we created this hook for the event
|
||||
// fallthrough
|
||||
|
||||
/**
|
||||
* NOTE:
|
||||
* This is only a delegator for delegating transition callbacks.
|
||||
* Use this at your need.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* Simple usage
|
||||
*
|
||||
* In your setups:
|
||||
*
|
||||
* setup() {
|
||||
* const fallthroughMethods = useTransitionFallthrough()
|
||||
* return fallthrough
|
||||
* }
|
||||
*
|
||||
* In your template:
|
||||
*
|
||||
* <template>
|
||||
* <transition name="whatever" v-bind="fallthrough">
|
||||
* <slot />
|
||||
* </transition>
|
||||
* </template>
|
||||
*
|
||||
*/
|
||||
|
||||
export const useTransitionFallthrough = () => {
|
||||
const { emit } = getCurrentInstance()
|
||||
|
||||
return {
|
||||
onAfterAppear: () => {
|
||||
emit(AFTER_APPEAR)
|
||||
},
|
||||
onAfterEnter: () => {
|
||||
emit(AFTER_ENTER)
|
||||
},
|
||||
onAfterLeave: () => {
|
||||
emit(AFTER_LEAVE)
|
||||
},
|
||||
onAppearCancelled: () => {
|
||||
emit(APPEAR_CANCELLED)
|
||||
},
|
||||
onBeforeEnter: () => {
|
||||
emit(BEFORE_ENTER)
|
||||
},
|
||||
onBeforeLeave: () => {
|
||||
emit(BEFORE_LEAVE)
|
||||
},
|
||||
onEnter: () => {
|
||||
emit(ENTER)
|
||||
},
|
||||
onEnterCancelled: () => {
|
||||
emit(ENTER_CANCELLED)
|
||||
},
|
||||
onLeave: () => {
|
||||
emit(LEAVE)
|
||||
},
|
||||
onLeaveCancelled: () => {
|
||||
emit(LEAVE_CANCELLED)
|
||||
},
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user