Add 1px buffer to Escalator column natural widths. (#12075)
* Add 1px buffer to Escalator column natural widths.
The purpose of the buffer is to avoid subpixel handling issues,
especially when zoomed in or out.
In case fractions need to be adjusted for browser compatibility, round
up to ensure the contents have the space they need.
Fixes #12048
Add column width recalculation when vertical scrollbar hidden/shown. (#12058)
- If the Grid has any columns with non-fixed widths, the presence of a
vertical scrollbar affects the column width calculations. Horizontal
scrollbar should only be shown when actually needed.
If first attempt at scrolling doesn't succeed it's unlikely that
continuing to wait is going to make any difference. Cache should be
populated before triggering any actions that depend on the row being
visible, otherwise it should be enough to trust that scrollToRow
actually scrolls to row and once scrolling is done the row is as much in
view as it's going to get. This way we don't get into a situation where
Editor never opens because it's still waiting for that one last pixel
that can't be achieved thanks to browser zoom causing rounding errors.
Continues on #11672
Improvements to ScrollDestination sanity checks (#11772)
- The new top row logical index should always be within the logical
range and high enough up to avoid leaving a gap if possible.
- Added regression testing for using the different scroll destination
types for scrolling to the top and to the bottom by index.
Fixes #11732
Fix scrollTo for destination START and END and add regression testing. (#11707)
- Initial implementation erroneously assumed that
ScrollDestination.START would only be used for scrolling up and
ScrollDestination.END for scrolling down. That's obviously not what they
are for, otherwise everyone would be using ScrollDestination.ANY.
- Moved actual scrolling to within the helper method that originally
only calculated the new scroll position. Parent method became too long
otherwise.
Fixes #11706
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.
Improvements to detail row index handling. (#11345)
- Escalator should notify when an existing details row is moved to a new
index.
- Grid and DetailsManagerConnector should update their internal indexing
when details manager index changes in Escalator.
1) recalculate the offset, as ChromeDriver starts to follow the standard;
2) update screenshots;
3) correct the `click()` call with using coordinates, related to 1)
4) `sendkey()` with using key.modifier adjustment
5) add sleep
6) workaround for mastery failures
Fix for setting default row height for a Grid with details row(s) open. (#11326)
* Fix for setting default row height for a Grid with details row(s) open.
- Details row(s) should be taken into account when the rows are
re-positioned after getting new heights.
Fixes #11325
Fixes to displaying Grid in a detail row. (#11147)
- Multiple headers shouldn't stack behind each other.
- Body rows shouldn't get stuck to default row height.
- Compatibility version's hidable row selector shouldn't try to
calculate row heights based on rows that haven't been added to DOM yet.
Fixes #7674
* add role="row" and role="gridcell"
* optimize code and add additional rows for the header
* add simple test
* improve code and add rowgroup
* add debug log
* add more log to test
* remove debug test info and add role before appending to tr
* wording - change contains to contain
* create enum for magic strings, change comments and method signature
* rename enum to be singular and rename param roleName to role
* update javadoc, rename and make enum public
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
WIP: Allow differentiating touch scroll from DnD (#9309)
* Allow differentiating touch scroll from DnD
Provide Escalator API to check if a touch scroll is active, and to
specify a delay after which a non-moving touch should not scroll.