Add option to use PushState instead of URI fragments in Navigator (#10042)
* Navigator now by default uses pushState and normal URLs
* added documentation for pushState and updated Navigator documentation
* improving docs etc, adding one TODO to be solved before merging
* pushState/replaceState no work better with changing titles
* Making uri fragment navigator work when not using specially mapped UI
* Revert to older default, add annotation for selecting
* Fix tests, add null checks
* Reorder if-clause, fix tests
* Revert unnecessary test change
* Use correct variable in UI, fix test clean up
* Updates to JavaDocs, fix some methods and tests
* Add comments, fix test ui, TODO for fallbacks
* Navigation documentation, JavaDocs, removed TODOs
* Documentation fixes
* Improve JavaDocs
* Fix link name in documentation
* Improve throws declaration in getLocation
* Change documentation about the PushState based navigation
* Add since tags
* Add since tags for UI
Add additional class names and style to components and error indicators to distinguish different error levels.
Vaadin 8 implementation of #9816. Cherry picked changes and added compatibility package component changes and tests.
Resolves #3139
Show validation error selecting invalid date from DateField (#10013)
Component error was cleared after selecting a date from
calendar popup, even if the date is invalid due to
validation errors or if user programmatically sets an UserError.
This change inverts the order of setValue() and setComponentError(null) in order
to preserve errors set by ValueChangeListeners (e.g. Binder validators).
Fixes #10011
Remove element explicitly when reordering tree grid rows (#9952)
Under certain circumstances IE 11 (11.0.45 / 11.0.9600.18762) produces an exception when collapsing/expanding rows (particularly the first child after the very first element) in a TreeGrid within a Window.
This workaround removes the row explicitly before inserting, instead of letting JS handle it.
Fixes #9850
Fix connector tracker cleanup for the case where a component is
hidden by a request and is made visible again by push.
This fixes a regression caused by #9305.
Fixes #9905
Force re-measurement of CheckBoxGroup and RadioButtonGroup (#9901)
The related tests have a workaround for another (Chrome specific) GridLayout bug #9921.
Those workarounds should be removed once that issue is fixed.
Fixes #9148
Avoid detaching VL/HL children unnecessarily (#9862)
When child components are removed from a
VerticalLayout/HorizontalLayout, do not remove other children from the
DOM if no other hierarchy changes are made.
Fixes #7713
Do not wait for icons to load before interacting with a combo box (#9717)
Icon load detection code does not handle error events so broken images
will cause tests to fail forever. In other cases also, it seems very
rare to need icons to be loaded before interacting with a combo box. If
there really are use cases for this, it would be better to have a method
to query if all icons are loaded so that special tests can use this method.
Fixes https://github.com/vaadin/testbench/issues/916
Ensure wrong Action is not executed after detaching a component (#9806)
Due to action key generation on ActionManager a wrong action
may be executed if the component that fired the wanted action
is already detached.
This patch makes action keys globally unique, simplifying the
approach of #8495 but reusing its tests.
Fixes #5864
Fix occasional empty rows in Table and TreeTable (#9800)
Picked from #9551 in 7.7
There's an intermittently happening issue with both Table and TreeTable,
which results in row data disappearing.
This change removes a method which is probably a vestigial one from over
five years ago and other changes are handling the things the method used
to perform. Currently the method removes rows deemed unnecessary from
the row buffer. The problem is, those rows are visible to the user and
removing causes row contents to be lost.
Also included are manually runnable test cases which demonstrate that
this removal actually prevents the issue from happening.
Fixes #7964
Fixes #5030
Re(set) calendar time after calculating rollAmount (#9479)
by calling calendar.setTime(today);
after rollAmount has been initialized and given a value, we can reset the calendar's internal time back to the correct date. As it is currently implemented; calling calendar.getTime() will result in a wrong date, it returns the first of the month with the correct time.
The function addInitialEvents() is called AFTER the calendar's time has been subtracted from (by calculating the rollAmount), as such this results in an incorrect internal time and the 'Day' button does not switch to the correct day. Instead it shows the first of the month here too.