mirror of
				https://github.com/mealie-recipes/mealie.git
				synced 2025-11-04 03:03:18 -05:00 
			
		
		
		
	
		
			
	
	
		
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
		
		
			
		
	
	
			73 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| 
								 | 
							
								<template>
							 | 
						||
| 
								 | 
							
								  <v-container
							 | 
						||
| 
								 | 
							
								    fluid
							 | 
						||
| 
								 | 
							
								    class="px-0"
							 | 
						||
| 
								 | 
							
								  >
							 | 
						||
| 
								 | 
							
								    <RecipeExplorerPageSearch
							 | 
						||
| 
								 | 
							
								      ref="searchComponent"
							 | 
						||
| 
								 | 
							
								      @ready="onSearchReady"
							 | 
						||
| 
								 | 
							
								    />
							 | 
						||
| 
								 | 
							
								    <v-divider />
							 | 
						||
| 
								 | 
							
								    <v-container class="mt-6 px-md-6">
							 | 
						||
| 
								 | 
							
								      <RecipeCardSection
							 | 
						||
| 
								 | 
							
								        v-if="ready"
							 | 
						||
| 
								 | 
							
								        class="mt-n5"
							 | 
						||
| 
								 | 
							
								        :icon="$globals.icons.silverwareForkKnife"
							 | 
						||
| 
								 | 
							
								        :title="$t('general.recipes')"
							 | 
						||
| 
								 | 
							
								        :recipes="recipes"
							 | 
						||
| 
								 | 
							
								        :query="searchQuery"
							 | 
						||
| 
								 | 
							
								        disable-sort
							 | 
						||
| 
								 | 
							
								        @item-selected="onItemSelected"
							 | 
						||
| 
								 | 
							
								        @replace-recipes="replaceRecipes"
							 | 
						||
| 
								 | 
							
								        @append-recipes="appendRecipes"
							 | 
						||
| 
								 | 
							
								      />
							 | 
						||
| 
								 | 
							
								    </v-container>
							 | 
						||
| 
								 | 
							
								  </v-container>
							 | 
						||
| 
								 | 
							
								</template>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<script lang="ts">
							 | 
						||
| 
								 | 
							
								import RecipeExplorerPageSearch from "./RecipeExplorerPageParts/RecipeExplorerPageSearch.vue";
							 | 
						||
| 
								 | 
							
								import { useLoggedInState } from "~/composables/use-logged-in-state";
							 | 
						||
| 
								 | 
							
								import RecipeCardSection from "~/components/Domain/Recipe/RecipeCardSection.vue";
							 | 
						||
| 
								 | 
							
								import { useLazyRecipes } from "~/composables/recipes";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export default defineNuxtComponent({
							 | 
						||
| 
								 | 
							
								  components: { RecipeCardSection, RecipeExplorerPageSearch },
							 | 
						||
| 
								 | 
							
								  setup() {
							 | 
						||
| 
								 | 
							
								    const $auth = useMealieAuth();
							 | 
						||
| 
								 | 
							
								    const route = useRoute();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const { isOwnGroup } = useLoggedInState();
							 | 
						||
| 
								 | 
							
								    const groupSlug = computed(() => route.params.groupSlug as string || $auth.user.value?.groupSlug || "");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const { recipes, appendRecipes, replaceRecipes } = useLazyRecipes(isOwnGroup.value ? null : groupSlug.value);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const ready = ref(false);
							 | 
						||
| 
								 | 
							
								    const searchComponent = ref<InstanceType<typeof RecipeExplorerPageSearch>>();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    const searchQuery = computed(() => {
							 | 
						||
| 
								 | 
							
								      return searchComponent.value?.passedQueryWithSeed || {};
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function onSearchReady() {
							 | 
						||
| 
								 | 
							
								      ready.value = true;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    function onItemSelected(item: any, urlPrefix: string) {
							 | 
						||
| 
								 | 
							
								      searchComponent.value?.filterItems(item, urlPrefix);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return {
							 | 
						||
| 
								 | 
							
								      ready,
							 | 
						||
| 
								 | 
							
								      searchComponent,
							 | 
						||
| 
								 | 
							
								      searchQuery,
							 | 
						||
| 
								 | 
							
								      recipes,
							 | 
						||
| 
								 | 
							
								      appendRecipes,
							 | 
						||
| 
								 | 
							
								      replaceRecipes,
							 | 
						||
| 
								 | 
							
								      onSearchReady,
							 | 
						||
| 
								 | 
							
								      onItemSelected,
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								</script>
							 |