import WUPBaseElement from "./baseElement"; declare const enum OpenCases { /** When $open() is called programmatically */ onManualCall = 0 } declare const enum CloseCases { /** When $close() is called programmatically */ onManualCall = 0 } declare global { namespace WUP.BaseModal { interface Options { } interface EventMap extends WUP.Base.EventMap { /** Fires before opening * @tutorial rules * * can be prevented via `e.preventDefault()` */ $willOpen: CustomEvent<{ openCase: OpenCases; }>; /** Fires after element is opened (after animation ends) */ $open: Event; /** Fires before closing * @tutorial rules * * can be prevented via `e.preventDefault()` */ $willClose: CustomEvent<{ closeCase: CloseCases; }>; /** Fires after element is closed (after animation ends) */ $close: Event; } interface JSXProps extends WUP.Base.OnlyNames { /** @deprecated SyntheticEvent is not supported. Use ref.addEventListener('$willOpen') instead */ onWillOpen?: never; /** @deprecated SyntheticEvent is not supported. Use ref.addEventListener('$open') instead */ onOpen?: never; /** @deprecated SyntheticEvent is not supported. Use ref.addEventListener('$willClose') instead */ onWillClose?: never; /** @deprecated SyntheticEvent is not supported. Use ref.addEventListener('$close') instead */ onClose?: never; } } } /** Base modal element */ export default abstract class WUPBaseModal extends WUPBaseElement { #private; static get $styleRoot(): string; static get $style(): string; /** Returns if element is open (before show-animation started) * @tutorial Troubleshooting * * stack: $open() > `$isOpened:true` > opening > opened * * stack: $close() > closing > closed > `$isOpened:false` * * to listen to animation-end use events `$open` & `$close` OR methods `$open().then(...)` & `$close().then(... )` */ get $isOpened(): boolean; /** Returns if element is opening (only if animation enabled) */ get $isOpening(): boolean; /** Returns if element is closed (after hide-animation finished) * @tutorial Troubleshooting * * stack: $open() > `$isOpened:true` > opening > opened * * stack: $close() > closing > closed > `$isOpened:false` * * to listen to animation-end use events `$open` & `$close` OR methods `$open().then(...)` & `$close().then(... )` */ get $isClosed(): boolean; /** Returns if element is opening (only if animation enabled) */ get $isClosing(): boolean; /** Fires before opening * @tutorial rules * * can be prevented via `e.preventDefault()` */ $onWillOpen?: (e: Events["$willOpen"]) => void; /** Fires after element is opened (after animation ends) */ $onOpen?: (e: Events["$open"]) => void; /** Fires before closing * @tutorial rules * * can be prevented via `e.preventDefault()` */ $onWillClose?: (e: Events["$willClose"]) => void; /** Fires after element is closed (after animation ends) */ $onClose?: (e: Events["$close"]) => void; _whenOpen?: Promise; /** Open element * @returns Promise resolved by animation-end ('true' if it finished & wasn't prevented) */ $open(): Promise; _whenClose?: Promise; /** Close element * @returns Promise resolved by animation-end ('true' if it finished & wasn't prevented) */ $close(): Promise; protected gotReady(): void; /** Returns animation time defined according to styles */ get animTime(): number; /** Implement extra logic on opening */ abstract gotOpen(openCase: OpenCases | number, e: Event | null): void; /** Implement extra logic on closing */ abstract gotClose(closeCase: CloseCases | number, e: Event | null, immediately?: boolean): void; /** Open element. @openCase as reason of open() */ goOpen(openCase: OpenCases | number, ev: Event | null): Promise; /** Hide element; @closeCase as reason of close() */ goClose(closeCase: CloseCases | number, ev: Event | null, immediately?: boolean): Promise; focus(): boolean; protected resetState(): void; protected disposeEvents(): void; protected dispose(): void; } export {};