framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
246 lines (230 loc) • 10.4 kB
TypeScript
import { Dom7Array } from 'dom7';
import Framework7, {
CSSSelector,
Framework7EventsClass,
Framework7Plugin,
} from '../app/app-class.js';
export namespace Dialog {
interface Dialog extends Framework7EventsClass<Events> {
/** Link to global app instance */
app: Framework7;
/** Dialog HTML element */
el: HTMLElement;
/** Dom7 instance with dialog HTML element */
$el: Dom7Array; // Dom7Array
/** Backdrop HTML element */
backdropEl: HTMLElement;
/** Dom7 instance with backdrop HTML element */
$backdropEl: Dom7Array; // Dom7Array
/** Dialog parameters */
params: Parameters;
/** Boolean prop indicating whether dialog is opened or not */
opened: boolean;
/** Open dialog */
open(animate?: boolean): void;
/** Close dialog. */
close(animate?: boolean): void;
/** Sets dialog progress when Dialog Progress shortcut in use */
setProgress(
/** progressbar progress (from 0 to 100) */
progress: number,
/** (in ms) - progressbar progress change duration */
duration?: number,
): void;
/** Sets dialog's title */
setTitle(title: string): void;
/** Sets dialog's text */
setText(text: string): void;
/** Destroy dialog */
destroy(): void;
}
interface DialogButton {
/** String with Button's text (could be HTML string). */
text: string;
/** Enables strong button style. (default false) */
strong?: boolean;
/** Button color, one of default colors. */
color?: string;
/** If enabled then button click will close Dialog. (default true) */
close?: boolean;
/** Additional button CSS class. */
cssClass?: string;
/** Array with keyboard keycodes that will be used to trigger button click. For example, key code 13 means that button click will be triggered on Enter key press. (default []) */
keyCodes?: number[];
/** Callback function that will be executed after click on this button. */
onClick?: (dialog: Dialog, e: Event) => void;
}
interface Parameters {
/** Dialog element. Can be useful if you already have Dialog element in your HTML and want to create new instance using this element. */
el?: HTMLElement | CSSSelector;
/** Enables Dialog backdrop (dark semi transparent layer behind). (default true) */
backdrop?: boolean;
/** When enabled, dialog will be closed on backdrop click. (default false) */
closeByBackdropClick?: boolean;
/** Whether the Dialog should be opened/closed with animation or not. Can be overwritten in .open() and .close() methods. (default false) */
animate?: boolean;
/** Dialog title. */
title?: string;
/** Dialog inner text. */
text?: string;
/** Custom Dialog content that follows dialog text. */
content?: string;
/** Array with dialog buttons. (default []) */
buttons?: DialogButton[];
/** Enables vertical buttons layout. (default false) */
verticalButtons?: boolean;
/** When enabled will automatically destroy Dialog on close. (default false) */
destroyOnClose?: boolean;
/** Element to mount dialog to. (default app.el) */
containerEl?: HTMLElement | CSSSelector;
/** Callback function that will be executed after click on the Dialog button. As an arguments it received dialog instance and clicked button index number. */
onClick?: (dialog: Dialog, index: number) => void;
/** Additional css class to add. */
cssClass?: string;
/** Object with events handlers.. */
on?: {
[event in keyof Events]?: Events[event];
};
}
interface Events {
/** Event will be triggered when Dialog starts its opening animation. As an argument event handler receives dialog instance */
open: (dialog: Dialog) => void;
/** Event will be triggered after Dialog completes its opening animation. As an argument event handler receives dialog instance */
opened: (dialog: Dialog) => void;
/** Event will be triggered when Dialog starts its closing animation. As an argument event handler receives dialog instance */
close: (dialog: Dialog) => void;
/** Event will be triggered after Dialog completes its closing animation. As an argument event handler receives dialog instance */
closed: (dialog: Dialog) => void;
/** Event will be triggered right before Dialog instance will be destroyed. As an argument event handler receives dialog instance */
beforeDestroy: (dialog: Dialog) => void;
}
interface DomEvents {
/** Event will be triggered when Dialog starts its opening animation */
'dialog:open': () => void;
/** Event will be triggered after Dialog completes its opening animation */
'dialog:opened': () => void;
/** Event will be triggered when Dialog starts its closing animation */
'dialog:close': () => void;
/** Event will be triggered after Dialog completes its closing animation */
'dialog:closed': () => void;
}
interface AppMethods {
dialog: {
/** create Dialog instance */
create(parameters: Parameters): Dialog;
/** destroy Dialog instance */
destroy(el: HTMLElement | CSSSelector | Dialog): void;
/** get Dialog instance by HTML element */
get(el?: HTMLElement | CSSSelector): Dialog;
/** opens Dialog */
open(el?: HTMLElement | CSSSelector, animate?: boolean): Dialog;
/** closes Dialog */
close(el?: HTMLElement | CSSSelector, animate?: boolean): Dialog;
/** create Alert Dialog and open it */
alert(text: string, title: string, callback?: () => void): Dialog;
/** create Alert Dialog with default title and open it */
alert(text: string, callback?: () => void): Dialog;
/** create Confirm Dialog and open it */
confirm(
text: string,
title: string,
callbackOk?: () => void,
callbackCancel?: () => void,
): Dialog;
/** create Confirm Dialog with default title and open it */
confirm(text: string, callbackOk?: () => void, callbackCancel?: () => void): Dialog;
/** create Prompt Dialog and open it */
prompt(
text: string,
title: string,
callbackOk?: (value: string) => void,
callbackCancel?: (value: string) => void,
defaultValue?: string,
): Dialog;
/** create Prompt Dialog with default title and open it */
prompt(
text: string,
callbackOk?: (value: string) => void,
callbackCancel?: (value: string) => void,
defaultValue?: string,
): Dialog;
/** create Login Dialog and open it */
login(
text: string,
title: string,
callbackOk?: (username: string, password: string) => void,
callbackCancel?: (username: string, password: string) => void,
): Dialog;
/** create Login Dialog with default title and open it */
login(
text: string,
callbackOk?: (username: string, password: string) => void,
callbackCancel?: (username: string, password: string) => void,
): Dialog;
/** create Password Dialog and open it */
password(
text: string,
title: string,
callbackOk?: (password: string) => void,
callbackCancel?: (password: string) => void,
): Dialog;
/** create Password Dialog with default title and open it */
password(
text: string,
callbackOk?: (password: string) => void,
callbackCancel?: (password: string) => void,
): Dialog;
/** create Preloader Dialog and open it */
preloader(title?: string, color?: string): Dialog;
/** create Progress Dialog and open it */
progress(
title?: string,
/** Optional. Progressbar progress (from 0 to 100). If no number passed then it will have infinite progressbar. */
progress?: number,
color?: string,
): Dialog;
};
}
interface AppParams {
dialog?:
| {
/** Default dialogs shortcuts title. If not specified, will be equal to app.name. */
title?: string;
/** Default "OK" button text. (default OK) */
buttonOk?: string;
/** Default "Cancel" button text. (default Cancel) */
buttonCancel?: string;
/** Default username field placeholder in Login dialog. (default Username) */
usernamePlaceholder?: string;
/** Default password field placeholder in Login & Password dialogs. (default Password) */
passwordPlaceholder?: string;
/** Default title for Preloader dialog. (default Loading...) */
preloaderTitle?: string;
/** Default title for Progress dialog. (default Loading...) */
progressTitle?: string;
/** Will automatically destroy all predefined dialogs (Alert, Confirm, Prompt, etc.) on close. (default true) */
destroyPredefinedDialogs?: boolean;
/** Enables keyboard shortcuts (Enter and Esc) keys for predefined dialogs (Alert, Confirm, Prompt, Login, Password) "Ok" and "Cancel" buttons. (default true) */
keyboardActions?: boolean;
/** When enabled, dialog will be closed on backdrop click. (default true) */
closeByBackdropClick?: boolean;
/** When enabled it will auto focus input in predefined dialogs (like .prompt(), .login() and .password()) */
autoFocus?: boolean;
}
| undefined;
}
interface AppEvents {
/** Event will be triggered when Dialog starts its opening animation. As an argument event handler receives dialog instance */
dialogOpen: (dialog: Dialog) => void;
/** Event will be triggered after Dialog completes its opening animation. As an argument event handler receives dialog instance */
dialogOpened: (dialog: Dialog) => void;
/** Event will be triggered when Dialog starts its closing animation. As an argument event handler receives dialog instance */
dialogClose: (dialog: Dialog) => void;
/** Event will be triggered after Dialog completes its closing animation. As an argument event handler receives dialog instance */
dialogClosed: (dialog: Dialog) => void;
/** Event will be triggered right before Dialog instance will be destroyed. As an argument event handler receives dialog instance */
dialogBeforeDestroy: (dialog: Dialog) => void;
}
}
declare const DialogComponent: Framework7Plugin;
export default DialogComponent;