From 47fdd3878acd5344137b82615cf5bc97e708d76e Mon Sep 17 00:00:00 2001 From: Marvin Hagemeister Date: Mon, 8 May 2023 12:06:31 +0200 Subject: [PATCH 1/7] Fix rowspan and colspan not cleared --- src/diff/props.js | 2 ++ test/browser/render.test.js | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/diff/props.js b/src/diff/props.js index b0f2f9ee39..de0abc07c6 100644 --- a/src/diff/props.js +++ b/src/diff/props.js @@ -117,6 +117,8 @@ export function setProperty(dom, name, value, oldValue, isSvg) { // cast to `0` instead name !== 'tabIndex' && name !== 'download' && + name !== 'rowSpan' && + name !== 'colSpan' && name in dom ) { try { diff --git a/test/browser/render.test.js b/test/browser/render.test.js index a8d7e00cc7..dc04ca3011 100644 --- a/test/browser/render.test.js +++ b/test/browser/render.test.js @@ -414,6 +414,48 @@ describe('render()', () => { }); } + // Test for #3969 + it('should clear rowspan and colspan', () => { + let update; + class App extends Component { + constructor(props) { + super(props); + this.state = { active: true }; + update = this.setState.bind(this); + } + + render() { + return ( +
+ {this.state.active ? ( + + + + +
+ Foo +
+ ) : ( + + + + +
Foo
+ )} +
+ ); + } + } + + render(, scratch); + + update({ active: false }); + rerender(); + + expect(scratch.querySelector('td[rowspan]')).to.equal(null); + expect(scratch.querySelector('td[colspan]')).to.equal(null); + }); + // Test for preactjs/preact#651 it('should set enumerable boolean attribute', () => { render(, scratch); From 9966b2756ed816abaa48ac94e784f43e8c2b28a6 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Sun, 14 May 2023 12:23:56 +0200 Subject: [PATCH 2/7] 10.14.0 (#4000) --- devtools/src/devtools.js | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/devtools/src/devtools.js b/devtools/src/devtools.js index b7efe8666f..e44156cd16 100644 --- a/devtools/src/devtools.js +++ b/devtools/src/devtools.js @@ -2,7 +2,7 @@ import { options, Fragment, Component } from 'preact'; export function initDevTools() { if (typeof window != 'undefined' && window.__PREACT_DEVTOOLS__) { - window.__PREACT_DEVTOOLS__.attachPreact('10.13.2', options, { + window.__PREACT_DEVTOOLS__.attachPreact('10.14.0', options, { Fragment, Component }); diff --git a/package-lock.json b/package-lock.json index 5095e73b33..07e3c7da87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "preact", - "version": "10.13.2", + "version": "10.14.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "preact", - "version": "10.13.2", + "version": "10.14.0", "license": "MIT", "devDependencies": { "@actions/github": "^5.0.0", diff --git a/package.json b/package.json index dbcf45807a..ab9df60973 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "preact", "amdName": "preact", - "version": "10.13.2", + "version": "10.14.0", "private": false, "description": "Fast 3kb React-compatible Virtual DOM library.", "main": "dist/preact.js", From 21f9de8f62d337b42ce94419eb7887636f1e03b4 Mon Sep 17 00:00:00 2001 From: Alexander Zaytsev Date: Sun, 14 May 2023 13:33:50 +0300 Subject: [PATCH 3/7] Fix: SVG animateTransform type (#4001) Co-authored-by: Jovi De Croock --- src/jsx.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jsx.d.ts b/src/jsx.d.ts index 66503c285f..46ab9b6ac4 100644 --- a/src/jsx.d.ts +++ b/src/jsx.d.ts @@ -2097,7 +2097,7 @@ export namespace JSXInternal { animate: SVGAttributes; circle: SVGAttributes; animateMotion: SVGAttributes; - animateTransform: SVGAttributes; + animateTransform: SVGAttributes; clipPath: SVGAttributes; defs: SVGAttributes; desc: SVGAttributes; From 1451a0e5b5a80109c0c39bfdc8d00841a831d3ad Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Sun, 14 May 2023 13:45:43 +0200 Subject: [PATCH 4/7] upgarde coveralls for node v12 warning (#4002) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1fc38c8e6a..f4e4a9b3d0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: npm run lint npm run test:unit - name: Coveralls GitHub Action - uses: coverallsapp/github-action@1.1.3 + uses: coverallsapp/github-action@v2.1.2 with: github-token: ${{ secrets.GITHUB_TOKEN }} - name: Package From 8fe54014d0dd34587e3cee0d489ed85a862b58d9 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Mon, 15 May 2023 08:45:28 +0200 Subject: [PATCH 5/7] Allow for DocumentFragment in createPortal (#4003) --- compat/src/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compat/src/index.d.ts b/compat/src/index.d.ts index 02762292bf..8c1cb8d669 100644 --- a/compat/src/index.d.ts +++ b/compat/src/index.d.ts @@ -74,7 +74,7 @@ declare namespace React { export function createPortal( vnode: preact.VNode, - container: Element + container: Element | DocumentFragment ): preact.VNode; export function render( From bcf365be26dc658eb65e06072ffa8cb3295f60c1 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Tue, 16 May 2023 17:09:41 +0200 Subject: [PATCH 6/7] add delay by 1 microtick (#4005) --- compat/src/render.js | 4 ++-- compat/test/browser/controlledInput.test.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/compat/src/render.js b/compat/src/render.js index 74501172f5..457c7b8c91 100644 --- a/compat/src/render.js +++ b/compat/src/render.js @@ -118,10 +118,10 @@ options.event = e => { */ function afterEvent(eventType, target) { if (target.value != null) { - target.value = target._prevValue; + Promise.resolve().then(() => (target.value = target._prevValue)); } if (eventType === 'change' && target.checked != null) { - target.checked = target._prevValue; + Promise.resolve().then(() => (target.checked = target._prevValue)); } } diff --git a/compat/test/browser/controlledInput.test.js b/compat/test/browser/controlledInput.test.js index 9f14009412..b529db267f 100644 --- a/compat/test/browser/controlledInput.test.js +++ b/compat/test/browser/controlledInput.test.js @@ -168,7 +168,7 @@ describe('preact/compat controlled inputs', () => { render(, scratch); scratch.firstChild.value = 'A'; - fireEvent(scratch.firstChild, 'change'); + await fireEvent(scratch.firstChild, 'change'); expect(calls).to.deep.equal(['A']); expect(scratch.firstChild.value).to.equal('A'); @@ -208,6 +208,8 @@ describe('preact/compat controlled inputs', () => { scratch.firstChild.checked = false; await fireEvent(scratch.firstChild, 'change'); + // Have to wait for the microtick + await new Promise(res => setTimeout(res)); expect(calls).to.deep.equal([false]); expect(scratch.firstChild.checked).to.equal(true); }); From 19f417638ee3ef4af0844a652b3063cf9cea30fc Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Tue, 16 May 2023 17:18:42 +0200 Subject: [PATCH 7/7] 10.14.1 (#4006) --- devtools/src/devtools.js | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/devtools/src/devtools.js b/devtools/src/devtools.js index e44156cd16..5f61152334 100644 --- a/devtools/src/devtools.js +++ b/devtools/src/devtools.js @@ -2,7 +2,7 @@ import { options, Fragment, Component } from 'preact'; export function initDevTools() { if (typeof window != 'undefined' && window.__PREACT_DEVTOOLS__) { - window.__PREACT_DEVTOOLS__.attachPreact('10.14.0', options, { + window.__PREACT_DEVTOOLS__.attachPreact('10.14.1', options, { Fragment, Component }); diff --git a/package-lock.json b/package-lock.json index 07e3c7da87..82fea89825 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "preact", - "version": "10.14.0", + "version": "10.14.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "preact", - "version": "10.14.0", + "version": "10.14.1", "license": "MIT", "devDependencies": { "@actions/github": "^5.0.0", diff --git a/package.json b/package.json index ab9df60973..ad697cb303 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "preact", "amdName": "preact", - "version": "10.14.0", + "version": "10.14.1", "private": false, "description": "Fast 3kb React-compatible Virtual DOM library.", "main": "dist/preact.js",