framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
188 lines (175 loc) • 9.47 kB
TypeScript
import { Dom7Instance } from 'dom7';
import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin } from '../app/app-class';
export namespace Panel {
interface Events {
/** Event will be triggered when Panel starts its opening animation. As an argument event handler receives panel instance */
open: (panel : Panel) => void
/** Event will be triggered when Panel completes its opening animation. As an argument event handler receives panel instance */
opened: (panel : Panel) => void
/** Event will be triggered when Panel starts its closing animation. As an argument event handler receives panel instance */
close: (panel : Panel) => void
/** Event will be triggered after Notification completes its closing animation. As an argument event handler receives notification instance */
closed: (panel : Panel) => void
/** Event will be triggered when the panel backdrop is clicked. As an argument event handler receives panel instance */
backdropClick: (panel : Panel) => void
/** Event will be triggered in the very beginning of opening it with swipe. As an argument event handler receives panel instance */
swipeOpen: (panel : Panel) => void
/** Event will be triggered for swipe panel during touch swipe action. As an argument event handler receives panel instance and opened progress (from 0 to 1) */
swipe: (panel : Panel, progress: number) => void
/** Event will be triggered when it becomes collapsed/hidden when app width matches its collapsedBreakpoint. As an argument event handler receives panel instance */
collapsedBreakpoint: (panel : Panel) => void
/** Event will be triggered when it becomes visible/hidden when app width matches its breakpoint. As an argument event handler receives panel instance */
breakpoint: (panel : Panel) => void
/** Event will be triggered right when resizable Panel resized */
resize: (panel : Panel, panelWidth: number) => void
/** Event will be triggered right before Panel instance will be destroyed */
beforeDestroy: (panel : Panel) => void
}
interface Parameters {
/** Panel element. */
el?: HTMLElement
/** Panel element HTML string. */
content?: string
/** Can be left or right. If not passed then will be determined based on panel-left or panel-right element classes. */
side?: string
/** Can be cover or reveal. If not passed then will be determined based on panel-cover or panel-reveal element classes. */
effect?: string
/** Enables resizable panel */
resizable?: string
/** Enables Panel backdrop (dark semi transparent layer behind). (default true) */
backdrop?: boolean
/** Option to pass custom backdrop element */
backdropEl?: HTMLElement | CSSSelector
/** Minimal app width (in px) when panel becomes always visible. */
visibleBreakpoint?: number
/** Minimal app width (in px) when panel becomes visible but collapsed. */
collapsedBreakpoint?: number
/** Enables ability to open/close panel with swipe (default false) */
swipe?: boolean
/** This parameter allows to close (but not open) panel with swipes. (default false) */
swipeOnlyClose?: boolean
/** Width (in px) of invisible edge from the screen that triggers swipe panel. (default 0) */
swipeActiveArea?: number
/** Panel will not move with swipe if "touch distance" will be less than this value (in px).. (default 0) */
swipeThreshold?: number
/** Enable/disable ability to close panel by clicking outside of panel (on panel's backdrop). (default true) */
closeByBackdropClick? : boolean
}
interface Panel extends Framework7EventsClass<Events>{
/** Link to global app instance */
app : Framework7
/** String with panel side: left or right */
side : 'left' | 'right'
/** String with panel effect: cover or reveal */
effect: 'cover' | 'reveal'
/** Boolean property indicating whether it is opened or not */
opened: boolean
/** Panel HTML element */
el : HTMLElement
/** Dom7 instance with panel HTML element */
$el: Dom7Instance
/** Backdrop HTML element */
backdropEl : HTMLElement
/** Dom7 instance with backdrop HTML element */
$backdropEl: Dom7Instance
/** Popup parameters */
params : Parameters
/** Open panel. */
open(animate : boolean) : void
/** Close panel. */
close(animate : boolean) : void
/** Toggle panel */
toggle(animate : boolean) : void
/** Destroy panel instance */
destroy() : void
/** Enable visible breakpoint */
enableVisibleBreakpoint() : void
/** Disable visible breakpoint */
disableVisibleBreakpoint() : void
/** Toggle visible breakpoint */
toggleVisibleBreakpoint() : void
/** Enable collapsed breakpoint */
enableCollapsedBreakpoint() : void
/** Disable collapsed breakpoint */
disableCollapsedBreakpoint() : void
/** Toggle collapsed breakpoint */
toggleCollapsedBreakpoint() : void
/** Enable resizable panel */
enableResizable() : void
/** Disable resizable panel */
disableResizable() : void
/** Enable swipeable panel */
enableSwipe() : void
/** Disable swipeable panel */
disableSwipe() : void
}
interface DomEvents {
/** Event will be triggered when Panel starts its opening animation */
'panel:open': () => void
/** Event will be triggered after Panel completes its opening animation */
'panel:opened': () => void
/** Event will be triggered when Panel starts its closing animation */
'panel:close': () => void
/** Event will be triggered after Panel completes its closing animation */
'panel:closed': () => void
/** Event will be triggered when the panel overlay is clicked */
'panel:backdrop-click ': () => void
/** Event will be triggered in the very beginning of opening it with swipe */
'panel:swipeopen': () => void
/** Event will be triggered for swipe panel during touch swipe action */
'panel:swipe': () => void
/** Event will be triggered when it becomes visible/hidden when app width matches its breakpoint */
'panel:breakpoint': () => void
/** Event will be triggered when it becomes collapsed/hidden when app width matches its collapsedBreakpoint */
'panel:collapsedbreakpoint': () => void
/** Event will be triggered right when resizable Panel resized */
'panel:resize': () => void
/** Event will be triggered right before Panel instance will be destroyed */
'panel:beforedestroy': () => void
}
interface AppMethods {
panel: {
/** create new panel instance */
create(parameters : Parameters) : Panel
/** open panel */
open(el?: HTMLElement | CSSSelector | Panel | 'left' | 'right', animate?: boolean) : boolean
/** close panel */
close(el?: HTMLElement | CSSSelector | Panel | 'left' | 'right', animate?: boolean) : boolean
/** toggle panel */
toggle(el?: HTMLElement | CSSSelector | Panel | 'left' | 'right', animate?: boolean) : boolean
/** get Panel instance by specified side */
get(el?: HTMLElement | CSSSelector | Panel | 'left' | 'right', animate?: boolean) : Panel
/** destroy Panel instance */
destroy(el : HTMLElement | CSSSelector | Panel | 'left' | 'right') : void
}
}
interface AppParams {
panel?: Parameters | undefined
}
interface AppEvents {
/** Event will be triggered when Panel starts its opening animation. As an argument event handler receives panel instance */
panelOpen: (panel : Panel) => void
/** Event will be triggered when Panel completes its opening animation. As an argument event handler receives panel instance */
panelOpened: (panel : Panel) => void
/** Event will be triggered when Panel starts its closing animation. As an argument event handler receives panel instance */
panelClose: (panel : Panel) => void
/** Event will be triggered after Notification completes its closing animation. As an argument event handler receives notification instance */
panelClosed: (panel : Panel) => void
/** Event will be triggered when the panel backdrop is clicked. As an argument event handler receives panel instance */
panelBackdropClick: (panel : Panel) => void
/** Event will be triggered in the very beginning of opening it with swipe. As an argument event handler receives panel instance */
panelSwipeOpen: (panel : Panel) => void
/** Event will be triggered for swipe panel during touch swipe action. As an argument event handler receives panel instance and opened progress (from 0 to 1) */
panelSwipe: (panel : Panel, progress: number) => void
/** Event will be triggered when it becomes collapsed/hidden when app width matches its collapsedBreakpoint. As an argument event handler receives panel instance */
panelCollapsedBreakpoint: (panel : Panel) => void
/** Event will be triggered when it becomes visible/hidden when app width matches its breakpoint. As an argument event handler receives panel instance */
panelBreakpoint: (panel : Panel) => void
/** Event will be triggered right when resizable Panel resized */
panelResize: (panel : Panel, panelWidth: number) => void
/** Event will be triggered right before Panel instance will be destroyed */
panelBeforeDestroy: (panel : Panel) => void
}
}
declare const PanelComponent: Framework7Plugin;
export default PanelComponent;