Editor de texto rico Componentes
Caixa de texto com barra de negrito, título, lista, link, cor e imagem — tipo um mini Word dentro do formulário. <textarea sw-editor name='conteudo'>.
O que é
Quando a pessoa precisa escrever um texto formatado — a descrição de um produto, um post do blog, um aviso com negrito e lista — um <textarea> comum não basta. Coloque sw-editor no textarea e ele vira um editor com barra de ferramentas: negrito, itálico, títulos (H1–H6), listas, alinhamento, cor da letra, marca-texto, link, imagem por endereço, linha divisória, ver o HTML e tela cheia. O que sai dele é HTML, pronto para salvar no banco e mostrar no site.
O JavaScript do núcleo esconde o seu <textarea> e monta o editor logo depois dele. A cada tecla, o HTML escrito é copiado para o seu próprio textarea (escondido), e é ele que o formulário envia, com o name dele (sem name, ele recebe o de sw-editor-name; sem nenhum, content). Editor sem texto envia vazio, então required funciona. Embaixo do editor aparece a contagem de caracteres e palavras, e uma alça para esticar a altura com o mouse. Funciona no tema claro e no escuro.
Quando usar
- Painel admin: descrição de produto, texto de página "Sobre", conteúdo de post do blog.
- Comentário ou depoimento com um pouco de formatação: use a barra reduzida (
sw-editor-simple). - Aviso, e-mail modelo, termo que precisa de título, lista e negrito.
- Não use para um campo de uma linha (nome, e-mail): aí é
<input sw-inp>.
Comece aqui
-
1
Coloque o SWCore na página: CSS no
<head>e JS no fim do<body>. Os botões da barra completa são ícones — eles vêm noswcore.compl.min.css.<link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.css"> <link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.compl.min.css"> <!-- fim do <body> --> <script src="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.js"></script> -
2
Coloque
sw-editorno textarea e dê umname— é com esse nome que o texto chega no servidor. Escreva, selecione uma palavra e clique em B.<textarea sw-editor name="conteudo" sw-editor-height="140"></textarea>
Todas as variações
Cada quadro abaixo é o componente de verdade, rodando. O código embaixo é exatamente o que está no quadro: copie e cole.
1. Barra completa ou reduzida
Sem nada, vem a barra completa: formato do bloco (P, H1…H6), negrito, itálico, sublinhado, tachado, cor da letra, marca-texto, limpar formatação, 4 alinhamentos, lista, lista numerada, linha, link, imagem, ver HTML e tela cheia. Com sw-editor-simple (ou sw-editor-mode="simple") fica só B I U S — bom para comentário.
<textarea sw-editor name="conteudo" sw-editor-height="120">
<p>Selecione este texto e teste os botões da barra.</p>
</textarea>
<textarea sw-editor sw-editor-simple name="comentario" sw-editor-height="90">
<p>Só negrito, itálico, sublinhado e tachado.</p>
</textarea>
<textarea sw-editor sw-editor-mode="simple" name="comentario" sw-editor-height="90"></textarea>
2. Altura
sw-editor-height é a altura inicial da área de escrever, em pixels (padrão 150). A alça embaixo estica ou encolhe com o mouse, entre sw-editor-min (padrão 100) e sw-editor-max (padrão 800). sw-editor-resizable="false" tira a alça.
<textarea sw-editor sw-editor-simple name="recado" sw-editor-height="80"></textarea>
<textarea sw-editor sw-editor-simple name="resumo"
sw-editor-height="120" sw-editor-min="120" sw-editor-max="260"></textarea>
<textarea sw-editor sw-editor-simple name="obs" sw-editor-height="100"
sw-editor-resizable="false"></textarea>
3. Começar com texto
O que estiver dentro do textarea vira o conteúdo inicial — escreva em HTML. É assim que você mostra o texto já salvo quando a pessoa abre a tela de "Editar".
<textarea sw-editor name="descricao" sw-editor-height="160">
<h3>Corte + barba</h3>
<p>Inclui <strong>lavagem</strong>, toalha quente e finalização.</p>
<ul>
<li>Duração: 50 minutos</li>
<li>Agendamento pelo WhatsApp</li>
</ul>
</textarea>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Ligar | ||
sw-editor | No <textarea> que vira editor. Não leva valor. | <textarea sw-editor> |
| Nome do campo enviado | ||
name | O nome normal do textarea. O HTML do editor é enviado com esse nome. | name="conteudo" |
sw-editor-name | Usado só se o textarea não tiver name. Se faltar os dois, o nome é content. | sw-editor-name="texto" |
| Barra | ||
(nenhum) | Barra completa (formato de bloco, 4 estilos, cores, limpar, alinhamentos, listas, linha, link, imagem, HTML, tela cheia). | |
sw-editor-simple | Barra reduzida: só B, I, U, S. Não leva valor. | <textarea sw-editor sw-editor-simple> |
sw-editor-mode | simple — o mesmo que sw-editor-simple. | sw-editor-mode="simple" |
| Altura | ||
sw-editor-height | Altura inicial da área de escrever, em px. Padrão 150. | sw-editor-height="200" |
sw-editor-min | Menor altura ao arrastar a alça, em px. Padrão 100. | sw-editor-min="120" |
sw-editor-max | Maior altura ao arrastar a alça, em px. Padrão 800. | sw-editor-max="400" |
sw-editor-resizable | false tira a alça de esticar. Padrão: com alça. | sw-editor-resizable="false" |
| Texto de ajuda | ||
sw-editor-placeholder | Texto de exemplo (também lê o placeholder normal). Aparece enquanto o editor está vazio e sem foco. | sw-editor-placeholder="Escreva aqui…" |
| Atalhos de teclado (barra completa) | ||
Ctrl+B / Ctrl+I / Ctrl+U | Negrito, itálico, sublinhado (também na barra reduzida). | |
Ctrl+K | Criar link (pergunta o endereço). | |
Ctrl+Z / Ctrl+Y | Desfazer / refazer. | |
Ctrl+0 … Ctrl+6 | Parágrafo (0) ou título H1…H6. Só na barra completa. | |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<form sw-frm action="/admin/posts/salvar" method="post">
<div sw-fld>
<label for="titulo">Título do post</label>
<input sw-inp id="titulo" name="titulo">
</div>
<div sw-fld>
<label>Conteúdo</label>
<textarea sw-editor name="conteudo" sw-editor-height="180"></textarea>
</div>
<button type="submit" sw-btn="pri">Publicar post</button>
</form>
<!-- no servidor, $_POST['conteudo'] chega com o HTML do editor -->
<div sw-fld>
<label>Seu comentário</label>
<textarea sw-editor sw-editor-simple name="comentario"
sw-editor-height="90" sw-editor-resizable="false"></textarea>
</div>
<button type="submit" sw-btn="pri p">Comentar</button>
<textarea sw-editor id="descricao" name="descricao"></textarea>
<script>
const editor = document.getElementById('descricao')._swEditor;
editor.getValue(); // devolve o HTML atual
editor.setValue('<p>Novo <b>texto</b></p>'); // troca o conteúdo
</script>
<form id="form-produto">
<textarea sw-editor name="descricao"></textarea>
<button sw-btn="pri">Salvar</button>
</form>
<script>
const form = document.getElementById('form-produto');
form.addEventListener('submit', async (e) => {
e.preventDefault();
// FormData já pega o campo escondido que o editor mantém atualizado
await fetch('/produto/salvar', { method: 'POST', body: new FormData(form) });
});
</script>
Eventos
inputinput do navegador sai da área de escrever e sobe pela página — escute no elemento em volta do editor para saber quando o texto mudou.API (JavaScript)
textarea._swEditor.getValue()textarea é o seu <textarea sw-editor> original — o .value dele também fica sempre igual (e dispara o evento input a cada mudança).textarea._swEditor.setValue(html)SW.Editor.initAll(raiz)[sw-editor] dentro de raiz que ainda não foram montados. O núcleo já faz sozinho.Precisa de quê
swcore.min.css+swcore.min.js— o editor.swcore.compl.min.css— os ícones da barra completa (a barra reduzida usa letras e funciona sem ele).
Cuidados — erros comuns
- Esquecer o
name: o texto chega no servidor comocontent, não com o nome que você esperava. - Mostrar no site o HTML salvo sem limpar: o conteúdo é escrito por pessoas. Limpe no servidor (em PHP, por exemplo, com uma lista de tags permitidas) antes de exibir.
- Colocar dois editores com o mesmo
nameno mesmo formulário — os dois vão com o mesmo nome e um apaga o outro no servidor. - Editor dentro de uma aba ou modal fechado funciona normalmente; mas se você criar o textarea depois com
innerHTML, chameSW.reinit(area).
O que ele não faz
- Link e imagem são inseridos pelo endereço (a caixinha do navegador pergunta a URL). Ele não faz upload de imagem.
- Não tem tabela, vídeo embutido, emoji, nem trabalho em conjunto.
- A alça de esticar funciona com mouse; no celular a altura fica a inicial.
- É feito para textos curtos e médios. Para um site de notícias ou livro, use um editor maior.

