diff --git a/archive/v0.1.3/change-log.html b/archive/v0.1.3/change-log.html index 370f6374..992906bb 100644 --- a/archive/v0.1.3/change-log.html +++ b/archive/v0.1.3/change-log.html @@ -65,6 +65,7 @@

v0.1.2 - maintenance

diff --git a/archive/v0.1.3/mithril-tests.js b/archive/v0.1.3/mithril-tests.js index f75659e5..d6364ce4 100644 --- a/archive/v0.1.3/mithril-tests.js +++ b/archive/v0.1.3/mithril-tests.js @@ -33,7 +33,11 @@ new function(window) { return cell } function build(parent, data, cached) { - if (data === null || data === undefined) return + if (data === null || data === undefined) { + if (cached) clear(cached.nodes) + return + } + if (data.subtree === "retain") return var cachedType = type.call(cached), dataType = type.call(data) if (cachedType != dataType) { @@ -59,8 +63,8 @@ new function(window) { } } else if (dataType == "[object Object]") { - if (typeof data.tag != "string") return if (data.tag != cached.tag || Object.keys(data.attrs).join() != Object.keys(cached.attrs).join()) clear(cached.nodes) + if (typeof data.tag != "string") return var node, isNew = cached.nodes.length === 0 if (isNew) { @@ -640,6 +644,36 @@ function testMithril(mock) { m.render(root, m("div", [m("a", {href: "/second"})])) return root.childNodes[0].childNodes.length == 1 }) + test(function() { + var root = mock.document.createElement("div") + m.render(root, m("ul", [m("li")])) + m.render(root, m("ul", [m("li"), undefined])) + return root.childNodes[0].childNodes.length === 1 + }) + test(function() { + var root = mock.document.createElement("div") + m.render(root, m("ul", [m("li"), m("li")])) + m.render(root, m("ul", [m("li"), undefined])) + return root.childNodes[0].childNodes.length === 1 + }) + test(function() { + var root = mock.document.createElement("div") + m.render(root, m("ul", [m("li")])) + m.render(root, m("ul", [undefined])) + return root.childNodes[0].childNodes.length === 0 + }) + test(function() { + var root = mock.document.createElement("div") + m.render(root, m("ul", [m("li")])) + m.render(root, m("ul", [{}])) + return root.childNodes[0].childNodes.length === 0 + }) + test(function() { + var root = mock.document.createElement("div") + m.render(root, m("ul", [m("li", [m("a")])])) + m.render(root, m("ul", [{subtree: "retain"}])) + return root.childNodes[0].childNodes[0].childNodes[0].nodeName === "A" + }) //m.redraw test(function() { diff --git a/archive/v0.1.3/mithril.html b/archive/v0.1.3/mithril.html index a6d2ec27..76d7bc34 100644 --- a/archive/v0.1.3/mithril.html +++ b/archive/v0.1.3/mithril.html @@ -183,7 +183,8 @@ m("a[href='/dashboard']", {config: m.route}, "Dashboard&q where: VirtualElement :: Object { String tag, Attributes attributes, Children children } Attributes :: Object<any | void config(DOMElement element, Boolean isInitialized)> - Children :: String text | Array<String text | VirtualElement virtualElement | Children children> + Children :: String text | Array<String text | VirtualElement virtualElement | SubtreeDirective directive | Children children> + SubtreeDirective :: Object { String subtree }