import { TemplateRef } from '@angular/core'; /** * @usedBy PoModalComponent * * @description * * Interface que define os botões de ação do componente `po-modal`. */ export interface PoModalAction { /** Função que será executada ao clicar sobre o botão. */ action: Function; /** * Define a propriedade `p-danger` do botão. * * > Caso a propriedade esteja definida como `true` em ambos os botões, apenas o botão primário receberá o `p-danger` como `true`. */ danger?: boolean; /** Desabilita o botão impossibilitando que sua ação seja executada. */ disabled?: boolean; /** * Ícone exibido ao lado esquerdo do label do botão. * * É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons), conforme exemplo: * ``` * modalAction: PoModalAction = { * action: () => {}, * label: 'Botão com ícone PO', * icon: 'an an-user' * }; * ``` * Também é possível utilizar outras fontes de ícones, por exemplo a biblioteca *Font Awesome*, desde que a biblioteca * esteja carregada no projeto: * ``` * modalAction: PoModalAction = { * action: () => {}, * label: 'Botão com ícone Font Awesome', * icon: 'fa fa-user' * }; * ``` * Outra opção seria a customização do ícone através do `TemplateRef`, conforme exemplo abaixo: * ``` * // Template HTML * * * * * // Componente TypeScript * @ViewChild('customIcon', { static: true }) customIcon: TemplateRef; * * modalAction: PoModalAction = { * action: () => {}, * label: 'Botão com ícone customizado', * }; * * // Atribuição do TemplateRef à propriedade icon após a inicialização da view * ngAfterViewInit() { * this.modalAction.icon = this.customIcon; * } * ``` * > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o. */ icon?: string | TemplateRef; /** Rótulo do botão. */ label: string; /** Habilita um estado de carregamento ao botão, desabilitando-o e exibindo um ícone de carregamento à esquerda de seu rótulo. */ loading?: boolean; }