> ## Documentation Index
> Fetch the complete documentation index at: https://docs-fw.madbuilder.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# TSeekButton

> O `TSeekButton` é um widget que cria um campo de busca com um botão auxiliar para procurar valores de entidades associadas.

Derivado da classe `TEntry`, métodos herdados não sobrescritos podem também ser utililzados por objetos `TSeekButton`. Acesse a [documentação do componente/classe-pai](https://madbuilder.mintlify.app/entrada-de-dados/tentry) para conhecê-los.

*Obs.: todos os métodos presentes nesta documentação utilizarão como base uma tabela chamada "produto". Esta tabela foi criada em um modelo de dados chamado "docs" e possui três colunas: id, nome, preco.*

*Obs. 2: para utilizar este componente de busca, faz-se necessário criar uma nova página "Janela de Busca" a partir da base de dados e tabela desejados. Nesta documentação, utilizaremos a janela de busca "ProdutoSeekWindow".*

*Obs. 3: todos os exemplos de código presentes nesta documentação seguirão como base o conteúdo de `__construct()`, acrescentando apenas seus respectivos métodos.*

## \_\_construct

Construtor da classe `TSeekButton`.

**Parâmetros:**
<ResponseField name="$name" type="mixed" required>Nome do campo.</ResponseField>
<ResponseField name="$icon" type="mixed" default="NULL">(Opcional) Ícone para o botão de busca.</ResponseField>

**Exemplo de código:**

```php theme={null}
$botaoBusca = new TSeekButton('botaoBusca');
$campoNomeConstruct = new TEntry('campoNome');
$campoPrecoConstruct = new TEntry('campoPreco');

$code_tseekbutton_construct->setTip("Buscar produto");

$campoNomeConstruct->setSize('100%');
$campoPrecoConstruct->setSize('100%');

$campoNomeConstruct->placeholder = "Nome do produto";
$campoPrecoConstruct->placeholder = "Preço";
        
// Definição da ação do TSeekButton abstraída pelo builder a partir dos valores para preenchimento de campos fornecidos.
```

<br />

## setSize

Define a largura do campo.

**Parâmetros:**
<ResponseField name="$width" type="mixed" required>Largura do campo.</ResponseField>
<ResponseField name="$height" type="mixed" default="NULL">(Opcional) Altura do campo.</ResponseField>

**Exemplo de código:**

```php theme={null}
// Instância inicial presente na seção '__construct()'

$botaoBusca->setSize(150);
```

<br />

## setUseOutEvent

Define se o evento de saída será disparado.

**Parâmetros:**
<ResponseField name="$bool" type="mixed" required>Booleano para ativar ou desativar o evento.</ResponseField>

**Exemplo de código:**

```php theme={null}
// Instância inicial presente na seção '__construct()'

$botaoBusca->setUseOutEvent(true);
```

<br />

## setAction

Define a ação para o botão de busca.

**Parâmetros:**
<ResponseField name="$action" type="TAction" required>Ação a ser executada quando o botão de busca é clicado.</ResponseField>

**Exemplo de código:**

```php theme={null}
// Instância inicial presente na seção '__construct()'

$botaoBusca->setAction($acao);
```

<br />

## getAction

Retorna a ação definida para o botão de busca.

**Exemplo de código:**

```php theme={null}
// Instância inicial presente na seção '__construct()'

$acao = $botaoBusca->getAction();
```

<br />

## setAuxiliar

Define um campo auxiliar.

**Parâmetros:**
<ResponseField name="$object" type="mixed" required>Qualquer objeto `TField`.</ResponseField>

**Exemplo de código:**

```php theme={null}
// Instância inicial presente na seção '__construct()'

$campoAuxiliar = new TEntry('campoAuxiliar');
$botaoBusca->setAuxiliar($campoAuxiliar);
```

<br />

## hasAuxiliar

Verifica se existe um campo auxiliar definido.

**Exemplo de código:**

```php theme={null}
// Instância inicial presente na seção '__construct()'

$temAuxiliar = $botaoBusca->hasAuxiliar();
```

<br />

## enableField e disableField

(Método estático) Habilita e desabilita um botão.

**Parâmetros:**
<ResponseField name="$form_name" type="mixed" required>Nome do formulário.</ResponseField>
<ResponseField name="$field" type="mixed" required>Nome do campo.</ResponseField>

**Exemplo de código:**

```php theme={null}
// Instância inicial presente na seção '__construct()'

$btnHabilitar = new TButton('btnEnableField');
$btnHabilitar->addStyleClass('btn-default');
$btnHabilitar->setImage('far:circle #000000');
$btnHabilitar->setAction(new TAction([$this, 'habilitarBotao']), 'Habilitar Botão de Busca');

$btnDesabilitar = new TButton('btnDisableField');
$btnDesabilitar->addStyleClass('btn-default');
$btnDesabilitar->setImage('far:circle #000000');
$btnDesabilitar->setAction(new TAction([$this, 'desabilitarBotao']), 'Desabilitar Botão de Busca');
```

Código de exemplo das funções a serem chamadas, lembrando que essas funções precisam ser estáticas (static function).

```php theme={null}
public static function habilitarBotao($param = null)
{
    TSeekButton::enableField('nomeForm', 'botaoBusca');
}

public static function desabilitarBotao($param = null)
{
    TSeekButton::disableField('nomeForm', 'botaoBusca');
}
```
