Fix: Compactar checkboxes de sensaciones en boca y gustos predominantes
- Cambiar layout de grid fijo a flex-wrap en mobile para sensaciones y gustos - Mantener grid responsive en desktop (3 columnas para sensaciones, 5 para gustos) - Reducir significativamente todas las dimensiones para mayor compactación: * Desktop: min-height 36px, padding 0.375rem 0.5rem * Mobile: min-height 28px, padding 0.25rem 0.375rem * Font-size: 0.75rem desktop, 0.6875rem mobile - Agregar animaciones y estados focus consistentes - Touch-friendly en dispositivos táctiles (36px min-height)
This commit is contained in:
@@ -27,18 +27,19 @@
|
|||||||
<label class="block text-sm font-medium mb-2 cata-text">
|
<label class="block text-sm font-medium mb-2 cata-text">
|
||||||
Sensaciones en la Boca (múltiples)
|
Sensaciones en la Boca (múltiples)
|
||||||
</label>
|
</label>
|
||||||
<div class="grid grid-cols-2 sm:grid-cols-3 gap-2">
|
<div class="sensaciones-grid">
|
||||||
<button
|
<button
|
||||||
v-for="sensacion in sensacionesBoca"
|
v-for="sensacion in sensacionesBoca"
|
||||||
:key="sensacion"
|
:key="sensacion"
|
||||||
type="button"
|
type="button"
|
||||||
:class="[
|
:class="[
|
||||||
|
'sensacion-item',
|
||||||
'cata-checkbox',
|
'cata-checkbox',
|
||||||
{ 'cata-checkbox-checked': muestra.sensacionEnBoca.includes(sensacion) },
|
{ 'cata-checkbox-checked': muestra.sensacionEnBoca.includes(sensacion) },
|
||||||
]"
|
]"
|
||||||
@click="toggleSensacionBoca(sensacion)"
|
@click="toggleSensacionBoca(sensacion)"
|
||||||
>
|
>
|
||||||
<span class="cata-text text-sm">{{ sensacion }}</span>
|
<span class="sensacion-text cata-text">{{ sensacion }}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -48,19 +49,20 @@
|
|||||||
<label class="block text-sm font-medium mb-2 cata-text">
|
<label class="block text-sm font-medium mb-2 cata-text">
|
||||||
Gustos Predominantes (mín 1, máx 2)
|
Gustos Predominantes (mín 1, máx 2)
|
||||||
</label>
|
</label>
|
||||||
<div class="grid grid-cols-2 sm:grid-cols-5 gap-2">
|
<div class="gustos-grid">
|
||||||
<button
|
<button
|
||||||
v-for="gusto in gustosPredominantes"
|
v-for="gusto in gustosPredominantes"
|
||||||
:key="gusto"
|
:key="gusto"
|
||||||
type="button"
|
type="button"
|
||||||
:class="[
|
:class="[
|
||||||
|
'gusto-item',
|
||||||
'cata-checkbox',
|
'cata-checkbox',
|
||||||
{ 'cata-checkbox-checked': muestra.gustosPredominantes.includes(gusto) },
|
{ 'cata-checkbox-checked': muestra.gustosPredominantes.includes(gusto) },
|
||||||
]"
|
]"
|
||||||
:disabled="!muestra.gustosPredominantes.includes(gusto) && muestra.gustosPredominantes.length >= 2"
|
:disabled="!muestra.gustosPredominantes.includes(gusto) && muestra.gustosPredominantes.length >= 2"
|
||||||
@click="toggleGustoPredominante(gusto)"
|
@click="toggleGustoPredominante(gusto)"
|
||||||
>
|
>
|
||||||
<span class="cata-text">{{ gusto }}</span>
|
<span class="gusto-text cata-text">{{ gusto }}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -949,7 +951,134 @@ watch(() => props.muestra.otrasNotas, (newVal) => {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Grid de sensaciones */
|
||||||
|
.sensaciones-grid {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-item {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.375rem;
|
||||||
|
padding: 0.375rem 0.5rem;
|
||||||
|
min-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-item:focus {
|
||||||
|
outline: 2px solid transparent;
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-item:focus-visible {
|
||||||
|
box-shadow: 0 0 0 2px var(--cata-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-text {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Grid de gustos */
|
||||||
|
.gustos-grid {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-item {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.375rem;
|
||||||
|
padding: 0.375rem 0.5rem;
|
||||||
|
min-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-item:focus {
|
||||||
|
outline: 2px solid transparent;
|
||||||
|
outline-offset: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-item:focus-visible {
|
||||||
|
box-shadow: 0 0 0 2px var(--cata-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-text {
|
||||||
|
font-size: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Animaciones */
|
||||||
|
.sensacion-item.cata-checkbox-checked,
|
||||||
|
.gusto-item.cata-checkbox-checked {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-item:not(.disabled):hover,
|
||||||
|
.gusto-item:not(.disabled):hover {
|
||||||
|
transform: scale(1.02);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-item:not(.disabled):active,
|
||||||
|
.gusto-item:not(.disabled):active {
|
||||||
|
transform: scale(0.98);
|
||||||
|
}
|
||||||
|
|
||||||
/* Responsive */
|
/* Responsive */
|
||||||
|
@media (max-width: 640px) {
|
||||||
|
.sensacion-item {
|
||||||
|
min-height: 28px;
|
||||||
|
padding: 0.25rem 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-text {
|
||||||
|
font-size: 0.6875rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-item {
|
||||||
|
min-height: 28px;
|
||||||
|
padding: 0.25rem 0.375rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-text {
|
||||||
|
font-size: 0.6875rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: 768px) {
|
||||||
|
.sensaciones-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sensacion-item {
|
||||||
|
min-height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gustos-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||||
|
gap: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-item {
|
||||||
|
min-height: 36px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Touch-friendly */
|
||||||
|
@media (hover: none) and (pointer: coarse) {
|
||||||
|
.sensacion-item {
|
||||||
|
min-height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gusto-item {
|
||||||
|
min-height: 36px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.formulario-muestra {
|
.formulario-muestra {
|
||||||
padding: 0.75rem;
|
padding: 0.75rem;
|
||||||
|
|||||||
Reference in New Issue
Block a user