A table keeps each row's height on its cells, corrected after every
layout through a transaction. A read-only editor applies no transaction
(EditorState.apply returns while it isn't editable), so a table shown
read-only kept the heights it was stored with, or the default of one
line: a cell of several lines ran over its row's borders. The table's
own height (colsHeight) already took the read-only case in place; the
rows' heights now do the same. Upstream's main has the same code.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi
* feat: table navigation using TAB key
* feat: shift+tab for reverse navigation in table
* chore: circular traversal for arrow left and right
* test: added tests for tab and shift-tab commands in Table
* test: added tests for arrow left and right in table
* test: added corner case for tab and shift tab
* refactor: made changes as per the review
* refactor: Apply suggestions from code review
Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
---------
Co-authored-by: Lucas.Xu <lucas.xu@appflowy.io>
* fix: table padding when it gets scrolled
The handler was getting out of region when table width was wider
than editor size.
* fix: modify scroll view padding
* fix: better column resize performance
* fix: resizing the table won't send transaction
* fix: lost selection after inserting table block
* fix: test
* refactor: don't pass editorState to TableNode
pass only transaction to methods directly.
* refactor: reduce extra transactions
* fix: mitigate Appflowy transaction adapter problem
With current transaction adapter in Appflowy which creates `BlockActionPB`
for `documentService` (backend). Its not possible to have multiple
`InsertOperation`s separately as a single transaction (multiple
`transaction.insertNode()`). The `BlockActionPB` creator (`toBlockAction`)
can't figure out the `prevId` (previous node of inserting node id), The
first insert operations shifts all next nodes path.
Because of this situation we decided to apply the insert operations one by
one.
* fix: table actions keep selection
* fix: on add col|row respect row|col bg color
* refactor: moving cell related keys to TableCellBlockKeys
* style: dart format
---------
Co-authored-by: Mohammad Zolfaghari <zidom72@gmail.com>