rl-core-front 0.16.1 → 0.16.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rl-core-front",
3
- "version": "0.16.1",
3
+ "version": "0.16.2",
4
4
  "description": "Telas e componentes Next.js do core: login com 2FA, usuários, RBAC, auditoria, logs e listagens com filtro dinâmico",
5
5
  "author": "Rodrigo Liberti",
6
6
  "license": "MIT",
@@ -54,6 +54,11 @@ export interface DatePickerProps {
54
54
  * O campo é **digitável**: `1108` já é 11 de agosto, e quem sabe a data não
55
55
  * precisa navegar meses no calendário para dizê-la. O calendário continua ali,
56
56
  * no ícone — é o caminho de quem procura o dia, não de quem já o conhece.
57
+ *
58
+ * Focar o campo marca a data inteira, e por isso a digitação sempre começa
59
+ * pelo dia. Com o cursor solto no fim do ano — onde o navegador o deixa —
60
+ * escrever outra data exigia apagar dez caracteres primeiro, e um dígito
61
+ * digitado ali entrava no meio do ano.
57
62
  */
58
63
  export function DatePicker({
59
64
  value,
@@ -145,6 +150,20 @@ export function DatePicker({
145
150
  inputMode="numeric"
146
151
  placeholder={placeholder ?? dayPlaceholder(locale)}
147
152
  onChange={(event) => digitar(event.target.value)}
153
+ // Chegou o foco, a data inteira fica marcada: o próximo dígito
154
+ // reescreve a data do dia em diante, em vez de se enfiar no meio
155
+ // do ano.
156
+ onFocus={(event) => event.currentTarget.select()}
157
+ // O clique é o nosso, e não o do navegador: o dele põe o cursor
158
+ // onde se clicou e desfaz, no `mouseup`, a seleção que o foco
159
+ // acabou de fazer. Só no primeiro clique — dentro do campo já
160
+ // focado, clicar e arrastar volta a valer.
161
+ onMouseDown={(event) => {
162
+ if (document.activeElement !== event.currentTarget) {
163
+ event.preventDefault();
164
+ event.currentTarget.focus();
165
+ }
166
+ }}
148
167
  // Sai do campo e o rascunho some: `11/0` não é data, e deixá-lo
149
168
  // escrito faria o campo mostrar uma coisa e o formulário guardar
150
169
  // outra.