Commit Graph

138 Commits (07f768c5a6c59663a402d613ebbb0bb1e62ce64e)

Author SHA1 Message Date
Shahar Or (mightyiam) 4adbd971cb improvements to VNodeData types 8 years ago
Shahar Or (mightyiam) 08650378be Merge branch 'master' into type 8 years ago
caesarsol c37321ca12 Use elm.setAttribute('class', ...) instead of elm.className = ... to make it work in SVGs 8 years ago
Shahar Or (mightyiam) 9dfa5d6f3c type VNode props (fixes #264) 8 years ago
Diego Ferreiro Val 4ede863df2 Performance improvement for attribute patching: (#257)
* Performance improvements for attribute patching:
- Avoid call to split and use a object lookup instead
- Simplify the code for `svg` name spaced attributes

* Fix typo and added missing property

* Fixing previous attribute ns assignment

* Refactor NS

* Add fast path for non namespaced elements

* Adding tests
8 years ago
paldepind 511b29a6a6 Set boolean attributes correctly according to spec 8 years ago
Tom Bakker 1a0adb1c95 fix tovnode to ensure text elements can be removed 8 years ago
André Staltz 9ee3be8b5a Merge pull request #234 from caridy/create-workflow-to-align-with-update
Create element workflow should align with update element workflow
8 years ago
Andre Staltz c368eb3163
Fix dataset module to support old browsers
At least IE10 does not support the elm.dataset property, so we must use
elm.removeAttribute and elm.setAttribute instead.
8 years ago
Andre Staltz a0033a635d
Introduce toVNode() to reconstruct root element as vnode
This commit addresses issue #167. Previously, in snabbdom v0.5.0,
patch(element, vnode) would always create a new element for the root.
This resulted in problems with custom elements (web components), and was
fixed in commit c091c59c59.

However, that commit resulted in bug #167. This meant that snabbdom
would have bugs with server-side rendering, where the root element would
be non-empty (it has many children, rendered on the server-side as
HTML), and the client-side rendering should reuse those existing
children (or clear all the children and recreate them again in patch()).

This commit introduces the function toVNode(elm) that deep-converts an
element (and its tree) to a VNode (and its tree), that is separately
imported and used before calling patch(). toVNode(elm) will look at the
element's attributes and gather those as data for the vnode.

Overall, this commit is important for fixing #167 and enabling
client/server-side rendering in an efficient manner
(destruction/recreation client-side is probably too expensive).
8 years ago
Simon Friis Vindum 9be854410e Merge pull request #232 from nunocastromartins/handle-null-children
Support for null/undefined children
8 years ago
Nuno Martins 367eef52f8 Fix #226. Support for `null`/`undefined` children
This commit makes the patching algorithm ignore `null` and `undefined`
children. This means that, whenever children are iterated, the algorithm
must check for possible `null` and `undefined` values.
8 years ago
André Staltz 3efe5612d7 Merge pull request #229 from pedrosland/feature/comments
Add ability to create comment nodes
8 years ago
Caridy 6594a20fde Create element workflow to align with update element workflow 8 years ago
zhulongzheng 18ef17db31 Update of #228 8 years ago
Peter Sutherland bb86adef8c Add ability to create comment nodes 8 years ago
zhulongzheng f6eacf3993 Fix compatibility issue of String.prototype.startsWith 8 years ago
Andre Staltz 1b0163cb94
Fix modules/module file to be TypeScript source
In order for other TypeScript code to consume snabbdom's TypeScript
correctly, we must "export" the modules/module interface just like
we export other types.
8 years ago
Andre Staltz ef8b60993b Fix hooks file to be TypeScript source
In order for other TypeScript code to consume snabbdom's TypeScript
correctly, we must "export" the hooks interfaces just like we export
other types.
8 years ago
Caridy 687db9f99b [perf-optimization] skip unnecessary work in modules that can support memoization of the data structure consumed by them 8 years ago
paldepind 673e2a7e7b Merge branch 'use-typeof' 8 years ago
Simon Friis Vindum 7da866270a Merge pull request #210 from aronallen/fix/ie11svg
use parentNode instead of parentElement
8 years ago
Aron Allen fa88c0e888 removed all references to parentElement, changed to parentNode. updated types 8 years ago
Simon Friis Vindum 3bd0068156 Merge pull request #213 from tdumitrescu/svg-ns-fix
Fix Custom Element creation when tag name begins with 'svg'
8 years ago
teddddd 72cdb52e1d Fix Custom Element creation when tag name begins with 'svg'
The check at https://github.com/snabbdom/snabbdom/blob/f79af828/src/h.ts#L37
is too loose, and ends up adding the svg namespace to elements with
tagNames such as svg-icon, which prevents web components lifecycle
callbacks from firing.
8 years ago
Aron Allen bec0d9ab80 use parentNode instead of parentElement 8 years ago
Jorge Bucaran 00b9224d85 Check that children data !== undefined before calling addNS
Otherwise svg is broken.
8 years ago
paldepind 27993fcadf Typing for module hooks and `h` data 8 years ago
paldepind 9a21abafcb Cast `elm` once 8 years ago
paldepind dccd3d4800 Satisfy strict null checks 8 years ago
Simon Friis Vindum f79af82881 Merge pull request #195 from jlesquembre/css-variables
Add support for css variables
8 years ago
paldepind f552b0e8ed Tweak types, reduce casting 8 years ago
José Luis Lafuente ccbf30f0c6
Add support for css variables 8 years ago
Simon Friis Vindum cd952ac52f Merge pull request #188 from zhulongzheng/patch
Fix bug of updating one child with same key but different sel.
8 years ago
Alexandre Galays 5a5c0dc121 Allow h(sel, data, node) and h(sel, node) shortcut notations 8 years ago
zhulongzheng 8ffb4eb91a Fix bug of updating one child with same key but different sel 8 years ago
Andre Staltz 091dc5f961
Migrate from CommonJS modules to ES2015 modules 8 years ago
Andre Staltz 499cd37b06
Migrate source code to TypeScript v2.0 8 years ago