import { TemplateRef } from '@angular/core'; import { MotionOptions } from '@primeuix/motion'; import { MenuItem, PassThrough, PassThroughOption } from 'primeng/api'; /** * Processed menu item used internally by PanelMenu. */ interface ProcessedMenuItem { /** * Unique key for the item. */ key: string; /** * Original menu item. */ item: MenuItem; /** * Child items. */ items?: ProcessedMenuItem[]; /** * Whether the item is expanded. */ expanded?: boolean; /** * Whether this is a separator. */ separator?: boolean; /** * Nesting level. */ level: number; /** * Index within siblings. */ index: number; /** * Parent processed item. */ parent?: ProcessedMenuItem; /** * Parent item's key. */ parentKey: string; /** * Item icon. */ icon?: string; /** * Item badge. */ badge?: string; } /** * Custom pass-through(pt) options. * @template I Type of instance. * * @see {@link PanelMenu.pt} * @group Interface */ interface PanelMenuPassThroughOptions { /** * Used to pass attributes to the root's DOM element. */ root?: PassThroughOption; /** * Used to pass attributes to the panel's DOM element. */ panel?: PassThroughOption; /** * Used to pass attributes to the header's DOM element. */ header?: PassThroughOption; /** * Used to pass attributes to the header content's DOM element. */ headerContent?: PassThroughOption; /** * Used to pass attributes to the header link's DOM element. */ headerLink?: PassThroughOption; /** * Used to pass attributes to the submenu icon's DOM element. */ submenuIcon?: PassThroughOption; /** * Used to pass attributes to the header icon's DOM element. */ headerIcon?: PassThroughOption; /** * Used to pass attributes to the header label's DOM element. */ headerLabel?: PassThroughOption; /** * Used to pass attributes to the toggleable content's DOM element. */ contentContainer?: PassThroughOption; /** * Used to pass attributes to the toggleable content's DOM element. */ contentWrapper?: PassThroughOption; /** * Used to pass attributes to the menu content's DOM element. */ content?: PassThroughOption; /** * Used to pass attributes to the root list's DOM element. */ rootList?: PassThroughOption; /** * Used to pass attributes to the submenu's DOM element. */ submenu?: PassThroughOption; /** * Used to pass attributes to the item's DOM element. */ item?: PassThroughOption; /** * Used to pass attributes to the item content's DOM element. */ itemContent?: PassThroughOption; /** * Used to pass attributes to the item link's DOM element. */ itemLink?: PassThroughOption; /** * Used to pass attributes to the item icon's DOM element. */ itemIcon?: PassThroughOption; /** * Used to pass attributes to the item label's DOM element. */ itemLabel?: PassThroughOption; /** * Used to pass attributes to the separator's DOM element. */ separator?: PassThroughOption; /** * Used to pass options to the motion component/directive. */ motion?: MotionOptions; } /** * Defines valid pass-through options in PanelMenu. * @see {@link PanelMenuPassThroughOptions} * * @template I Type of instance. */ type PanelMenuPassThrough = PassThrough>; /** * Custom item template context. * @group Interface */ interface PanelMenuItemTemplateContext { /** * Item instance. */ $implicit: MenuItem; } /** * Defines valid templates in PanelMenu. * @group Templates */ interface PanelMenuTemplates { /** * Custom item template. * @param {PanelMenuItemTemplateContext} context - item context. */ item(context: PanelMenuItemTemplateContext): TemplateRef; /** * Custom template of submenuicon. */ submenuicon(): TemplateRef; /** * Custom template of headericon. */ headericon(): TemplateRef; } export type { PanelMenuItemTemplateContext, PanelMenuPassThrough, PanelMenuPassThroughOptions, PanelMenuTemplates, ProcessedMenuItem };