diff --git a/backend/version.py b/backend/version.py index 7364ece..35133a5 100644 --- a/backend/version.py +++ b/backend/version.py @@ -1,6 +1,6 @@ # Shinkan Jinkendo Version Information -APP_VERSION = "0.8.123" +APP_VERSION = "0.8.124" BUILD_DATE = "2026-05-12" DB_SCHEMA_VERSION = "20260514062" @@ -36,6 +36,13 @@ MODULE_VERSIONS = { } CHANGELOG = [ + { + "version": "0.8.124", + "date": "2026-05-13", + "changes": [ + "Frontend Phase 3 (Teil): ExerciseListBulkToolbar-Komponente; Übungsliste nur Verdrahtung.", + ], + }, { "version": "0.8.123", "date": "2026-05-13", diff --git a/frontend/src/components/exercises/ExerciseListBulkToolbar.jsx b/frontend/src/components/exercises/ExerciseListBulkToolbar.jsx new file mode 100644 index 0000000..1e1ea18 --- /dev/null +++ b/frontend/src/components/exercises/ExerciseListBulkToolbar.jsx @@ -0,0 +1,27 @@ +import React from 'react' + +export default function ExerciseListBulkToolbar({ + selectedCount, + bulkMaxIds, + onClearSelection, + onOpenBulkModal, +}) { + if (selectedCount < 1) return null + + return ( +
+ {selectedCount} ausgewählt + + + + Bis zu {bulkMaxIds} pro Anfrage. Für „Verein“ ohne Auswahl: aktiver Vereinskontext ( + X-Active-Club-Id + ). + +
+ ) +} diff --git a/frontend/src/pages/ExercisesListPage.jsx b/frontend/src/pages/ExercisesListPage.jsx index 5e2473b..b6a8e88 100644 --- a/frontend/src/pages/ExercisesListPage.jsx +++ b/frontend/src/pages/ExercisesListPage.jsx @@ -8,6 +8,7 @@ import ExerciseListCard from '../components/exercises/ExerciseListCard' import ExerciseListFilterModal from '../components/exercises/ExerciseListFilterModal' import ExerciseListBulkModal from '../components/exercises/ExerciseListBulkModal' import ExerciseListSearchBar from '../components/exercises/ExerciseListSearchBar' +import ExerciseListBulkToolbar from '../components/exercises/ExerciseListBulkToolbar' import { buildExerciseListFilterChips } from '../utils/exerciseListFilterChips' import { applyDashboardExerciseListUrl, buildExerciseListQueryBase } from '../utils/exerciseListQuery' import { useExerciseListCatalogsAndQuery } from '../hooks/useExerciseListCatalogsAndQuery' @@ -474,22 +475,12 @@ function ExercisesListPage() { onToggleSelectAllPage={toggleSelectAllPage} /> - {selectedIds.size > 0 ? ( -
- {selectedIds.size} ausgewählt - - - - Bis zu {BULK_MAX_IDS} pro Anfrage. Für „Verein“ ohne Auswahl: aktiver Vereinskontext ( - X-Active-Club-Id - ). - -
- ) : null} +