From 4eeb3da8c9eb22cf87d4ff3bc9155e86817d40c8 Mon Sep 17 00:00:00 2001 From: Shuanghui Yan Date: Tue, 22 Feb 2022 23:14:11 +0800 Subject: [PATCH 1/2] fix: add ns param for removeAttribute --- packages/core/src/mutations.rs | 14 ++++++++++++-- packages/interpreter/src/bindings.rs | 2 +- packages/interpreter/src/interpreter.js | 14 ++++++++------ packages/web/src/dom.rs | 4 ++-- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/packages/core/src/mutations.rs b/packages/core/src/mutations.rs index bd94d0b71..e6c83f92d 100644 --- a/packages/core/src/mutations.rs +++ b/packages/core/src/mutations.rs @@ -107,6 +107,7 @@ pub enum DomEdit<'bump> { RemoveAttribute { root: u64, name: &'static str, + ns: Option<&'bump str>, }, } @@ -218,8 +219,17 @@ impl<'a> Mutations<'a> { } pub(crate) fn remove_attribute(&mut self, attribute: &Attribute, root: u64) { - let name = attribute.name; - self.edits.push(RemoveAttribute { name, root }); + let Attribute { + name, + namespace, + .. + } = attribute; + + self.edits.push(RemoveAttribute { + name, + ns: *namespace, + root + }); } pub(crate) fn mark_dirty_scope(&mut self, scope: ScopeId) { diff --git a/packages/interpreter/src/bindings.rs b/packages/interpreter/src/bindings.rs index ecd74870d..aa937728b 100644 --- a/packages/interpreter/src/bindings.rs +++ b/packages/interpreter/src/bindings.rs @@ -63,5 +63,5 @@ extern "C" { ); #[wasm_bindgen(method)] - pub fn RemoveAttribute(this: &Interpreter, root: u64, field: &str); + pub fn RemoveAttribute(this: &Interpreter, root: u64, field: &str, ns: Option<&str>); } diff --git a/packages/interpreter/src/interpreter.js b/packages/interpreter/src/interpreter.js index 76da73752..6a4ed0904 100644 --- a/packages/interpreter/src/interpreter.js +++ b/packages/interpreter/src/interpreter.js @@ -105,7 +105,7 @@ export class Interpreter { if (ns === "style") { // @ts-ignore node.style[name] = value; - } else if (ns != null || ns != undefined) { + } else if (ns !== null || ns !== undefined) { node.setAttributeNS(ns, name, value); } else { switch (name) { @@ -133,10 +133,12 @@ export class Interpreter { } } } - RemoveAttribute(root, name) { + RemoveAttribute(root, field, ns) { + const name = field; const node = this.nodes[root]; - - if (name === "value") { + if (ns !== null || ns !== undefined) { + node.removeAttributeNS(ns, name); + } else if (name === "value") { node.value = ""; } else if (name === "checked") { node.checked = false; @@ -260,7 +262,7 @@ export class Interpreter { } } - if (realId == null) { + if (realId === null) { return; } window.ipc.postMessage( @@ -281,7 +283,7 @@ export class Interpreter { this.SetAttribute(edit.root, edit.field, edit.value, edit.ns); break; case "RemoveAttribute": - this.RemoveAttribute(edit.root, edit.name); + this.RemoveAttribute(edit.root, edit.name, edit.ns); break; } } diff --git a/packages/web/src/dom.rs b/packages/web/src/dom.rs index b2eb65d08..3ecfe9913 100644 --- a/packages/web/src/dom.rs +++ b/packages/web/src/dom.rs @@ -127,8 +127,8 @@ impl WebsysDom { self.interpreter.RemoveEventListener(root, event) } - DomEdit::RemoveAttribute { root, name } => { - self.interpreter.RemoveAttribute(root, name) + DomEdit::RemoveAttribute { root, name, ns } => { + self.interpreter.RemoveAttribute(root, name, ns) } DomEdit::CreateTextNode { text, root } => { From aa2d6b8d1148a5eaabdfa9f5044c8e8bc493e923 Mon Sep 17 00:00:00 2001 From: Shuanghui Yan Date: Thu, 24 Feb 2022 18:13:00 +0800 Subject: [PATCH 2/2] fix: format styles --- packages/core/src/mutations.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/core/src/mutations.rs b/packages/core/src/mutations.rs index e6c83f92d..de9656ffd 100644 --- a/packages/core/src/mutations.rs +++ b/packages/core/src/mutations.rs @@ -220,15 +220,13 @@ impl<'a> Mutations<'a> { pub(crate) fn remove_attribute(&mut self, attribute: &Attribute, root: u64) { let Attribute { - name, - namespace, - .. + name, namespace, .. } = attribute; - self.edits.push(RemoveAttribute { + self.edits.push(RemoveAttribute { name, ns: *namespace, - root + root, }); }