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

# TArrowStep

> O `TArrowStep` é um componente para criação de passos de progresso visualizados como setas (derivado da classe `TField`), permitindo a representação de etapas em um processo.

## \_\_construct

Construct do `TArrowStep`.

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

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
```

<br />

## setEditable

Define se o componente é editável.

**Parâmetros:**
<ResponseField name="$editable" type="mixed" required>Booleano para a edição.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setEditable(false);
```

<br />

## getEditable

Retorna se o componente é editável.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->setEditable(false);
$isEditavel = $etapas->getEditable(); // false
```

<br />

## setFormName

Define o nome do formulário ao qual o componente pertence.

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

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setFormName('formularioProcesso');
```

<br />

## setName

Define o nome do componente.

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

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setName('progresso');
```

<br />

## getName

Retorna o nome do componente.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$nome = $etapas->getName(); // etapas
```

<br />

## setValue

Define o valor do item atual.

**Parâmetros:**
<ResponseField name="$value" type="mixed" required>Valor do item.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setValue('2');
```

<br />

## getValue

Obtém o valor do item atual.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setValue('1');
$valorAtual = $etapas->getValue(); // Meio
```

<br />

## setHideText

Define se o texto dos itens deve ser ocultado.

**Parâmetros:**
<ResponseField name="$hide" type="bool" default="true">(Opcional) Booleano para ocultar texto.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setHideText(true);
```

<br />

## setFontSize

Define o tamanho da fonte dos itens.

**Parâmetros:**
<ResponseField name="$fontSize" type="mixed" required>Tamanho da fonte.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setFontSize(24);
```

<br />

## setFilledColor

Define a cor de preenchimento dos itens e opcionalmente a cor da fonte.

**Parâmetros:**
<ResponseField name="$color" type="string" required>Cor de preenchimento.</ResponseField>
<ResponseField name="$fontColor" type="mixed" default="null">(Opcional) Cor da fonte.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setFilledColor('#00FF00');
```

<br />

## setFilledFontColor

Define a cor da fonte dos itens preenchidos.

**Parâmetros:**
<ResponseField name="$fontColor" type="string" required>Cor da fonte.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setFilledFontColor('#FF0000');
```

<br />

## setUnfilledColor

Define a cor de fundo dos itens não preenchidos e opcionalmente a cor da fonte.

**Parâmetros:**
<ResponseField name="$color" type="string" required>Cor de fundo.</ResponseField>
<ResponseField name="$fontColor" type="mixed" default="null">(Opcional) Cor da fonte.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setUnfilledColor('#CCCCCC');
```

<br />

## setUnfilledFontColor

Define a cor da fonte dos itens não preenchidos.

**Parâmetros:**
<ResponseField name="$color" type="string" required>Cor da fonte.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setUnfilledFontColor('#0037FF');
```

<br />

## setSize

Define a largura e altura do componente.

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

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setSize('50%', 50);
```

<br />

## getSize

Obtém o tamanho do componente (largura e altura).

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->setSize(350);
$tamanho = $etapas->getSize(); // (350, 50)
```

<br />

## setWidth

Define a largura do componente.

**Parâmetros:**
<ResponseField name="$width" type="mixed" required>Largura do componente.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setWidth('80%');
```

<br />

## getWidth

Obtém a largura do componente.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->setWidth(500);
$largura = $etapas->getWidth(); // 500
```

<br />

## setHeight

Define a altura do componente.

**Parâmetros:**
<ResponseField name="$height" type="mixed" required>Altura do componente.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setHeight(100);
```

<br />

## getHeight

Obtém a altura do componente.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->setHeight(75);
$altura = $etapas->getHeight(); // 75
```

<br />

## setColorItems

Define as cores dos itens.

**Parâmetros:**
<ResponseField name="$colorItems" type="mixed" required>Array associativo com as cores dos itens.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setColorItems(['inicio' => '#FF0000', 'meio' => '#00FF00', 'fim' => '#0000FF']);
```

<br />

## setItems

Define os itens do componente.

**Parâmetros:**
<ResponseField name="$items" type="mixed" required>Array associativo com os itens.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setItems(['inicio' => 'Começo', 'meio' => 'Meio', 'fim' => 'Término']);
```

<br />

## addItem

Adiciona um item ao componente.

**Parâmetros:**
<ResponseField name="$title" type="mixed" required>Título do item.</ResponseField>
<ResponseField name="$id" type="mixed" default="null">(Opcional) ID do item.</ResponseField>
<ResponseField name="$color" type="mixed" default="null">(Opcional) Cor do item.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItem('Início');
```

<br />

## getItem

Obtém um item específico do componente.

**Parâmetros:**
<ResponseField name="$key" type="mixed" required>Chave do item.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$item = $etapas->getItem('inicio'); // Início
```

<br />

## addItems

Adiciona itens ao componente.

**Parâmetros:**
<ResponseField name="$items" type="mixed" required>Array associativo com os itens a serem adicionados.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio']);
```

<br />

## getItems

Obtém os itens do componente.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'fim' => 'Fim']);
$itens = $etapas->getItems(); // ['inicio' => 'Início', 'fim' => 'Fim']
```

<br />

## setAction

Define a ação a ser executada quando um item é clicado.

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

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['planejamento' => 'Planejamento', 'desenvolvimento' => 'Desenvolvimento', 'producao' => 'Produção']);
$etapas->setAction(new TAction(['NomeClasseDeControle', 'onStepChange']));
```

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 onStepChange($param = null)
{
    new TMessage('info', 'A etapa foi alterada com sucesso!');
}
```

<br />

## getAction

Obtém a ação associada ao componente.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->setAction(new TAction(['NomeClasseDeControle, 'onChangeStep']));
$acao = $etapas->getAction();
```

<br />

## setCurrentKey

Define a chave do item atual.

**Parâmetros:**
<ResponseField name="$key" type="mixed" required>Chave do item atual.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setCurrentKey('meio');
```

<br />

## getCurrent

Obtém a chave do item atual.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$itemAtual = $etapas->getCurrent();
```

<br />

## setCurrent

Define o título do item atual.

**Parâmetros:**
<ResponseField name="$title" type="mixed" required>Título do item atual.</ResponseField>

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);
$etapas->setCurrent('Fim');
```

<br />

## getPostData

Retorna os dados postados pelo formulário.

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$dadosPostados = $etapas->getPostData();
```

<br />

## defineCurrent

(Método estático) Define o item atual por meio de seu valor.

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

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);

$btnDefinir = new TButton('btnDefineCurrent');
$btnDefinir->addStyleClass('btn-default');
$btnDefinir->setImage('far:circle #000000');
$btnDefinir->setAction(new TAction([$this, 'definirAtual']), 'Definir Item Atual -> "Meio"');
```

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 definirAtual($param = null)
{
    TArrowStep::defineCurrent('etapas', 'meio');
}
```

<br />

## enableField e disableField

(Método estático) Habilita ou desabilita um campo 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}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);

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

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

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)
{
    TArrowStep::enableField('nomeForm', 'etapas');
}

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

<br />

## clearField

(Método estático) Limpa os itens de um campo.

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

**Exemplo de código:**

```php theme={null}
$etapas = new TArrowStep('etapas');
$etapas->addItems(['inicio' => 'Início', 'meio' => 'Meio', 'fim' => 'Fim']);

$btnLimpar = new TButton('btnEnableField');
$btnLimpar->addStyleClass('btn-default');
$btnLimpar->setImage('far:circle #000000');
$btnLimpar->setAction(new TAction([$this, 'limparCampo']), 'Limpar Seleção');
```

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 limparCampo($param = null)
{
    TArrowStep::clearField('nomeForm', 'etapas');
}
```
