mirror of
https://github.com/ArthurDanjou/ui.git
synced 2026-01-14 12:14:41 +01:00
fix(vue): missing unhead context (#3589)
Co-authored-by: Benjamin Canac <canacb1@gmail.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import { computed } from 'vue'
|
|||||||
import { defineNuxtPlugin, useAppConfig, useNuxtApp, useHead } from '#imports'
|
import { defineNuxtPlugin, useAppConfig, useNuxtApp, useHead } from '#imports'
|
||||||
// FIXME: https://github.com/nuxt/module-builder/issues/141#issuecomment-2078248248
|
// FIXME: https://github.com/nuxt/module-builder/issues/141#issuecomment-2078248248
|
||||||
import type {} from '#app'
|
import type {} from '#app'
|
||||||
|
import type { UseHeadInput } from '@unhead/vue/types'
|
||||||
|
|
||||||
export default defineNuxtPlugin(() => {
|
export default defineNuxtPlugin(() => {
|
||||||
const appConfig = useAppConfig()
|
const appConfig = useAppConfig()
|
||||||
@@ -33,12 +34,11 @@ export default defineNuxtPlugin(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// Head
|
// Head
|
||||||
const headData: any = {
|
const headData: UseHeadInput = {
|
||||||
style: [{
|
style: [{
|
||||||
innerHTML: () => root.value,
|
innerHTML: () => root.value,
|
||||||
tagPriority: -2,
|
tagPriority: 'critical',
|
||||||
id: 'nuxt-ui-colors',
|
id: 'nuxt-ui-colors'
|
||||||
type: 'text/css'
|
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,7 +55,5 @@ export default defineNuxtPlugin(() => {
|
|||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!nuxtApp.isVue) {
|
useHead(headData)
|
||||||
useHead(headData)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ import type { Plugin } from 'vue'
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
install(app) {
|
install(app) {
|
||||||
|
// check for existing head instance to avoid replacement
|
||||||
|
// bit hacky but we can't use injectHead() here
|
||||||
|
if (app._context.provides.usehead) {
|
||||||
|
return
|
||||||
|
}
|
||||||
const head = createHead()
|
const head = createHead()
|
||||||
app.use(head)
|
app.use(head)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ export const useState = <T>(key: string, init: () => T): Ref<T> => {
|
|||||||
export function useNuxtApp() {
|
export function useNuxtApp() {
|
||||||
return {
|
return {
|
||||||
isHydrating: true,
|
isHydrating: true,
|
||||||
isVue: true,
|
|
||||||
payload: { serverRendered: false }
|
payload: { serverRendered: false }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,7 +68,7 @@ export function useNuxtApp() {
|
|||||||
export function defineNuxtPlugin(plugin: (nuxtApp: NuxtApp) => void) {
|
export function defineNuxtPlugin(plugin: (nuxtApp: NuxtApp) => void) {
|
||||||
return {
|
return {
|
||||||
install(app) {
|
install(app) {
|
||||||
plugin({ vueApp: app } as NuxtApp)
|
app.runWithContext(() => plugin({ vueApp: app } as NuxtApp))
|
||||||
}
|
}
|
||||||
} satisfies VuePlugin
|
} satisfies VuePlugin
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user