ilibras-widget 1.4.0 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +88 -0
- package/README.md +14 -26
- package/dist/ilibras-widget.cjs +105 -246
- package/dist/ilibras-widget.js +105 -246
- package/dist/ilibras-widget.mjs +105 -246
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,94 @@ Todas as mudanças notáveis neste projeto serão documentadas neste arquivo.
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## [1.5.2] - 2026-09-18
|
|
8
|
+
|
|
9
|
+
### 🗂️ Uma aba, não duas
|
|
10
|
+
|
|
11
|
+
Ao criar o atendimento, o widget abria a aba nova **e** trocava a página da aba
|
|
12
|
+
atual. A pessoa terminava com duas.
|
|
13
|
+
|
|
14
|
+
A causa estava no plano B para pop-up bloqueado:
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
const aba = window.open(destino, '_blank', 'noopener');
|
|
18
|
+
if (!aba) window.location.assign(destino);
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
A especificação manda `window.open` devolver `null` sempre que `noopener` está
|
|
22
|
+
presente — **mesmo quando a aba abre**. O teste lia esse `null` como pop-up
|
|
23
|
+
bloqueado, e a segunda linha disparava sempre.
|
|
24
|
+
|
|
25
|
+
Agora a chamada vai sem a feature e a proteção é feita na mão
|
|
26
|
+
(`aba.opener = null`), o que dá o mesmo isolamento e preserva o retorno — que é
|
|
27
|
+
justamente o que distingue aba aberta de aba barrada. O plano B continua de pé
|
|
28
|
+
para quando o pop-up é realmente bloqueado: melhor trocar de página do que
|
|
29
|
+
sumir com um atendimento já criado.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## [1.5.1] - 2026-09-18
|
|
34
|
+
|
|
35
|
+
### 🎨 O tema do site não pinta mais o widget
|
|
36
|
+
|
|
37
|
+
Todas as regras de estilo passaram a ser escopadas por
|
|
38
|
+
`#ilibras-widget-container`.
|
|
39
|
+
|
|
40
|
+
O widget usava seletores de uma classe só — `.ilibras-widget-submit` tem
|
|
41
|
+
especificidade (0,1,0) e perde para qualquer tema que estilize botões com dois
|
|
42
|
+
níveis. Um `.elementor-kit-275 button` é (0,1,1) e vencia.
|
|
43
|
+
|
|
44
|
+
O estrago aparecia num site real: botões verdes, cantos arredondados em 30px e
|
|
45
|
+
o "X" de fechar virado pílula — dentro de um widget cuja promessa é justamente
|
|
46
|
+
se bastar no site dos outros. O botão principal escapava por acidente, porque o
|
|
47
|
+
gradiente dele pintava por cima da cor do tema; o de agendar, sem gradiente,
|
|
48
|
+
ficava verde.
|
|
49
|
+
|
|
50
|
+
Com o prefixo, as regras vão a (1,1,0): ganham de qualquer seletor de tema
|
|
51
|
+
**sem recorrer a `!important`**, e continuam perdendo para o `!important` que o
|
|
52
|
+
README ensina o cliente a usar quando quer customizar de propósito. Quem
|
|
53
|
+
customiza sem `!important` precisa passar a usá-lo.
|
|
54
|
+
|
|
55
|
+
Problema antigo, anterior à v1.5.0 — só ficou visível quando o segundo botão
|
|
56
|
+
entrou no formulário.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## [1.5.0] - 2026-09-18
|
|
61
|
+
|
|
62
|
+
### 🙋 O formulário pede só o nome
|
|
63
|
+
|
|
64
|
+
CPF e telefone saíram. Para chamar um intérprete não é preciso identificar a
|
|
65
|
+
pessoa, e cada campo a mais era uma barreira a quem só queria ser atendido — em
|
|
66
|
+
especial um CPF digitado errado, que reprovava o envio inteiro.
|
|
67
|
+
|
|
68
|
+
Sai junto o que existia só para eles: a validação de CPF, a lista de DDDs, as
|
|
69
|
+
máscaras dos dois campos. O widget ficou 4,5 KB menor.
|
|
70
|
+
|
|
71
|
+
O que continua: nome (com sobrenome), a caixa de consentimento, a armadilha
|
|
72
|
+
anti-robô e a marca de tempo de abertura.
|
|
73
|
+
|
|
74
|
+
### 📲 Aviso por SMS mora no iLibras, não aqui
|
|
75
|
+
|
|
76
|
+
Quem agenda um horário e quer ser avisado por SMS informa o celular **na tela
|
|
77
|
+
de agendamento do iLibras**, e o número vale só para aquele atendimento. Era o
|
|
78
|
+
motivo que restava para o widget pedir telefone de todo mundo — inclusive de
|
|
79
|
+
quem nem ia agendar.
|
|
80
|
+
|
|
81
|
+
### 🔁 Compatibilidade
|
|
82
|
+
|
|
83
|
+
A API continua aceitando `cpf` e `telefone`, então **widget antigo instalado em
|
|
84
|
+
site de cliente segue funcionando** sem ser atualizado.
|
|
85
|
+
|
|
86
|
+
Esta é uma versão **minor** de propósito, e não major: quem seguiu o README e
|
|
87
|
+
fixou `@1` recebe a mudança automaticamente, que é o ponto. A API pública do
|
|
88
|
+
pacote (configuração e métodos) não mudou em nada.
|
|
89
|
+
|
|
90
|
+
**Requer o iLibras com CPF e telefone opcionais.** Contra uma versão anterior do
|
|
91
|
+
servidor, o cadastro sem CPF seria recusado com erro de validação.
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
7
95
|
## [1.4.0] - 2026-09-16
|
|
8
96
|
|
|
9
97
|
### 📦 O widget virou pacote npm
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
|
|
5
5
|
[](https://developer.mozilla.org/en-US/docs/Web/CSS)
|
|
6
6
|
|
|
7
|
-
Widget
|
|
7
|
+
Widget de acessibilidade em Libras: um botão flutuante que leva a pessoa surda ao atendimento com intérprete — ao vivo ou agendado. Pede só o nome, envia por POST e redireciona para a plataforma. Ideal para sites, sistemas e plataformas web.
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
@@ -13,9 +13,9 @@ Widget embarcável similar ao WhatsApp para captura de dados (Nome e CPF) com in
|
|
|
13
13
|
- 🚀 **Fácil integração** - Apenas 2 linhas de código
|
|
14
14
|
- 🎨 **Totalmente personalizável** - Cores, posição, textos e mais
|
|
15
15
|
- 📱 **Responsivo** - Funciona perfeitamente em desktop e mobile
|
|
16
|
-
-
|
|
16
|
+
- 🙋 **Pede só o nome** - Nada de CPF ou telefone para ser atendido
|
|
17
|
+
- 📅 **Ao vivo ou agendado** - Entrar na fila agora, ou marcar dia e hora
|
|
17
18
|
- 🔒 **Envio seguro** - Dados enviados via POST para API
|
|
18
|
-
- 🎭 **Máscaras de entrada** - Formatação automática de CPF
|
|
19
19
|
- 🌐 **Universal** - Funciona em qualquer site ou sistema
|
|
20
20
|
- ♿ **Acessível** - Suporte a leitores de tela e navegação por teclado
|
|
21
21
|
- 🌙 **Tema escuro** - Adapta-se automaticamente às preferências do usuário
|
|
@@ -213,18 +213,21 @@ Os dados são enviados como **FormData** (similar a um formulário HTML tradicio
|
|
|
213
213
|
|
|
214
214
|
```
|
|
215
215
|
nome: "João Silva"
|
|
216
|
-
|
|
217
|
-
telefone: "11987654321"
|
|
216
|
+
modo: "fila"
|
|
218
217
|
token: "seu_token_de_autenticacao"
|
|
219
218
|
```
|
|
220
219
|
|
|
221
220
|
| Campo | Descrição | Formato |
|
|
222
221
|
|-------|-----------|------|
|
|
223
222
|
| `nome` | Nome completo do usuário | String |
|
|
224
|
-
| `
|
|
225
|
-
| `telefone` | Telefone sem formatação (apenas números) | String numérica (10-11 dígitos) |
|
|
223
|
+
| `modo` | `fila` (atendimento agora) ou `agendamento` (escolher dia e hora) | String |
|
|
226
224
|
| `token` | Token de autenticação fornecido pela equipe | String |
|
|
227
225
|
|
|
226
|
+
> Até a v1.4.0 o widget também enviava `cpf` e `telefone`. A partir da v1.5.0
|
|
227
|
+
> não envia mais: para chamar um intérprete não é preciso identificar a pessoa,
|
|
228
|
+
> e cada campo a mais era uma barreira a quem só queria ser atendido. A API
|
|
229
|
+
> continua aceitando os dois campos, para os widgets antigos ainda instalados.
|
|
230
|
+
|
|
228
231
|
### Resposta Esperada da API
|
|
229
232
|
|
|
230
233
|
A API deve retornar um JSON com um link de redirecionamento:
|
|
@@ -428,18 +431,6 @@ Todos os dados são enviados via **método POST** (não via URL/GET), garantindo
|
|
|
428
431
|
- Maior segurança no tráfego de informações sensíveis
|
|
429
432
|
- Conformidade com boas práticas de desenvolvimento web
|
|
430
433
|
|
|
431
|
-
### Validação de CPF
|
|
432
|
-
|
|
433
|
-
O widget valida o CPF antes do envio usando o algoritmo de verificação de dígitos. CPFs inválidos são rejeitados automaticamente.
|
|
434
|
-
|
|
435
|
-
```javascript
|
|
436
|
-
// CPFs aceitos: números válidos com 11 dígitos
|
|
437
|
-
// CPFs rejeitados:
|
|
438
|
-
// - Números com menos de 11 dígitos
|
|
439
|
-
// - Sequências repetidas (111.111.111-11)
|
|
440
|
-
// - Dígitos verificadores incorretos
|
|
441
|
-
```
|
|
442
|
-
|
|
443
434
|
### Validação de Nome
|
|
444
435
|
|
|
445
436
|
- Entre 3 e 120 caracteres
|
|
@@ -447,17 +438,14 @@ O widget valida o CPF antes do envio usando o algoritmo de verificação de díg
|
|
|
447
438
|
pontuação de código são rejeitados
|
|
448
439
|
- Exige nome e sobrenome
|
|
449
440
|
|
|
450
|
-
### Validação de Telefone
|
|
451
|
-
|
|
452
|
-
- DDD conferido contra a lista de códigos em uso no país
|
|
453
|
-
- Celular com 9 dígitos precisa começar em 9; fixo com 8 dígitos, entre 2 e 5
|
|
454
|
-
- Sequências repetidas (00000000000) são rejeitadas
|
|
455
|
-
|
|
456
441
|
### Sanitização de Dados
|
|
457
442
|
|
|
458
|
-
- CPF e telefone: apenas dígitos
|
|
459
443
|
- Nome: espaços das pontas removidos e sequências de espaço reduzidas a um
|
|
460
444
|
|
|
445
|
+
> O telefone não é mais pedido aqui. Quem agenda um horário e quer aviso por
|
|
446
|
+
> SMS informa o celular na própria tela de agendamento do iLibras, e ele vale
|
|
447
|
+
> só para aquele atendimento.
|
|
448
|
+
|
|
461
449
|
> **A validação do widget é conveniência, não barreira.** Ela roda no navegador
|
|
462
450
|
> e qualquer pessoa a desliga pelo console. As mesmas regras valem no servidor,
|
|
463
451
|
> e é lá que elas decidem — o widget as repete só para avisar cedo e em
|