diff --git a/packages/svelte/src/internal/client/dom/operations.js b/packages/svelte/src/internal/client/dom/operations.js index 4539d12af5..fe9fbb4eda 100644 --- a/packages/svelte/src/internal/client/dom/operations.js +++ b/packages/svelte/src/internal/client/dom/operations.js @@ -770,7 +770,7 @@ export function set_css_text(element, value) { */ export function class_list_toggle(element, name, force) { if (renderer) { - const classes = element.getAttribute('class')?.split(/\s+/) ?? []; + const classes = renderer.getAttribute(element, 'class')?.split(/\s+/) ?? []; const has_class = classes.includes(name); if (force === has_class) { return; @@ -783,7 +783,7 @@ export function class_list_toggle(element, name, force) { classes.splice(index, 1); } } - element.setAttribute('class', classes.join(' ')); + renderer.setAttribute(element, 'class', classes.join(' ')); return; } element.classList.toggle(name, force); diff --git a/packages/svelte/tests/custom-renderers/samples/class-directive/_config.js b/packages/svelte/tests/custom-renderers/samples/class-directive/_config.js new file mode 100644 index 0000000000..b34ad3dc62 --- /dev/null +++ b/packages/svelte/tests/custom-renderers/samples/class-directive/_config.js @@ -0,0 +1,27 @@ +import { flushSync } from 'svelte'; +import { test } from '../../test'; + +export default test({ + html: '