baseframe-js
Version:
A suite of useful Javascript plugins and functions to help with Front-end Development on websites
79 lines (78 loc) • 2.42 kB
TypeScript
import type { Cash, Selector } from "cash-dom";
import type { StringPluginArgChoices } from './types';
type submenuBtnSkipFn = (elem: HTMLElement) => boolean;
interface NavMobileCssList {
menuOuterOpen: string;
menuHasUL: string;
menuOpen: string;
menuOpening: string;
menuClosing: string;
menuToggling: string;
menuBtnCss: string;
}
export interface INavMobileDefaults {
enableBtn: Selector;
ariaLabel: string;
subMenuText: string;
insertToggleBtnAfter: string;
slideDuration: number;
outerElement: string;
outsideClickClose: boolean;
cssPrefix: string;
menuBtnCss: string;
menuBtnSkip: submenuBtnSkipFn | boolean;
doTrapFocus: boolean;
trapFocusElem: Selector | null;
stopPropagation: boolean;
bkptEnable: number | null;
animateHeight: boolean;
afterNavItemOpen: ($li: Cash) => void;
afterNavItemClose: ($li: Cash) => void;
afterOpen($element: Cash, outerElement: Cash, enableBtn: Cash): any;
afterClose($element: Cash, outerElement: Cash, enableBtn: Cash): any;
}
export interface INavMobileOptions extends Partial<INavMobileDefaults> {
enableBtn: Selector;
}
export default class NavMobile {
#private;
$element: Cash;
params: INavMobileDefaults;
menuOpened: boolean;
allowClick: boolean;
cssList: NavMobileCssList;
static defaults: {
enableBtn: string;
ariaLabel: string;
subMenuText: string;
insertToggleBtnAfter: string;
slideDuration: number;
outerElement: HTMLElement;
outsideClickClose: boolean;
animateHeight: boolean;
cssPrefix: string;
menuBtnCss: string;
menuBtnSkip: boolean;
afterNavItemOpen: () => void;
afterNavItemClose: () => void;
afterOpen: () => void;
afterClose: () => void;
doTrapFocus: boolean;
trapFocusElem: any;
stopPropagation: boolean;
bkptEnable: any;
};
static version: string;
static pluginName: string;
constructor(element: HTMLElement, options: INavMobileOptions | StringPluginArgChoices);
handleEvents(): void;
addChildNavCss(): void;
checkIfEnabled(): void;
static remove(element: Cash, plugin?: NavMobile): void;
}
declare module 'cash-dom' {
interface Cash {
navMobile(options: INavMobileOptions | StringPluginArgChoices): Cash;
}
}
export {};