diff --git a/frontend/src/components/CardEditor.jsx b/frontend/src/components/CardEditor.jsx
index 77c0c73..a8fdcf7 100644
--- a/frontend/src/components/CardEditor.jsx
+++ b/frontend/src/components/CardEditor.jsx
@@ -1,33 +1,44 @@
-export default function CardEditor({ index, level, handleLevelChange, handleRemoveLevel, totalLevels }) {
+export default function CardEditor({ index, level, handleLevelChange, handleRemoveLevel, totalLevels, error }) {
return (
-
+
+
+ {/* Botón para eliminar */}
+ {totalLevels > 2 && (
+
+ )}
+
+ {/* Detalles tipo naipe */}
+ {index + 1}
+ {index + 1}
+
+ handleLevelChange(index, e.target.value)}
+ className={`w-4/5 text-center text-2xl font-bold text-slate-700 bg-transparent border-b-2 border-dashed outline-none pb-1 ${
+ error ? 'border-red-300 focus:border-red-500 placeholder:text-red-200' : 'border-slate-300 focus:border-blue-500'
+ }`}
+ />
+
+
+ {/* Mensaje de error */}
+
+ {error && (
+
+ Escribe una etiqueta
+
+ )}
+
- {/* Botón Eliminar */}
- {totalLevels > 2 && (
-
- )}
-
- {/* Detalles tipo naipe */}
-
- {index + 1}
-
-
- {index + 1}
-
-
-
handleLevelChange(index, e.target.value)}
- className="w-4/5 text-center text-2xl font-bold text-slate-700 bg-transparent border-b-2 border-dashed border-slate-300 focus:border-blue-500 outline-none pb-1"
- />
);
}
\ No newline at end of file
diff --git a/frontend/src/components/CriterionInput.jsx b/frontend/src/components/CriterionInput.jsx
index 300c2de..bc15f39 100644
--- a/frontend/src/components/CriterionInput.jsx
+++ b/frontend/src/components/CriterionInput.jsx
@@ -1,4 +1,4 @@
-export default function CriterionInput({ criterionName, setCriterionName }) {
+export default function CriterionInput({ criterionName, setCriterionName, error }) {
return (
);
}
\ No newline at end of file
diff --git a/frontend/src/components/layout/MainLayout.jsx b/frontend/src/components/layout/MainLayout.jsx
index bd75055..73cbad7 100644
--- a/frontend/src/components/layout/MainLayout.jsx
+++ b/frontend/src/components/layout/MainLayout.jsx
@@ -22,7 +22,7 @@ export const MainLayout = () => {
}`
}
>
- DoC Clásico
+ DoC Básico
{
+
+ let hasError = false;
+ const newErrors = { criterion: false, levels: Array(levels.length).fill(false) };
+
+ if (!criterionName.trim()) {
+ newErrors.criterion = true;
+ hasError = true;
+ }
+
+ levels.forEach((level, idx) => {
+ if (!level.trim()) {
+ newErrors.levels[idx] = true;
+ hasError = true;
+ }
+ });
+
+ setErrors(newErrors);
+
+ if (hasError) return;
+
setIsLoading(true);
setResult(null);
- const firstIndex = "0";
- const lastIndex = (levels.length - 1).toString();
-
- const currentReferences = {
- [firstIndex]: 0,
- [lastIndex]: 1
- };
-
const payload = {
- criterion_name: criterionName || "Criterio sin nombre",
- levels: levels,
+ criterion_name: criterionName.trim(),
+ levels: levels.map(l => l.trim()),
blank_cards: blankCards,
- references: currentReferences
+ references: { "0": 0, [(levels.length - 1).toString()]: 1 }
};
try {
@@ -43,15 +57,27 @@ export default function BasicMode() {
}
};
+ const handleCriterionChange = (val) => {
+ setCriterionName(val);
+ if (errors.criterion) setErrors({ ...errors, criterion: false });
+ };
+
const handleLevelChange = (index, newValue) => {
const newLevels = [...levels];
newLevels[index] = newValue;
setLevels(newLevels);
+
+ if (errors.levels[index]) {
+ const newErrLevels = [...errors.levels];
+ newErrLevels[index] = false;
+ setErrors({ ...errors, levels: newErrLevels });
+ }
};
const handleAddLevel = () => {
setLevels([...levels, '']);
setBlankCards([...blankCards, 0]);
+ setErrors({ ...errors, levels: [...errors.levels, false] });
};
const handleRemoveLevel = (indexToRemove) => {
@@ -59,8 +85,12 @@ export default function BasicMode() {
const newLevels = levels.filter((_, index) => index !== indexToRemove);
const blankIndexToRemove = indexToRemove === 0 ? 0 : indexToRemove - 1;
const newBlankCards = blankCards.filter((_, index) => index !== blankIndexToRemove);
+
+ const newErrLevels = errors.levels.filter((_, index) => index !== indexToRemove);
+
setLevels(newLevels);
setBlankCards(newBlankCards);
+ setErrors({ ...errors, levels: newErrLevels });
};
const handleBlankCardChange = (index, delta) => {
@@ -74,10 +104,11 @@ export default function BasicMode() {
return (
-
+
@@ -90,6 +121,7 @@ export default function BasicMode() {
handleLevelChange={handleLevelChange}
handleRemoveLevel={handleRemoveLevel}
totalLevels={levels.length}
+ error={errors.levels[index]}
/>
{index < levels.length - 1 && (
@@ -107,18 +139,18 @@ export default function BasicMode() {
-);
+ );
}
\ No newline at end of file