element-plus/packages/tokens/popper.ts
opengraphica 42ff59fc39
feat(components): [date-picker] work with modal focus trap; a11y controls and attributes (#7598)
* feat(components): [date-picker] a11y controls and attributes

* feat(components): [date-picker] keyboard controls for picker

* feat(components): [date-picker] unit test complete

* feat(components): [date-picker] remove immediate watch date
2022-05-10 21:51:17 +08:00

31 lines
958 B
TypeScript

import type { ComputedRef, InjectionKey, Ref } from 'vue'
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>
role: ComputedRef<string>
}
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')