mirror of
https://github.com/hay-kot/mealie.git
synced 2025-08-21 22:13:31 -07:00
Recipe Action Menu
This commit is contained in:
parent
6dfa186a41
commit
ba9e36a314
1 changed files with 71 additions and 99 deletions
|
@ -18,7 +18,7 @@
|
||||||
<RecipeTimelineBadge v-if="loggedIn" class="ml-1" color="info" button-style :slug="recipe.slug" :recipe-name="recipe.name!" />
|
<RecipeTimelineBadge v-if="loggedIn" class="ml-1" color="info" button-style :slug="recipe.slug" :recipe-name="recipe.name!" />
|
||||||
<div v-if="loggedIn">
|
<div v-if="loggedIn">
|
||||||
<v-tooltip v-if="canEdit" location="bottom" color="info">
|
<v-tooltip v-if="canEdit" location="bottom" color="info">
|
||||||
<template #activator="{ props }">
|
<template #activator="{ props: tooltipProps }">
|
||||||
<v-btn
|
<v-btn
|
||||||
icon
|
icon
|
||||||
variant="flat"
|
variant="flat"
|
||||||
|
@ -26,7 +26,7 @@
|
||||||
size="small"
|
size="small"
|
||||||
color="info"
|
color="info"
|
||||||
class="ml-1"
|
class="ml-1"
|
||||||
v-bind="props"
|
v-bind="tooltipProps"
|
||||||
@click="$emit('edit', true)"
|
@click="$emit('edit', true)"
|
||||||
>
|
>
|
||||||
<v-icon size="x-large">
|
<v-icon size="x-large">
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
</v-toolbar>
|
</v-toolbar>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script setup lang="ts">
|
||||||
import RecipeContextMenu from "./RecipeContextMenu.vue";
|
import RecipeContextMenu from "./RecipeContextMenu.vue";
|
||||||
import RecipeFavoriteBadge from "./RecipeFavoriteBadge.vue";
|
import RecipeFavoriteBadge from "./RecipeFavoriteBadge.vue";
|
||||||
import RecipeTimelineBadge from "./RecipeTimelineBadge.vue";
|
import RecipeTimelineBadge from "./RecipeTimelineBadge.vue";
|
||||||
|
@ -97,49 +97,30 @@ const DELETE_EVENT = "delete";
|
||||||
const CLOSE_EVENT = "close";
|
const CLOSE_EVENT = "close";
|
||||||
const JSON_EVENT = "json";
|
const JSON_EVENT = "json";
|
||||||
|
|
||||||
export default defineNuxtComponent({
|
interface Props {
|
||||||
components: { RecipeContextMenu, RecipeFavoriteBadge, RecipeTimelineBadge },
|
recipe: Recipe;
|
||||||
props: {
|
slug: string;
|
||||||
recipe: {
|
recipeScale?: number;
|
||||||
required: true,
|
open: boolean;
|
||||||
type: Object as () => Recipe,
|
name: string;
|
||||||
},
|
loggedIn?: boolean;
|
||||||
slug: {
|
recipeId: string;
|
||||||
required: true,
|
canEdit?: boolean;
|
||||||
type: String,
|
}
|
||||||
},
|
withDefaults(defineProps<Props>(), {
|
||||||
recipeScale: {
|
recipeScale: 1,
|
||||||
type: Number,
|
loggedIn: false,
|
||||||
default: 1,
|
canEdit: false,
|
||||||
},
|
});
|
||||||
open: {
|
|
||||||
required: true,
|
|
||||||
type: Boolean,
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
required: true,
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
loggedIn: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
recipeId: {
|
|
||||||
required: true,
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
canEdit: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
emits: ["print", "input", "delete", "close", "edit"],
|
|
||||||
setup(_, context) {
|
|
||||||
const deleteDialog = ref(false);
|
|
||||||
|
|
||||||
const i18n = useI18n();
|
const emit = defineEmits(["print", "input", "delete", "close", "edit"]);
|
||||||
const { $globals } = useNuxtApp();
|
|
||||||
const editorButtons = [
|
const deleteDialog = ref(false);
|
||||||
|
|
||||||
|
const i18n = useI18n();
|
||||||
|
const { $globals } = useNuxtApp();
|
||||||
|
|
||||||
|
const editorButtons = [
|
||||||
{
|
{
|
||||||
text: i18n.t("general.delete"),
|
text: i18n.t("general.delete"),
|
||||||
icon: $globals.icons.delete,
|
icon: $globals.icons.delete,
|
||||||
|
@ -164,36 +145,27 @@ export default defineNuxtComponent({
|
||||||
event: SAVE_EVENT,
|
event: SAVE_EVENT,
|
||||||
color: "success",
|
color: "success",
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
function emitHandler(event: string) {
|
function emitHandler(event: string) {
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case CLOSE_EVENT:
|
case CLOSE_EVENT:
|
||||||
context.emit(CLOSE_EVENT);
|
emit("close");
|
||||||
context.emit("input", false);
|
emit("input", false);
|
||||||
break;
|
break;
|
||||||
case DELETE_EVENT:
|
case DELETE_EVENT:
|
||||||
deleteDialog.value = true;
|
deleteDialog.value = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
context.emit(event);
|
emit(event as any);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function emitDelete() {
|
function emitDelete() {
|
||||||
context.emit(DELETE_EVENT);
|
emit("delete");
|
||||||
context.emit("input", false);
|
emit("input", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
|
||||||
deleteDialog,
|
|
||||||
editorButtons,
|
|
||||||
emitHandler,
|
|
||||||
emitDelete,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue