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

# THtmlEditor

> O `THtmlEditor` é um componente de edição de texto rico (derivado da classe `TField`), que facilita a entrada de conteúdo HTML pelo usuário.

## \_\_construct

Construtor da classe `THtmlEditor`.

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

**Exemplo de código:**

```php theme={null}
$editorTexto = new THtmlEditor('textoArtigo');
```

<br />

## setSize

Define o tamanho do editor.

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

**Exemplo de código:**

```php theme={null}
$editorTexto = new THtmlEditor('textoArtigo');
$editorTexto->setSize(500, 100);
```

<br />

## getSize

Retorna as dimensões do editor.

**Retorno:**
<ResponseField name="Array" type="mixed" required>Array contendo a largura e a altura do editor em pixels.</ResponseField>

**Exemplo de código:**

```php theme={null}
$editorTexto = new THtmlEditor('textoArtigo');
$editorTexto->setSize(500, 300);
$tamanho = $editorTexto->getSize(); // (500, 300)
```

<br />

## setMaxLength

Define o comprimento máximo do texto.

**Parâmetros:**
<ResponseField name="$length" type="mixed" required>Comprimento máximo do texto em caracteres.</ResponseField>

**Exemplo de código:**

```php theme={null}
$editorTexto = new THtmlEditor('resumo');
$editorTexto->setMaxLength(120);
```

<br />

## setOption

Configura opções adicionais do editor.

**Parâmetros:**
<ResponseField name="$option" type="mixed" required>Nome da opção.</ResponseField>
<ResponseField name="$value" type="mixed" required>Valor da opção.</ResponseField>

**Exemplo de código:**

```php theme={null}
$editorTexto = new THtmlEditor('textoArtigo');
$editorTexto->setOption('placeholder', 'Digite seu texto aqui...');
```

<br />

## addCustomButton

Adiciona um botão customizado à barra de ferramentas.

**Parâmetros:**
<ResponseField name="$name" type="mixed" required>Nome do botão.</ResponseField>
<ResponseField name="$function" type="mixed" required>Função JavaScript a ser executada.</ResponseField>
<ResponseField name="$title" type="mixed" required>Título do botão.</ResponseField>
<ResponseField name="$icon" type="TImage" required>Ícone do botão.</ResponseField>
<ResponseField name="$showLabel" type="bool" default="false">(Opcional) Mostrar rótulo do botão.</ResponseField>

**Exemplo de código:**

```php theme={null}
$icone = new TImage('far:circle #000000');
$funcao = "function() {
    var editor = document.getElementById('editorCustomizado'); 
    if (editor) {
        editor.innerHTML += 'Texto inserido pelo botão customizado';
    }
}}";

$editorTexto = new THtmlEditor('editorCustomizado');
$editorTexto->addCustomButton('inserirForm', $funcao, 'Inserir Form', $icone, true);
```

<br />

## disableToolbar

Desabilita a barra de ferramentas do editor.

**Exemplo de código:**

```php theme={null}
$editorSimples = new THtmlEditor('editorSimples');
$editorSimples->disableToolbar();
```

*Obs.: apesar de não ser visível, o campo `THtmlEditor` se faz presente.*

<br />

## setCompletion

Define as opções de autoconclusão para o editor.

**Parâmetros:**
<ResponseField name="$options" type="array" required>Array de opções para autoconclusão.</ResponseField>

**Exemplo de código:**

```php theme={null}
$editorTexto = new THtmlEditor('editorAutoComplete');
$editorTexto->setCompletion(['teste', 'texto', 'autocomplete']);
```

<br />

## enableField e disableField

(Método estático) Habilita ou desabilita um campo `HtmlEditor` 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}
$editor = new THtmlEditor('editor');

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

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

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

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

<br />

## clearField

(Método estático) Limpa o conteúdo do editor HTML.

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

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

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)
{
    THtmlEditor::clearField('nomeForm', 'editor');
}
```

<br />

## reloadCompletion

(Método estático) Recarrega as opções de conclusão de um campo de entrada de forma dinâmica.

**Parâmetros:**
<ResponseField name="$field" type="mixed" required>Nome ou ID do campo.</ResponseField>
<ResponseField name="$list" type="mixed" required>Lista de opções para a conclusão.</ResponseField>
<ResponseField name="$options" type="mixed" default="null">(Opcional) Opções adicionais para a conclusão.</ResponseField>

**Exemplo de código:**

```php theme={null}
$editor = new THtmlEditor('editor');
$editor->setCompletion(['teste', 'texto']);

$btnReloadCompletion = new TButton('btnReloadCompletion');
$btnReloadCompletion->addStyleClass('btn-default');
$btnReloadCompletion->setImage('far:circle #000000');
$btnReloadCompletion->setAction(new TAction([$this, 'alterarOpcoes']), 'Alterar Opções de Preenchimento Automático');
```

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 alterarOpcoes($param = null)
{
    THtmlEditor::reloadCompletion('editor', ['teste2', 'texto2']);
}
```

<br />

## insertText

(Método estático) Insere texto no editor HTML.

**Parâmetros:**
<ResponseField name="$form_name" type="mixed" required>Nome do formulário.</ResponseField>
<ResponseField name="$field" type="mixed" required>Nome do campo.</ResponseField>
<ResponseField name="$content" type="mixed" required>Conteúdo de texto a ser inserido.</ResponseField>

**Exemplo de código:**

```php theme={null}
$editor = new THtmlEditor('editor');

$btnInsertText = new TButton('btnInsertText');
$btnInsertText->addStyleClass('btn-default');
$btnInsertText->setImage('far:circle #000000');
$btnInsertText->setAction(new TAction([$this, 'inserirTexto']), 'Inserir Texto no Campo');
```

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 inserirTexto($param = null)
{
    THtmlEditor::insertText('nomeForm', 'editor', 'Texto inserido.');
}
```
