Formularios: noValidate en todos para usar red-response del sitio

Desactiva la validación nativa del navegador ("Rellene este campo", formato de
email) en el resto de formularios (recover, reset-password, trade-points,
rename-guild, transfer-dp, gold, promo, transfer, quest, send-gift, 2FA, restore).
Los errores se muestran como red-form-response (por validación en cliente o del
servidor), consistente con login y create-account. Botones ya gateados por campos.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-14 20:57:39 +00:00
parent 071b1d5f0e
commit 14125dbd72
12 changed files with 15 additions and 15 deletions
@@ -74,7 +74,7 @@ export function RecoverForm() {
<>
<p>{t('prompt')}</p>
<br />
<form onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate onSubmit={handleSubmit} acceptCharset="utf-8">
<table className="middle-center-table">
<tbody>
<tr>
@@ -44,7 +44,7 @@ export function ResetForm({ token }: { token: string }) {
return (
<>
<form onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate onSubmit={handleSubmit} acceptCharset="utf-8">
<table className="middle-center-table">
<tbody>
<tr>
+1 -1
View File
@@ -44,7 +44,7 @@ export function GoldForm({ characters, options }: { characters: CharOption[]; op
return (
<div className="centered">
<form onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate onSubmit={handleSubmit} acceptCharset="utf-8">
<CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('selectCharacter')} />
<br />
<select value={amount} onChange={(e) => setAmount(e.target.value)} required>
+1 -1
View File
@@ -60,7 +60,7 @@ export function PromoCodeForm() {
return (
<div className="centered">
<br />
<form onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate onSubmit={handleSubmit} acceptCharset="utf-8">
<input
type="text"
maxLength={64}
+1 -1
View File
@@ -132,7 +132,7 @@ export function QuestTrackerForm({ characters, options }: { characters: QuestCha
return (
<div className="centered">
<form id="uw-quest-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate id="uw-quest-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<CharacterSelect characters={characters} value={character} onChange={onCharacter} placeholder={t('quest.selectPlaceholder')} />
<br />
<select value={option} onChange={(e) => setOption(e.target.value)} required disabled={!selected}>
+1 -1
View File
@@ -80,7 +80,7 @@ export function RenameGuildForm({ guilds }: { guilds: GmGuild[] }) {
return (
<div className="centered">
<form id="uw-rename-guild-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate id="uw-rename-guild-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<table className="middle-center-table">
<tbody>
<tr>
+1 -1
View File
@@ -78,7 +78,7 @@ export function RestoreCharacterForm({ characters }: { characters: DeletedCharac
return (
<div className="centered">
<form id="uw-restore-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate id="uw-restore-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<select className={selectedCss} value={guid} onChange={(e) => setGuid(e.target.value)} required>
<option value="" disabled>{t('restoreChar.selectPlaceholder')}</option>
{characters.map((c) => (
+1 -1
View File
@@ -153,7 +153,7 @@ export function SendGiftForm({
return (
<div className="centered">
<form onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate onSubmit={handleSubmit} acceptCharset="utf-8">
<p>{t('sendGift.sourcePrompt')}</p>
<CharacterSelect characters={characters} value={source} onChange={setSource} placeholder={t('sendGift.sourcePlaceholder')} />
<br />
+2 -2
View File
@@ -133,7 +133,7 @@ function SellForm({ characters, visible }: { characters: CharOption[]; visible:
return (
<div id="trade-sell-div" style={{ display: visible ? 'block' : 'none' }}>
<form onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate onSubmit={handleSubmit} acceptCharset="utf-8">
<table className="middle-center-table">
<tbody>
<tr><td>{t('trade.sellPointsLabel')}</td></tr>
@@ -240,7 +240,7 @@ function BuyForm({ characters, visible }: { characters: CharOption[]; visible: b
return (
<div id="trade-buy-div" style={{ display: visible ? 'block' : 'none' }}>
<form onSubmit={handleRedeem} acceptCharset="utf-8">
<form noValidate onSubmit={handleRedeem} acceptCharset="utf-8">
<table className="middle-center-table">
<tbody>
<tr><td>{t('trade.buyCodeLabel')}</td></tr>
+1 -1
View File
@@ -89,7 +89,7 @@ export function TransferDPointsForm({ balance }: { balance: number }) {
<br />
<p className="yellow-info centered">{t('transferDp.available', { balance })}</p>
<br />
<form onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate onSubmit={handleSubmit} acceptCharset="utf-8">
<input
type="text"
placeholder={t('transferDp.characterPlaceholder')}
+1 -1
View File
@@ -86,7 +86,7 @@ export function TransferForm({ characters, price }: { characters: CharOption[];
return (
<div className="centered">
<form id="uw-transfer-character-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<form noValidate id="uw-transfer-character-form" onSubmit={handleSubmit} acceptCharset="utf-8">
<CharacterSelect characters={characters} value={character} onChange={setCharacter} placeholder={t('transfer.selectPlaceholder')} />
<br />
<input type="text" maxLength={32} placeholder={t('transfer.destinationPlaceholder')} value={destination} onChange={(e) => setDestination(e.target.value)} required />
+3 -3
View File
@@ -101,7 +101,7 @@ function ActivateFlow() {
return (
<>
<form onSubmit={activate} id="uw-2fa-form">
<form noValidate onSubmit={activate} id="uw-2fa-form">
<table className="middle-center-table">
<tbody>
<tr>
@@ -182,7 +182,7 @@ function ActivateFlow() {
<br />
<br />
<p>{t('twofa.step3')}</p>
<form onSubmit={verify} id="uw-2fa-verify-form" autoComplete="off">
<form noValidate onSubmit={verify} id="uw-2fa-verify-form" autoComplete="off">
<table className="middle-center-table">
<tbody>
<tr>
@@ -255,7 +255,7 @@ function DisableForm() {
<p className="green-info"><i className="fas fa-shield-alt"></i> {t('twofa.enabledNotice')}</p>
<p>{t('twofa.disableInstruction')}</p>
<br />
<form onSubmit={disable} id="uw-2fa-disable-form">
<form noValidate onSubmit={disable} id="uw-2fa-disable-form">
<table className="middle-center-table">
<tbody>
<tr>