fix: version 2.8.3 -- PIN de Contraseñas ya no dispara el gestor de contraseñas de Chrome
Los campos de PIN (desbloqueo, crear, cambiar, resetear) usaban type="password", lo que hacia que Chrome ofreciera guardar/actualizar una "contraseña de sitio" cada vez que se ingresaba. Un PIN de 4 digitos no es una credencial de login, asi que se cambia a type="text" con enmascarado puramente visual (-webkit-text-security), sin perder el aspecto de puntos. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -268,7 +268,8 @@ export default function ContrasenasPage() {
|
||||
{!hasPinSet && <p className="text-muted" style={{ fontSize: '.8rem' }}>{t('vault_create_pin_hint')}</p>}
|
||||
<Field label={t('vault_pin_label')}>
|
||||
<input
|
||||
className="input" type="password" inputMode="numeric" maxLength={4} autoFocus
|
||||
className="input pin-input" type="text" inputMode="numeric" maxLength={4} autoFocus
|
||||
autoComplete="off" data-lpignore="true" data-1p-ignore="true"
|
||||
value={pin} onChange={(e) => setPin(e.target.value.replace(/\D/g, ''))}
|
||||
onKeyDown={(e) => { if (e.key === 'Enter') submitPin(); }}
|
||||
/>
|
||||
@@ -276,7 +277,8 @@ export default function ContrasenasPage() {
|
||||
{!hasPinSet && (
|
||||
<Field label={t('vault_pin_confirm_label')}>
|
||||
<input
|
||||
className="input" type="password" inputMode="numeric" maxLength={4}
|
||||
className="input pin-input" type="text" inputMode="numeric" maxLength={4}
|
||||
autoComplete="off" data-lpignore="true" data-1p-ignore="true"
|
||||
value={pinConfirm} onChange={(e) => setPinConfirm(e.target.value.replace(/\D/g, ''))}
|
||||
onKeyDown={(e) => { if (e.key === 'Enter') submitPin(); }}
|
||||
/>
|
||||
@@ -426,13 +428,13 @@ export default function ContrasenasPage() {
|
||||
|
||||
<DetailPopup open={changingPin} title={t('vault_change_pin')} onClose={() => setChangingPin(false)} width={360} height={360}>
|
||||
<Field label={t('vault_pin_current_label')}>
|
||||
<input className="input" type="password" inputMode="numeric" maxLength={4} value={pinChangeForm.current} onChange={(e) => setPinChangeForm((f) => ({ ...f, current: e.target.value.replace(/\D/g, '') }))} />
|
||||
<input className="input pin-input" type="text" inputMode="numeric" maxLength={4} autoComplete="off" data-lpignore="true" data-1p-ignore="true" value={pinChangeForm.current} onChange={(e) => setPinChangeForm((f) => ({ ...f, current: e.target.value.replace(/\D/g, '') }))} />
|
||||
</Field>
|
||||
<Field label={t('vault_pin_label')}>
|
||||
<input className="input" type="password" inputMode="numeric" maxLength={4} value={pinChangeForm.next} onChange={(e) => setPinChangeForm((f) => ({ ...f, next: e.target.value.replace(/\D/g, '') }))} />
|
||||
<input className="input pin-input" type="text" inputMode="numeric" maxLength={4} autoComplete="off" data-lpignore="true" data-1p-ignore="true" value={pinChangeForm.next} onChange={(e) => setPinChangeForm((f) => ({ ...f, next: e.target.value.replace(/\D/g, '') }))} />
|
||||
</Field>
|
||||
<Field label={t('vault_pin_confirm_label')}>
|
||||
<input className="input" type="password" inputMode="numeric" maxLength={4} value={pinChangeForm.next2} onChange={(e) => setPinChangeForm((f) => ({ ...f, next2: e.target.value.replace(/\D/g, '') }))} />
|
||||
<input className="input pin-input" type="text" inputMode="numeric" maxLength={4} autoComplete="off" data-lpignore="true" data-1p-ignore="true" value={pinChangeForm.next2} onChange={(e) => setPinChangeForm((f) => ({ ...f, next2: e.target.value.replace(/\D/g, '') }))} />
|
||||
</Field>
|
||||
{pinChangeError && <div className="login-error">{pinChangeError}</div>}
|
||||
<div style={{ display: 'flex', gap: 8, marginTop: 8 }}>
|
||||
|
||||
Reference in New Issue
Block a user