diff --git a/frontend/src/app.css b/frontend/src/app.css index afabd4e..958b06a 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -2475,6 +2475,20 @@ html.modal-scroll-locked .app-main { } } +/* Rahmenprogramm-Editor (Vollseiten-Formular mit Action-Dock) */ +.page-form-editor__body .framework-edit { + min-width: 0; +} +.framework-edit__danger-zone { + margin-top: 1.25rem; + padding-top: 1rem; + border-top: 1px solid var(--border); +} +.framework-edit__delete-btn:hover { + border-color: var(--danger); + color: var(--danger); +} + /* Rahmenprogramm-Editor: Kurz-Einstieg ausklappbar */ .framework-edit-intro { margin-bottom: 1rem; diff --git a/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx b/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx index 19a2a13..6f10322 100644 --- a/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx +++ b/frontend/src/pages/TrainingFrameworkProgramEditPage.jsx @@ -5,7 +5,7 @@ import ExercisePickerModal from '../components/ExercisePickerModal' import ExercisePeekModal from '../components/ExercisePeekModal' import TrainingUnitSectionsEditor from '../components/TrainingUnitSectionsEditor' import PageSectionNav from '../components/PageSectionNav' -import FormActionBar from '../components/FormActionBar' +import PageFormEditorChrome from '../components/PageFormEditorChrome' import { useToast } from '../context/ToastContext' import { useNavReturn } from '../hooks/useNavReturn' import { @@ -498,6 +498,22 @@ export default function TrainingFrameworkProgramEditPage() { await performFrameworkSave({ fromUnsavedDialog: false, closeAfter: true }) } + const actionConfig = useMemo( + () => ({ + saving, + isNew, + onSave: handleSave, + onSaveAndClose: handleSaveAndClose, + onCancel: goBack, + showSave: true, + showSaveAndClose: true, + cancelLabel: 'Abbrechen', + }), + [saving, isNew, goBack, handleSave, handleSaveAndClose] + ) + + const pageTitle = isNew ? 'Neues Rahmenprogramm' : 'Rahmenprogramm bearbeiten' + const handleUnsavedDialogSave = async () => { const ok = await performFrameworkSave({ fromUnsavedDialog: true }) if (ok) blocker.proceed() @@ -893,10 +909,12 @@ export default function TrainingFrameworkProgramEditPage() { } return ( -
+
-

{isNew ? 'Neues Rahmenprogramm' : 'Rahmenprogramm bearbeiten'}

-
Kurz erklärt: Was ist ein Rahmenprogramm? @@ -1063,6 +1081,14 @@ export default function TrainingFrameworkProgramEditPage() {
+ + {!isNew ? ( +
+ +
+ ) : null}
- - - {!isNew ? ( - - ) : null} setBypassDirty(true)} /> - + ) }