Updated row and spacer handling for Escalator (#11438)
Updated row and spacer handling for Escalator.
Main changes:
- Spacers are only maintained and checked for rows that have DOM
representation, and not at all if there is no details generator. This
gives notable performance improvements to some particularly large Grids
- Escalator no longer tries to trim away any rows that don't fit within
the viewport just because a details row gets opened in Grid. This leads
to some increase in simultaneous DOM elements, but simplifies the logic
considerably. For example opening or closing details rows doesn't
require checking the overall content validity beyond the details row
itself anymore, but some repositioning at most. There are also no longer
any orphaned spacers without corresponding DOM rows.
- Spacers are better integrated into the overall position calculations.
- Some public methods that are no longer used by Escalator or have
changed functionality or order of operations. Any extending classes that
tap into row, spacer, or scroll position handling are likely to need
reworking after this update.
- Auto-detecting row height is delayed until Escalator is both attached
and displayed.
Fix an NPE caused by the previous fix to Grid's frozen columns (#11444)
* Fix an NPE caused by the previous fix to Grid's frozen columns (#10653)
If the user managed to get two frozen column count changes into a single server round-trip before the component had been attached, the previous fix #11346 lead to a null pointer exception since there was no diff state available.
This fix adds a null check before removing the frozen column count value from the diff state so that this will not happen.
Closes #10653
* add possibility to configure nested null behavior to Grid.Column
* added addColumn method that allows configuring the nested null handling behavior of the column
* added uitest for nested null value handling, implements #11137
Fix Grid's frozen columns not being set (#10653) (#11346)
In certain cases setting the frozen columns didn't produce the expected result in the client side widget state. This happened if the frozen columns value was set to be the same it was before removeAllColumns was called.
This fix removes the frozen column value from the diff state so that the value gets properly set in the client side.
Closes #10653
Also update declarative writing to use true instead of "" for empty
attributes because of changed defaults in JSoup. For v7, the tests are
updated instead of touching the implementations.
* Rename HierarchicalDataCommunicator#getMapper to getHierarchyMapper
* Make rpc field in Notification private
* Change DropIndexCalculator.ALWAYS_DROP_TO_END to a generic static method
* Move EditorImpl#editRow documentation to the interface level
* Correct GridDragEndEvent, GridDragStartEvent constructor javadocs
* Revert SharedState.registeredEventListeners to a Set
* Rename GridDropTarget dropAllowedOnSortedGridRows
* Rename ColumnState.contentMode to tooltipContentMode
Grid column to be sortable when implemented/supported (Fixes #8792). (#10190)
* Grid column to be sortable when implemented/supported
* Fix GridDeclarativeTest
* Parameterize to Grid<Person>
* Revert Parameterize to Grid<Person>, JDK with generics.
* Assertions for other columns
* Fix test
Fixes #8792