TableView expandable rows: rendering + interactions (#4663)
* start implementing toggle chevron
* expandable-rows-start
* add padding based on level
* improve padding offset
* update level logic
* use usePress for expand button
* cleanup styles
* add keyboard interactions
* fix rendering chevron on static example
* use expand as row action if none provided
* fix chevron rendering
* only keyboard toggle if expandable
* cleanup
* types
* skip two focus tests
* fix chevron position in RTL
* handle cases of controlled & not updating expanded
* fixing crash when collapsing rows
* Adjusting so chevron appears on first row header cell
* fix messed up merge conflict
* remove edge case check
* fix deps
* check for props.childItems instead of link
* making chevron focusable by screen readers
* Support Enter/press on chevron cell to expand/collapse row
seems to interfere with row actions...
* update offset logic
* update offset logic again
* fix crashes when switching between selectionMode/styles and fix tests
* fixing indenting
* Get rid of cell action since it blocks row actions
* fix expansion button rendering
* Fix chevron disappearance when selectioncheckboxs are added
The columnCount from the collection includes the drag handle and selection columns, messing up the check for if a static row is expandable. Updated to add a counter in the collection that represents the number of columns without the drag handle and selection column so we can easily tell if a static row has nested rows as children without needing to iterate over the children every time
* adjusting row header id placement so it doesnt include the chevron label
* fix selection extension for nested rows when using shift + click/arrow keys
compareNodeOrder didnt handle cases where the compared nodes were of different level and one of the nodes was a top level node OR if one node contained the other node
* fixing logic for compareNodeOrders
* Adding tests for compareNodeOrder updates + range selection
---------
Co-authored-by: Daniel Lu <dl1644@gmail.com>