From 44d7f18428eeac4ce86eb9a75b85fd39e9fe82cc Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Tue, 5 Mar 2024 21:46:50 +0100 Subject: [PATCH] more recipe editor --- .../components/display/IngredientsTable.vue | 36 ++++++-- .../display/IngredientsTableRow.vue | 15 +++- vue3/src/components/inputs/StepEditor.vue | 84 +++++++++++++++++++ .../components/inputs/StepMarkdownEditor.vue | 22 +++-- vue3/src/pages/RecipeEditPage.vue | 8 +- 5 files changed, 148 insertions(+), 17 deletions(-) create mode 100644 vue3/src/components/inputs/StepEditor.vue diff --git a/vue3/src/components/display/IngredientsTable.vue b/vue3/src/components/display/IngredientsTable.vue index 9fb2eef8c..3220de888 100644 --- a/vue3/src/components/display/IngredientsTable.vue +++ b/vue3/src/components/display/IngredientsTable.vue @@ -1,8 +1,21 @@ @@ -10,18 +23,31 @@ import {defineComponent, PropType} from 'vue' import {Ingredient, Step} from "@/openapi"; import IngredientsTableRow from "@/components/display/IngredientsTableRow.vue"; +import draggable from 'vuedraggable' export default defineComponent({ name: "IngredientsTable", - components: {IngredientsTableRow}, + components: {IngredientsTableRow, draggable}, props: { ingredients: { type: Array as PropType>, default: [], }, + showNotes: { + type: Boolean, + default: true + }, + draggable: { + type: Boolean, + }, + }, + data() { + return { + mutable_ingredients: [] as Ingredient[] + } }, mounted() { - + this.mutable_ingredients = this.ingredients } }) diff --git a/vue3/src/components/display/IngredientsTableRow.vue b/vue3/src/components/display/IngredientsTableRow.vue index 8d1306885..d48dd4686 100644 --- a/vue3/src/components/display/IngredientsTableRow.vue +++ b/vue3/src/components/display/IngredientsTableRow.vue @@ -7,11 +7,14 @@ {{ ingredient.amount }} {{ ingredient.unit.name }} {{ ingredient.food.name }} - + {{ ingredient.note }} + + + @@ -23,11 +26,19 @@ import {Ingredient} from "@/openapi"; export default defineComponent({ name: "IngredientsTableRow", + components: {}, props: { ingredient: { type: {} as PropType, required: true - } + }, + showNotes: { + type: Boolean, + default: true + }, + draggable: { + type: Boolean, + }, }, data() { return { diff --git a/vue3/src/components/inputs/StepEditor.vue b/vue3/src/components/inputs/StepEditor.vue new file mode 100644 index 000000000..5dc29af69 --- /dev/null +++ b/vue3/src/components/inputs/StepEditor.vue @@ -0,0 +1,84 @@ + + + + + + \ No newline at end of file diff --git a/vue3/src/components/inputs/StepMarkdownEditor.vue b/vue3/src/components/inputs/StepMarkdownEditor.vue index 97170dddf..1abfa18b5 100644 --- a/vue3/src/components/inputs/StepMarkdownEditor.vue +++ b/vue3/src/components/inputs/StepMarkdownEditor.vue @@ -8,7 +8,7 @@ @@ -24,6 +24,16 @@ import 'mavon-editor/dist/css/index.css' export default defineComponent({ name: "StepMarkdownEditor", + emits: { + change(payload: { step: Step }) { + return payload + } + }, + watch: { + mutable_step: function (){ + this.$emit('change', {step: this.mutable_step}) + } + }, props: { step: {type: Object as PropType, required: true} }, @@ -38,22 +48,22 @@ export default defineComponent({ underline: true, strikethrough: true, mark: false, - superscript: true, - subscript: true, + superscript: false, + subscript: false, quote: true, ol: true, ul: true, link: true, imagelink: false, - code: true, + code: false, table: false, fullscreen: false, readmodel: false, htmlcode: false, - help: true, + help: false, undo: true, redo: true, - navigation: true, + navigation: false, alignleft: false, aligncenter: false, alignright: false, diff --git a/vue3/src/pages/RecipeEditPage.vue b/vue3/src/pages/RecipeEditPage.vue index 22132acf1..6bb4b9575 100644 --- a/vue3/src/pages/RecipeEditPage.vue +++ b/vue3/src/pages/RecipeEditPage.vue @@ -53,10 +53,9 @@ - - + - + @@ -73,11 +72,12 @@ import {defineComponent, PropType} from 'vue' import {ApiApi, Keyword, Recipe} from "@/openapi"; import StepMarkdownEditor from "@/components/inputs/StepMarkdownEditor.vue"; +import StepEditor from "@/components/inputs/StepEditor.vue"; export default defineComponent({ name: "RecipeEditPage", - components: {StepMarkdownEditor}, + components: {StepEditor, StepMarkdownEditor}, props: { recipe_id: {type: String, required: false}, },