17 KiB
Changelog
All notable changes to this project will be documented in this file. See standard-version for commit guidelines.
1.0.1 (2020-06-18)
User facing changes
- package: fix ./snabbdom related files and exports fields errors (89b917b)
1.0.0 (2020-06-18)
⚠ BREAKING CHANGES
- exports: The main export path, 'snabbdom' was replaced with
the export path 'snabbdom/init'. This new export path includes only
the named export
init
. - exports: No default exports exist. All exports are named.
- exports: the import path
snabbdom/snabbdom.bundle
is removed. - typescript: Types exported by this package have re-declared
the global
Element.setAttribute
andElement.setAttributeNS
to acceptnumber
andboolean
for thevalue
parameter. This change removes that re-declaration and thus the only valid value isstring
. If your code providesnumber
and/orboolean
, then it may now fail to compile. - props: props module does not attempt to delete node properties. This may affect you if you are using the props module to add non-native (custom) properties to DOM nodes. Instead, it is recommended to use data-* attributes. https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes
- CommonJS modules are no longer provided.
- import paths in ES modules include file name extensions.
- Compiled to ES2015 (was ES5).
- UMD bundles are no longer provided.
Internal changes
- commitlint: add type auto and scope deps for renovate (b56a0ac)
- commitlint: fix and enable in CI (f8cf5cc), closes #662
- deps: update dependency @typescript-eslint/eslint-plugin to v3.3.0 (9448e42)
- deps: update dependency tsconfigs to v5 (eb1ec8c)
- deps: update dependency typescript to v3.9.5 (5e24b20)
- docs: lint code examples (41cb359)
- eslint: lint cjs files (d581217)
- format: sort file lists (e77615b), closes #673
- git: ignore each test artifact specifically (b34e9a9)
- package: consistent values in files field (6fe56f8), closes #672
- relic: remove @types/assert (2846189)
- typescript: package and tests are two projects (8a71211)
- vscode: eslint.validate short forms (ba3e85b)
- vscode: use workspace typescript (eabbd2f)
User facing changes
- docs: enable eslint rule array-bracket-spacing (77e54e9)
- docs: enable eslint rule import/first (17cf7ae)
- docs: enable eslint rule import/newline-after-import (cd3a5cf)
- docs: enable eslint rule indent (e2861bb)
- docs: enable eslint rule key-spacing (349b686)
- docs: enable eslint rule max-statements-per-line (a128a23)
- docs: enable eslint rule no-multi-spaces (8179381), closes #692
- docs: enable eslint rule object-curly-spacing (8b8fbd5)
- docs: enable eslint rule quote-props (37512fe)
- docs: enable eslint rule quotes (2d455b5)
- docs: enable eslint rule semi (f4e7885)
- docs: enable eslint rule space-before-blocks (9f2d2d7)
- docs: enable eslint rule space-before-function-paren (23e7b87)
- docs: enable eslint rules object-*-newline (9a45b5b)
- docs: fix wrong module import paths (3b6baee), closes #691
- docs: provide a release changelog (616df35), closes #670
- exports: main export provided (3becd84), closes #682
- exports: only named exports (fefd141), closes #522 #523
- exports: relative values in exports field (187088e), closes #674
- exports: remove package.json main field (3122eec), closes #680
- exports: remove the /snabbdom.bundle path (c862993)
- exports: replaced main export path with init (09f2d1c), closes #522
- package: no module field (2b30e25), closes #681
- props: do not attempt to delete node properties (6f316c1), closes #623 #283 #415 #307 #151 #416
- typescript: do not redeclare Element.setAttribute(NS) (0620b5e), closes #615
- do not provide UMD bundles (8e24bbf), closes #498 #514 #481
- only esm and correct import paths (dad44f0), closes #516 #437 #263
v0.7.2 - 2018-09-02
Bugfixes
- Improvements to TypeScript types #364. Thanks to @gfmio.
- In some cases and browsers the style module would cause elements to not be removed correctly #367. Thanks to @jvanbruegge for fixing this tricky bug.
v0.7.0 - 2017-07-27
Breaking change
The way Snabbdom handles boolean attributes in the attributes module has been changed. Snabbdom no longer maintains a list of known boolean attributes. Not relying on such a list means that custom boolean attributes are supported, that performance is slightly better, and that the list doesn't have to be kept up to date.
Whether or not to set a boolean attribute is now determined by looking at the value specified for the attribute. If the value is a boolean (i.e. strictly equal to true
or false
) it will be handled as a boolean attribute. If you're currently setting boolean attributes with booleans then this change does not affect you.
h("div", {
attrs: {
foo: true // will be set a boolean attribute since `true` is a boolean
bar: "baz" // will set a normal attribute
}
});
The example above will result in the HTML: <div foo bar="baz" />
. Even if bar
is actually a boolean attribute. So for instance h("input", { attrs: { required: 12 } })
will no longer set a boolean attribute correctly.
Previously h("input", { attrs: { required: 0 } })
would result in the HTML <input>
since required
was a know boolean attribute and 0
is falsey. Per the new behavior the HTML will be <input required="0">
. To accomidate for the change always give boolean values for boolean attributes.
Bugfixes
toVNode
now handlesDocumentFragment
which makes it possible to patch into a fragment. #320. Thanks to @staltz.- Custom boolean attributes are handled correctly. #314. Thanks to @caridy.
- Type improvement.
VNode
key property can beundefined
#290. Thanks to @yarom82. - Data attributes are checked for existence before deleting. Old behavior caused error in Safari. #313. Thanks to @FeliciousX.
Performance improvements
- New handling of boolean attributes. #314. Thanks to @caridy.
v0.6.9 - 2017-05-19
Bug fixes
- Fix style delayed and remove to be optional in TypeScript, https://github.com/snabbdom/snabbdom/issues/295
v0.6.8 - 2017-05-16
Bug fixes
- Fix error when class is set by vdom selector in SVG, https://github.com/snabbdom/snabbdom/issues/217. Thanks to @caesarsol
- Fix hyperscript to support undefined or null children in TypeScript, https://github.com/snabbdom/snabbdom/issues/226. Thanks to @ornicar
- Fix thunk function so it is not called redundantly, https://github.com/snabbdom/snabbdom/pull/273. Thanks to @caesarsol
- Improve TypeScript types of VNode props, https://github.com/snabbdom/snabbdom/issues/264 and https://github.com/snabbdom/snabbdom/issues/264. Thanks to @mightyiam
- Fix toVNode() for comment nodes, lacking some fields, https://github.com/snabbdom/snabbdom/pull/266. Thanks to @staltz
Performance improvements
- Improvement for attribute patching, https://github.com/snabbdom/snabbdom/issues/257. Thanks to @diervo
v0.6.6 - 2017-03-07
Bug fixes
- The attributes module sets boolean attributes correctly according to the specificaiton. https://github.com/snabbdom/snabbdom/issues/254. Thanks to @PerWiklander for reporting the bug.
v0.6.5 - 2017-02-25
This is a patch version with a few bug fixes.
Bug fixes
- Fix
toVNode()
to handle text nodes correctly, https://github.com/snabbdom/snabbdom/issues/252. Thanks to @Steelfish - Fix dataset module to support old browsers, such as IE10. Thanks @staltz
- Fix "create element" workflow to align with "update element" workflow, https://github.com/snabbdom/snabbdom/pull/234. Thanks @caridy
v0.6.4 - 2017-02-09
This version adds some features such as support for comment nodes and better server-side/client-side rendering collaboration, besides some bug fixes.
New features
Add ability to create comment nodes. https://github.com/snabbdom/snabbdom/issues/142 Thanks to @pedrosland
Example:
h('!', 'Will show as a comment')
will be rendered on the DOM as
<!-- Will show as a comment -->
Introduce toVNode()
to reconstruct root element as vnode. https://github.com/snabbdom/snabbdom/issues/167 Thanks to @staltz
Useful for client-side rendering over existing HTML that was rendered server-side with snabbdom.
Example:
import {toVNode} from 'snabbdom/tovnode'
// ...
patch(toVNode(element), vnode)
Will deep-convert the element
to a VNode, this way allowing existing HTML to not be ignored by the patch process.
Bug fixes
- Fix compatibility issue of String.prototype.startsWith in the Style Module. https://github.com/snabbdom/snabbdom/pull/228 Thanks to @zhulongzheng
- Support for
null
/undefined
children without crashing. https://github.com/snabbdom/snabbdom/issues/226 Thanks to @nunocastromartins
v0.6.3 - 2017-01-16
Bugfixes
- Fix the export of the
Module
interface for TypeScript projects depending on snabbdom.
v0.6.2 - 2017-01-16
Bugfixes
- Fix the export of the
Hooks
interface for TypeScript projects depending on snabbdom.
v0.6.1 - 2017-01-05
The biggest change in this release is that the Snabbdom source code has been ported to TypeScript. The work has been primarily done by @staltz. This brings much improved support for using Snabbdom in TypeScript projects.
Note: This release contains breaking changes. See below.
New features
- Complete TypeScript support. Thanks to @staltz.
- Support for CSS variables. #195. Thanks to @jlesquembre.
- Allow
h(sel, data, node)
andh(sel, node)
shortcut notations in theh
function. #196. That is, instead ofh('div', [child])
one can now doh('div', child)
. Thanks to @AlexGalays.
Bugfixes
- Fix custom element creation when tag name begins with 'svg'. #213. Thanks to @tdumitrescu.
- Fix bug related to updating one child with same key but different selector. #188. Thanks to @zhulongzheng.
- Strings can be used as children inside SVG elements. #208. Thanks to @jbucaran and @jbucaran.
- Use
parentNode
fixing bug in IE 11. #210. Thanks to @aronallen.
Breaking changes
The TypeScript rewrite uses the import
and export
features introduced in ECMAScript 2015. Unfortunately the ES imports have no analogy to the CommonJS pattern of setting module.exports
. This means that the Snabbdom modules that previously used this feature now have to be imported in a slightly different way.
var h = require("snabbdom/h"); // The old way
var h = require("snabbdom/h").h; // The new way
var h = require("snabbdom/h").default; // Alternative new way
var {h} = require("snabbdom/h"); // Using destructuring
v0.6.0 - 2017-01-05
Deprecated. Use version 0.6.1 instead.
v0.5.0 - 2016-05-16
Breaking change
This release contains a new thunk implementation that solves many issues with the old thunk implementation. The thunk API has changed slightly. Please see the thunks section in the readme.