|
|
@@ -3,13 +3,7 @@ import { patchStyle } from './modules/style'
|
|
|
import { patchAttr } from './modules/attrs'
|
|
|
import { patchDOMProp } from './modules/props'
|
|
|
import { patchEvent } from './modules/events'
|
|
|
-import {
|
|
|
- isOn,
|
|
|
- isString,
|
|
|
- isFunction,
|
|
|
- isModelListener,
|
|
|
- isFormTag
|
|
|
-} from '@vue/shared'
|
|
|
+import { isOn, isString, isFunction, isModelListener } from '@vue/shared'
|
|
|
import { RendererOptions } from '@vue/runtime-core'
|
|
|
|
|
|
const nativeOnRE = /^on[a-z]/
|
|
|
@@ -99,9 +93,9 @@ function shouldSetAsProp(
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
- // #1787, #2840 the form property is readonly and can only be set as an
|
|
|
- // attribute using a string value
|
|
|
- if (key === 'form' && isFormTag(el.tagName)) {
|
|
|
+ // #1787, #2840 form property on form elements is readonly and must be set as
|
|
|
+ // attribute.
|
|
|
+ if (key === 'form') {
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
@@ -110,13 +104,13 @@ function shouldSetAsProp(
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
- // native onclick with string value, must be set as attribute
|
|
|
- if (nativeOnRE.test(key) && isString(value)) {
|
|
|
+ // #2766 <textarea type> must be set as attribute
|
|
|
+ if (key === 'type' && el.tagName === 'TEXTAREA') {
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
- // DOMprop "type" is readonly on textarea elements: https://github.com/vuejs/vue-next/issues/2766
|
|
|
- if (key === 'type' && el.tagName === 'TEXTAREA') {
|
|
|
+ // native onclick with string value, must be set as attribute
|
|
|
+ if (nativeOnRE.test(key) && isString(value)) {
|
|
|
return false
|
|
|
}
|
|
|
|