From: Evan You Date: Tue, 27 Sep 2022 09:40:22 +0000 (+0800) Subject: fix(ssr): respect case when rendering dynamic attrs on svg X-Git-Tag: v3.2.40~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=121eb32fb0a21cf9988d788cfad1b4249b15997b;p=thirdparty%2Fvuejs%2Fcore.git fix(ssr): respect case when rendering dynamic attrs on svg fix #6755 --- diff --git a/packages/server-renderer/__tests__/ssrRenderAttrs.spec.ts b/packages/server-renderer/__tests__/ssrRenderAttrs.spec.ts index 62ccdb5997..e9dfb0dbd5 100644 --- a/packages/server-renderer/__tests__/ssrRenderAttrs.spec.ts +++ b/packages/server-renderer/__tests__/ssrRenderAttrs.spec.ts @@ -98,6 +98,17 @@ describe('ssr: renderAttrs', () => { ) ).toBe(` fooBar="ok"`) }) + + test('preserve name on svg elements', () => { + expect( + ssrRenderAttrs( + { + viewBox: 'foo' + }, + 'svg' + ) + ).toBe(` viewBox="foo"`) + }) }) describe('ssr: renderAttr', () => { diff --git a/packages/server-renderer/src/helpers/ssrRenderAttrs.ts b/packages/server-renderer/src/helpers/ssrRenderAttrs.ts index 746ffa1072..6bbf83a1ea 100644 --- a/packages/server-renderer/src/helpers/ssrRenderAttrs.ts +++ b/packages/server-renderer/src/helpers/ssrRenderAttrs.ts @@ -1,4 +1,4 @@ -import { escapeHtml, stringifyStyle } from '@vue/shared' +import { escapeHtml, isSVGTag, stringifyStyle } from '@vue/shared' import { normalizeClass, normalizeStyle, @@ -51,8 +51,8 @@ export function ssrRenderDynamicAttr( return `` } const attrKey = - tag && tag.indexOf('-') > 0 - ? key // preserve raw name on custom elements + tag && (tag.indexOf('-') > 0 || isSVGTag(tag)) + ? key // preserve raw name on custom elements and svg : propsToAttrMap[key] || key.toLowerCase() if (isBooleanAttr(attrKey)) { return includeBooleanAttr(value) ? ` ${attrKey}` : ``