web-ui-pack
Version:
Web package with UI elements
102 lines (101 loc) • 4.72 kB
TypeScript
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<OpenCases = any, CloseCases = any> 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<Options> {
/** @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<TOptions extends WUP.BaseModal.Options = WUP.BaseModal.Options, Events extends WUP.BaseModal.EventMap = WUP.BaseModal.EventMap> extends WUPBaseElement<TOptions, Events> {
#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<any>;
/** Open element
* @returns Promise resolved by animation-end ('true' if it finished & wasn't prevented) */
$open(): Promise<boolean>;
_whenClose?: Promise<boolean>;
/** Close element
* @returns Promise resolved by animation-end ('true' if it finished & wasn't prevented) */
$close(): Promise<boolean>;
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<boolean>;
/** Hide element; @closeCase as reason of close() */
goClose(closeCase: CloseCases | number, ev: Event | null, immediately?: boolean): Promise<boolean>;
focus(): boolean;
protected resetState(): void;
protected disposeEvents(): void;
protected dispose(): void;
}
export {};