🐅 0.8.0 (2018-04-30)
- bundler: using es2017 in esm mode (7e80772)
- bundler: support for dynamic import (d68d5c1)
- bundler: expose Rollup node-resolve plugin configuration (a7a2c6e)
- polyfill: add Object.entries to polyfills (fcc649f)
- global: bundle global script goes first (0b9fdd4)
- karma: make
npm run dev
work on Windows (097799f) - lifecycle: ensure child components have connected before lifecycle checks (5a1377f), closes #747
- prop: prop type metadata (2b638e0)
- props: do not auto force prop types on objects (6b94bf6)
- props: do not force a type when using mixed union types (3bf75f7)
- props: force string types toString (9e6f66a)
- polyfill: change promise polyfill from a UMD to a simple global polyfill. (ffcbb14)
- polyfill: fix ie promise polyfill (723b76d)
- shadowDom: fix render() returning array to update shadowRoot (af87219), closes #727
- slot: conditionally render slot and fallback slot content (294c559), closes #721
- slot: fix conditional slot reordering (6489f8e)
- slot: fix first child slot in child component w/ array slots (f0ac435)
- tag: fix legacy module lookups when using tags with numbers (e918f48), closes #753
- slot: fix slot reordering (7af3c6c)
- slot: move slot content to original location before removing (7ef8afe)
- slot: fix slot reordering on async update (39d1afe)
- slot: relocate slot content at component root (f1598fd)
👻 0.7.26 (2018-04-23)
- angular: methods proxy (d014206)
- style: Support multiple base64 variables (5458790)
- styles: prevent stackoverflow when shimming base64 css vars (089636b), closes #749
- windows: use npx for build scripts (d67dcdb)
- test: adds auxiliar test utils (093c425)
🎬 0.7.25 (2018-04-18)
- ssr: add server initApp() for express middleware (89485c8)
- watch: emit error when watching to invalid prop (18f03a0)
🍣 0.7.24 (2018-04-13)
- queue: ensure all queued callbacks run (e251802)
☀️ 0.7.23 (2018-04-13)
- css-shim: fix relative paths (67edcbd)
- allow collection packages to use package.json 'module' to export esmodules. (8aee1f0)
⛷ 0.7.22 (2018-04-12)
- angular: output decorator (494fb18)
- prerender: pass property data down to child components (35c0911)
⚾️ 0.7.21 (2018-04-12)
- angular: emit exact types (2164ad3)
- css-shim: Fix css-shim when base64 uri value is used (84a1348), closes #393
- svg: remove svg attribute when undefined (5a3c632), closes #720
- test: correct tsconfig for karma tests. (568c82d)
🍭 0.7.20 (2018-04-10)
- declarations: fix dialog type interface (9e7da78)
- test: fix accessing TestWindow properties (1dabe1f)
- test: update to TestWindow (aa41953)
- test: TestWindow types subclass Window (a7feecc)
- autoprefix: built-in css autoprefixing (e141e8a)
💾 0.7.19 (2018-04-09)
- props: dash-case attributes to props (0bf1796), closes #697
- props: static type analysis for props (b6e7863)
- test: use TestWindow for Listen testing (3279676), closes #572
- testing: fix event emitter for test suite (d388430), closes #601
- tests: path is not correct on windows (#701) (f7acae4)
The test suite now comes with a TestWindow
class, with the ultimate goal of better simulating a standardized browser environment built on top of window
and document
. Using a TestWindow
instance allows tests to stay compartmentalized, and not require global objects which get reused (which is not ideal for testing). Instead, each test creates a new instance of window
, and by doing so lets each test to not affect others.
The test suite has been refactored to now use TestWindow
instead of render
and flush
. Existing tests will continue to work, but warnings will be printed to use TestWindow
instead. Here are a few examples.
import { render, flush } from '@stencil/core/testing';
import { MyComponent } from './my-component';
it('should be the old way', async () => {
const element = await render({
components: [MyComponent],
html: '<my-cmp first="Marty" last-name="McFly"></my-cmp>'
});
expect(element.textContent).toEqual('Hello, my name is Marty McFly');
element.first = 'George';
await flush(element);
expect(element.textContent).toEqual('Hello, my name is George McFly');
});
import { TestWindow } from '@stencil/core/testing';
import { MyComponent } from './my-component';
it('should be the new way', async () => {
const window = new TestWindow();
const element = await window.load({
components: [MyComponent],
html: '<my-cmp first="Marty" last-name="McFly"></my-cmp>'
});
expect(element.textContent).toEqual('Hello, my name is Marty McFly');
element.first = 'George';
await window.flush();
expect(element.textContent).toEqual('Hello, my name is George McFly');
});
🍹 0.7.18 (2018-04-06)
- angular: outputs must be proxied (e5647ac)
🍸 0.7.17 (2018-04-06)
- angular: method proxy (e06a37d)
- angular: proxy methods (5e93ecb)
- bundle: also resolve paths of relative source files not in memory (9991d1e)
🏌 0.7.16 (2018-04-05)
🚢 0.7.15 (2018-04-05)
- slot: load host content on every render (79fbf50)
- theme: ensure elm.mode is always set (33dd711)
- types: property possibly undefined (18bac2a)
😛 0.7.14 (2018-04-04)
- slot: alway include slot (803cfa3)
⛱ 0.7.13 (2018-04-04)
- docs: only output readme docs w/ --docs flag (0aad8e7), closes #690
- svg: update css class on svg element (260b538)
- test: add esModuleInterop so that tests will have proper interop with commonjs modules. (8520059)
- docs: add usage markdown to docs json output (7d811f1)
- host: apply static Component host data to host element (00b6af6), closes #562
- add commonjs config option that will allow additonal configuration of rollup like namedExports. (d807ea1)
😋 0.7.12 (2018-04-02)
- angular: emit all props (dc5ac70)
🔦 0.7.11 (2018-04-02)
- build: separate cached build conditionals (bc7873e), closes #676
- cli: override previous flags in cli args (da14e81)
- render: fix vnode key comparison (6f380da)
- render: update parent host content from child changed element render (6fe6a6e), closes #679
- angular: directivesArrayFile (ca11e0a)
- build: exclude slot polyfill for shadow-only, or not slot components (191d90a)
- docs: cli flag for json docs (7b9cedd)
- props: warn when using standardized props/methods (e6ff67c), closes #309
- typescript: update to TypeScript 2.8.1 (c98c7ce)
🐚 0.7.10 (2018-03-28)
- componentOnReady: set host element as resolve value (dcfdf06)
🎷 0.7.9 (2018-03-28)
- refactor: add
componentOnReady()
to prototype immediately (57d14c7)
👽 0.7.8 (2018-03-26)
🍒 0.7.7 (2018-03-23)
- events: reduce restrictions on public member names that are similar to event names (ef1b2e7)
- types: add methods to components.d.ts file and remove localized dependency on components (#654) (ef304ea)
🎺 0.7.6 (2018-03-22)
Listeners can now be added to specific elements within JSX. #323
For example, if a component emits the event ionChange
, then the JSX attribute onIonChange
can be added, such as:
<ion-input onIonChange={(ev) => this.someMethod(ev)}/>
This matches how listeners are added for standard events. For example, to listen to a button's click
event, the JSX attribute would be onClick
.
- build: avoid Object.entries (breaks Node 6) (b39b2b9)
- events: keep event names case-sensitive (bb09964)
- loader: more-specific "customElements" polyfill check (f4823f7), closes #648
- render: fix functional components patch when children aren't rendered (3747dcd), closes #649
- styles: escape unicode chars & octal literals in css (f1af0bc), closes #656
- types: dash based event names should appear within quotes in the components.d.ts file. (dafd02d)
🐬 0.7.5 (2018-03-20)
- css: update the CSS variable regexp for pseudo-classes (97c35ce), closes #603
- add event listeners and custom events types to components.d.ts (#644) (4644d91)
🏵 0.7.4 (2018-03-20)
- build: reuse build conditionals from last build for non-typescript changes (8127829), closes #636
- prop: fix prop decorator parsing (857d81c)
🏆 0.7.3 (2018-03-20)
🚔 0.7.2 (2018-03-19)
- canonical-link: update
<link rel="canonical">
using existing href value (0abcfbe) - prerender: merge prerender diagnostics with build output (bc6c638)
- render: check if functional component on update element (007b188)
- render: fix functional components returning null (10a3777), closes #610
- whenDefined: customElements.whenDefined() polyfill before the full polyfill (8d92cc1)
🏐 0.7.1 (2018-03-17)
- crossorigin: support crossorigin for dynamic import (037839f)
- es5: fix observedAttributes in es5 build (7c93e85), closes #623
- prerender: fix custom indexHtml build (7768864), closes #563
- styles: escape unicode characters in css (b32d9da), closes #545
🍬 0.7.0 (2018-03-16)
- build: allow for multiple build target configurations (#582) (a05dc00)
- config: allow for multiple output target configurations (c808dee)
- docs: write docs to multiple locations (24fe78d)
- inspector: add devInspector for improved debugging (034f0a9)
- prerender: add baseUrl outputTarget config (6d08a70)
- prerender: do not write empty attrs which are safe to remove (18e7e2c)
- types: add image decode attribute to JSX definition (#596) (fbda0c8)
- build: do not ignore watch flag (982de3e)
- config: convert serviceWorker and prerender config to outputTargets (148c41e)
- css-shim: improve tests for requiring css shim (4a2a480), closes #603
- host-config: add baseUrl to host.config.json output (da52e02)
- outputTargets: fix collection targets (797f1b4)
- polyfills: makes polyfills writable properties (b439cad), closes #606
- prerender: fix inlined loader script with baseUrl confg (7907b94)
- prerender: fix urls w/ same as baseUrl but no trailing slash (26bf09f)
- prerender: update local prerender server w/ baseUrl (f37d9d5)
- prerender: update prerender config defaults (19b27e4)
- resourcePath: improve loader script resource path (58f9e99)
- service-worker: add registry.json, host config and global js to globIgnore (8e3f616)
- service-worker: adjust sw.js w/ baseUrl (eae035b)
- service-worker: do not build service worker in dev builds (72e2997)
- service-worker: unregister sw when in dev mode (7ea4307)
- svg: build svg render into core w/ imports (1b3904d), closes #607
- sw: fix service worker config validation (cdf890e)
- tag: fix dash case conversion for tags with digits (af12eb4), closes #599
- test: normalize path for windows (5e3fbc0)
- types: adds forceUpdate() (3640715)
🗻 0.6.18 (2018-03-05)
0.6.17 (2018-03-03)
- sw: update sw unregistration (9864159)
- App: expose addEventListener to app global so external libs can override (ed99d45)
- App: expose raf to app global so external libs can override raf (0fb14a3)
- Build: user-land Build conditions (c855353)
- events: dispatch "appinit" and "appload" events on window (639626b)
0.6.16 (2018-03-01)
0.6.15 (2018-03-01)
- prerender: improve inline loader script (cf72640)
- file hash: init asset file versioning (65c5783)
- minify: minify inline styles and scripts (286bf7d)
- render: microtask resolve all tasks until app loaded (c9aee2b)
0.6.14 (2018-02-28)
- collection: add bundle data to collection manifest for prop connect tags (6ba0150)
- watcher: do not create more than one watcher (0df1dff)
0.6.13 (2018-02-28)
0.6.10 to 0.6.13: Fix collection JSX types for redistribution.
- types: export lifecycle method interfaces for collections (ef1875f)
- types: add JSX types to injected stencil core dts (53bb4d1)
- types: remove global JSX Elements that should be provided by the host application. (4d151cc)
0.6.9 (2018-02-27)
- bundling: update to rollup 0.56.3 (3904bd1)
- collection: ship stencil/core interfaces w/ collections (d462b7f)
- exports: update renderer exports and refactor renderer location (40faa65), closes #574
- transpile: implement directoryExists for compiler-host (ebccbc1)
0.6.8 (2018-02-25)
- css: use default css if sass plugin not installed (a61dc3b)
- types: import to missing dist/core folder after build process (fb554c9)
For external collections that provide both CSS and Sass files, such as Ionic, if the Stencil project does not have the @stencil/sass plugin installed then it'll default to using the collection's CSS build. If project does have the sass plugin installed then it'll rebuild the external collection's sass files at compile time. This allows projects to override a collection's default Sass variables using the plugin's injectGlobalPaths
option. Please see the @stencil/sass options for more information.
0.6.7 (2018-02-23)
- collection: copy all src root level d.ts to dist/types directory for distribution (9fcad83)
- collection: remove side effect collection imports from JS output (64b03d0)
- types: gather collect types during ts typechecking (03349be)
- collections: use node module resolution for collection dependencies (0dd621c)
0.6.6 (2018-02-22)
- ref: execute ref on vnode items that get added during update. (b192def)
- ref: move callNodeRefs check to only occur on rerender not on initial load. (f09a5ee)
- global: always add global script to built context (db594bd)
- types: remove deprecated collection imports (6103fef)
0.6.5 (2018-02-20)
- optimizeHtml: default to optimize html when prerendering disabled (d2def84)
0.6.4 (2018-02-20)
- loader: force es5 builds for file:// protocol (851fcec), closes #517
- package: move rollup-pluginutils to an external for the rollup build. (90b295b)
0.6.3 (2018-02-19)
- remove isBuildSvg from prop test in render. (913d4d1)
0.6.2 (2018-02-19)
- collection: remove collection loader from global scripts (a70476e)
- json: add rollup pluginutils to json plugin so that we can ignore commonjs proxy files. (b148239)
- prerender: handle anchor href values that contain quotes (3f87e1d), closes #552
- slot: component provided default slot content (59ff359), closes #171
0.6.1 (2018-02-19)
0.6.0 (2018-02-16)
- collections: import collections through es module imports (9015569)
- sass: move sass to external plugin, @stencil/sass (371c44c), closes #490
The config.collections
config has been deprecated in favor of standard ES module imports. Instead of listing collections within stencil.config.js
, collections should now be imported by the app's root component. The benefit of this is to not only simplify the config by using a standards approach for imports, but to also automatically import the collection's types to improve development. If you are using any collections, such as @ionic/core
, please remove the config.collections
property entirely from stencil.config.js
. Next, to include the collection and its types in the project, add the import to your root component. For example:
import '@ionic/core';
Previously Sass was embedded within @stencil/core
, and styles with a scss extension were automatically precompiled to CSS. In order to better support all external projects, the plugin system is now apart of the compiler's public API and config. With this update, Sass has been moved out of core and into its own plugin, @stencil/sass. Additionally, this enables other external projects, such as @stencil/postcss. If you are currently using Sass, please run the following:
npm run @stencil/sass --save-dev
And within stencil.config.js
, add the plugins config property. For example:
const sass = require('@stencil/sass');
exports.config = {
plugins: [
sass()
]
};
(Also note that adding Stylus and Less plugins are on our roadmap.)
- config: fix rebuilds from config updates (1f46a92)
0.5.2 (2018-02-15)
- bundle: use in-memory fs cache for local resolution (d78bcc4)
0.5.1 (2018-02-14)
- bundling: add json resolution plugin for rollup to stencil. (39dcfc6)
- entries: limit component references to call expressions and html (7991017), closes #532
- node-dom: fix errors when dom.window already closed (065ed4e)
0.5.0 (2018-02-13)
- entries: ensure dependency data from collections remains (f9fb09a)
- entries: use all strings for component reference graph (6629aa1)
- publicPath: allow for custom public path (19095e7), closes #464
- transpile: remove unneded remove-imports transform because it is causing issues with wildcard imports. fixes #526 (256e70a)
0.4.3 (2018-02-12)
0.4.2 (2018-02-12)
- config: do not require config file (c8cc144)
- entries: component dependencies from module imports (3eac82a), closes #513
- events: ensure old events are removed (ae68f98), closes #500
- minify: minify chunks (897f29b), closes #518
- platform-client: observedAttributes ([38c9201]
0.4.1 (2018-02-09)
- distribution: only copy distribution assets for generateDistribution (09c6ea4)
- init: componentDidLoad called twice (a49f1a6), closes #498
- render: State updates in componentWillLoad should not cause render (9f7061d), closes #449
0.4.0-0 (2018-02-08)
www
directory is always emptied of all files and directories when a build starts. Thewww
directory is now only a distribution directory, and should not be used to for production static source files. If an app has static source files that need to be copied to thewww
directory, please use thesrc/assets
directory instead. Files withinsrc/assets
will automatically get copied towww/assets
during the build.config.bundles
is no longer required. However, if theconfig.bundles
is left withinstencil.config.js
, and that config didn't correctly have all the app's required components, then some components won't render. It's best to just removeconfig.bundles
entirely since0.4.0
.- App's root
tsconfig.json
file is used directly by stencil for further configuration during build. See PR 451. There may be settings within an app's existing tsconfig that didn't error out previous, but now would. But this is a good thing.
- build: default enableCache to true (c75ac33)
- components: componentOnReady() (#479) (f5a32ba)
- config: optionally set config values from functions, and test correct case (d6e754a)
- config: read user tsconfig for path resolution (16d9008)
- graph: auto-gen bundles through component dependency graph (78f0f59)
- polyfill: add Element.remove() polyfill to es5 builds (833a8da)
- stats: write build log and build stats options (5f7e0b8)
- build: avoid using Object.entries (breaks Node 6) (8283df7), closes #463
- build: fix es5 dev mode build message (5ec6884), closes #492
- context: apply falsy context values (f3ba32f), closes #483
- copy: wait for processCopyTaskDestDir execution (900bbb8)
- cssvars: ensure css var polyfill used only when no support (863f3fc)
- ie: add startsWith polyfill (e60085c), closes #481
- shadowdom: ensure "encapsulation" is not property renamed in prod builds (a93704a), closes #419
- slot: insertBefore reference to old elm parentNode, also use remove() (e380517), closes #395
- styles: two different modes for the same component on the same page (1d7c2f7), closes #480
- svg: fix rendering entire svg (1d73aa6), closes #448
- svg: isSvgMode must be reset when an svg node is patched (50a088d), closes #503
- transpile: ensure initial transpile stays at es2015 target (4545e9d)
- transpile: validate tsconfig after merging user tsconfig (dc2b087)
- types: only add component type globals when there are components (06cc217)
- watcher: limit rebuilds within a short period of time (3683d85)
- watcher: recopy asset changes and index.html changes (ec1f16e)
0.3.0 (2018-02-05)
- ES Modules: load modules through native ES Modules (#162) (c3524a94)
- watch: add pcss to recognized web dev extensions (#477) (f783273)
- config: fixes absolutizing of wwwIndexHtml (#470) (81dde18)
- styles: always place component styles below prerender/visibility styles (8ed47b9)
- sw: build service worker after built fs commit (9ea7235)
0.2.3 (2018-01-24)
- test: add test transpile fn interface (d68fffb)
- attribute: attr name from toDashCase of property name (28740be)
- build: update uglify-es to 3.3.8 (690759d)
- compiler: avoid global JSX namespace collisions (9c1e721)
- test: fix unit test hydration (122b1cd), closes #441
- watcher: ensure duplicate builds are not started (b3d6cf2)
- watcher: ensure duplicate paths are not added to queue (767b879)
0.2.2 (2018-01-23)
- core: fix core js request for namespace w/ dash (be074db), closes #421
- cssvars: fix IE11 css vars (31f4083), closes #422
- fs: clear file cache on change/add for non-web dev files (f817109)
- render: handle runtime errors within render() (5a224d5), closes #370
0.2.1 (2018-01-23)
- watch: rebuild from copy task file changes (e2a8632)
0.2.0 (2018-01-22)
- fs: in-memory filesystem and caching updates (7ad25bd
- plugins: init plugins (55827cc)
- watch: add member name as 3rd arg (5bc261c)
- async: fix async writes (614bb97)
- build: ensure stencil imports are removed from older collections (9df9d7e)
- bundle: fix config.collections includeBundledOnly (8b6fd11), closes #426
- copy: copy to distribution directory option (267a66c), closes #246
- fs: remove queue delete when copying (55f7aee)
- style: handle octal escape sequences w/in compiled css (40a030e)
- watch: correct globalStyle path on rebuild (4843801), closes #430
- watcher: always initWatcher (70c27fd)
- ssr: polyfill "Element.prototype.closest" on jsdom (58d48ad), closes #437
0.1.6 (2018-01-18)
- loader: detect dynamic import (e4e2dc2)
- service-worker: correct checks for service worker in dev mode (9a3cce3)
- service-worker: workaround for a bug in workbox (3bb761d)
- serviceworker: Compiler prevents use of service worker in dev mode when forced (#423) (0704d05)
- svg: html after a svg node fails to render (7ffb4ef), closes #375
0.1.5 (2018-01-16)
- listeners: enableListener accepts passive option (1275327)
- sw: serviceWorker script is minified (76bcc52)
- events: Event() options (e1662a5), closes #406
- listeners: addListenerEvent() options check (1275327)
0.1.4 (2018-01-12)
- ensure node env vars are replaced with rollup plugin. (688fc88)
0.1.3 (2018-01-11)
- styles: styles applied in browsers using the legacy client (d6bc15e)
0.1.2 (2018-01-09)
- Call
@Watch
after property has been set - Fix submodule references, such as
@stencil/core/tesing
0.1.1 (2018-01-09)
- Component output is now an ES module.
- Dynamic
import()
instead of global jsonp callbacks. - ES5 and jsonp callback modules are still built for IE11 and server-side rendering.
- Component metadata is now stored within
static
properties on the component class.
@Watch
decorator has replaced both@PropWillChange
and@PropDidChange
. Previous decorators will continue to work.
- loader: fix incorrect feature detection (db277a1)
- serviceworker: updating to workbox 3.0 (63b2f1c)
- testing: fix preprocessor to only process .tsx files w/ transforms, .ts with vanilla typescript, and .d.ts to be ignored (80f4d49)
0.1.1-0 (2017-12-22)
- correct metadata in testing. fixes #355 (6b19e6b)
- correct transpile test to not use absolute paths. (aa58050)
- helpers: fix dash case and pascal case helpers (cf0e38a)
0.1.0 (2017-12-20)
- distribution: improve types distribution error (5083ff1)