import { TemplateRef } from '@angular/core';
import { PoMenuItemBadge } from './po-menu-item/po-menu-item-badge.interface';
/**
* @usedBy PoMenuComponent
*
* @description
*
* Interface para os itens de menu do componente po-menu.
*
*/
export interface PoMenuItem {
/**
* @optional
*
* @description
*
* Badge do item de menu.
*
* Ao adicioná-lo em um subitem (filho) todos os itens ascendentes (pai) serão marcados com um ponto vermelho.
*
* > O `po-badge` só será exibido caso o item do menu não possua `subItems` e seu valor seja maior ou igual a 0.
*/
badge?: PoMenuItemBadge;
/** Texto do item de menu. */
label: string;
/** Link para redirecionamento no click do item do menu, podendo ser um link interno ou externo. */
link?: string;
/** Ação personalizada para clique do item de menu. */
action?: Function;
/**
* É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:
* ```
*
*
* ```
*
* Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca Font Awesome, da seguinte forma:
* ```
*
*
* ```
*
* Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo:
* component.html:
* ```
*
*
*
*
*
* ```
* component.ts:
* ```
* @ViewChild('iconTemplate', { static: true } ) iconTemplate : TemplateRef;
*
* myProperty = [
* {
* link: '/',
* label: 'Icon',
* icon: this.iconTemplate
* }
* ];
* ```
* > São exibidos apenas no primeiro nível de menu e serão visíveis apenas se todos os itens de primeiro nível possuírem ícones.
* O menu colapsado também aparecerá somente se todos os itens de primeiro nível de menu possuírem ícones e textos curtos.
*/
icon?: string | TemplateRef;
/**
* Texto curto exibido através de um tooltip para o item que aparece quando o menu estiver colapsado.
* Se colapsado, aparecerá somente se todos os itens de primeiro nível de menu que possuírem ícones e textos curtos.
*/
shortLabel?: string;
/** Lista de sub-items, criando novos níveis dentro do menu. O número máximo de níveis do menu é igual a 4. */
subItems?: Array;
id?: string;
level?: any;
badgeAlert?: any;
type?: any;
}