Prechádzať zdrojové kódy

fix(runtime-dom): patch `form` as an attribute (#1788)

Close #1787
Eduardo San Martin Morote 5 rokov pred
rodič
commit
00683fce9a

+ 8 - 0
packages/runtime-dom/__tests__/patchProps.spec.ts

@@ -121,4 +121,12 @@ describe('runtime-dom: props patching', () => {
     patchProp(el, 'id', null, '')
     expect(el.hasAttribute('id')).toBe(true)
   })
+
+  test('form attribute', () => {
+    const el = document.createElement('input')
+    patchProp(el, 'form', null, 'foo')
+    // non existant element
+    expect(el.form).toBe(null)
+    expect(el.getAttribute('form')).toBe('foo')
+  })
 })

+ 6 - 0
packages/runtime-dom/src/patchProp.ts

@@ -93,6 +93,12 @@ function shouldSetAsProp(
     return false
   }
 
+  // #1787 form as an attribute must be a string, while it accepts an Element as
+  // a prop
+  if (key === 'form' && typeof value === 'string') {
+    return false
+  }
+
   // #1526 <input list> must be set as attribute
   if (key === 'list' && el.tagName === 'INPUT') {
     return false