/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { LitElement, nothing, type PropertyValues } from 'lit'; import { ModalSize, ModalPosition, ModalAnimation, ModalBackdrop } from './modal.types.js'; import { ModalDragHost, ModalKeyboardHost } from './controllers/index.js'; declare const NrModalElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & (new (...args: any[]) => import("packages/common/src/shared/base-mixin.js").LightDomContent) & typeof LitElement; /** * Versatile modal component with multiple sizes, animations, and enhanced functionality. * * @example * ```html * * *

Modal content goes here

*
* * * *
* * Custom Header *
*

Modal content

*
* Cancel * OK *
*
* ``` * * @fires modal-open - Modal opened * @fires modal-close - Modal closed * @fires modal-before-close - Before modal closes (cancelable) * @fires modal-after-open - After modal opens * @fires modal-escape - Escape key pressed * * @slot default - Modal body content * @slot header - Custom header content * @slot footer - Custom footer content */ export declare class NrModalElement extends NrModalElement_base implements ModalDragHost, ModalKeyboardHost { static useShadowDom: boolean; static styles: import("lit").CSSResult; /** Whether the modal is open */ open: boolean; /** Modal size (small, medium, large, xl) */ size: ModalSize; /** Modal position (center, top, bottom) */ position: ModalPosition; /** Animation type */ animation: ModalAnimation; /** Backdrop behavior */ backdrop: ModalBackdrop; /** Whether the modal can be closed */ closable: boolean; /** Whether the modal can be dragged */ modalDraggable: boolean; /** Whether the modal is resizable */ resizable: boolean; /** Whether the modal is fullscreen */ fullscreen: boolean; /** Modal title */ modalTitle: string; /** Show close button in header */ showCloseButton: boolean; /** Header icon */ headerIcon: string; /** Z-index for the modal */ zIndex: number; /** Custom width */ width: string; /** Custom height */ height: string; /** Dragging state */ isDragging: boolean; /** Current X offset for dragging */ offsetX: number; /** Current Y offset for dragging */ offsetY: number; /** Animation state */ private animationState; /** Previous focus element */ private previousActiveElement; requiredComponents: string[]; private dragController; private keyboardController; connectedCallback(): void; disconnectedCallback(): void; willUpdate(changedProperties: PropertyValues): void; private handleOpen; private startOpenAnimation; private getAnimationKeyframes; private handleClose; /** * Opens the modal */ openModal(): void; /** * Closes the modal */ closeModal: () => void; private handleBackdropClick; private getBackdropClasses; private getModalClasses; private getModalStyles; private renderHeader; private renderFooter; updated(): void; private updateDataTheme; render(): typeof nothing | import("lit-html").TemplateResult<1>; } export {}; //# sourceMappingURL=modal.component.d.ts.map