[PR #2120] [CLOSED] Table Plugin #5107

Closed
opened 2026-03-23 22:17:16 +00:00 by mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/AppFlowy-IO/AppFlowy/pull/2120
Author: @zoli
Created: 3/27/2023
Status: Closed

Base: mainHead: feat/table-plugin


📝 Commits (10+)

  • e14edf4 feat: WIP on table plugin
  • fec3cd7 feat: table duplicate
  • 3e68700 feat: basic reich-text support
  • a0ef074 chore: build table based on table data model
  • dc4ed02 fix: table data model import name
  • 993219c fix: bring back table data model after rebase
  • cb9323a fix: whole row height changing with cell edit
  • bf7c021 fix: also go for horizontal closest in _getNodeInOffset
  • 12616dc fix: move action menu outside table
  • 84dbf1e fix: border size and node fill table cell

📊 Changes

2 files changed (+11 additions, -1 deletions)

View changed files

📝 frontend/appflowy_flutter/lib/plugins/document/document_page.dart (+11 -0)
frontend/appflowy_flutter/packages/appflowy_editor_plugins/test/appflowy_editor_plugins_test.dart (+0 -1)

📄 Description

  • New Node types 'table' and 'table/cell'. The 'table/cell' node for now contains single TextNode. All the data is kept in node attributes. Data related to 'table' like number of rows and columns are in 'table' node attributes and data related to each table cell is in 'table/cell' node attribute (cell height, position of cell its row and column). The TextNode in table cell supports selection menu and toolbar but not all of them work inside the table cell (some of them are not applicable in table cell).
  • Added isApplicable to ContextMenuItem so we can have context-base context menu
  • Modified backspaceEventHandler so it won't move from one table cell to another cell and also handling backspace when the selection includes part of table cells and none table related nodes.
  • Modified _getNodeInOffset so selection also works when we have multiple nodes in a single line (same y position). I will add more info on this in another comment.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/AppFlowy-IO/AppFlowy/pull/2120 **Author:** [@zoli](https://github.com/zoli) **Created:** 3/27/2023 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/table-plugin` --- ### 📝 Commits (10+) - [`e14edf4`](https://github.com/AppFlowy-IO/AppFlowy/commit/e14edf4ec8a0139fda5e2b66fb2d7ecdc2b27440) feat: WIP on table plugin - [`fec3cd7`](https://github.com/AppFlowy-IO/AppFlowy/commit/fec3cd7f64d8171b22432f8450d4240a2f6a04ee) feat: table duplicate - [`3e68700`](https://github.com/AppFlowy-IO/AppFlowy/commit/3e6870040e40ac5a3dd716a722181c40a26275a4) feat: basic reich-text support - [`a0ef074`](https://github.com/AppFlowy-IO/AppFlowy/commit/a0ef074fb3683007d10a607a49e3b9d424523c39) chore: build table based on table data model - [`dc4ed02`](https://github.com/AppFlowy-IO/AppFlowy/commit/dc4ed0278be896ec6769e715971df69a4e950366) fix: table data model import name - [`993219c`](https://github.com/AppFlowy-IO/AppFlowy/commit/993219cf3e6b5f1b1c47dff092f823c22f50d49b) fix: bring back table data model after rebase - [`cb9323a`](https://github.com/AppFlowy-IO/AppFlowy/commit/cb9323a00db26a38cca9a49caea50933469a63e6) fix: whole row height changing with cell edit - [`bf7c021`](https://github.com/AppFlowy-IO/AppFlowy/commit/bf7c021997e7447aee108dc66eaa803707ef10df) fix: also go for horizontal closest in _getNodeInOffset - [`12616dc`](https://github.com/AppFlowy-IO/AppFlowy/commit/12616dca2673162ff0fae0c8e05520c415cb2e8c) fix: move action menu outside table - [`84dbf1e`](https://github.com/AppFlowy-IO/AppFlowy/commit/84dbf1ecab377cd71364e1c8e00a9f62ba073895) fix: border size and node fill table cell ### 📊 Changes **2 files changed** (+11 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `frontend/appflowy_flutter/lib/plugins/document/document_page.dart` (+11 -0) ➖ `frontend/appflowy_flutter/packages/appflowy_editor_plugins/test/appflowy_editor_plugins_test.dart` (+0 -1) </details> ### 📄 Description - New `Node` types 'table' and 'table/cell'. The 'table/cell' node for now contains single `TextNode`. All the data is kept in node attributes. Data related to 'table' like number of rows and columns are in 'table' node attributes and data related to each table cell is in 'table/cell' node attribute (cell height, position of cell its row and column). The `TextNode` in table cell supports selection menu and toolbar but not all of them work inside the table cell (some of them are not applicable in table cell). - Added `isApplicable` to `ContextMenuItem` so we can have context-base context menu - Modified `backspaceEventHandler` so it won't move from one table cell to another cell and also handling backspace when the selection includes part of table cells and none table related nodes. - Modified `_getNodeInOffset` so selection also works when we have multiple nodes in a single line (same y position). I will add more info on this in another comment. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror 2026-03-23 22:17:16 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
AppFlowy-IO/AppFlowy#5107
No description provided.