Meal Planner Item Context Menu

This commit is contained in:
Kuchenpirat 2025-07-29 22:58:38 +00:00
commit b2e04e9cb6

View file

@ -18,7 +18,7 @@
:open-on-hover="mdAndUp" :open-on-hover="mdAndUp"
content-class="d-print-none" content-class="d-print-none"
> >
<template #activator="{ props }"> <template #activator="{ props: activatorProps }">
<v-btn <v-btn
:class="{ 'rounded-circle': fab }" :class="{ 'rounded-circle': fab }"
:size="fab ? 'small' : undefined" :size="fab ? 'small' : undefined"
@ -26,7 +26,7 @@
:icon="!fab" :icon="!fab"
variant="text" variant="text"
dark dark
v-bind="props" v-bind="activatorProps"
@click.prevent @click.prevent
> >
<v-icon>{{ icon }}</v-icon> <v-icon>{{ icon }}</v-icon>
@ -50,7 +50,7 @@
</div> </div>
</template> </template>
<script lang="ts"> <script setup lang="ts">
import type { Recipe } from "~/lib/api/types/recipe"; import type { Recipe } from "~/lib/api/types/recipe";
import RecipeDialogAddToShoppingList from "~/components/Domain/Recipe/RecipeDialogAddToShoppingList.vue"; import RecipeDialogAddToShoppingList from "~/components/Domain/Recipe/RecipeDialogAddToShoppingList.vue";
import type { ShoppingListSummary } from "~/lib/api/types/household"; import type { ShoppingListSummary } from "~/lib/api/types/household";
@ -64,33 +64,25 @@ export interface ContextMenuItem {
isPublic: boolean; isPublic: boolean;
} }
export default defineNuxtComponent({ interface Props {
components: { recipes?: Recipe[];
RecipeDialogAddToShoppingList, menuTop?: boolean;
}, fab?: boolean;
props: { color?: string;
recipes: { menuIcon?: string | null;
type: Array as () => Recipe[], }
default: () => [], const props = withDefaults(defineProps<Props>(), {
}, recipes: () => [],
menuTop: { menuTop: true,
type: Boolean, fab: false,
default: true, color: "primary",
}, menuIcon: null,
fab: { });
type: Boolean,
default: false, const emit = defineEmits<{
}, [key: string]: [];
color: { }>();
type: String,
default: "primary",
},
menuIcon: {
type: String,
default: null,
},
},
setup(props, context) {
const { mdAndUp } = useDisplay(); const { mdAndUp } = useDisplay();
const i18n = useI18n(); const i18n = useI18n();
@ -111,6 +103,8 @@ export default defineNuxtComponent({
], ],
}); });
const { shoppingListDialog, menuItems } = toRefs(state);
const icon = props.menuIcon || $globals.icons.dotsVertical; const icon = props.menuIcon || $globals.icons.dotsVertical;
const shoppingLists = ref<ShoppingListSummary[]>(); const shoppingLists = ref<ShoppingListSummary[]>();
@ -147,18 +141,7 @@ export default defineNuxtComponent({
return; return;
} }
context.emit(eventKey); emit(eventKey);
state.loading = false; state.loading = false;
} }
return {
...toRefs(state),
contextMenuEventHandler,
icon,
recipesWithScales,
shoppingLists,
mdAndUp,
};
},
});
</script> </script>