wip: inline-template compat
This commit is contained in:
parent
1390ece04f
commit
3ea68691e2
@ -20,7 +20,9 @@ export const enum CompilerDeprecationTypes {
|
||||
COMPILER_V_BIND_OBJECT_ORDER = 'COMPILER_V_BIND_OBJECT_ORDER',
|
||||
COMPILER_V_ON_NATIVE = 'COMPILER_V_ON_NATIVE',
|
||||
COMPILER_V_IF_V_FOR_PRECEDENCE = 'COMPILER_V_IF_V_FOR_PRECEDENCE',
|
||||
COMPILER_NATIVE_TEMPLATE = 'COMPILER_NATIVE_TEMPLATE'
|
||||
COMPILER_NATIVE_TEMPLATE = 'COMPILER_NATIVE_TEMPLATE',
|
||||
COMPILER_INLINE_TEMPLATE = 'COMPILER_INLINE_TEMPLATE',
|
||||
COMPILER_FILTER = 'COMPILER_FILTER'
|
||||
}
|
||||
|
||||
type DeprecationData = {
|
||||
@ -80,6 +82,16 @@ const deprecationData: Record<CompilerDeprecationTypes, DeprecationData> = {
|
||||
message:
|
||||
`<template> with no special directives will render as a native template ` +
|
||||
`element instead of its inner content in Vue 3.`
|
||||
},
|
||||
|
||||
[CompilerDeprecationTypes.COMPILER_INLINE_TEMPLATE]: {
|
||||
message: `"inline-template" has been removed in Vue 3.`,
|
||||
link: `https://v3.vuejs.org/guide/migration/inline-template-attribute.html`
|
||||
},
|
||||
|
||||
[CompilerDeprecationTypes.COMPILER_FILTER]: {
|
||||
message: `filters have been removed in Vue 3.`,
|
||||
link: `https://v3.vuejs.org/guide/migration/filters.html`
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -406,6 +406,27 @@ function parseElement(
|
||||
const children = parseChildren(context, mode, ancestors)
|
||||
ancestors.pop()
|
||||
|
||||
// 2.x inline-template compat
|
||||
if (__COMPAT__) {
|
||||
const inlineTemplateProp = element.props.find(
|
||||
p => p.type === NodeTypes.ATTRIBUTE && p.name === 'inline-template'
|
||||
) as AttributeNode
|
||||
if (
|
||||
inlineTemplateProp &&
|
||||
checkCompatEnabled(
|
||||
CompilerDeprecationTypes.COMPILER_INLINE_TEMPLATE,
|
||||
context,
|
||||
inlineTemplateProp.loc
|
||||
)
|
||||
) {
|
||||
inlineTemplateProp.value!.content = getSelection(
|
||||
context,
|
||||
element.loc.end
|
||||
).source
|
||||
console.log(inlineTemplateProp)
|
||||
}
|
||||
}
|
||||
|
||||
element.children = children
|
||||
|
||||
// End tag.
|
||||
@ -516,7 +537,7 @@ function parseTag(
|
||||
return
|
||||
}
|
||||
|
||||
// warn v-if/v-for usage on the same element
|
||||
// 2.x deprecation checks
|
||||
if (__COMPAT__ && __DEV__ && !__TEST__) {
|
||||
let hasIf = false
|
||||
let hasFor = false
|
||||
|
@ -712,24 +712,31 @@ export function finishComponentSetup(
|
||||
NOOP) as InternalRenderFunction
|
||||
} else if (!instance.render) {
|
||||
// could be set from setup()
|
||||
if (compile && Component.template && !Component.render) {
|
||||
if (__DEV__) {
|
||||
startMeasure(instance, `compile`)
|
||||
}
|
||||
const compilerOptions: CompilerOptions = {
|
||||
isCustomElement: instance.appContext.config.isCustomElement,
|
||||
delimiters: Component.delimiters
|
||||
}
|
||||
if (__COMPAT__) {
|
||||
// pass runtime compat config into the compiler
|
||||
compilerOptions.compatConfig = Object.create(globalCompatConfig)
|
||||
if (Component.compatConfig) {
|
||||
extend(compilerOptions.compatConfig, Component.compatConfig)
|
||||
if (compile && !Component.render) {
|
||||
const template =
|
||||
(__COMPAT__ &&
|
||||
instance.vnode.props &&
|
||||
instance.vnode.props['inline-template']) ||
|
||||
Component.template
|
||||
if (template) {
|
||||
if (__DEV__) {
|
||||
startMeasure(instance, `compile`)
|
||||
}
|
||||
const compilerOptions: CompilerOptions = {
|
||||
isCustomElement: instance.appContext.config.isCustomElement,
|
||||
delimiters: Component.delimiters
|
||||
}
|
||||
if (__COMPAT__) {
|
||||
// pass runtime compat config into the compiler
|
||||
compilerOptions.compatConfig = Object.create(globalCompatConfig)
|
||||
if (Component.compatConfig) {
|
||||
extend(compilerOptions.compatConfig, Component.compatConfig)
|
||||
}
|
||||
}
|
||||
Component.render = compile(template, compilerOptions)
|
||||
if (__DEV__) {
|
||||
endMeasure(instance, `compile`)
|
||||
}
|
||||
}
|
||||
Component.render = compile(Component.template, compilerOptions)
|
||||
if (__DEV__) {
|
||||
endMeasure(instance, `compile`)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -297,12 +297,17 @@ function setFullProps(
|
||||
continue
|
||||
}
|
||||
|
||||
if (__COMPAT__ && key.startsWith('onHook:')) {
|
||||
softAssertCompatEnabled(
|
||||
DeprecationTypes.INSTANCE_EVENT_HOOKS,
|
||||
instance,
|
||||
key.slice(2).toLowerCase()
|
||||
)
|
||||
if (__COMPAT__) {
|
||||
if (key.startsWith('onHook:')) {
|
||||
softAssertCompatEnabled(
|
||||
DeprecationTypes.INSTANCE_EVENT_HOOKS,
|
||||
instance,
|
||||
key.slice(2).toLowerCase()
|
||||
)
|
||||
}
|
||||
if (key === 'inline-template') {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
const value = rawProps[key]
|
||||
|
Loading…
Reference in New Issue
Block a user