From d9f2c1413e0cd9337c5e9e6376a1d00c3f4e3295 Mon Sep 17 00:00:00 2001 From: Trevor Suarez Date: Wed, 22 Jan 2025 23:02:14 -0700 Subject: [PATCH 1/4] Adding test for expected boolean attribute support --- .../_config.js | 50 +++++++++++++++++++ .../main.svelte | 22 ++++++++ 2 files changed, 72 insertions(+) create mode 100644 packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/main.svelte diff --git a/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js b/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js new file mode 100644 index 000000000000..fd69d8ad11ee --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js @@ -0,0 +1,50 @@ +import { test } from '../../test'; + +export default test({ + html: ` + +
+ + + + + + + + +
+
    +
    + + + +
    + + + + + + + + +
    +
      +
      + + + +
      + + + + + + + + +
      +
        +
        + +` +}); diff --git a/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/main.svelte b/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/main.svelte new file mode 100644 index 000000000000..e9e5a1616803 --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/main.svelte @@ -0,0 +1,22 @@ + + +{#each attributeValues as val} + +
        + + + + + + + + +
        +
          +
          + +{/each} From 144b643e03a75fd0dcf3a17799570d4742dec3fd Mon Sep 17 00:00:00 2001 From: Trevor Suarez Date: Wed, 22 Jan 2025 23:03:34 -0700 Subject: [PATCH 2/4] Improving support for more boolean attributes: Added: - `defer` - `disablepictureinpicture` - `disableremoteplayback` Improved: - `allowfullscreen` - `novalidate` --- packages/svelte/src/utils.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/svelte/src/utils.js b/packages/svelte/src/utils.js index b16c0551f192..e8e1bc224ce4 100644 --- a/packages/svelte/src/utils.js +++ b/packages/svelte/src/utils.js @@ -170,7 +170,10 @@ const DOM_BOOLEAN_ATTRIBUTES = [ 'reversed', 'seamless', 'selected', - 'webkitdirectory' + 'webkitdirectory', + 'defer', + 'disablepictureinpicture', + 'disableremoteplayback' ]; /** @@ -197,7 +200,10 @@ const ATTRIBUTE_ALIASES = { defaultvalue: 'defaultValue', defaultchecked: 'defaultChecked', srcobject: 'srcObject', - novalidate: 'noValidate' + novalidate: 'noValidate', + allowfullscreen: 'allowFullscreen', + disablepictureinpicture: 'disablePictureInPicture', + disableremoteplayback: 'disableRemotePlayback' }; /** @@ -219,7 +225,11 @@ const DOM_PROPERTIES = [ 'volume', 'defaultValue', 'defaultChecked', - 'srcObject' + 'srcObject', + 'noValidate', + 'allowFullscreen', + 'disablePictureInPicture', + 'disableRemotePlayback' ]; /** From c728177e05aa81faf595f1c9c59e6c77fdf28881 Mon Sep 17 00:00:00 2001 From: Trevor Suarez Date: Wed, 22 Jan 2025 23:07:31 -0700 Subject: [PATCH 3/4] Skipping JSDOM version of boolean attribute test JSDOM lacks support for some attributes, so we'll skip it for now. See: - `async`: https://github.com/jsdom/jsdom/issues/1564 - `nomodule`: https://github.com/jsdom/jsdom/issues/2475 - `autofocus`: https://github.com/jsdom/jsdom/issues/3041 - `inert`: https://github.com/jsdom/jsdom/issues/3605 - etc...: https://github.com/jestjs/jest/issues/139#issuecomment-592673550 --- .../attribute-boolean-case-insensitivity/_config.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js b/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js index fd69d8ad11ee..d0b8a421b369 100644 --- a/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js +++ b/packages/svelte/tests/runtime-runes/samples/attribute-boolean-case-insensitivity/_config.js @@ -1,6 +1,16 @@ import { test } from '../../test'; export default test({ + // JSDOM lacks support for some of these attributes, so we'll skip it for now. + // + // See: + // - `async`: https://github.com/jsdom/jsdom/issues/1564 + // - `nomodule`: https://github.com/jsdom/jsdom/issues/2475 + // - `autofocus`: https://github.com/jsdom/jsdom/issues/3041 + // - `inert`: https://github.com/jsdom/jsdom/issues/3605 + // - etc...: https://github.com/jestjs/jest/issues/139#issuecomment-592673550 + skip_mode: ['client'], + html: `
          From b66cd0b4ef4089baaaae45249843958c7ea803f5 Mon Sep 17 00:00:00 2001 From: Trevor Suarez Date: Wed, 22 Jan 2025 23:17:21 -0700 Subject: [PATCH 4/4] Adding changeset --- .changeset/strange-hairs-trade.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/strange-hairs-trade.md diff --git a/.changeset/strange-hairs-trade.md b/.changeset/strange-hairs-trade.md new file mode 100644 index 000000000000..192e5ef3d1e5 --- /dev/null +++ b/.changeset/strange-hairs-trade.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: expand boolean attribute support