> ## 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.

# TSpinner

> O `TSpinner` é um widget conhecido como botão de rotação que permite ao usuário aumentar ou diminuir valores numéricos de forma incremental (derivado da classe `TField`).

## \_\_construct

Construtor da classe `TSpinner`.

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

**Exemplo de código:**

```php theme={null}
$quantidade = new TSpinner('quantidade');
```

<br />

## setRange

Define o intervalo mínimo e máximo, além do incremento de passos.

**Parâmetros:**
<ResponseField name="$min" type="mixed" required>Valor mínimo.</ResponseField>
<ResponseField name="$max" type="mixed" required>Valor máximo.</ResponseField>
<ResponseField name="$step" type="mixed" required>Valor de incremento dos passos.</ResponseField>

**Exemplo de código:**

```php theme={null}
$idade = new TSpinner('idade');
$idade->setRange(1, 120, 1);
```

<br />

## setValue

Define o valor do `TSpinner`.

**Parâmetros:**
<ResponseField name="$value" type="mixed" required>Valor a ser definido.</ResponseField>

**Exemplo de código:**

```php theme={null}
$altura = new TSpinner('altura');
$altura->setValue(170);
```

<br />

## setExitAction

Define a ação a ser executada quando o usuário sair do campo.

**Parâmetros:**
<ResponseField name="$action" type="TAction" required>Objeto `TAction`.</ResponseField>

**Exemplo de código:**

```php theme={null}
$peso = new TSpinner('peso');
$peso->setExitAction(new TAction(['NomeClasseDeControle', 'onExitCampo']));
```

Código de exemplo da função a ser chamada, lembrando que essa função precisa ser estática (static function).

```php theme={null}
public static function onExitCampo($param = null)
{
    new TMessage('info', print_r($param, true));
}
```

<br />

## setExitFunction

Define a função JavaScript a ser executada quando o usuário sair do campo.

**Parâmetros:**
<ResponseField name="$function" type="mixed" required>Função JavaScript.</ResponseField>

**Exemplo de código:**

```php theme={null}
$volume = new TSpinner('volume');
$volume->setExitFunction('alert("Volume ajustado.");');
```

<br />

## enableStepper

Habilita os botões de incremento e decremento.

**Exemplo de código:**

```php theme={null}
$dias = new TSpinner('dias');
$dias->enableStepper();
```

<br />

## disableStepper

Desabilita os botões de incremento e decremento.

**Exemplo de código:**

```php theme={null}
$meses = new TSpinner('meses');
$meses->enableStepper();
$meses->disableStepper();
```

<br />

## enableField e disableField

(Método estático) Habilita ou desabilita um campo spinner no formulário.

**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}
$dias = new TSpinner('dias');

$btnHabilitar = new TButton('btnEnableField');
$btnHabilitar->addStyleClass('btn-default');
$btnHabilitar->setImage('far:circle #000000');
$btnHabilitar->setAction(new TAction([$this, 'habilitarCampo']), 'Habilitar Spinner');

$btnDesabilitar = new TButton('btnDisableField');
$btnDesabilitar->addStyleClass('btn-default');
$btnDesabilitar->setImage('far:circle #000000');
$btnDesabilitar->setAction(new TAction([$this, 'desabilitarCampo']), 'Desabilitar Spinner');
```

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 habilitarCampo($param = null)
{
    TSpinner::enableField('nomeForm', 'dias');
}

public static function desabilitarCampo($param = null)
{
    TSpinner::disableField('nomeForm', 'dias');
}
```
