wip(compiler-dom): v-model runtime
This commit is contained in:
40
packages/runtime-dom/src/directives/vModel.ts
Normal file
40
packages/runtime-dom/src/directives/vModel.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { Directive } from '@vue/runtime-core'
|
||||
|
||||
// We are exporting the v-model runtime directly as vnode hooks so that it can
|
||||
// be tree-shaken in case v-model is never used.
|
||||
export const vModelText: Directive = {
|
||||
beforeMount(el, binding) {
|
||||
el.value = binding.value
|
||||
},
|
||||
mounted(el, binding, vnode) {},
|
||||
beforeUpdate(el, binding, vnode, prevVNode) {},
|
||||
updated(el, binding, vnode) {}
|
||||
}
|
||||
|
||||
export const vModelRadio: Directive = {
|
||||
beforeMount(el, binding, vnode) {},
|
||||
mounted(el, binding, vnode) {},
|
||||
beforeUpdate(el, binding, vnode, prevVNode) {},
|
||||
updated(el, binding, vnode) {}
|
||||
}
|
||||
|
||||
export const vModelCheckbox: Directive = {
|
||||
beforeMount(el, binding, vnode) {},
|
||||
mounted(el, binding, vnode) {},
|
||||
beforeUpdate(el, binding, vnode, prevVNode) {},
|
||||
updated(el, binding, vnode) {}
|
||||
}
|
||||
|
||||
export const vModelSelect: Directive = {
|
||||
beforeMount(el, binding, vnode) {},
|
||||
mounted(el, binding, vnode) {},
|
||||
beforeUpdate(el, binding, vnode, prevVNode) {},
|
||||
updated(el, binding, vnode) {}
|
||||
}
|
||||
|
||||
export const vModelDynamic: Directive = {
|
||||
beforeMount(el, binding, vnode) {},
|
||||
mounted(el, binding, vnode) {},
|
||||
beforeUpdate(el, binding, vnode, prevVNode) {},
|
||||
updated(el, binding, vnode) {}
|
||||
}
|
||||
@@ -9,10 +9,20 @@ const { render, createApp } = createRenderer<Node, Element>({
|
||||
|
||||
export { render, createApp }
|
||||
|
||||
// DOM-only runtime helpers
|
||||
export {
|
||||
vModelText,
|
||||
vModelCheckbox,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelDynamic
|
||||
} from './directives/vModel'
|
||||
|
||||
// re-export everything from core
|
||||
// h, Component, reactivity API, nextTick, flags & types
|
||||
export * from '@vue/runtime-core'
|
||||
|
||||
// Type augmentations
|
||||
export interface ComponentPublicInstance {
|
||||
$el: Element
|
||||
}
|
||||
|
||||
@@ -29,6 +29,10 @@ export function patchProp(
|
||||
case 'style':
|
||||
patchStyle(el, prevValue, nextValue)
|
||||
break
|
||||
case 'modelValue':
|
||||
case 'onUpdate:modelValue':
|
||||
// Do nothing. This is handled by v-model directives.
|
||||
break
|
||||
default:
|
||||
if (isOn(key)) {
|
||||
patchEvent(
|
||||
|
||||
Reference in New Issue
Block a user