mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
* dbeaver/pro#4583 feat: add tab reordering functionality in NavigationTabsService * dbeaver/pro#4583 feat: update tab filtering to support tabs order * dbeaver/pro#4583 feat: add tab drag-and-drop functionality and associated tests * dbeaver/pro#4583 feat: implement tab drag-and-drop functionality * dbeaver/pro#4583 fix: adjust tab reordering logic to handle dragged tab position correctly since our reordering logic is duplicating in two components and, moreover, I found a bug in one of the implementations, I decided to put all the common logic to a dedicated helper with test coverage to be sure we use the right logic everywhere. * dbeaver/pro#4583 test: remove redundant tests for onReorder in useTabDragAndDrop * dbeaver/pro#4583 refactor: update reorderTab method to remove return value * dbeaver/pro#4583 feat: add tab reordering functionality to SqlResultTabs component * dbeaver/pro#4583 feat: add tabs order persistence via useUserData hook * dbeaver/pro#4583 feat: integrate react-dnd for tab drag-and-drop functionality * dbeaver/pro#4583 chore: update deps * dbeaver/pro#4583 feat: integrate @dbeaver/js-helpers for array reordering in useHeaderDnD * dbeaver/pro#4583 refactor: simplify reorderArray implementation by extracting some logic to helpers * dbeaver/pro#4583 refactor: extracted tab reordering to a separate hook - moved the tab order persistence logic into a new useTabOrderPersistence hook to make the flow is more obvious (we use this default persistence only with tabs container) - introduced new reorderStateKey tab state to have an identifier for a tab panel, use it in canDrop check to prevent cross-panel DnD -replaced reorderable prop with reorderStateKey, because without a key you can't use reordering * dbeaver/pro#4583 refactor: add dropAllowed state to useTabDragAndDrop for improved drag-and-drop UI * dbeaver/pro#4583 chore: add a comment about reorderStateKey * dbeaver/pro#4583 refactor: add safe guard in SqlResultTabs.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * dbeaver/pro#4583 refactor: wrap onReorder function into useCallback for improved performance * dbeaver/pro#4583 refactor: remove applyOrder method from ITabsContainer and update useTabOrderPersistence to not have dependencies on container * dbeaver/pro#4583 refactor: use refactored hook in SideBarPanel and ToolsPanel Since we are not mutating a container state anymore, we have to update sorting separately in TabList level because it reads directly from the container. * dbeaver/pro#4583 refactor: remove fallback for stateKey * dbeaver/pro#4583 refactor: replace hardcoded values with constants in useTabDragAndDrop * dbeaver/pro#4583 refactor: add DragPosition type * dbeaver/pro#4583 refactor: remove dependencies in TabsState effect * dbeaver/pro#4583 refactor: remove stateKey from useTab hook * dbeaver/pro#4583 feat: add panelId prop to SideBarPanel and use as persistence key * dbeaver/pro#4583 refactor: persistence key in useTabOrderPersistence * dbeaver/pro#4583 feat: add reorderArrayWithOrder helper and update SqlResultTabs to use it --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com> Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>