@wiajs/ui
Version:
wia app ui packages
150 lines (141 loc) • 7.93 kB
TypeScript
import { Dom7Instance } from 'dom7';
import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Actions {
interface Actions extends Framework7EventsClass<Events> {
/** Link to global app instance */
app : Framework7
/** Action sheet HTML element */
el : HTMLElement
/** Dom7 instance with action sheet HTML element */
$el : Dom7Instance
/** Backdrop HTML element */
backdropEl : HTMLElement
/** Dom7 instance with backdrop HTML element */
$backdropEl : Dom7Instance
/** Action sheet instance parameters */
params : Parameters
/** Boolean prop indicating whether action sheet is opened or not */
opened : boolean
/** Open action sheet. Where animate - boolean (by default true) - defines whether it should be opened with animation */
open(animate? : boolean) : void
/** Close action sheet. Where animate - boolean (by default true) - defines whether it should be closed with animation */
close(animate? : boolean) : void
/** Destroy action sheet */
destroy() : void
}
interface Button {
/** String with Button's text (could be HTML string) */
text:string
/** HTML string of icon */
icon?:string
/** Enables bold button text */
bold?:boolean
/** Button color, one of default colors */
color?:string
/** Button background color, one of default colors */
bg?:string
/** If enabled then it will be rendered as label instead of button */
label?:boolean
/** Defines whether the button is disabled or not. */
disabled?:boolean
/** If enabled then button click will close Action Sheet */
close?:boolean
/** Callback function that will be executed after click on this button */
onClick?: (actions : Actions, e: unknown) => void
}
interface Parameters {
/** Action Sheet element. Can be useful if you already have Action Sheet element in your HTML and want to create new instance using this element*/
el?:HTMLElement
/** Full Action Sheet HTML content string. Can be useful if you want to create Action Sheet element with custom HTML*/
content?:string
/** Enables Action Sheet backdrop (dark semi transparent layer behind)*/
backdrop?:boolean
/** When enabled, action sheet will be closed on backdrop click*/
closeByBackdropClick?:boolean
/** When enabled, action sheet will be closed on when click outside of it*/
closeByOutsideClick?:boolean
/** Whether the Action Sheet should be opened/closed with animation or not. Can be overwritten in .open() and .close() methods*/
animate?:boolean
/** Action sheet groups/buttons. In this case Actions layout will be generated dynamically based on passed groups and buttons. In case of groups it should array where each item represent array with buttons for group.*/
buttons?: Button[]
/** Enables grid buttons layout*/
grid?:boolean
/** When enabled, action sheet will be converted to Popoveron large screens.*/
convertToPopover?:boolean
/** When enabled, action sheel will be always converted to Popover.*/
forceToPopover?:boolean
/** HTML element or string CSS selector of target element. Required when converstion to popover is in use*/
targetEl?: HTMLElement | CSSSelector
/** Virtual target element horizontal offset from left side of the screen. Required when converstion to popover is in use without using real target element (targetEl)*/
targetX?:number
/** Virtual target element vertical offset from top of the screen. Required when converstion to popover is in use without using real target element (targetEl)*/
targetY?:number
/** Virtual target element width (in px). Required when converstion to popover is in use without using real target element (targetEl)*/
targetWidth?:number
/** Virtual target element height (in px). Required when converstion to popover is in use without using real target element (targetEl)*/
targetHeight?:number
/** Callback function that will be executed after click on the Action Sheet button*/
onClick?: (actions : Actions, e: unknown) => void
/** Custom function to render Action Sheet. Must return Action Sheet html*/
render?: () => string
/** Custom function to render Popover when conversition to popover is in use. Must return Popover html*/
renderPopover?: () => string
/** Object with event handlers */
on?: {
[ ]? : Events[event]
}
}
interface Events {
/** Event will be triggered when Action Sheet starts its opening animation. As an argument event handler receives action sheet instance */
open : (actions : Actions) => void
/** Event will be triggered after Action Sheet completes its opening animation. As an argument event handler receives action sheet instance */
opened : (actions : Actions) => void
/** Event will be triggered when Action Sheet starts its closing animation. As an argument event handler receives action sheet instance */
close : (actions : Actions) => void
/** Event will be triggered after Action Sheet completes its closing animation. As an argument event handler receives action sheet instance */
closed : (actions : Actions) => void
/** Event will be triggered right before Action Sheet instance will be destroyed. As an argument event handler receives action sheet instance */
beforeDestroy : (actions : Actions) => void
}
interface DomEvents {
/** Event will be triggered when Action Sheet starts its opening animation */
'actions:open' : (actions : Actions) => void
/** Event will be triggered after Action Sheet completes its opening animation */
'actions:opened' : (actions : Actions) => void
/** Event will be triggered when Action Sheet starts its closing animation */
'actions:close' : (actions : Actions) => void
/** Event will be triggered after Action Sheet completes its closing animation */
'actions:closed' : (actions : Actions) => void
}
interface AppMethods {
actions: {
/** create Action Sheet instance */
create(parameters : Parameters) : Actions;
/** destroy Action Sheet instance */
destroy(el : HTMLElement | CSSSelector | Actions) : void;
/** get Action Sheet instance by HTML element */
get(el? : HTMLElement | CSSSelector) : Actions;
/** opens Action Sheet */
open(el? : HTMLElement | CSSSelector, animate? : boolean) : Actions;
/** closes Action Sheet */
close(el? : HTMLElement | CSSSelector, animate? : boolean) : Actions;
}
}
interface AppParams {
actions?: Parameters | undefined
}
interface AppEvents {
/** Event will be triggered when Action Sheet starts its opening animation. As an argument event handler receives action sheet instance */
actionsOpen : (actions : Actions) => void
/** Event will be triggered after Action Sheet completes its opening animation. As an argument event handler receives action sheet instance */
actionsOpened : (actions : Actions) => void
/** Event will be triggered when Action Sheet starts its closing animation. As an argument event handler receives action sheet instance */
actionsClose : (actions : Actions) => void
/** Event will be triggered after Action Sheet completes its closing animation. As an argument event handler receives action sheet instance */
actionsClosed : (actions : Actions) => void
/** Event will be triggered right before Action Sheet instance will be destroyed. As an argument event handler receives action sheet instance */
actionsBeforeDestroy : (actions : Actions) => void
}
}
declare const ActionsComponent: Framework7Plugin;
export default ActionsComponent;