import { TemplateRef } from '@angular/core';
import { PoTagType } from '../../po-tag/enums/po-tag-type.enum';
/**
* @usedBy PoTableComponent, PoPageDynamicTableComponent
*
* @description
*
* Interface para configuração das colunas de labels do `po-table`.
*/
export interface PoTableColumnLabel {
/**
* @optional
*
* @description
*
* Define a cor do label.
*
* Valores válidos:
* - `color-01`
* - `color-02`
* - `color-03`
* - `color-04`
* - `color-05`
* - `color-06`
* - `color-07`
* - `color-08`
* - `color-09`
* - `color-10`
* - `color-11`
* - `color-12`
*
* > Também é possível utilizar as 35 cores da paleta **Caption Tag Colors**:
*
* - `caption-tag-01` `caption-tag-02` `caption-tag-03` `caption-tag-04` `caption-tag-05`
* - `caption-tag-06` `caption-tag-07` `caption-tag-08` `caption-tag-09` `caption-tag-10`
* - `caption-tag-11` `caption-tag-12` `caption-tag-13` `caption-tag-14` `caption-tag-15`
* - `caption-tag-16` `caption-tag-17` `caption-tag-18` `caption-tag-19` `caption-tag-20`
* - `caption-tag-21` `caption-tag-22` `caption-tag-23` `caption-tag-24` `caption-tag-25`
* - `caption-tag-26` `caption-tag-27` `caption-tag-28` `caption-tag-29` `caption-tag-30`
* - `caption-tag-31` `caption-tag-32` `caption-tag-33` `caption-tag-34` `caption-tag-35`
*
* Exemplo de uso:
* ```
* { property: 'status', type: 'label', labels: [
* { value: 'ativo', color: 'caption-tag-13', label: 'Ativo' },
* { value: 'pendente', color: 'caption-tag-08', label: 'Pendente' }
* ]}
* ```
*/
color?: string;
/**
* @optional
*
* @description
*
* Determina a cor do texto da tag. As maneiras de customizar as cores são:
* - Hexadeximal, por exemplo `#c64840`;
* - RGB, como `rgb(0, 0, 165)`;
* - O nome da cor, por exemplo `blue`;
* - Usando uma das cores do tema do PO:
* Valores válidos:
* - `color-01`
* - `color-02`
* - `color-03`
* - `color-04`
* - `color-05`
* - `color-06`
* - `color-07`
* - `color-08`
* - `color-09`
* - `color-10`
* - `color-11`
* - `color-12`
*
* - Para uma melhor acessibilidade no uso do componente é recomendável utilizar cores com um melhor contraste em relação ao background.
*
* > **Atenção:** A propriedade `p-type` sobrepõe esta definição.
*
* > **Atenção:** As cores da paleta **Caption Tag Colors** (`caption-tag-01` a `caption-tag-35`) não são aceitas nesta propriedade,
* pois possuem cor de texto fixa definida via token CSS.
*/
textColor?: string;
/**
* @optional
*
* @description
*
* Define ou ativa um ícone que será exibido ao lado do valor da *tag*.
*
* Quando `p-type` estiver definida, basta informar um valor igual a `true` para que o ícone seja exibido conforme descrições abaixo:
* - - `success`
* - - `warning`
* - - `danger`
* - - `info`
*
* Também É possível usar qualquer um dos ícones da [Biblioteca de ícones](https://po-ui.io/icons). conforme exemplo abaixo:
* ```
*
* ```
* como também 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:
* ```
*
*
*
*
*
* ```
* > Para o ícone enquadrar corretamente, deve-se utilizar `font-size: inherit` caso o ícone utilizado não aplique-o.
*
* @default `false`
*/
icon?: boolean | string | TemplateRef;
/**
* @optional
*
* @description
*
* Define o tipo da *tag*.
*
* Valores válidos:
* - `success`: cor verde utilizada para simbolizar sucesso ou êxito.
* - `warning`: cor amarela que representa aviso ou advertência.
* - `danger`: cor vermelha para erro ou aviso crítico.
* - `info`: cor cinza escuro que caracteriza conteúdo informativo.
*
* > Quando esta propriedade for definida, irá sobrepor a definição de `p-color` e `p-icon` somente será exibido caso seja `true`.
*
* @default `info`
*/
type?: PoTagType;
/** Texto que será exibido na coluna. */
label: string;
/**
* Define um texto de ajuda que será exibido ao passar o *mouse* em cima do *label*.
*
* > Caso o conteúdo da célula exceder a largura da coluna,
* é ignorado o valor atribuido ao tooltip e será exibido justamente o conteúdo da célula.
*/
tooltip?: string;
/** Valor que será usado como referência para exibição do conteúdo na coluna. */
value: string | number;
}