[PR #3337] [CLOSED] feat: Support Panes for AppFlowy #5682

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

📋 Pull Request Information

Original PR: https://github.com/AppFlowy-IO/AppFlowy/pull/3337
Author: @squidrye
Created: 9/4/2023
Status: Closed

Base: mainHead: feat-panes-2312


📝 Commits (10+)

📊 Changes

56 files changed (+2914 additions, -820 deletions)

View changed files

frontend/appflowy_flutter/integration_test/panes/panes_overlay_test.dart (+123 -0)
frontend/appflowy_flutter/integration_test/panes/panes_test.dart (+73 -0)
📝 frontend/appflowy_flutter/integration_test/runner.dart (+9 -4)
📝 frontend/appflowy_flutter/integration_test/tabs/tabs_test.dart (+4 -4)
📝 frontend/appflowy_flutter/integration_test/util/common_operations.dart (+40 -2)
📝 frontend/appflowy_flutter/lib/plugins/document/document.dart (+7 -9)
📝 frontend/appflowy_flutter/lib/plugins/document/document_page.dart (+5 -4)
📝 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/built_in_page_widget.dart (+3 -10)
📝 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart (+2 -7)
📝 frontend/appflowy_flutter/lib/plugins/trash/menu.dart (+3 -3)
📝 frontend/appflowy_flutter/lib/plugins/util.dart (+7 -0)
📝 frontend/appflowy_flutter/lib/startup/deps_resolver.dart (+5 -3)
📝 frontend/appflowy_flutter/lib/startup/plugin/plugin.dart (+4 -0)
frontend/appflowy_flutter/lib/workspace/application/panes/pane_node_bloc/pane_node_bloc.dart (+87 -0)
frontend/appflowy_flutter/lib/workspace/application/panes/panes.dart (+49 -0)
frontend/appflowy_flutter/lib/workspace/application/panes/panes_bloc/panes_bloc.dart (+138 -0)
frontend/appflowy_flutter/lib/workspace/application/panes/panes_bloc/panes_event.dart (+44 -0)
frontend/appflowy_flutter/lib/workspace/application/panes/panes_bloc/panes_state.dart (+23 -0)
frontend/appflowy_flutter/lib/workspace/application/panes/panes_service.dart (+205 -0)
frontend/appflowy_flutter/lib/workspace/application/tabs/tabs_bloc.dart (+0 -92)

...and 36 more files

📄 Description

Feature Preview

https://github.com/AppFlowy-IO/AppFlowy/assets/84044317/7c98c24b-a965-4505-afaa-a5b985a72ef1


#2312 This PR targets implementation of multi-panes
cc @Xazin

#3237 Reopening this PR, had to delete my older fork because I had pushed private code due to local git misconfiguration 😢

PR Checklist

  • My code adheres to the AppFlowy Style Guide
  • I've listed at least one issue that this PR fixes in the description above.
  • I've added a test(s) to validate changes in this PR, or this PR only contains semantic changes.
  • All existing tests are passing.

Todos

  • Decide and implement data structure for panes
  • Map n-ary tree to bloc for state management, allow opening and closing of panes
  • Refactor existing tabs implementation to each pane node
  • Link each pane to correct plugin and view
  • Resizable panes
  • Setup drag and drop for tabs
  • Setup drag and drop for panes
  • Allow horizontal/ vertical scroll for stacked panes based on visible viewport
  • Stack panes over another (Sliding panes)
  • Refactor other features which might break due to this (Mostly scroll related issues)
  • Enable drag and drop across views, tabs and panes
  • Handle edge cases for view -> tab & tab -> tab drops
  • Handle edge cases for view -> pane & tab -> pane drops
  • Refactor cross-draggable entity for better reusability
  • Might need a better design spec for tab-bar, with/without tabs
  • Tests

🔄 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/3337 **Author:** [@squidrye](https://github.com/squidrye) **Created:** 9/4/2023 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat-panes-2312` --- ### 📝 Commits (10+) - [`76bf6cf`](https://github.com/AppFlowy-IO/AppFlowy/commit/76bf6cfd249d801f825a95b159597972a15af116) feat: added handlers for panes - [`d33456a`](https://github.com/AppFlowy-IO/AppFlowy/commit/d33456a6e2e269aece1aeba006a5505b6bc8a8c7) feat: added model for panes - [`8ca1baa`](https://github.com/AppFlowy-IO/AppFlowy/commit/8ca1baa1b1c4db41e73a8736b057748eb3895337) feat: added state managers for panes - [`54ea96f`](https://github.com/AppFlowy-IO/AppFlowy/commit/54ea96f516a45f4ce9e4ce5fb7ed6475160c956c) feat: implemented recursive build for homestack panes - [`12175da`](https://github.com/AppFlowy-IO/AppFlowy/commit/12175daced0b32a50cedb9ea519a5420864b189d) feat: added temporary splitRight and splitDown to view menu - [`8cf5b13`](https://github.com/AppFlowy-IO/AppFlowy/commit/8cf5b1309774b5a7d2897d77629494cd76c77281) Merge branch 'main' of https://github.com/AppFlowy-IO/AppFlowy into feat-panes-2312 - [`831b18e`](https://github.com/AppFlowy-IO/AppFlowy/commit/831b18ee18b44e6cee67a06db8607bfd28693708) feat: delegated tabs logic to active pane - [`df9c933`](https://github.com/AppFlowy-IO/AppFlowy/commit/df9c9334f7f887c0c4c9bfe0f57afca3b5891da3) refactor: converted panes handler into single service - [`bf8d37f`](https://github.com/AppFlowy-IO/AppFlowy/commit/bf8d37fef2e2eda97e6ce30ca5382b2641fae0ab) feat: added panes bloc - [`1ba3c1e`](https://github.com/AppFlowy-IO/AppFlowy/commit/1ba3c1e17eeb6ddf9d6bb52ac9d02290b7ba0f94) Merge branch 'main' of https://github.com/AppFlowy-IO/AppFlowy into feat-panes-2312 ### 📊 Changes **56 files changed** (+2914 additions, -820 deletions) <details> <summary>View changed files</summary> ➕ `frontend/appflowy_flutter/integration_test/panes/panes_overlay_test.dart` (+123 -0) ➕ `frontend/appflowy_flutter/integration_test/panes/panes_test.dart` (+73 -0) 📝 `frontend/appflowy_flutter/integration_test/runner.dart` (+9 -4) 📝 `frontend/appflowy_flutter/integration_test/tabs/tabs_test.dart` (+4 -4) 📝 `frontend/appflowy_flutter/integration_test/util/common_operations.dart` (+40 -2) 📝 `frontend/appflowy_flutter/lib/plugins/document/document.dart` (+7 -9) 📝 `frontend/appflowy_flutter/lib/plugins/document/document_page.dart` (+5 -4) 📝 `frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/built_in_page_widget.dart` (+3 -10) 📝 `frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/mention/mention_page_block.dart` (+2 -7) 📝 `frontend/appflowy_flutter/lib/plugins/trash/menu.dart` (+3 -3) 📝 `frontend/appflowy_flutter/lib/plugins/util.dart` (+7 -0) 📝 `frontend/appflowy_flutter/lib/startup/deps_resolver.dart` (+5 -3) 📝 `frontend/appflowy_flutter/lib/startup/plugin/plugin.dart` (+4 -0) ➕ `frontend/appflowy_flutter/lib/workspace/application/panes/pane_node_bloc/pane_node_bloc.dart` (+87 -0) ➕ `frontend/appflowy_flutter/lib/workspace/application/panes/panes.dart` (+49 -0) ➕ `frontend/appflowy_flutter/lib/workspace/application/panes/panes_bloc/panes_bloc.dart` (+138 -0) ➕ `frontend/appflowy_flutter/lib/workspace/application/panes/panes_bloc/panes_event.dart` (+44 -0) ➕ `frontend/appflowy_flutter/lib/workspace/application/panes/panes_bloc/panes_state.dart` (+23 -0) ➕ `frontend/appflowy_flutter/lib/workspace/application/panes/panes_service.dart` (+205 -0) ➖ `frontend/appflowy_flutter/lib/workspace/application/tabs/tabs_bloc.dart` (+0 -92) _...and 36 more files_ </details> ### 📄 Description <!--- Thank you for submitting a pull request to AppFlowy. The team will dedicate their best efforts to reviewing and approving your pull request. If you have any questions about the project or feedback for us, please join our [Discord](https://discord.gg/wdjWUXXhtw). --> <!--- If your pull request adds a new feature, please drag and drop a video into this section to showcase what you've done! If not, you may delete this section. --> ### Feature Preview https://github.com/AppFlowy-IO/AppFlowy/assets/84044317/7c98c24b-a965-4505-afaa-a5b985a72ef1 <!--- List at least one issue here that this PR addresses. If it fixes the issue, please use the [fixes](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests) keyword to close the issue. For example: fixes https://github.com/AppFlowy-IO/AppFlowy/pull/2106 --> --- #2312 This PR targets implementation of multi-panes cc @Xazin #3237 Reopening this PR, had to delete my older fork because I had pushed private code due to local git misconfiguration 😢 <!--- Before you mark this PR ready for review, run through this checklist! --> #### PR Checklist - [x] My code adheres to the [AppFlowy Style Guide](https://appflowy.gitbook.io/docs/essential-documentation/contribute-to-appflowy/software-contributions/submitting-code/style-guides) - [x] I've listed at least one issue that this PR fixes in the description above. - [x] I've added a test(s) to validate changes in this PR, or this PR only contains semantic changes. - [x] All existing tests are passing. #### Todos - [x] Decide and implement data structure for panes - [x] Map n-ary tree to bloc for state management, allow opening and closing of panes - [x] Refactor existing tabs implementation to each pane node - [x] Link each pane to correct plugin and view - [x] Resizable panes - [x] Setup drag and drop for tabs - [x] Setup drag and drop for panes - [x] Allow horizontal/ vertical scroll for stacked panes based on visible viewport - [x] Stack panes over another (Sliding panes) - [x] Refactor other features which might break due to this (Mostly scroll related issues) - [x] Enable drag and drop across views, tabs and panes - [x] Handle edge cases for view -> tab & tab -> tab drops - [x] Handle edge cases for view -> pane & tab -> pane drops - [ ] Refactor cross-draggable entity for better reusability - [ ] Might need a better design spec for tab-bar, with/without tabs - [x] Tests --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror 2026-03-23 22:19:49 +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#5682
No description provided.