[#487] fixed recurring event input glitch (#505)

This commit is contained in:
Camille Moussu
2026-02-05 11:10:20 +01:00
committed by GitHub
parent 1d6a597c46
commit b142eb4e03
2 changed files with 21 additions and 15 deletions
-2
View File
@@ -383,8 +383,6 @@ describe("Repeat Event Integration Tests", () => {
await expectRRule({ await expectRRule({
freq: "yearly", freq: "yearly",
interval: 1, interval: 1,
occurrences: 0,
endDate: "",
}); });
expect(mockOnClose).toHaveBeenCalledWith(true); expect(mockOnClose).toHaveBeenCalledWith(true);
}); });
+21 -13
View File
@@ -33,7 +33,7 @@ export default function RepeatEvent({
const day = new Date(eventStart); const day = new Date(eventStart);
// derive endOption based on repetition // derive endOption based on repetition
const getEndOption = () => { const getEndOption = () => {
if (repetition.occurrences && repetition.occurrences >= 0) return "after"; if (repetition.occurrences && repetition.occurrences > 0) return "after";
if (repetition.endDate) return "on"; if (repetition.endDate) return "on";
return "never"; return "never";
}; };
@@ -171,19 +171,26 @@ export default function RepeatEvent({
setEndOption(value); setEndOption(value);
if (value === "never") { if (value === "never") {
setRepetition({ ...repetition, occurrences: 0, endDate: "" }); setRepetition({
...repetition,
occurrences: null,
endDate: null,
});
} }
if (value === "after") { if (value === "after") {
setRepetition({ setRepetition({
...repetition, ...repetition,
occurrences: 0, occurrences:
endDate: "", repetition.occurrences && repetition.occurrences > 0
? repetition.occurrences
: 1,
endDate: null,
}); });
} }
if (value === "on") { if (value === "on") {
setRepetition({ setRepetition({
...repetition, ...repetition,
occurrences: 0, occurrences: null,
endDate: new Date().toISOString().slice(0, 16), endDate: new Date().toISOString().slice(0, 16),
}); });
} }
@@ -212,14 +219,15 @@ export default function RepeatEvent({
<TextField <TextField
type="number" type="number"
size="small" size="small"
value={repetition.occurrences ?? 0} value={repetition.occurrences ?? 1}
onChange={(e) => onChange={(e) => {
const value = Number(e.target.value);
setRepetition({ setRepetition({
...repetition, ...repetition,
endDate: "", endDate: null,
occurrences: Number(e.target.value), occurrences: value > 0 ? value : 1,
}) });
} }}
style={{ width: 100 }} style={{ width: 100 }}
inputProps={{ min: 1, "data-testid": "occurrences-input" }} inputProps={{ min: 1, "data-testid": "occurrences-input" }}
disabled={!isOwn || endOption !== "after"} disabled={!isOwn || endOption !== "after"}
@@ -248,11 +256,11 @@ export default function RepeatEvent({
onChange={(e) => onChange={(e) =>
setRepetition({ setRepetition({
...repetition, ...repetition,
occurrences: 0, occurrences: null,
endDate: e.target.value, endDate: e.target.value,
}) })
} }
disabled={endOption !== "on"} disabled={!isOwn || endOption !== "on"}
/> />
</Box> </Box>
} }