From e71b61a0cfb75c378a67651cdab8f12d5a584371 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Jan 2025 19:38:33 +0000 Subject: [PATCH 1/7] Bump glob from 11.0.0 to 11.0.1 in the normal group Bumps the normal group with 1 update: [glob](https://github.com/isaacs/node-glob). Updates `glob` from 11.0.0 to 11.0.1 - [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md) - [Commits](https://github.com/isaacs/node-glob/compare/v11.0.0...v11.0.1) --- updated-dependencies: - dependency-name: glob dependency-type: direct:development update-type: version-update:semver-patch dependency-group: normal ... Signed-off-by: dependabot[bot] --- package-lock.json | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 48d233dff..5f093a3bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1159,11 +1159,10 @@ "dev": true }, "node_modules/glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, - "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^4.0.1", @@ -3374,9 +3373,9 @@ "dev": true }, "glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", "dev": true, "requires": { "foreground-child": "^3.1.0", From aa3f1b50bf373add4303cb2f30996c47409202d3 Mon Sep 17 00:00:00 2001 From: Kevin Cameron Date: Mon, 22 Oct 2018 18:19:40 -0700 Subject: [PATCH 2/7] Remove vnode.dom === .activeElement from setAttr() --- render/render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/render/render.js b/render/render.js index 6ecb38ee5..f5c84c725 100644 --- a/render/render.js +++ b/render/render.js @@ -687,7 +687,7 @@ module.exports = function() { var isFileInput = vnode.tag === "input" && vnode.attrs.type === "file" //setting input[value] to same value by typing on focused element moves cursor to end in Chrome //setting input[type=file][value] to same value causes an error to be generated if it's non-empty - if ((vnode.tag === "input" || vnode.tag === "textarea") && vnode.dom.value === "" + value && (isFileInput || vnode.dom === activeElement(vnode.dom))) return + if ((vnode.tag === "input" || vnode.tag === "textarea") && vnode.dom.value === "" + value) return //setting select[value] to same value while having select open blinks select dropdown in Chrome if (vnode.tag === "select" && old !== null && vnode.dom.value === "" + value) return //setting option[value] to same value while having select open blinks select dropdown in Chrome From 481a318c7e6442d9177ac71fd9fcdc593c9effbe Mon Sep 17 00:00:00 2001 From: kfule Date: Wed, 22 Jan 2025 18:26:34 +0900 Subject: [PATCH 3/7] add comment --- render/render.js | 1 + 1 file changed, 1 insertion(+) diff --git a/render/render.js b/render/render.js index f5c84c725..b1ce6cdb3 100644 --- a/render/render.js +++ b/render/render.js @@ -687,6 +687,7 @@ module.exports = function() { var isFileInput = vnode.tag === "input" && vnode.attrs.type === "file" //setting input[value] to same value by typing on focused element moves cursor to end in Chrome //setting input[type=file][value] to same value causes an error to be generated if it's non-empty + //setting input[value] to same value sometimes causes checkValidity() to return true when form fields are invalid(#2256) if ((vnode.tag === "input" || vnode.tag === "textarea") && vnode.dom.value === "" + value) return //setting select[value] to same value while having select open blinks select dropdown in Chrome if (vnode.tag === "select" && old !== null && vnode.dom.value === "" + value) return From e886388df68290f5eb21bd0ba7e7f97d054141fb Mon Sep 17 00:00:00 2001 From: kfule Date: Wed, 22 Jan 2025 18:27:30 +0900 Subject: [PATCH 4/7] [refactor] inline isFileInput --- render/render.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/render/render.js b/render/render.js index b1ce6cdb3..312661365 100644 --- a/render/render.js +++ b/render/render.js @@ -684,7 +684,6 @@ module.exports = function() { if (key === "value") { // Only do the coercion if we're actually going to check the value. /* eslint-disable no-implicit-coercion */ - var isFileInput = vnode.tag === "input" && vnode.attrs.type === "file" //setting input[value] to same value by typing on focused element moves cursor to end in Chrome //setting input[type=file][value] to same value causes an error to be generated if it's non-empty //setting input[value] to same value sometimes causes checkValidity() to return true when form fields are invalid(#2256) @@ -695,7 +694,7 @@ module.exports = function() { if (vnode.tag === "option" && old !== null && vnode.dom.value === "" + value) return //setting input[type=file][value] to different value is an error if it's non-empty // Not ideal, but it at least works around the most common source of uncaught exceptions for now. - if (isFileInput && "" + value !== "") { console.error("`value` is read-only on file inputs!"); return } + if (vnode.tag === "input" && vnode.attrs.type === "file" && "" + value !== "") { console.error("`value` is read-only on file inputs!"); return } /* eslint-enable no-implicit-coercion */ } // If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur. From f2d6dc83ad816e94bfb6ea23d76cbd746af91165 Mon Sep 17 00:00:00 2001 From: kfule Date: Sat, 25 Jan 2025 13:28:41 +0900 Subject: [PATCH 5/7] fix comment --- render/render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/render/render.js b/render/render.js index 312661365..963008abb 100644 --- a/render/render.js +++ b/render/render.js @@ -686,7 +686,7 @@ module.exports = function() { /* eslint-disable no-implicit-coercion */ //setting input[value] to same value by typing on focused element moves cursor to end in Chrome //setting input[type=file][value] to same value causes an error to be generated if it's non-empty - //setting input[value] to same value sometimes causes checkValidity() to return true when form fields are invalid(#2256) + //resetting user-edited values by script bypasses minlength/maxlength validation(#2256) if ((vnode.tag === "input" || vnode.tag === "textarea") && vnode.dom.value === "" + value) return //setting select[value] to same value while having select open blinks select dropdown in Chrome if (vnode.tag === "select" && old !== null && vnode.dom.value === "" + value) return From 98fa50acf3d9c0085ce60d8bd4f1abf0c7782331 Mon Sep 17 00:00:00 2001 From: kfule Date: Sat, 25 Jan 2025 14:04:34 +0900 Subject: [PATCH 6/7] add manual rendering tests --- render/tests/manual/minlength-input.html | 49 +++++++++++++++++++++ render/tests/manual/minlength-textarea.html | 49 +++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 render/tests/manual/minlength-input.html create mode 100644 render/tests/manual/minlength-textarea.html diff --git a/render/tests/manual/minlength-input.html b/render/tests/manual/minlength-input.html new file mode 100644 index 000000000..f26fcbcb4 --- /dev/null +++ b/render/tests/manual/minlength-input.html @@ -0,0 +1,49 @@ + + + + + + + This is minlength validity test (#2256). + Open your browser's Developer Console and follow these steps: +
    +
  1. Type any (1 or 2) characters in the input field.
  2. +
  3. Click “submit.”
  4. +
  5. Click “submit” again.
  6. +
  7. Check the logs displayed in the console.
  8. +
+ +
+ + + + diff --git a/render/tests/manual/minlength-textarea.html b/render/tests/manual/minlength-textarea.html new file mode 100644 index 000000000..92daa7bf0 --- /dev/null +++ b/render/tests/manual/minlength-textarea.html @@ -0,0 +1,49 @@ + + + + + + + This is minlength validity test (#2256). + Open your browser's Developer Console and follow these steps: +
    +
  1. Type any (1 or 2) characters in the textarea field.
  2. +
  3. Click “submit.”
  4. +
  5. Click “submit” again.
  6. +
  7. Check the logs displayed in the console.
  8. +
+ +
+ + + + From 6387ff691610c0d60c3b414466a0154da1792e0f Mon Sep 17 00:00:00 2001 From: Claudia Meadows Date: Sat, 25 Jan 2025 16:43:01 -0800 Subject: [PATCH 7/7] Update render.js Signed-off-by: Claudia Meadows --- render/render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/render/render.js b/render/render.js index 963008abb..674a8266a 100644 --- a/render/render.js +++ b/render/render.js @@ -686,7 +686,7 @@ module.exports = function() { /* eslint-disable no-implicit-coercion */ //setting input[value] to same value by typing on focused element moves cursor to end in Chrome //setting input[type=file][value] to same value causes an error to be generated if it's non-empty - //resetting user-edited values by script bypasses minlength/maxlength validation(#2256) + //minlength/maxlength validation isn't performed on script-set values(#2256) if ((vnode.tag === "input" || vnode.tag === "textarea") && vnode.dom.value === "" + value) return //setting select[value] to same value while having select open blinks select dropdown in Chrome if (vnode.tag === "select" && old !== null && vnode.dom.value === "" + value) return