import type { StringPluginArgChoices } from './types'; import { type BaseElem, type SelectorRoot } from "base-elem-js"; type SubmenuBtnSkipFn = (elem: HTMLElement) => boolean; interface NavMobileCssList { outerOpen: string; hasUl: string; noUl: string; open: string; opening: string; closing: string; toggling: string; btn: string; } export interface INavMobileDefaults { enableBtn: HTMLElement | string; ariaLabel: string; tgBtnText: string; insertBtnAfter: string; slideDuration: number; outerElement: HTMLElement | string; outsideClickClose: boolean; cssPrefix: string; menuBtnCss: string; menuBtnSkip: SubmenuBtnSkipFn | boolean; doTrapFocus: boolean; trapFocusElem: SelectorRoot | null; stopPropagation: boolean; bkptEnable: number | null; animateHeight: boolean; afterNavItemOpen: (li: HTMLLIElement[]) => void; afterNavItemClose: (li: HTMLLIElement[]) => void; afterOpen(element: HTMLElement, outerElement: HTMLElement[], enableBtn: HTMLElement): any; afterClose(element: HTMLElement, outerElement: HTMLElement[], enableBtn: HTMLElement): any; } export interface INavMobileOptions extends Partial { enableBtn: HTMLElement | string; } export default class NavMobile { #private; $element: BaseElem; element: HTMLElement; params: INavMobileDefaults; menuOpened: boolean; allowClick: boolean; cssList: NavMobileCssList; $enableBtn: BaseElem; enableBtn: HTMLElement; static defaults: INavMobileDefaults; static version: string; static pluginName: string; constructor(element: HTMLElement, options: INavMobileOptions | StringPluginArgChoices); static remove(element: BaseElem, plugin?: NavMobile): void; } export interface NavMobilePlugin { navMobile(options: INavMobileOptions | StringPluginArgChoices): BaseElem; } declare module 'base-elem-js' { interface BaseElem extends NavMobilePlugin { } } export {};