2022-05-10 21:51:17 +08:00
|
|
|
import type { ComputedRef, InjectionKey, Ref } from 'vue'
|
2022-03-24 21:22:46 +08:00
|
|
|
import type { Instance } from '@popperjs/core'
|
|
|
|
|
|
|
|
export type Measurable = {
|
|
|
|
getBoundingClientRect: () => DOMRect
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* triggerRef indicates the element that triggers popper
|
|
|
|
* contentRef indicates the element of popper content
|
|
|
|
* referenceRef indicates the element that popper content relative with
|
|
|
|
*/
|
|
|
|
export type ElPopperInjectionContext = {
|
|
|
|
triggerRef: Ref<Measurable | undefined>
|
|
|
|
contentRef: Ref<HTMLElement | undefined>
|
|
|
|
popperInstanceRef: Ref<Instance | undefined>
|
|
|
|
referenceRef: Ref<Measurable | undefined>
|
2022-05-10 21:51:17 +08:00
|
|
|
role: ComputedRef<string>
|
2022-03-24 21:22:46 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export type ElPopperContentInjectionContext = {
|
|
|
|
arrowRef: Ref<HTMLElement | undefined>
|
|
|
|
arrowOffset: Ref<number | undefined>
|
|
|
|
}
|
|
|
|
|
|
|
|
export const POPPER_INJECTION_KEY: InjectionKey<ElPopperInjectionContext> =
|
|
|
|
Symbol('popper')
|
|
|
|
|
|
|
|
export const POPPER_CONTENT_INJECTION_KEY: InjectionKey<ElPopperContentInjectionContext> =
|
|
|
|
Symbol('popperContent')
|