diff --git a/frontend/package.json b/frontend/package.json index 93c6432bc5..30461984b7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -156,6 +156,12 @@ "ignoreKeysRegex": "^(global|entity|contentNode\\.[a-z][a-zA-Z]+|print\\.(global|activity|cover|picasso|program|story|toc))\\..+", "translationKeyPropRegex": "[a-zA-Z0-9]-i18n-key$" } + ], + "vue/no-mutating-props": [ + "error", + { + "shallowOnly": false + } ] }, "parserOptions": { diff --git a/frontend/src/components/buttons/ButtonContinue.vue b/frontend/src/components/buttons/ButtonContinue.vue new file mode 100644 index 0000000000..ad86e730bd --- /dev/null +++ b/frontend/src/components/buttons/ButtonContinue.vue @@ -0,0 +1,11 @@ + + + diff --git a/frontend/src/components/campCreate/CampCreate.vue b/frontend/src/components/campCreate/CampCreate.vue new file mode 100644 index 0000000000..64ca7ba151 --- /dev/null +++ b/frontend/src/components/campCreate/CampCreate.vue @@ -0,0 +1,95 @@ + + diff --git a/frontend/src/components/campCreate/CampCreateStep1.vue b/frontend/src/components/campCreate/CampCreateStep1.vue new file mode 100644 index 0000000000..10e4286d58 --- /dev/null +++ b/frontend/src/components/campCreate/CampCreateStep1.vue @@ -0,0 +1,95 @@ + + diff --git a/frontend/src/components/campCreate/CampCreateStep2.vue b/frontend/src/components/campCreate/CampCreateStep2.vue new file mode 100644 index 0000000000..59872b77a5 --- /dev/null +++ b/frontend/src/components/campCreate/CampCreateStep2.vue @@ -0,0 +1,189 @@ + + + + diff --git a/frontend/src/components/form/base/ESelect.vue b/frontend/src/components/form/base/ESelect.vue index 8669badaa3..2401319292 100644 --- a/frontend/src/components/form/base/ESelect.vue +++ b/frontend/src/components/form/base/ESelect.vue @@ -5,6 +5,7 @@ :name="name" :vid="veeId" :rules="veeRules" + :skip-if-empty="skipIfEmpty" :required="required" :immediate="immediateValidation" class="e-form-container" @@ -38,6 +39,7 @@ export default { mixins: [formComponentPropsMixin, formComponentMixin], props: { immediateValidation: { type: Boolean, default: false }, + skipIfEmpty: { type: Boolean, default: true }, }, } diff --git a/frontend/src/components/layout/ContentActions.vue b/frontend/src/components/layout/ContentActions.vue new file mode 100644 index 0000000000..628f58f75e --- /dev/null +++ b/frontend/src/components/layout/ContentActions.vue @@ -0,0 +1,13 @@ + + + diff --git a/frontend/src/locales/de.json b/frontend/src/locales/de.json index ec13094113..c0fcc1dcc2 100644 --- a/frontend/src/locales/de.json +++ b/frontend/src/locales/de.json @@ -132,6 +132,34 @@ "moveScheduleEntries": "Aktivitäten verschieben" } }, + "campCreate": { + "campCreate": { + "steps": { + "configurate": "Konfigurieren", + "infos": "Infos", + "template": "Vorlage" + } + }, + "campCreateStep1": { + "submitTooltip": "Bitte fülle alle Pflichtfelder aus." + }, + "campCreateStep2": { + "category": "Block-Kategorien", + "create": "Lager erstellen", + "noContent": "Keine Inhalte", + "noPrototype": "Keine Vorlage", + "noPrototypeAlert": { + "description": "Du musst alle Einstellungen manuell vornehmen. Es sind keine Blockvorlagen & Layouts vorhanden. Dies ist nur für erfahrene Nutzende geeignet.", + "title": "Achtung: Du hast \"Keine Vorlage\" ausgewählt." + }, + "preview": "Vorschau der Lagervorlage", + "progressStates": "Blockstatus", + "prototypeHint": "Kopiere Kategorien, Blockvorlagen und Blockstatus von einer Lagervorlage", + "prototypeHintEmpty": "Keine Kategorien, Blockvorlagen und Blockstatus aus einer Lagervorlage kopieren", + "prototypeHintSelected": "Kopiere Kategorien, Blockvorlagen und Blockstatus von dieser Lagervorlage", + "submitTooltipPrototype": "Du must noch auswählen ob und welche Lagervorlage du verwenden möchtest." + } + }, "collaborator": { "collaboratorCreate": { "invite": "Einladung verschicken", @@ -381,6 +409,7 @@ "cancel": "Abbrechen", "close": "Schliessen", "content": "Inhalt", + "continue": "Weiter", "create": "Erstellen", "delete": "Löschen", "discard": "Verwerfen", @@ -610,11 +639,6 @@ } }, "campCreate": { - "create": "Lager erstellen", - "period": { - "add": "Weiteren Lagerabschnitt hinzufügen", - "remove": "Diesen Lagerabschnitt entfernen" - }, "title": "Lager erstellen" }, "camps": { @@ -645,4 +669,4 @@ "profile": "Profil" } } -} +} \ No newline at end of file diff --git a/frontend/src/locales/en.json b/frontend/src/locales/en.json index c685492360..13aa5b0cb2 100644 --- a/frontend/src/locales/en.json +++ b/frontend/src/locales/en.json @@ -132,6 +132,34 @@ "moveScheduleEntries": "Move schedule entries" } }, + "campCreate": { + "campCreate": { + "steps": { + "configurate": "Configure", + "infos": "Info", + "template": "Template" + } + }, + "campCreateStep1": { + "submitTooltip": "Please fill out all required fields." + }, + "campCreateStep2": { + "category": "Activity categories", + "create": "Create the Camp", + "noContent": "No Content", + "noPrototype": "No template", + "noPrototypeAlert": { + "description": "You must make all settings manually. There are no block templates & layouts available. This is only suitable for experienced users.", + "title": "Attention: You chose \"No template\"." + }, + "preview": "Preview of camp template", + "progressStates": "Activity states", + "prototypeHint": "Copy categories, activity templates and states from a template.", + "prototypeHintEmpty": "Don't copy categories, activity templates and states.", + "prototypeHintSelected": "Copy categories, activity templates and states from this template.", + "submitTooltipPrototype": "You need to choose if and which template you want." + } + }, "collaborator": { "collaboratorCreate": { "invite": "Send invitation", @@ -381,6 +409,7 @@ "cancel": "Cancel", "close": "Close", "content": "Content", + "continue": "Continue", "create": "Create", "delete": "Delete", "discard": "Discard", @@ -610,11 +639,6 @@ } }, "campCreate": { - "create": "Create the Camp", - "period": { - "add": "Add a period", - "remove": "Remove period" - }, "title": "Create a Camp" }, "camps": { @@ -645,4 +669,4 @@ "profile": "Profile" } } -} +} \ No newline at end of file diff --git a/frontend/src/locales/fr.json b/frontend/src/locales/fr.json index 80b01dbb1a..c1d0cb6992 100644 --- a/frontend/src/locales/fr.json +++ b/frontend/src/locales/fr.json @@ -124,6 +124,34 @@ "moveScheduleEntries": "Déplacer les entrées du calendrier" } }, + "campCreate": { + "campCreate": { + "steps": { + "configurate": "Configuration", + "infos": "Info", + "template": "Modèle" + } + }, + "campCreateStep1": { + "submitTooltip": "Remplis tous les champs obligatoires." + }, + "campCreateStep2": { + "category": "Catégories d'activités", + "create": "Créer le camp", + "noContent": "Pas de contenu", + "noPrototype": "Pas de modèle", + "noPrototypeAlert": { + "description": "Tu dois effectuer tous les réglages manuellement. Il n'y a pas de modèles de blocs ni de mises en page. Ceci ne convient qu'aux utilisateurs expérimentés.", + "title": "Attention : Vous avez choisi \"Pas de modèle\"." + }, + "preview": "Aperçu du modèle du camp", + "progressStates": "États d'activités", + "prototypeHint": "Copie les catégories, les modèles de blocs et les états de blocs d'un modèle de camp.", + "prototypeHintEmpty": "Ne pas copier de catégories, de modèles de blocs et de statuts de blocs à partir d'un modèle de camp.", + "prototypeHintSelected": "Copie les catégories, les modèles de blocs et les statuts de blocs de ce modèle de camp.", + "submitTooltipPrototype": "Tu dois encore choisir si tu veux utiliser un modèle de champ et lequel." + } + }, "collaborator": { "collaboratorCreate": { "invite": "Envoyer l'invitation", @@ -364,6 +392,7 @@ "cancel": "Annuler", "close": "Fermer", "content": "Contenu", + "continue": "Continuer", "create": "Créer", "delete": "Effacer", "discard": "Rejeter", @@ -590,11 +619,6 @@ } }, "campCreate": { - "create": "Créer le camp", - "period": { - "add": "Ajouter une période", - "remove": "Effacer la période" - }, "title": "Créer un camp" }, "camps": { @@ -625,4 +649,4 @@ "profile": "Profil" } } -} +} \ No newline at end of file diff --git a/frontend/src/locales/it.json b/frontend/src/locales/it.json index 75d3ea7fcb..2fea368e44 100644 --- a/frontend/src/locales/it.json +++ b/frontend/src/locales/it.json @@ -124,6 +124,34 @@ "moveScheduleEntries": "Sposta le voci del programma" } }, + "campCreate": { + "campCreate": { + "steps": { + "configurate": "Configurazione", + "infos": "Info", + "template": "Modello" + } + }, + "campCreateStep1": { + "submitTooltip": "Compilare tutti i campi richiesti." + }, + "campCreateStep2": { + "category": "Categorie di attività", + "create": "Creare il campo", + "noContent": "Nessun contenuto", + "noPrototype": "Nessun modello", + "noPrototypeAlert": { + "description": "È necessario effettuare tutte le impostazioni manualmente. Non sono disponibili modelli e layout di blocco. È adatto solo agli utenti esperti.", + "title": "Nota bene: avete scelto \"Nessun modello\"." + }, + "preview": "Anteprima del modello di campo", + "progressStates": "Stati di attività", + "prototypeHint": "Copiare le categorie, i modelli di blocco e stati di blocchi da un modello di campo.", + "prototypeHintEmpty": "Non copiare categorie, modelli di blocco e stati di blocco da un modello di campo.", + "prototypeHintSelected": "Copiate le categorie, i modelli di blocco e stati di blocchi da questo modello di campo.", + "submitTooltipPrototype": "È ancora necessario selezionare se e quale modello di campo si desidera utilizzare." + } + }, "collaborator": { "collaboratorCreate": { "invite": "Inviare l'invito", @@ -364,6 +392,7 @@ "cancel": "Annullare", "close": "Chiudi", "content": "Contenuto", + "continue": "Continuare", "create": "Creare", "delete": "Cancellare", "discard": "Scartare", @@ -590,11 +619,6 @@ } }, "campCreate": { - "create": "Creare il campo", - "period": { - "add": "Aggiungere un periodo", - "remove": "Cancellare un periodo" - }, "title": "Creare il campo" }, "camps": { @@ -625,4 +649,4 @@ "profile": "Profilo" } } -} +} \ No newline at end of file diff --git a/frontend/src/scss/global.scss b/frontend/src/scss/global.scss index cdf92bcf98..152464e536 100644 --- a/frontend/src/scss/global.scss +++ b/frontend/src/scss/global.scss @@ -60,6 +60,10 @@ body { padding-left: 0; } + .min-h-0 { + min-height: 0; + } + .e-title-link { color: #000; text-decoration-color: #1976d2; diff --git a/frontend/src/views/CampCreate.vue b/frontend/src/views/CampCreate.vue index 98aaaf19c7..3dbf86680c 100644 --- a/frontend/src/views/CampCreate.vue +++ b/frontend/src/views/CampCreate.vue @@ -1,141 +1,20 @@ - -