Releases: vaadin/flow
Releases · vaadin/flow
Components API module and Converter improvements
New features
- Created a new module -
flow-components
, that contains the component API for the Vaadin webcomponents. Those components are built on top of the generated API, and provide all the features and documentation that are not possible to auto generate. The first released component is VaadinButton. - ModelConverters can now work with list of beans.
- ModelConverters now have a default implementation for the
getApplicationType
andgetModelType
methods, so the developer doesn't need to provide those in most cases.
Fixes
QueryParameters
now work with parameters without values (like inhttp://somedomain?parameter
).- Fixed an error with NPM builds that prevented clean projects to run.
- Fixed a problem that prevented two-way binding to work for beans that were set from the server-side.
- Update the used versions of NPM, Yarn and Node across the modules.
Breaking changes
- With the addition of the
flow-components
module, the components from theflow-generated-components
were all renamed to have aGenerated
prefix. So, for example, the generatedVaadinButton
is now calledGeneratedVaadinButton
, and the final implementation is called justVaadinButton
. Also, the base package of the generated components were changed tocom.vaadin.generated
.
Demos
- Added a demo for ModelConverters.
Tutorials
- Added a tutorial for ModelConverters.
- Updated the tutorial about Using Beans with a PolymerTemplate Model clarifying the usage of interfaces as models.
- Updated the tutotrial about Handling User Events in a PolymerTemplate with
examples of the usage of@ModelItem
.
All changes
Model converters and type-safe events for generated components
New features
- Property-types not supported by the
TemplateModel
can now be converted usingModelConverters
with@Convert
-annotation. - Generated components now support
readOnly
-properties. - Events for generated components now support complex object-types.
- Generated listeners now return the correct event-type instead of a generic one.
- Code snippets of generated components are now parsed directly from the source code.
- There is now a project skeleton to be used as a starting-point for new Flow-based applications: https://github.com/vaadin/flow-application-skeleton
Fixes
- Now the generator generates documentation for method call parameters for generated components.
- Inline-resources now work with
frontend://
-protocol. History.pushState
andHistory.replaceState
don't reset the scroll position anymore.- When using
@Id
, you can use<style>
-tags in the template without breaking Flow.
Breaking changes
TemplateModel
doesn't accept empty beans anymore.
Tutorials
- Updated the tutorial about ES5-compilation clarifying the usage of the
index.html
-file.
All changes
Inlining resources and generator improvements
New features
- Inlining of JavaScript and stylesheet files is now supported with
LoadMode.INLINE
- Generated components now support slots
- webcomponents-loader is now being used instead of the full set of WebComponent polyfills
- Generated components now automatically add the
@Synchronized
annotation to getters which are mapped to change events
Fixes
- Vaadin Push JavaScript dependency is now served correctly in production mode
Tutorials
- Added description for the afterServerUpdate client-side method
All changes
Development Workflow Improvements and Components Demo Code Snippets
New features
- Prevent browser from caching templates while developing
- Now template changes are picked up after reload even if caching is not disabled in browser
- Generated Components Demo now displays the code for each sample
- Generated Components now produce protected API for methods that have a return type
- This allows to see what is not supported, and create a workaround for those in an extending class
Fixes
- Provide full bean name for proxied classes for easier debugging
- Do not break client side engine if
page.executeJavaScript()
invocation throws an error - Do not scroll to page top for each server response, but only when the URL has changed
Tutorials
- Added tutorial on Templates in Templates
- Fixed links in the template basic tutorial
All changes
Improved Java API generation
New features
- New generated components:
<paper-card>
,<paper-progress>
, and<paper-spinner>
- Generated component demo has been improved
- https://github.com/vaadin/flow-hello-world has been updated to better showcase that there are multiple ways of creating components
- Added generator support for cases where a property or method parameter can have multiple types
- Generated setters are fluid to allow chaining
- Event handling in generated components is now more typesafe
- All generated components are now defined to have a license header
Fixes
- HTML imports included in the initial HTML page are now placed after the polyfill
- Template parser will no longer try to load template files from the wrong location
- Missing type information is ignored instead of causing the generator to fail
- Prevent the page from being scrolled to the top already when clicking a router link
- Code blocks in generated JavaDocs are formatted properly
- Removed some cases where objects were created prematurely, most notably view instances that wouldn't be used
- Fixed some weird cases related to anchor URLs
Tutorials
- Fixed some cases where tutorial code didn't define any type parameter for the model type in
PolymerTemplate
implementations. - Updated the described DOM structure to be in sync with what the Java code in Creating a Component Based on Many Elements
All changes
Component generator demo and metadata, URI resolving from JavaScript, and HTML imports in the initial HTML
Component generator demo and metadata, URI resolving from JavaScript, and HTML imports in the initial HTML
Pre-release
Pre-release
New features
- Component API generator enhancements
- Added a
flow-components-demo
module that shows how the generated APIs are used - Updated to use Polymer Analyzer 2.0
- Added metadata to generated classes, e.g.
@HtmlImport
,@Tag
, JavaDocs, license header and version information baseUrl
setting is considered when determining the Java package of a generated class
- Added a
@Id
can be used forElement
fields in addition to previously supportedComponent
subclasses.- Server-side component instances are automatically created for corresponding elements in the HTML of
PolymerTemplate
instances.- Still only limited functionality, doesn't work together with e.g.
<dom-repeat>
or<dom-if>
.
- Still only limited functionality, doesn't work together with e.g.
- The webcomponents polyfill is loaded from the application's own
bower_components
directory instead of using an (outdated) version bundled with Flow. - Added
window.vaadin.resolveUri
for resolving Vaadin URIs from JavaScript. - Non-lazy HTML imports encountered during the initial request are added directly to the initial HTML instead of being injected dynamically from JavaScript.
Fixes
- Hyphens and underscores are properly converted to camelCase in generated code.
Breaking changes
- Initial HTML imports will be loaded at an earlier phase than previously. This will cause issues e.g. if the HTML import assumes that
document.body
is defined.
All changes
Component API generator enablers
New features
- Initial version of component API generation based on JSON metadata about a web component
- Still missing automatic JSON generation from the analyzer
- Updated Atmosphere to 2.4.5.vaadin2 to keep in sync with Vaadin Framework 8.x
Fixes
- Fixed some cases where the effective server-side and client-side model values could become out of sync
All changes
https://github.com/vaadin/flow/milestone/35?closed=1
Also all thanks to @gerald24 for the first external contribution done to Flow :-)
Yet another set of misc changes and fixes
New features
- HTML template corresponding to each
PolymerTemplate
is parsed to verify that there's actually an element corresponding to any@Id
annotation value. - Integrated initial version of a code generator that will eventually be used for generating Java APIs for all Core Elements
- Imported contribution guidelines from Vaadin Framework 8 and adjusted to suit Flow
BootstrapListener
now has access toVaadinUriResolver
.
Fixes
- Fixed a case where
@Id
injected elements were not fully functional in all cases - Fixed path resolution on Windows for legacy
AngularTemplate
cases. PolymerTemplate
no longer inherits a broken implementation ofHasChildView.setChildView(View)
.
Breaking changes
PolymerTemplate
no longer directly inheritsHasChildView
.- Some constants have been moved between
com.vaadin.server.Constants
andcom.vaadin.shared. ApplicationConstants
.
Demos
- Added Google signin demo
All changes
Production mode and bugfixes
New features
- When not in production mode,
frontend://
URLs will be resolved based on the assumed location of the original file instead of resolving to a URL in/es6/
or/es5/
. Thanks to this, changes to the application's own template files are used immediately without any separate build steps. - New
flow-server-production-mode
dependency that automatically sets the app to run in production mode if present on the classpath.
Fixes
- All traces of Polymer 1 have been removed.
- Model objects exposed to JavaScript are created with the standard
Object
prototype so that e.g.toString
is available. - Model objects exposed to JavaScript will no longer have enumerable properties for Flow metadata.
- Removed excessive logging about excessive imports.
- Fixed an IE11 compatibility issue
- The
UI.getElement()
now works as any other element.
Breaking changes
com.vaadin.flow.dom.EventRegistrationHandle
has been renamed tocom.vaadin.shared.Registration
for consistency with Vaadin Framework 8.Node.attachExistingElement
has been removed.- Prerendering has been removed
Demos
- All demos updated to not need rebuilding to pick up changes to HTML template files
Tutorials
- Updated Maven setup tutorial to reflect recent changes
All changes
Primitives in model lists and Polymer 2.0.0
New features
- Model lists can now use "primitive" types in addition to beans. In particular,
List<String>
is now fully supported as the type of model properties. - Polymer 2.0.0 is used in all demos and examples.
Fixes
- No longer setting the
async
attribute property for HTML imports because of browser compatibility issues List.clear()
can be used for model list proxies even if the item type doesn't have a default constructor.- The mechanism for resolving
@Id
elements has been improved to work consistently in all browsers.
Breaking changes
@Id
does no longer work with elements where theid
attribute has been set dynamically: theid
value must be present in the HTML template file.
Demos
- Added a Todo list demo that uses
@Id
.