UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

199 lines (187 loc) 10.2 kB
import { Dom7Array } from 'dom7'; import Framework7, { CSSSelector, Framework7EventsClass, Framework7Plugin, } from '../app/app-class.js'; 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 | CSSSelector; /** 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", "reveal", "floating" or "push". If not passed then will be determined based on panel-cover, panel-reveal, panel-floating or panel-push 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; /** Fallback option for potentially better performance on old/slow devices. If you enable it, then swipe panel will not follow your finger during touch move, it will be automatically opened/closed on swipe left/right. (default false) */ swipeNoFollow?: 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; /** Element to mount panel to. (default app.el) */ containerEl?: HTMLElement | CSSSelector; } 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, reveal or push */ effect: 'cover' | 'reveal' | 'push' | 'floating'; /** Boolean property indicating whether it is opened or not */ opened: boolean; /** Panel HTML element */ el: HTMLElement; /** Dom7 instance with panel HTML element */ $el: Dom7Array; /** Backdrop HTML element */ backdropEl: HTMLElement; /** Dom7 instance with backdrop HTML element */ $backdropEl: Dom7Array; /** Popup parameters */ params: Parameters; /** Element to mount panel to. (default app.el) */ containerEl: HTMLElement | CSSSelector; /** Dom7 instance with element to mount panel to. (default app.el) */ $containerEl: Dom7Array; /** 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;