fixed xml tests

This commit is contained in:
Kevin Jahns
2017-10-26 19:50:43 +02:00
parent 96c6aa2751
commit ca81cdf3be
5 changed files with 51 additions and 60 deletions

View File

@@ -115,28 +115,30 @@ export default class YXmlFragment extends YArray {
_bindToDom (dom) {
this._domObserverListener = mutations => {
this._mutualExclude(() => {
let diffChildren = false
mutations.forEach(mutation => {
if (mutation.type === 'attributes') {
let name = mutation.attributeName
// check if filter accepts attribute
if (this._domFilter(this._dom, [name]).length > 0) {
var val = mutation.target.getAttribute(name)
if (this.getAttribute(name) !== val) {
if (val == null) {
this.removeAttribute(name)
} else {
this.setAttribute(name, val)
this._y.transact(() => {
let diffChildren = false
mutations.forEach(mutation => {
if (mutation.type === 'attributes') {
let name = mutation.attributeName
// check if filter accepts attribute
if (this._domFilter(this._dom, [name]).length > 0) {
var val = mutation.target.getAttribute(name)
if (this.getAttribute(name) !== val) {
if (val == null) {
this.removeAttribute(name)
} else {
this.setAttribute(name, val)
}
}
}
} else if (mutation.type === 'childList') {
diffChildren = true
}
} else if (mutation.type === 'childList') {
diffChildren = true
})
if (diffChildren) {
applyChangesFromDom(this)
}
})
if (diffChildren) {
applyChangesFromDom(this)
}
})
}
this._domObserver = new MutationObserver(this._domObserverListener)

View File

@@ -20,9 +20,13 @@ export default class YXmlText extends YText {
constructor (arg1) {
let dom = null
let initialText = null
if (arg1 != null && arg1.nodeType === document.TEXT_NODE) {
dom = arg1
initialText = dom.nodeValue
if (arg1 != null) {
if (arg1.nodeType === document.TEXT_NODE) {
dom = arg1
initialText = dom.nodeValue
} else if (typeof arg1 === 'string') {
initialText = arg1
}
}
super(initialText)
this._dom = null

View File

@@ -136,7 +136,7 @@ export function reflectChangesOnDom (event) {
event.attributesChanged.forEach(attributeName => {
const value = yxml.getAttribute(attributeName)
if (value === undefined) {
dom.remoteAttribute(attributeName)
dom.removeAttribute(attributeName)
} else {
dom.setAttribute(attributeName, value)
}