Преглед на файлове

Make x-text work on SVG elements

Philipp Bosch преди 4 години
родител
ревизия
355383556e
променени са 2 файла, в които са добавени 19 реда и са изтрити 1 реда
  1. 5 1
      src/directives/text.js
  2. 14 0
      test/text.spec.js

+ 5 - 1
src/directives/text.js

@@ -4,5 +4,9 @@ export function handleTextDirective(el, output, expression) {
         output = ''
     }
 
-    el.innerText = output
+    if (el instanceof HTMLElement) {
+        el.innerText = output
+    } else {
+        el.textContent = output
+    }
 }

+ 14 - 0
test/text.spec.js

@@ -34,3 +34,17 @@ test('x-text on triggered update', async () => {
 
     await wait(() => { expect(document.querySelector('span').innerText).toEqual('bar') })
 })
+
+test('x-text on SVG elements', async () => {
+    document.body.innerHTML = `
+        <div x-data="{ foo: 'bar' }">
+            <svg>
+                <text x-text="foo"></text>
+            </svg>
+        </div>
+    `
+
+    Alpine.start()
+
+    await wait(() => { expect(document.querySelector('text').textContent).toEqual('bar') })
+})