generated from pascalmartineau/wp-skeleton
15 lines
656 B
TypeScript
15 lines
656 B
TypeScript
import type { MenuLocationEnum } from "#graphql-operations";
|
|
import type { NavigationMenuItem } from "@nuxt/ui";
|
|
|
|
export async function useMenuItems(location: MenuLocationEnum) {
|
|
const { data } = await useAsyncGraphqlQuery("menuItems", { location }, { graphqlCaching: { client: true } });
|
|
if (data.value?.errors?.length) {
|
|
throw createError({ statusCode: 500, message: "Erreur lors de la récupération des éléments de menu" });
|
|
}
|
|
const menuItems: NavigationMenuItem[] = (data.value?.data.menuItems?.nodes || []).map(({ childItems, ...menuItem }) => ({
|
|
...menuItem,
|
|
children: childItems?.nodes || [],
|
|
}));
|
|
return { menuItems };
|
|
}
|