[#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({
freq: "yearly",
interval: 1,
occurrences: 0,
endDate: "",
});
expect(mockOnClose).toHaveBeenCalledWith(true);
});
+21 -13
View File
@@ -33,7 +33,7 @@ export default function RepeatEvent({
const day = new Date(eventStart);
// derive endOption based on repetition
const getEndOption = () => {
if (repetition.occurrences && repetition.occurrences >= 0) return "after";
if (repetition.occurrences && repetition.occurrences > 0) return "after";
if (repetition.endDate) return "on";
return "never";
};
@@ -171,19 +171,26 @@ export default function RepeatEvent({
setEndOption(value);
if (value === "never") {
setRepetition({ ...repetition, occurrences: 0, endDate: "" });
setRepetition({
...repetition,
occurrences: null,
endDate: null,
});
}
if (value === "after") {
setRepetition({
...repetition,
occurrences: 0,
endDate: "",
occurrences:
repetition.occurrences && repetition.occurrences > 0
? repetition.occurrences
: 1,
endDate: null,
});
}
if (value === "on") {
setRepetition({
...repetition,
occurrences: 0,
occurrences: null,
endDate: new Date().toISOString().slice(0, 16),
});
}
@@ -212,14 +219,15 @@ export default function RepeatEvent({
<TextField
type="number"
size="small"
value={repetition.occurrences ?? 0}
onChange={(e) =>
value={repetition.occurrences ?? 1}
onChange={(e) => {
const value = Number(e.target.value);
setRepetition({
...repetition,
endDate: "",
occurrences: Number(e.target.value),
})
}
endDate: null,
occurrences: value > 0 ? value : 1,
});
}}
style={{ width: 100 }}
inputProps={{ min: 1, "data-testid": "occurrences-input" }}
disabled={!isOwn || endOption !== "after"}
@@ -248,11 +256,11 @@ export default function RepeatEvent({
onChange={(e) =>
setRepetition({
...repetition,
occurrences: 0,
occurrences: null,
endDate: e.target.value,
})
}
disabled={endOption !== "on"}
disabled={!isOwn || endOption !== "on"}
/>
</Box>
}