diff --git a/frontend/src/components/tournament/TournamentGroupsTab.vue b/frontend/src/components/tournament/TournamentGroupsTab.vue
index 45cc1e92..c5f3cffd 100644
--- a/frontend/src/components/tournament/TournamentGroupsTab.vue
+++ b/frontend/src/components/tournament/TournamentGroupsTab.vue
@@ -20,11 +20,25 @@
@@ -43,7 +57,7 @@
type="number"
:value="groupsPerClassInput"
@input="$emit('update:groupsPerClassInput', normalizeNumberInput($event.target.value, { min: 0, allowEmpty: true }))"
- @keydown.enter.prevent="onGroupsPerClassBlur($event.target.value)"
+ @keydown.enter.prevent="$event.target.blur()"
min="0"
@blur="onGroupsPerClassBlur($event.target.value)"
class="class-group-input"
@@ -61,7 +75,7 @@
:value="numberOfGroups"
min="1"
@input="$emit('update:numberOfGroups', normalizeNumberInput($event.target.value, { min: 1, allowEmpty: true }))"
- @keydown.enter.prevent="onNumberOfGroupsBlur($event.target.value)"
+ @keydown.enter.prevent="$event.target.blur()"
@blur="onNumberOfGroupsBlur($event.target.value)"
/>
@@ -220,11 +234,11 @@ export default {
required: true
},
advancingPerGroup: {
- type: Number,
+ type: [Number, String],
required: true
},
maxGroupSize: {
- type: Number,
+ type: [Number, String],
default: null
},
groupsPerClassInput: {
@@ -328,6 +342,15 @@ export default {
this.$emit('update:numberOfGroups', normalized);
this.$emit('group-count-change');
},
+ onAdvancingPerGroupBlur(rawValue) {
+ const normalized = this.normalizeNumberInput(rawValue, { min: 1, allowEmpty: false });
+ this.$emit('update:advancingPerGroup', normalized);
+ this.$emit('modus-change');
+ },
+ onMaxGroupSizeBlur(rawValue) {
+ const normalized = this.normalizeNumberInput(rawValue, { min: 1, allowEmpty: false });
+ this.$emit('update:maxGroupSize', normalized);
+ },
groupRankingsForGroup(group) {
const key = `${group.groupId}-${group.classId ?? 'null'}`;
return this.groupRankings[key] || [];
diff --git a/frontend/src/views/TournamentTab.vue b/frontend/src/views/TournamentTab.vue
index a76467ea..79d666ee 100644
--- a/frontend/src/views/TournamentTab.vue
+++ b/frontend/src/views/TournamentTab.vue
@@ -206,7 +206,7 @@
:active-group-cells="activeGroupCells"
:matches="matches"
@update:selectedViewClass="selectedViewClass = $event"
- @update:advancingPerGroup="advancingPerGroup = $event; onModusChange()"
+ @update:advancingPerGroup="advancingPerGroup = $event"
@update:maxGroupSize="maxGroupSize = $event"
@update:groupsPerClassInput="groupsPerClassInput = $event"
@update:numberOfGroups="numberOfGroups = $event"