import { TemplateRef } from '@angular/core'; type AccordionMenuItemLinkType = 'routerLink' | 'hrefLink' | string; export interface AccordionBase { title: string; disabled?: boolean; [prop: string]: any; } interface IAccordionActiveable { active?: boolean; } interface IAccordionFoldable { open?: boolean; loading?: boolean; children?: Array; } interface IAccordionLinkable { link?: string; target?: boolean; linkType?: AccordionMenuItemLinkType; } export interface AccordionBaseItem extends AccordionBase, IAccordionActiveable { } export interface AccordionBaseMenu extends AccordionBase, IAccordionFoldable { } export interface AccordionLinkableItem extends AccordionBase, IAccordionActiveable, IAccordionLinkable { } export interface AccordionMenuItem extends AccordionBase, IAccordionActiveable, IAccordionFoldable, IAccordionLinkable { } export type AccordionMenuType = Array; export interface AccordionMenuToggleEvent { item: any; open: boolean; parent: any; event: MouseEvent; } export interface AccordionItemClickEvent { item: any; prevActiveItem?: any; parent: any; event: MouseEvent; } interface AccordionMenuKeyGroup { titleKey?: string; activeKey?: string; disabledKey?: string; openKey?: string; loadingKey?: string; childrenKey?: string; linkKey?: string; linkTargetKey?: string; linkTypeKey?: string; } type AccordionTemplateRefArray = 'itemTemplate' | 'menuItemTemplate' | 'noContentTemplate' | 'loadingTemplate' | 'innerListTemplate'; type AccordionTemplateRefGroup = { [p in AccordionTemplateRefArray]: TemplateRef; }; interface AccordionConfigOptions { restrictOneOpen?: boolean; autoOpenActiveMenu?: boolean; showNoContent?: boolean; linkDefaultTarget?: string; i18nCommonText?: any; i18nText?: any; linkType: 'routerLink' | 'hrefLink' | 'dependOnLinkTypeKey' | '' | string; } export interface AccordionOptions extends AccordionConfigOptions, AccordionMenuKeyGroup, AccordionTemplateRefGroup { } /** @deprecated merge into `AccordionMenuItem`*/ export interface AccordionSubMenuItem { title: string; active?: boolean; disabled?: boolean; [prop: string]: any; } /** @deprecated use `AccordionLinkableItem` instead*/ export interface AccordionSubMenuItemHrefLink { title: string; link: string; target?: string; active?: boolean; disabled?: boolean; [prop: string]: any; } /** @deprecated use `AccordionLinkableItem` instead*/ export interface AccordionSubMenuItemRouterLink { title: string; link: string; target?: string; active?: boolean; disabled?: boolean; [prop: string]: any; } /** @deprecated use `AccordionLinkableItem` instead*/ export interface AccordionSubMenuItemDynamicLink { title: string; link: string; linkType: 'routerLink' | 'hrefLink' | string; target?: string; active?: boolean; disabled?: boolean; [prop: string]: any; } export {};