UNPKG

maz-ui

Version:

A standalone components library for Vue.Js 3 & Nuxt.Js 3

266 lines (265 loc) 8.9 kB
import { HTMLAttributes } from 'vue'; import { MazColor } from './types'; type __VLS_Props = MazPopoverProps; export type MazPopoverPosition = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'right-start' | 'right-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end' | 'auto'; export type MazPopoverPreferPosition = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'right-start' | 'right-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end'; export type MazPopoverFallbackPosition = 'top' | 'right' | 'bottom' | 'left' | 'top-start' | 'top-end' | 'right-start' | 'right-end' | 'bottom-start' | 'bottom-end' | 'left-start' | 'left-end'; export type MazPopoverTrigger = 'click' | 'hover' | 'manual' | 'adaptive'; export type MazPopoverRole = 'dialog' | 'tooltip' | 'menu'; export interface MazPopoverProps { /** * Controls the popover open state * @model * @type {boolean} * @default false */ modelValue?: boolean; /** * Position of the popover relative to trigger * @values auto, top, bottom, left, right, top-start, top-end, bottom-start, bottom-end, left-start, left-end, right-start, right-end * @default auto * @description Position of the popover relative to trigger */ position?: MazPopoverPosition; /** * Preferred position of the popover relative to trigger when auto position is used * @values auto, top, bottom, left, right, top-start, top-end, bottom-start, bottom-end, left-start, left-end, right-start, right-end * @default 'bottom-start' * @description Preferred position of the popover relative to trigger */ preferPosition?: MazPopoverPreferPosition; /** * Fallback position of the popover relative to trigger when prefer position is not visible * @values auto, top, bottom, left, right, top-start, top-end, bottom-start, bottom-end, left-start, left-end, right-start, right-end * @default auto * @description Fallback position of the popover relative to trigger */ fallbackPosition?: MazPopoverFallbackPosition; /** * How the popover is triggered * @values click, hover, manual, adaptive * @default click * @description How the popover is triggered. 'adaptive' uses hover on desktop and click on mobile */ trigger?: MazPopoverTrigger; /** * ARIA role for accessibility * @values dialog, tooltip * @default dialog * @description ARIA role for accessibility */ role?: MazPopoverRole; /** * ARIA label for the popover * @default undefined */ ariaLabel?: string; /** * Announce content changes to screen readers * @default false */ announceChanges?: boolean; /** * Disables the popover * @default false * @description Disables the popover */ disabled?: boolean; /** * Distance between trigger and popover in pixels * @default 8 */ offset?: number; /** * Delay before showing/hiding in milliseconds * @default 0 */ delay?: number; /** * Delay before closing on hover in milliseconds * @default 150 */ hoverDelay?: number; /** * CSS transition name for animations * @default popover */ transition?: 'scale-pop' | 'scale-fade' | string; /** * Teleport target selector * @default body */ teleportTo?: string; /** * Additional CSS classes for the overlay wrapper * @default undefined */ overlayClass?: HTMLAttributes['class']; /** * Additional CSS classes for the popover panel * @default undefined */ panelClass?: HTMLAttributes['class']; /** * Inline styles for the popover panel * @default undefined */ panelStyle?: HTMLAttributes['style']; /** * Close popover when clicking outside * @default true */ closeOnClickOutside?: boolean; /** * Close popover when pressing Escape key * @default true */ closeOnEscape?: boolean; /** * Prevent auto-close (ignores click outside and escape key) * @default false */ persistent?: boolean; /** * Custom ID for the popover element * @default undefined */ id?: string; /** * ARIA labelledby attribute for accessibility * @default undefined */ ariaLabelledby?: string; /** * ARIA describedby attribute for accessibility * @default undefined */ ariaDescribedby?: string; /** * Color variant of the popover * @values primary, secondary, accent, info, success, warning, destructive, contrast, background * @default background */ color?: MazColor | 'background'; /** * Trap focus inside the popover * @default true */ trapFocus?: boolean; /** * Keep popover open when hovering over the panel * @default false */ keepOpenOnHover?: boolean; /** * The popover will be full width of the trigger * @default false */ block?: boolean; /** * CSS selector or element reference to use for positioning calculations * @description When provided, the popover will position relative to this element instead of the trigger * Useful for components with labels where you want to position relative to the actual input * @type {string | HTMLElement} * @default undefined * @example "input" or "#my-input" or HTMLElement */ positionReference?: string | HTMLElement; } declare function open(): void; declare function close(): void; declare function toggle(): void; declare const __VLS_defaults: { modelValue: boolean; }; type __VLS_PublicProps = { modelValue?: typeof __VLS_defaults['modelValue']; } & __VLS_Props; declare function __VLS_template(): { attrs: Partial<{}>; slots: { trigger?(_: { open: typeof open; close: typeof close; toggle: typeof toggle; isOpen: boolean; trigger: "click" | "hover" | "manual"; }): any; default?(_: { open: typeof open; close: typeof close; toggle: typeof toggle; isOpen: true; }): any; }; refs: { trigger: HTMLDivElement; panel: HTMLDivElement; }; rootEl: any; }; type __VLS_TemplateResult = ReturnType<typeof __VLS_template>; declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, { /** * Open the popover * @description Programmatically open the popover * @usage `mazPopoverInstance.value?.open()` */ open: typeof open; /** * Close the popover * @description Programmatically close the popover * @usage `mazPopoverInstance.value?.close()` */ close: typeof close; /** * Toggle the popover * @description Programmatically toggle the popover open/close state * @usage `mazPopoverInstance.value?.toggle()` */ toggle: typeof toggle; /** * Check if the popover is open * @type {ModelRef<boolean>} * @description Reactive reference to the popover open state * @usage `const isPopoverOpen = mazPopoverInstance.value?.isOpen` */ isOpen: import('vue').ModelRef<boolean, string, boolean, boolean>; /** * Update the popover position * @description Manually recalculate and update the popover position * @usage `mazPopoverInstance.value?.updatePosition()` */ updatePosition: () => void; /** * Panel reference * @type {Ref<HTMLElement>} * @description Reference to the popover panel element * @usage `mazPopoverInstance.value?.panelRef` */ panelRef: Readonly<import('vue').ShallowRef<HTMLElement | null>>; }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, { close: () => any; toggle: (value: boolean) => any; open: () => any; "update:model-value": (value: boolean) => any; "update:modelValue": (value: boolean) => any; "after-close-animation": () => any; }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{ onClose?: (() => any) | undefined; onToggle?: ((value: boolean) => any) | undefined; onOpen?: (() => any) | undefined; "onUpdate:model-value"?: ((value: boolean) => any) | undefined; "onUpdate:modelValue"?: ((value: boolean) => any) | undefined; "onAfter-close-animation"?: (() => any) | undefined; }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, { trigger: HTMLDivElement; panel: HTMLDivElement; }, any>; declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>; export default _default; type __VLS_WithTemplateSlots<T, S> = T & { new (): { $slots: S; }; };