ngx-sp-infra
Version:
Biblioteca de utilitários da Infra.
149 lines (148 loc) • 8.64 kB
TypeScript
import { AfterContentInit, AfterViewInit, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { AbstractControl, FormControl } from '@angular/forms';
import { RecordCombobox } from '../../models/combobox/record-combobox';
import * as i0 from "@angular/core";
/**
* @component LibComboboxComponent
* @selector lib-combobox
*
* @description
* O componente LibComboboxComponent é projetado para fornecer aos usuários uma interface para pesquisar e selecionar itens de uma lista.
* Ele suporta a filtragem de itens com base na entrada do usuário, permitindo uma seleção mais fácil em listas extensas.
*
* ## Funcionalidades:
* - Pesquisa e filtragem de itens na lista do combobox.
* - Seleção de itens com feedback visual.
* - Emissão de eventos personalizados para interações do usuário, como recarregar a lista ou selecionar um item.
* - Ajuste dinâmico da largura do dropdown para corresponder ao input principal.
* - Inicialização de um valor selecionado, se fornecido.
*
* ## Inputs:
* - `control` (FormControl | AbstractControl): Control para seleção dos valores, atualizará automaticamente o control do componente pai também
* - `comboboxList` (RecordCombobox[]): Lista de registros que serão exibidos no combo, enquanto eles estiverem carregando será exibido um spinner
* - `labelText` (string): Texto do rótulo que será exibido acima do combo. Caso não informado nada será exibido
* - `disabled` (boolean): Define se o campo está desabilitado. Deve ser usado para validações de habilitação dinâmica do campo
* - `libRequired` (boolean): Define se o campo é obrigatório, vai exibir o '*' vermelho ao lado do label (se ele estiver presente)
* - `mainInputPlaceholder` (string): Placeholder do campo principal do combo
* - `searchInputPlaceholder` (string): Placeholder do campo de pesquisa dentro do combo
* - `colorTheme` ("primary" | "secondary" | "success" | "danger" | "warning" | "info" | "light" | "dark"): Define o tema de cor do componente, como "primary", "success", ou "danger"
* - `returnRecord` (boolean): Define se o tipo de retorno ao selecionar uma opção será o Record inteiro ou apenas o ID
*
* ## Outputs:
* - `onReloadList` (EventEmitter<string>): Evento emitido quando a lista precisa ser recarregada.
*/
export declare class LibComboboxComponent implements OnInit, AfterViewInit, AfterContentInit, OnDestroy, OnChanges {
protected textoPesquisa: string;
protected get ariaExpanded(): boolean;
protected set ariaExpanded(value: boolean);
protected innerControl: FormControl;
protected invalidControl: boolean;
protected isRequired: boolean;
protected invalid: boolean;
protected dirty: boolean;
protected touched: boolean;
protected comboboxID: string;
protected labelID: string;
private _labelText;
private _disabled?;
private _ariaExpanded;
private _subscription;
private _outerControl;
/** (obrigatório) Control para seleção dos valores, atualizará automaticamente o control do componente pai também
* @alias 'control'
* @type {FormControl<any> | AbstractControl<any>} */
get control(): FormControl<unknown>;
set control(value: FormControl<unknown> | AbstractControl<unknown>);
/** (obrigatório) Lista de registros que serão exibidos no combo, enquanto eles estiverem carregando será exibido um spinner
* @alias 'list'
* @type {RecordCombobox[]} */
list?: RecordCombobox[];
/** (opcional) Texto do rótulo que será exibido acima do combo. Caso não informado nada será exibido
* @type {string | null | undefined} */
get labelText(): string | null | undefined;
set labelText(value: string | null | undefined);
/** (opcional) Texto ou caractere separador entre a informação de ID e LABEL
* @example " - "
* @type {string} */
separator?: string;
/** (opcional) Define se o campo é obrigatório, vai exibir o '*' vermelho ao lado do label (se ele estiver presente)
* @type {boolean} */
libRequired?: boolean;
/** (opcional) Define se o campo está desabilitado. Deve ser usado para validações de habilitação dinâmica do campo
* @type {boolean}
* @default false */
get disabled(): boolean;
set disabled(value: boolean | undefined);
/** (opcional) Placeholder do campo principal do combo
* @alias 'mainPlaceholder'
* @type {string}
* @default "Selecione uma opção..." */
mainPlaceholder?: string;
/** (opcional) Placeholder do campo de pesquisa dentro do combo
* @alias 'searchPlaceholder'
* @type {string}
* @default "Pesquisa..." */
searchPlaceholder?: string;
/** (opcional) Define o tema de cor do componente, como "primary", "success", ou "danger"
* @alias 'theme'
* @type {string}
* @default "primary"
*/
theme?: string;
/** (opcional) Define se o tipo de retorno ao selecionar uma opção será o Record inteiro ou apenas o ID.
* @type {boolean}
* @default false
*/
returnRecord?: boolean;
/** (opcional) Define se o código extra chamado 'AdditionalStringProperty1' será exibido em negrito ou não.
* @type { boolean }
* @default true
*/
additionalStringBold?: boolean;
/** (opcional) Define se a mensagem de erro do input deve ser exibida ou escondida em caso de erro de valor no input.
* @type { boolean }
* @default true
*/
showErrorMessage?: boolean;
/** Evento emitido ao recarregar a lista de registros
* @example Ao ser emitido, o componente pai pode refazer o GET da lista, por exemplo.
* @emits EventEmitter<string> que leva o valor string da pesquisa feita para ser enviada para o GET
* @type {EventEmitter<string>} */
reloadListChange: EventEmitter<string>;
/** Evento emitido ao selecionar um registro da lista do combobox
* @example Ao ser emitido, o componente pai pode realizar uma validação com o valor selecionado.
* @emits EventEmitter<string|number|null> que leva o valor string da pesquisa feita para ser enviada para o GET
* @type {EventEmitter<string | number | null>} */
changeValue: EventEmitter<RecordCombobox | string | number | null>;
/** Evento emitido ao mudar o valor do campo de pesquisa
* @example Ao ser emitido, o componente pai pode realizar uma validação ou nova query com o valor selecionado.
* @emits EventEmitter<string> que leva o valor string da pesquisa feita para ser enviada para o GET
* @type {EventEmitter<string>} */
changePesquisa: EventEmitter<string>;
btnLeft?: any;
btnRight?: any;
private _mainInput;
private _searchInput?;
private _dropdownMenu;
showSearchInput: boolean;
/** Foca no input de pesquisa interna, levando em consideração se ele está escondido ou não. */
focusSearchInput(): void;
constructor();
ngOnInit(): void;
ngAfterViewInit(): void;
ngAfterContentInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
setValue(item: RecordCombobox): void;
clearValue(): void;
private updateSelectedValue;
private changeSeparator;
private adjustDropdownWidth;
/** Serve para aplicar ou remover o Validator.required do controle.
* Por padrão ele priorizará a propriedade libRequired para esta validação. */
private setValidator;
private setControlStatus;
reloadList(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<LibComboboxComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<LibComboboxComponent, "lib-combobox", never, { "control": { "alias": "control"; "required": true; }; "list": { "alias": "list"; "required": true; }; "labelText": { "alias": "labelText"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "libRequired": { "alias": "libRequired"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "mainPlaceholder": { "alias": "mainPlaceholder"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "returnRecord": { "alias": "returnRecord"; "required": false; }; "additionalStringBold": { "alias": "additionalStringBold"; "required": false; }; "showErrorMessage": { "alias": "showErrorMessage"; "required": false; }; }, { "reloadListChange": "reloadListChange"; "changeValue": "changeValue"; "changePesquisa": "changePesquisa"; }, ["btnLeft", "btnRight"], ["lib-icon[iconLeft]", "lib-icon[iconRight]", "[btnLeft]", "[btnRight]"], true, never>;
}