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]/
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
}
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
}
const VOID_TAGS =
'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr'
-const FORM_TAGS =
- 'button,datalist,fieldset,input,keygen,label,legend,meter,optgroup,option,' +
- 'output,progress,select,textarea'
-
export const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS)
export const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS)
export const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS)
-export const isFormTag = /*#__PURE__*/ makeMap(FORM_TAGS, true)