UNPKG

radix-vue

Version:

Vue port for Radix UI Primitives.

225 lines (224 loc) 8.17 kB
import type { Ref } from 'vue'; import type { GraceIntent } from './utils'; import type { FocusScopeProps } from '../FocusScope'; import type { RovingFocusGroupEmits } from '../RovingFocus'; import type { DismissableLayerEmits, DismissableLayerProps } from '../DismissableLayer'; import type { PopperContentProps } from '../Popper'; export interface MenuContentContext { onItemEnter(event: PointerEvent): boolean; onItemLeave(event: PointerEvent): void; onTriggerLeave(event: PointerEvent): boolean; searchRef: Ref<string>; pointerGraceTimerRef: Ref<number>; onPointerGraceIntentChange(intent: GraceIntent | null): void; } export declare const injectMenuContentContext: <T extends MenuContentContext | null | undefined = MenuContentContext>(fallback?: T | undefined) => T extends null ? MenuContentContext | null : MenuContentContext, provideMenuContentContext: (contextValue: MenuContentContext) => MenuContentContext; export interface MenuContentImplPrivateProps { disableOutsidePointerEvents?: DismissableLayerProps['disableOutsidePointerEvents']; /** * Whether scrolling outside the `MenuContent` should be prevented * (default: `false`) */ disableOutsideScroll?: boolean; /** * Whether focus should be trapped within the `MenuContent` * (default: false) */ trapFocus?: FocusScopeProps['trapped']; } export type MenuContentImplEmits = DismissableLayerEmits & Omit<RovingFocusGroupEmits, 'update:currentTabStopId'> & { 'openAutoFocus': [event: Event]; /** * Event handler called when auto-focusing on close. * Can be prevented. */ 'closeAutoFocus': [event: Event]; }; export interface MenuContentImplProps extends MenuContentImplPrivateProps, Omit<PopperContentProps, 'dir' | 'onPlaced'> { /** * Whether keyboard navigation should loop around * @defaultValue false */ loop?: boolean; } export interface MenuRootContentProps extends Omit<PopperContentProps, 'dir' | 'onPlaced'> { /** * Whether keyboard navigation should loop around * @defaultValue false */ loop?: boolean; } declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{ loop: { type: import("vue").PropType<boolean>; }; asChild: { type: import("vue").PropType<boolean>; }; as: { type: import("vue").PropType<import('../Primitive').AsTag | import("vue").Component>; }; align: { type: import("vue").PropType<"center" | "end" | "start">; default: "center" | "end" | "start"; }; disableOutsidePointerEvents: { type: import("vue").PropType<boolean>; }; trapFocus: { type: import("vue").PropType<boolean>; }; sticky: { type: import("vue").PropType<"partial" | "always">; default: "partial" | "always"; }; side: { type: import("vue").PropType<"right" | "left" | "bottom" | "top">; default: "right" | "left" | "bottom" | "top"; }; sideOffset: { type: import("vue").PropType<number>; default: number; }; alignOffset: { type: import("vue").PropType<number>; default: number; }; avoidCollisions: { type: import("vue").PropType<boolean>; default: boolean; }; collisionBoundary: { type: import("vue").PropType<Element | (Element | null)[] | null>; default: () => never[]; }; collisionPadding: { type: import("vue").PropType<number | Partial<Record<"right" | "left" | "bottom" | "top", number>>>; default: number; }; arrowPadding: { type: import("vue").PropType<number>; default: number; }; hideWhenDetached: { type: import("vue").PropType<boolean>; default: boolean; }; updatePositionStrategy: { type: import("vue").PropType<"always" | "optimized">; default: "always" | "optimized"; }; prioritizePosition: { type: import("vue").PropType<boolean>; default: boolean; }; disableOutsideScroll: { type: import("vue").PropType<boolean>; }; }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { escapeKeyDown: (event: KeyboardEvent) => void; pointerDownOutside: (event: import('../DismissableLayer').PointerDownOutsideEvent) => void; focusOutside: (event: import('../DismissableLayer').FocusOutsideEvent) => void; interactOutside: (event: import('../DismissableLayer').PointerDownOutsideEvent | import('../DismissableLayer').FocusOutsideEvent) => void; dismiss: () => void; openAutoFocus: (event: Event) => void; closeAutoFocus: (event: Event) => void; entryFocus: (event: Event) => void; }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{ loop: { type: import("vue").PropType<boolean>; }; asChild: { type: import("vue").PropType<boolean>; }; as: { type: import("vue").PropType<import('../Primitive').AsTag | import("vue").Component>; }; align: { type: import("vue").PropType<"center" | "end" | "start">; default: "center" | "end" | "start"; }; disableOutsidePointerEvents: { type: import("vue").PropType<boolean>; }; trapFocus: { type: import("vue").PropType<boolean>; }; sticky: { type: import("vue").PropType<"partial" | "always">; default: "partial" | "always"; }; side: { type: import("vue").PropType<"right" | "left" | "bottom" | "top">; default: "right" | "left" | "bottom" | "top"; }; sideOffset: { type: import("vue").PropType<number>; default: number; }; alignOffset: { type: import("vue").PropType<number>; default: number; }; avoidCollisions: { type: import("vue").PropType<boolean>; default: boolean; }; collisionBoundary: { type: import("vue").PropType<Element | (Element | null)[] | null>; default: () => never[]; }; collisionPadding: { type: import("vue").PropType<number | Partial<Record<"right" | "left" | "bottom" | "top", number>>>; default: number; }; arrowPadding: { type: import("vue").PropType<number>; default: number; }; hideWhenDetached: { type: import("vue").PropType<boolean>; default: boolean; }; updatePositionStrategy: { type: import("vue").PropType<"always" | "optimized">; default: "always" | "optimized"; }; prioritizePosition: { type: import("vue").PropType<boolean>; default: boolean; }; disableOutsideScroll: { type: import("vue").PropType<boolean>; }; }>> & { onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined; onPointerDownOutside?: ((event: import('../DismissableLayer').PointerDownOutsideEvent) => any) | undefined; onFocusOutside?: ((event: import('../DismissableLayer').FocusOutsideEvent) => any) | undefined; onInteractOutside?: ((event: import('../DismissableLayer').PointerDownOutsideEvent | import('../DismissableLayer').FocusOutsideEvent) => any) | undefined; onDismiss?: (() => any) | undefined; onOpenAutoFocus?: ((event: Event) => any) | undefined; onCloseAutoFocus?: ((event: Event) => any) | undefined; onEntryFocus?: ((event: Event) => any) | undefined; }, { align: "center" | "end" | "start"; sticky: "partial" | "always"; side: "right" | "left" | "bottom" | "top"; sideOffset: number; alignOffset: number; avoidCollisions: boolean; collisionBoundary: Element | (Element | null)[] | null; collisionPadding: number | Partial<Record<"right" | "left" | "bottom" | "top", number>>; arrowPadding: number; hideWhenDetached: boolean; updatePositionStrategy: "always" | "optimized"; prioritizePosition: boolean; }, {}>, { default?(_: {}): any; }>; export default _default; type __VLS_WithTemplateSlots<T, S> = T & { new (): { $slots: S; }; };