* dbeaver/pro#8068 fix: FormPart reload after save: race condition between loaded=false and savingPromise
Problem:
FormPart.save() sets loaded=false after successful save, expecting
useAutoLoad to call load() and reload data from server. However,
load() is blocked by formState.savingPromise guard (added recently in dbeaver/pro#8151, 9c406a4e1e),
which is only cleared later in FormState.save() finally block.
By the time savingPromise is cleared, no observable changes trigger
a React re-render, so useAutoLoad never retries — loaded stays false
forever and isChanged always returns false, permanently disabling
the Save button.
Solution:
Make FormPart.save() self-contained by adding an inline post-save
reload. After saveChanges(), set loaded=false (so setInitialState
resets both initialState and state), call loader() directly, then
set loaded=true. This eliminates the dependency on the external
useAutoLoad mechanism for post-save reload, avoiding the race
condition with savingPromise entirely.
* dbeaver/pro#8068 fix(Combobox): preserve custom value on Enter key press
When allowCustomValue is enabled, pressing Enter was selecting
an auto-highlighted item from the dropdown instead of keeping
the user's typed value. Disable autoSelect and close the popover
via Ariakit store on Enter to match the blur behavior.
* dbeaver/pro#8068 fix: after saveChanges(), reset state synchronously via setInitialState
* dbeaver/pro#8068 fix: remove redundant state loading in FormPart class
* dbeaver/pro#8068 feat: improve loadable state handling in useAutoLoad and FormPart
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#8279 feat: rename CloudBeaver CE to CloudBeaver Community across multiple files
* dbeaver/pro#8279 ci: remove unused dependency
* dbeaver/pro#8279 feat: remove unnecessary description fields in plugin.xml and defaultServerConfig.ts
* dbeaver/pro#8279 feat: update copyright year and remove product description fields in multiple locale files
* dbeaver/pro#8279 feat: return product version back to Logo component
* dbeaver/pro#8279 fix: remove exclamation mark from easy config heading
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Initial translation of a menu led to a unwanted hover effect on a first item due to menu and trigger overlapping. Removing this property fixes the problem and the menu still has a nice animation effect, thanks to opacity and scale
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#8048 pass commit message validation
* fixes json + translations
* fixes gis generation
* uses format action to get text value for sql generators
* dbeaver/pro#4999 feat: add TableStatusIndicator component and update tooltips for key detection
* dbeaver/pro#4999 feat: update TableStatusIndicator to handle read-only connection state and improve tooltips
* dbeaver/pro#4999 feat: use new backend endpoint to provide info about identifier
* dbeaver/pro#4999 refactor: simplify TableStatusIndicator by removing props and using context directly
* dbeaver/pro#4999 refactor: move hasElementIdentifier to ResultSetDataSource
* pr fixes
* fixes indicator center position + removes duplicated translation
* fixes contrast for color-status (JSON edit row + keys indicator for tables)
---------
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#6306 api for original query
* uses original query from backend for sql data source
* adds description for popup
* removes message
* fixes creating dataset from grouping panel
* adds new full query abstraction
* pr fixes
---------
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
* dbeaver/pro#8202 decreases border for radio buttons + matches border colors
* fixes checkboxes and radios space conflicts so it aligned on the left and has correct spacing with text also
* reverts margin top for checkboxes
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#7614 adds first implementation of grid history action (has bugs)
* some pr fixes
* replace last instead of update method
* adds history compression to cell edit
* add add row history for undo/redo
* adds history for delete row
* adds duplicate row undo/redo
* adds history for revert action
* clears history inside edit clear action
* refactors the undo/redo history to have more clean structure
* cleanup
* adds limits to history
* uses data viewer undo/redo actions
* cleanup for undo/redo actions + adds to the top of table icons
* applies tooltips for the header table only
* removes createEditorDataAccess (refactor)
* removes getPrevCellValue (refactor)
* bug fix: add row, change something, delete row, undo/redo in this history
* adds more specific function naming
* Revert "bug fix: add row, change something, delete row, undo/redo in this history"
This reverts commit 5f1799fe26.
* adds batching history to the adding/deleting operations
* refactors GridHistoryHandlers & GridEditAction API + fixes the bug with deleting added row
* handling edge cases
* cleanup
* pr fixes
* refactor: removes extra interfaces, uses addRow for duplication rows action, handlers cleanup
* refactors the code to split editor changes to private and edits, history & action executions to public methods
* Revert "refactors the code to split editor changes to private and edits, history & action executions to public methods"
This reverts commit 374201179a.
* refactor: removes duplications of the code
* cleanup
* fixes menu bar item tooltip
* fixes labels
* removes get action info
* hides undo/redo for readonly table action
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#7626 bumps yarn locks
* updates globals
* bumps subscript major version
* bumps react-data-grid
* fixes react-data-grid checksum
* bumps yarn.lock
* reverts 'true' & 'false' literals for ObjectPropertyInfo
* reverts subscript to ver v9 due to poor v10 library support (it is not working api)
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#7555 adds autocomplete on tab + refactors shortcuts api
* adds unit tests for getCommonAndOSSpecificKeys
* uses prec.high to give some space to overriding shortcuts
* reverts keysWin + fixes the tests
* pr fixes
* adds escape editor shortcut to the shortcuts helper
* shows only 1 shortcut for autocomplete + shows os specific keys first in help doc
* fixes shortcuts so no repeats applied
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#7772 adds truncated tooltips for context menus
* dbeaver/pro#7772 adds " ... " for long labels
* adds unit tests
* Update webapp/packages/core-blocks/src/Menu/MenuItemElement.tsx
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
* adds binding for delete row
* removes tooltips
* fixes tree filters clipping
* clips only names, not whole labels
* clips only names, not whole labels [2]
* reverts getBindingLabels + fixes the os specific keys to show it first
* clips only names, not whole labels [3]
* dbeaver/pro#7772 simplifies keys helpers logic
---------
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#7855 feat: Add setting to use the user's OS formatting for numbers and dates
* dbeaver/pro#7855 refactor: update OS formatting option value in DataGridSettingsService
* dbeaver/pro#7855 feat: implement OS formatting for date and time in DataGrid
* dbeaver/pro#7855 feat: implement user-specific formatting for numbers in DataGrid
* dbeaver/pro#7855 feat: add translations
* dbeaver/pro#7855 style: update date formatter
* dbeaver/pro#7855 feat: add locale-specific formatting options for DataGrid settings
* dbeaver/pro#7855 feat: add support for locale-specific formatting with regions
* dbeaver/pro#7855 refactor: move date type detection to the grid level
* dbeaver/pro#7855 refactor: simplify cell formatter selection logic
* dbeaver/pro#7855 refactor: move formatting to a separate context
* dbeaver/pro#7855 refactor: optimize extended date kind retrieval logic
* dbeaver/pro#7855 fix: tw class names
* dbeaver/pro#7855 refactor: change caching mechanism and other improvements
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#7025 moves shortcuts for data editor to plugin-data-viewer and reuses it in shortcuts helper plugin
* adds save binding to data editor
* adds cancel shortcut
* changes save shortcut
* dbeaver/pro#7025 change binding key
* uses mod+. shortcut for cancel action (data editor)
* Revert "uses mod+. shortcut for cancel action (data editor)"
This reverts commit c5b375c2cf.
* adds mod+. shortcut for cancel
* adds shortcut for mac for deleting row in table
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
* dbeaver/pro#5232 feat: add Dialog component to UI-kit
* dbeaver/pro#5232 feat: add slide variant for Dialog component
* dbeaver/pro#5232 refactor: dialog backdrop component
* dbeaver/pro#5232 feat: use dialog component for side panel to prevent focus escaping
* dbeaver/pro#5232 feat: add DialogHeader, DialogBody, and DialogFooter components for improved dialog layout
* dbeaver/pro#5232 feat: add Storysource addon to Storybook configuration
* dbeaver/pro#5232 refactor: use ui-kit dialog for CommonDialog implementation
* dbeaver/pro#5232 feat: add animated prop to Dialog component to control animations
* dbeaver/pro#5232 refactor: remove dialog animation for side panel
* dbeaver/pro#5232 refactor: remove unused backdrop and focus management logic from DialogsPortal
now handled by ariakit dialog component
* dbeaver/pro#5232 style: adjust dialog padding and size for large variant
* dbeaver/pro#5232 feat: add dialog to admin part implementation
* dbeaver/pro#5232 fix: remove autofocus prop from CommonDialogWrapper in AuthDialog and DriverSelectorDialog
* dbeaver/pro#5232 style: correct apostrophe in label text for NestedDialogs component
* dbeaver/pro#5232 fix: update dialog component styles for improved accessibility and layout
* dbeaver/pro#5232 refactor: add DialogElement component to get rid of code duplication
* dbeaver/pro#5232 fix: correct min-width for large fixedWidth dialog size
* dbeaver/pro#5232 refactor: update DialogElement properties for improved focus management
* dbeaver/pro#5232 fix: use l10n for DialogElement close buttons
* dbeaver/pro#5232 refactor: update DialogElement to be a modal to trap focus
* dbeaver/pro#5232 refactor: remove unmountOnHide prop from CommonDialogWrapper
* dbeaver/pro#5232 feat: return ESC hotkey handling in SlideBox
* dbeaver/pro#5232 feat: make background panel inert to make focus never reach hidden panel
* dbeaver/pro#5232 feat: add SlidePanel component to replace DialogElement by removing Dialog
* dbeaver/pro#5232 feat: add inert prop to SlideElement for focus trapping in visible part
* dbeaver/pro#5232 feat: pass onClose handler to SlideBox to activate hotkey
* dbeaver/pro#5232 style: return to initial state to avoid redundant diffs
* dbeaver/pro#5232 style: update copyright year in SlideElement.module.css
* dbeaver/pro#5232 chore: remove ui-kit dependency from package.json and tsconfig.json
* dbeaver/pro#5232 build: update @storybook/addon-storysource dependency version
* dbeaver/pro#5232 build: update @storybook/addon-storysource dependency version
* dbeaver/pro#5232 style: remove border styles from dialog header and footer
* dbeaver/pro#5232 fix: update hover background color for icon button
* dbeaver/pro#5232 feat: move focus from driver dialog to panel when applicable
* dbeaver/pro#6326 fix: large window size
* dbeaver/pro#5232 fix: update focus on hide logic
* dbeaver/pro#5232 fix: update hover and focus styles for icon button in SlidePanel
* dbeaver/pro#5232 feat: return back the common backdrop, replace common fallback to spinner
* dbeaver/pro#5232 fix: replace useFocus by dialog's initial focus in Rename dialog
* dbeaver/pro#5232 build: update deps after merge
* dbeaver/pro#5232 refactor: use constant for button id
* dbeaver/pro#5232 feat: add Loader component to DialogsPortal
* dbeaver/pro#5232 refactor: update Dialog component to use semantic HTML elements for header and footer
* dbeaver/pro#5232 fix: gap in footer of dialogs
* dbeaver/pro#5232 feat: focus input initially in New Folder dialog
* dbeaver/pro#5232 feat: add autoFocusOnShow prop to CommonDialogWrapper for improved focus management
* dbeaver/pro#5232 fix: padding for CommonDialogFooter
---------
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>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#7798 fix: remove unwanted wrapper and relevant CSS module
* dbeaver/pro#7798 feat: add refresh action to user administration tools menu
* dbeaver/pro#7798 fix: add loader to context menu rendering
The menu was failing to open on first click due to lazy-loaded custom items (ContextMenuSearchItem) suspending the entire top navigation bar on initial load, causing portal recreation and loss of open state. Wrapped menu items in a local Loader to ensure lazy components load within the popover without affecting the parent component.
* dbeaver/pro#7798 fix: use suspense for each renderMenuItem
* dbeaver/pro#7798 refactor: simplify orderItems method in CreateUserBootstrap
* dbeaver/pro#7798 fix: fix menuBarItem styles
* dbeaver/pro#7798 refactor: update CreateUserBootstrap to include AdministrationScreenService
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#7564 feat: add selectChildren option to tree selection API
* dbeaver/pro#7564 feat: add node multi selection API to the new tree component
* dbeaver/pro#7564 feat: add new selection type
* dbeaver/pro#7564 refactor: remove getSelectedNodes method from tree selection interfaces
* dbeaver/pro#7564 fix: update selection clearing logic in useTreeClickSelection to avoid multiple callback calls
* dbeaver/pro#7564 refactor: optimize node collection in collectVisibleNodes function
* dbeaver/pro#7564 refactor: simplify selection handling logic in Node component
* dbeaver/pro#7564 refactor: streamline selection state handling in useTreeClickSelection
* dbeaver/pro#7564 refactor: replace inline default selection state with constant
* dbeaver/pro#7564 refactor: replace default node selection constant with a function
---------
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
* dbeaver/pro#7667 feat: add tree toolbar functionality to new tree
* dbeaver/pro#7667 refactor: remove unused ITreeSelection import and selection property from ITreeToolbar
* dbeaver/pro#7667 refactor: remove autoFocus from Filter component
* dbeaver/pro#7667 refactor: move onClick handler from Icon to IconButton
* dbeaver/pro#7667 refactor: add className prop to TreeToolbarMenu component
* dbeaver/pro#7667 feat: implement new navigation tree toolbar using composition and data context
* dbeaver/pro#7667 feat: update toolbar menu localization files
* dbeaver/pro#7667 refactor: navigation tree components to use lazy loading and improve type definitions
* dbeaver/pro#7667 refactor: restructure Tree component removing extra wrapper
* dbeaver/pro#7667 refactor: update treeToolbarActionHandler to use async/await for refresh actions
* dbeaver/pro#7667 refactor: remove undefined type from data context creation
* dbeaver/pro#7667 fix: restructure Tree component to fix Toolbar with scroll
---------
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6859 adds pin/unpin methods for data grid
* resets state when pins + makes pin icon stay when pinned
* adds TableHeaderCellIcon component with new Menu
* make actions alive
* cleanup
* moves pin logic into data-viewer
* cleanup
* restructures pin logic via contexts
* cleanup
* synchronizes column ids with view ids so pining works fine
* fixes actions visibility
* fix: correct layout on editing frozen cell
* fixes layout so frozen cell box-shadow can divide pinned and unpinned columns
* fixes border and box shadow interactions for frozen and editing cell
* makes pinned columns non transparent
* makes frozen border 3px and reverts previous style changes
* styles cleanup
* adds column true and visual indexes and reuses it across the data grid features
* cleanup
* reverts removed code
* reverts hacks with ids
* dbeaver/pro#7748 updates yarn.locks
* fixes incorrect types
* updates helper libs
* updates vitest + fixes test cases incorrect mocks
* runs tests sequentially with document and windows objects to prevent mock collisions
* Revert "runs tests sequentially with document and windows objects to prevent mock collisions"
This reverts commit f871837df3.
* skips download test
* removes export from resetDeprecatedSettings
* updates react-data-grid to beta-59 and react to 19.2
* updates storybook
* pr fixes
* updates yarn lock
* removes skip for download test
* cleanups download ts with empty body html
* updates vitest for core-connections
* updates yarn.lock
* linter fix + mocks once
* fixes hotkeys
* reverts version of react-hotkeys-hook library
* pr fixes
* code style fix
* dbeaver/pro#6859 adds selectCellByKey for opening editor
* reverts styles
* adds pin/unpin icons
* Revert "reverts styles"
This reverts commit 7857ef672d.
* on add actions sets correct focus
* removes incorrect positioning when editing pinned column
* tunes dark theme colors
* adds DnD to pin/unpin feature
* pr fixes
* fixes multiple selections for pinned & unpinned columns
* refactors multiple selections for pinned & unpinned columns so it uses data-grid api of getting sorted columns
* moves pin logic to usePinnedColumns hook
* moves color styles into data grid
* fixes letter
* adds styles for pinned border only for data editor
* adds unpin all columns action
* moves pinned logic to grid view action to save pinned state between tabs
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
* dbeaver/pro#7570 adds highlight for text spaces and new line
* refactors + changes colors
* allows to add props to extensions
* pointer events none for new line
* do not show enter symbol if line has no whitespaces below this line
* removes highlightTrailingWhitespace so the red background disappears
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
* dbeaver/pro#7465 refactor: migrate context menu to ariakit
* refactor: remove unused modal prop from ContextMenu and clean up schema name handling
* chore: add memoization to the base context menu components
* fix: menu issues
---------
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
* dbeaver/pro#6962 refactor: replace complex loader with-simple solution
* refactor: simplify function declarations in createLazyLoader
* fix: ensure notify is called after loading state updates in createLazyLoader
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#7554 adds translation for order button
* moves translate context to render app level + adds 2 translations for the sorting with the flag
* cleanup
* linter fix
* pr fixes
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#7041 replaces uikit input with core-blocks InputField for PropertyItem (connection driver properties)
* uses Input from ui-kit for react-data-grid from common-react
* separates Input and InputField logic so we can reuse Input somewhere else
* uses input from core-blocks in search panel
* uses input from core-blocks inside fetch size action
* removes hover styles if input is focused
* adds Input to inline editor
* removes style registries
* replaces module styles with css layers api
* cleanup
* calcs padding from spacing
* reverts input field base
* reverts input fields base 2
* fixes styles for inline editor and fetch size action
* fixes outline for inputs
* fixes hover styles for combobox so it matches input hover behavior
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#6480 checks if nodes parents loaded to verify if some entities are missing
* fixes linter await issues
* uses offset pagination key to check if all parents were loaded
* adds isNodeLoadedInAnyPage logic
* reverts all changes
* adds hasMorePagesForRootNode logic
* linter fix
* checks if parent has more data for each closest parent (not just a root one) + renames helper
* renames helper to sound shorter
* build fix
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#7442 Add Long-Polling transport support for event manager
* dbeaver/pro#7442 Inline headless-session creation in LongPolling servlet
* dbeaver/pro#7442 Improve long-poll session resolution and add unit tests
* dbeaver/pro#7442 Expose resolveSession for testing and remove reflection in tests
* dbeaver/pro#7442 Add copyright
* dbeaver/pro#7442 Improve long-poll CORS and interrupt handling
* dbeaver/pro#7413 feat: add Disclosure component to UI Kit
* dbeaver/pro#7413 feat: implement new disclosure component in CB with proper outline support and animations
* dbeaver/pro#7413 style: update disclosure gap to use tw spacing
* dbeaver/pro#7413 refactor: add Disclosure component story to Storybook (remove from ladle)
* dbeaver/pro#7413 refactor: update class names for disclosure components in Expandable
* dbeaver/pro#7413 feat: disable transitions for reduced motion preference
* dbeaver/pro#7413 refactor: convert arrow function to named function in Expandable component
* dbeaver/pro#7413 refactor: simplify media query for reduced motion transitions
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
* dbeaver/pro#6724 feat: add authentication model label to connection form
* dbeaver/pro#6724 refactor: change interface in StaticImage component to pass native props to provide a11y properties
* dbeaver/pro#6724 fix: add role attribute for icons in Driver selector
Those driver icons are not adding any meaning to the list items, so we can easily hide them from a11y tools.
* dbeaver/pro#6724 refactor: rename autofillToken to autocompleteSectionName and update related logic in forms
We used to have autocomplete parameters that do not meet specifications of HTML Input Autocomplete attribute.
We can't use any string there, there are list of tokens that browsers support: https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill plus two global states: "on" and "off".
Logic was refactored to use section token + username or current password tokens fo form where we provide auth details.
All other inputs use just general "on" state to let browsers decide how to fill this field, except cases where we disable password autocompletion.
also fixes a typo
* dbeaver/pro#6724 fix: don't turn on autocomplete if disabled
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* 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>
* dbeaver/pro#7549 refactor: adjust padding and color for disabled select state to unify view between disabled controls
unify icon view as well
* dbeaver/pro#7549 style: fix if clause
* dbeaver/pro#5085 sorts users alphabetically + shows new users on top
* reverts sorting for enabled and disabled users (required backend to sort properly)
* cleanup
* removes repetitive filters and sorting
* simplifies users logic + user.createdAt is number type
* refactor: sortUsersById -> compareUsers
* compare new users
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#7480 fix: preloads only connection info by key (not all) to prevent connectioInfoResource loading of all data and all following handlers actions
* adds console error and return empty array for origin info loader
* warning instead of error
* dbeaver/pro#5078 adds chart export
* adds ExportImageDialog and reuses it across the app
* uses canvas2html for downloading images
* Revert "uses canvas2html for downloading images"
This reverts commit b59374cf85.
* moves transformClassesToStyles to helpers
* transforms styling attributes to computed styles
* adds file name
* fixes translations
* fixes styles for png image so it do not exports in black&white mode with incorrect sizing
* fixes styles for svg export
* uses domToImage library to save chart with legend
* cleanup
* moves helpers back to d3js diagrams
* cleanup
* uses html-to-image instead of dom-to-image
* cleanup
* pr fixes
* replaces the lib
* fixes svg so it is not blur
* validation for image urls
* cleanup
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
The problem was that In ReactCodemirror, the updateListener calls onChange whenever the document changes and it's not marked as a remote transaction, but in value panel, when we switch changes, the new value coming to the panel was considered as the user change.
So, update listener were calling onChange from TextValuePresentation which calls editAction.set() and changes the real cell value.
In order to fix it, this commit mark programmatic updates by dispatching transaction annotations together with a change.
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6026 feat: merge value panel tabs in one group
move all text representations to the first tab level
specific representation is used if present (boolean, image)
auto type detection is used only for text
* dbeaver/pro#6026 refactor: remove unused CSS files for TextValuePresentation
* dbeaver/pro#6026 refactor: remove automatic state update in ValuePanel component
* dbeaver/pro#6026 refactor: update content type handling in ValuePanel
Move all the content type determination logic into the hook
Simplify the component
* dbeaver/pro#6026 refactor: consolidate content type handling in useAutoContentType hook
* dbeaver/pro#6026 fix: show scroll on tabs in value panel when overflow
* dbeaver/pro#6756 adds Menu to ui-kit, core-blocks + uses it in connection properties form
* allows to render any items not only strings
* dbeaver/pro#6756 adds context menu (has freeze on click)
* cleanup
* reverts object menu cell usage of new menu (problems with portal - infinite rerender)
* ui fixes
* reverts context menu logic
* adds hover styles
* cleanup
* removes MenuField
* adds combobox instead of PropertyValueSelector
* adds ability to have custom value for comboboxes + uses inside driver properties
* allows to revert values in combobox
* adjusts combobox api with correctly working custom value
* cleanup
* adds documentation for the Menu
* fix: combobox and driver properties
* chore: remove unused component
* chore: cleanup styles
* chore: add value tooltip
* fix: remove default value from combobox
* fix: tooltips
* build fix
* reverts old behavior with default value for combobox
* removes button styles + adds max width for the items
* Revert "reverts old behavior with default value for combobox"
This reverts commit 2a92c00f32.
* removes double focus
* fixes placeholder so it is not undefined string
* fixes value placeholder + moves title to input
* build fix
* fixes border behavior
* adds default value for property items
* fix: improve combobox types
* fix: use default value
* adds layers to InputField and moves border-offset-layout
* fix: eslint
* Revert "adds layers to InputField and moves border-offset-layout"
This reverts commit 272baafab6.
* reverts styles fixes for double border
* cleanup
* adds medium size to ui kit
---------
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#6586 fix: combobox disclosure size
By default, this component has 1em height and width and thats why it looked different in different components. Pixels values will provide consistency across different environments.
* dbeaver/pro#6586 refactor: set parent's font size instead of svg dimensions
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#6667 patches react-data-grid columns widths on cloudbeaver side
* fixes: auto resize columns should not be resized + column resize do not triggers resize of other oversized columns
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#6639 fix: don't render table error component when no error
We used to render TableError component all the time no matter if we have an error or not, just hiding this component visually. This approach breaks accessibility because Table error component was still reachable from a keyboard or a screen reader. This fix completely removes the node from DOM if the error is not visible.
* dbeaver/pro#6639 fix: change tabindex of TableError component
previous fix rendered this component only if error is present. That fix was wrong because we want to always keep that component in DOM to animate it properly in case of an error. That why we decided to just change the tabindex to -1 when there is no error to exclude it from tab path.
This fix is also adds aria-hidden attribute to hide this component completely from the accessibility tree when it's not visible.
* dbeaver/pro#6639 style: indent
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#5471 fix: "Delete" data viewer action tooltip
* dbeaver/pro#5471 refactor: "merge" save and save as script actions
We used to have two buttons with different shortcuts for saving SQL as a script(first save) and saving already created script (updating). On UI they had the same icon and were more or less identical for the user. We decided to use the same shortcut and labels for both buttons (mod + S).
* dbeaver/pro#5471 feat: adds Find and Comment shortcuts to the shortcuts list
* dbeaver/pro#5471 refactor: use common l10n keys for save/undo/redo
* dbeaver/pro#5471 refactor: use key bindings API for Delete action in TableView
* dbeaver/pro#5471 refactor: use key bindings API for add, duplicate and revert actions
* dbeaver/pro#5471 fix: extra import
* dbeaver/pro#5471 refactor: don't use a symbol for delete shortcut
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
If folder node had not been loaded before the filter is used, we would get into situation that filtering manually expanding this node without children and we would loose the ability to load them by expanding by click(our main flow is to load on expand).
This fix removes the auto expanding on filtering. Now it works similarly to the main navigation tree with filters
* dbeaver/pro#4696 adds zod schema parsing for form parts
* adds validation error to context
* adds schema parsing for UserFormInfoPart & ConnectionFormOptionsPart
* spreads RecordKeySchema across zod validations
* fixes form editing for connection info part
* Revert "spreads RecordKeySchema across zod validations"
This reverts commit 0e6719b32f.
* removes connection form errors during saving when empty fields
* reverts connection form options part parsing
* removes trimming from teams & authRole
* build fix
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#4862 adds focus on switches
* fixes border radius
* less border-radius
* applies hack with borders and position to save border radius and offset
* removes variable
* fix: applies focus only for tab
* removes focus on ESC button
* removes onkeydown
* cleanup
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6462 error instead of redirect for gql requests
* feat: force redirect on supportedHosts change
* fix: replace redirect with warning message
* fix: prevent active host removal
* fix: error message and ignore when on IP address
---------
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
* dbeaver/pro#6605 fix: reset filters on logout
This commit adds onLogout handler in DataViewerTabService which disposes opened tabs on logout.
Previously we didn't handle that at all and model was persisted in the memory after logout. On next login, if there was any filters, we would try to send them to backend and got an error, because backend doesn't support initial requests(without resultId) with filters.
The main logic of a handler repeats the already existed onDisconnect handler logic, which was extracted to handleTabsCleanup method. The difference between handlers is only in a set of tabs(onLogout we dispose all of them, onDisconnect - only tabs of a selected connection) and ability to interrupt the process.
* Revert "dbeaver/pro#6605 fix: reset filters on logout"
This reverts commit d124b444c7.
* dbeaver/pro#6605 fix: add onLoad Handler to ObjectViewerTabService
* Update webapp/packages/plugin-object-viewer/src/ObjectViewerTabService.ts
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
---------
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
In previous ticket CB-5555 we fixed cursor position on undo/redo actions by adding a check that if selection was not set. In that case we put the cursor to the end of inserted text. Due to previous fixes in CB-4134 we don't set a selection if cursor don't change it's position and initially it's 0. So our check from 5555 is being fired on initially opened script and cursor goes to the end.
To avoid that situation, this solution introduces a new isInitialScriptOpening flag that is used to check the first insertion.
When initially opening a script, the cursor will stay at the position where we explicitly set it (e.g., position 0).
After the first actual content change, the flag isInitialScriptOpening gets set to false.
Subsequent changes will then follow the normal cursor behavior (moving to end when there are changes but no explicit cursor position).
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#6472 fix: restore focus after menu actions and on syncFocus
* dbeaver/pro#6472 refactor: revert changes with using restoreFocus function from context
* dbeaver/pro#6472 fix: delete row from a context menu works as with a hotkey
set to null and revert also keep focus in place
* Revert "dbeaver/pro#6472 fix: delete row from a context menu works as with a hotkey"
This reverts commit f54abf3956.
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6253 fix: set disable state for checkbox respecting readonly
There was a bug in UiKitCheckbox props which rewrites disabled state using only disabled prop.
* dbeaver/pro#6253 fix: remove redundant readonly property in Options
First of all, Radio doesn't support readonly attribute. Moreover, we don't render this RadioGroup when condition in readonly prop is true.
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#6557 refactor: remove redundant width: 100%
There are a few reasons why we don't need this property:
0. It's already present in base Select styles
1. Select component is flex container by default, i.e. takes all available place
2. No evidences that it is needed
* dbeaver/pro#6557 fix: user filters selects
Simplifies layout and set min width for selects
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#6189 feat: group extra tools
* fix: context menu size
* fix: make context menu more compact
* fix: context menu shortcuts
* fix: change color for shortcuts in context menu
* fix: codestyle
* fix: revert more tools
* fix: submenu arrow position
* fix: show output
* fix: upload / download tooltips
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6283 feat: add simple Combobox implementation
It has fuzzy search inside to filter items.
* dbeaver/pro#6283 feat: implement Combobox component with search functionality and update related files
* dbeaver/pro#6283 refactor: remove unused onChange prop
* dbeaver/pro#6283 style: update imports in Combobox component
* dbeaver/pro#6283 feat: update styles, add popoverClassName prop
* dbeaver/pro#6283 refactor: keep Combobox composable for better control
* dbeaver/pro#6283 refactor: SRP in Combobox, split provider and components
* dbeaver/pro#6283 feat: implement advanced search
see AdvancedSearch example in stories
* dbeaver/pro#6283 refactor: use strict comparison
* dbeaver/pro#6283 refactor: replace fuzzy search with standard string search
* dbeaver/pro#6283 refactor: simplify Combobox component
* dbeaver/pro#6283 feat: add value formatter for ComboboxInput
It might be useful for cases when value is not in user friendly format. Combobox doesn't support such transformations from the box
Updated examples, added valueFormatter to advanced search, added MultiSelect example
* dbeaver/pro#6283 feat: sync styles with select
* dbeaver/pro#6283 fix: formatter
* dbeaver/pro#6283 fix: respect the user's reduce motion preference
* dbeaver/pro#6283 refactor: simplify component
remove search context,
use some built-in features for input value manipulations and for auto selection of the first item
* dbeaver/pro#6283 refactor: use tailwind for Field styles
* dbeaver/pro#6283 fix: should open all options on first interaction with any value
* dbeaver/pro#6283 refactor: strip Combobox component
Due to difficulties with items and search value managing in Combobox using only native combobox store, it was decided to move all that logic to CloudBeaver combobox component.
This commit removes all the logic from UIKit Combobox and partially restores it in Cloudbeaver Combobox
* dbeaver/pro#6283 feat: show no results when no items
* dbeaver/pro#6283 feat: restore input to the last valid value
* dbeaver/pro#6283 refactor: simplify restore input logic
* dbeaver/pro#6283 refactor: reset input value on blur
* dbeaver/pro#6283 refactor: don't sent input value on item click
* dbeaver/pro#6283 refactor: remove getComputed for filteredItems
getComputed will not work as expected for not primitive values( for example, for arrays)
* dbeaver/pro#6283 refactor: remove getComputed for filteredItems
* dbeaver/pro#6283 style: update z-index for ComboboxPopover component
our backdrop component has 999 z-index(weird?), we need more to show popover in modals
* dbeaver/pro#6283 feat: put CB Combobox near the component, fix layers issue
* dbeaver/pro#6283 fix: radio title wrap
* dbeaver/pro#6283 fix: use the same letter spacing as in other inputs
* dbeaver/pro#6283 fix:combobox item styles
* dbeaver/pro#6283 fix: clear value on click
this fix is for situation when user started to type a word, found an option and clicked on it. Previously we didn't clear value and just setSelectedValue on click. This fix clears value as it happens onBlur and we use the value from selectedItem.
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* dbeaver/pro#5968 refactor: update dark theme styles
introduces new theme variable link-color which with a color which is used for coloring anchor elements in our app
adjust this color in dark theme to have better contrast with a background, use this color in secondary button for the same reasons
* dbeaver/pro#5968 fix: adjust dark theme color values for improved contrast
* dbeaver/pro#5968 fix: update negative color in dark theme
* dbeaver/pro#5968 fix: update negative color in dark theme
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6061 fix: remove extra comma in ru l10n
* dbeaver/pro#6061 fix: make Cell component accessible
* dbeaver/pro#6061 fix: use proper product doc page
* dbeaver/pro#6061 fix: Cell component layout
* dbeaver/pro#6061 refactor: split Cell component interface for better dx
* Revert "dbeaver/pro#6061 refactor: split Cell component interface for better dx"
This reverts commit 812414f0f1.
* Revert "dbeaver/pro#6061 fix: make Cell component accessible"
This reverts commit 09aff9b08a.
* dbeaver/pro#6061 refactor: restrict using onClick on Cell component
force to use composition instead
* dbeaver/pro#6061 feat: generate a link to specific product version docs
* dbeaver/pro#6061 fix: use arg in all l10n files
* dbeaver/pro#6061 refactor: extract version handling logic for documentation URLs
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#6469 corrects enable https mode translation and switch position in server config form
* adds link for proxy configuration article
* fixes punctuation for ru locale
* updates description translations
* removes extra dot in ru locale
* adds advanced documentation link
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
removes RadioGroupContext(radio group/radio use their own provider)
removes all the logic of state changing from Radio component since it's creating a wrong understanding of how these components should be used together with RadioGroup. Radio still can be controllable, but it should be used in most scenarios only with RadioGroup which is controlling the state.
simplify styles by removing extra class
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#2951 Emit WSUserDisabledEvent after disabling a user
* dbeaver/pro#2951 Close user sessions on WSUserDisabledEvent
* dbeaver/pro#2951 Unify session termination logic for deleted and disabled users
* dbeaver/pro#6436 initializes unit tests for common-react
* installs common-react in the scripts
* adds @dbeaver/react-tests
* setups @dbeaver/react-test into tests-runner
* implements react-testing library into @dbeaver/react-tests
* removes unused deps
* adds test for frontend build github action
* dbeaver/pro#5241 fix: input doesn't create label wrapper if label is not provided
* dbeaver/pro#5241 fix: link label to input inside InputFieldBase
* dbeaver/pro#5241 fix: make required field asterisk invisible for assistive technologies
* dbeaver/pro#5241 fix: link FieldLabel to textarea with generated id and add aria-label for accessibility
even with linked label, voiceOver doesn't pronounce label when focusing textarea, that's why aria-label is used there
* dbeaver/pro#5241 refactor: force aria-label for input field
* dbeaver/pro#5241 refactor: change role for snackbar
aria-live polite works with aria regions which initially empty and then dynamically populated with some data. If we want assistive technologies read initial content, we need to use alert role.
also hide icon from assistive technologies (no additional information from that)
* dbeaver/pro#5241 refactor: remove aria-label from input
use native htmlFor
* dbeaver/pro#5241 refactor: remove aria-label from Textarea component
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Removed active state from Options component resources because it unload resources when we switch to other tabs which leads to broken connection form state and entails data inconsistency.
For example, the check driver?.useCustomPage fails because driver resource has been unloaded and the component renders standard Parameters from instead of custom taking state from the wrong destination.
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#5998 fix: selectAll index header cell
* dbeaver/pro#5998 fix: removed OrderButton from tabbing order, add sorting on space/enter when header column cell is in focus
* dbeaver/pro#5998 feat: add onHeaderKeyDown handler to DataGrid and HeaderCellContentRenderer
we lost ability to copy data grid cells' data when one of the header cells is focused, because the header cell renderer was not handling keydown events. This commit utilizing gridSelectedCellCopy.onKeydownHandler inside HeaderCellContentRenderer keydown event handler
* dbeaver/pro#5998 style: change onKeyDown to a named function
* dbeaver/pro#5998 refactor: simplify OrderButton and update sorting logic in HeaderCellContentRenderer
* dbeaver/pro#5998 refactor: rename container class to clickAreaOverlay in TableIndexColumnHeader, remove z-index
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#6038 fix: can't click on checkbox in OutputLogMenu
* dbeaver/pro#6038 refactor: update menu item and tree node styles
replace theme-ripple classname with in-place styles for hover and active states
* dbeaver/pro#6038 refactor: move pointer events none in MenuItemIcon class
* Revert "dbeaver/pro#6038 refactor: update menu item and tree node styles"
This reverts commit 2c2fdc2e8d.
* dbeaver/pro#6038 revert changes made in this branch and #5997, #5989
previous manipulations with theme-ripple class has broken our UI in several places. this PR returns to the state before #5989 when only CloudExplorerTree was broken
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* dbeaver/pro#5242 refactor: update TableItemExpand component
replace a div with IconButton and clean up CSS
* dbeaver/pro#5242 refactor: adjust outline offset for icon button
Usually icon buttons are used inside other components or in small places, so they tend to overflow over their container with a standard button outline offset. I believe that offset 0 is the better default for the IconButton.
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6017 adds new ui spinner to loader
* removes unused code
* pr fixes
* changes loader animation
* dbeaver/pro#6017 fix: remove class names that don't exist
* dbeaver/pro#6017 fix: remove cloudbeaver spinner animation adjustments
* dbeaver/pro#6017 feat: introduce animation delay variable for spinner
Make the initial appearance of the spinner better by starting from semi-filled circle, not the tine dot which is crucial on fast loads.
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Sychev Andrey <nukemoore@gmail.com>
* dbeaver/pro#4745 fix: useTreeFilter UX bug
When a user searched for a term (e.g., 're') and found a matching node in the middle of the tree, the user expected to expand that node and see all its children.
But the filter was also being applied to the children, hiding non-matching children. This created a confusing experience where expanding a found node might show empty or partially empty results
In new implementation Tree shows ALL children without filtering if parent node matches filter.
* dbeaver/pro#4745 refactor: update children prop type and usage in AuthenticationProvider
* dbeaver/pro#4745 refactor: replace Loader with Spinner in TreeNodeExpand
* dbeaver/pro#4745 refactor: update typography styles with global typography styles
* dbeaver/pro#4745 feat: add naive tree selection functionality with useTreeSelection hook
* dbeaver/pro#4745 feat: enhance tree selection with loading state management
* dbeaver/pro#4745 feat: add indeterminate selection state management in tree component
* dbeaver/pro#4745 feat: add multiple selection prop in tree component
* dbeaver/pro#4745 refactor: improve indeterminate state management in tree selection
* dbeaver/pro#4745 feat: add expandOnSelect prop to tree and selection hooks
* dbeaver/pro#4745 refactor: adjust padding in CommonDialogHeader styles and fix formatting
* dbeaver/pro#4745 refactor: implement tree selection context for improved node selection management
* dbeaver/pro#4745 style: update padding-left to use CSS variable for treeNodeNested
* dbeaver/pro#4745 refactor: remove redundant state update for empty child nodes in expandNode
It make no sense to close just expanded node if there is no children. User will lost the information about that and could try to open it again later. It's better to keep expanded state to show that this node is empty.
* dbeaver/pro#4745 style: fix lint
* dbeaver/pro#4545 fix: remove useLayoutEffect with focus in TreeNodeControl
This auto focus behavior entailed several bugs like stealing focus from filter input or breaking custom node elements like menu on hover. Decided to remove.
* dbeaver/pro#4745 refactor: make useTreeSelection hook public
* dbeaver/pro#4745 refactor: update tree selection logic and remove unused properties
* dbeaver/pro#4745 refactor: remove async
* dbeaver/pro#4745 refactor: remove duplicated typography styles
* dbeaver/pro#4745 refactor: update selection
* dbeaver/pro#4745 refactor: simplify selection state management in useTreeSelection
* dbeaver/pro#4745 refactor: optimize selection logic in useTreeSelection
* dbeaver/pro#4745 fix: revert children type
* dbeaver/pro#4745 style: lint
* dbeaver/pro#4745 refactor: expose process action from tree node context
* dbeaver/pro#4745 refactor: remove optional showInFilter property from INodeState interface
* dbeaver/pro#4745 refactor: simplify indeterminate state updates and optimize child selection handling
* dbeaver/pro#4745 fix: bug with bad selection state when select with filters
* dbeaver/pro#4745 refactor: update selection context and method names in tree selection
* dbeaver/pro#4745 feat: add disabled prop to Node component
* dbeaver/pro#4745 refactor: remove disabled prop from Node interface
clean unused TreeNodeSelect code
* dbeaver/pro#4745 add action.bound for processAction
* dbeaver/pro#4745 fix: close/deselect node if loading failed
* dbeaver/pro#4745 feat: enhance tree filter functionality with expanded state management
parent nodes are expanded if node matches with filters. When filters are cleared, the tree restores it's unfiltered expand state
* dbeaver/pro#4545 feat: integrate notification service to show errors on load
* dbeaver/pro#4745 fix: don't select empty folders
* Revert "dbeaver/pro#4545 feat: integrate notification service to show errors on load"
This reverts commit c1fd855a94.
* dbeaver/pro#4745 feat: add state transformer to tree filter for expanded state management
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#6018 fix: context menu disappears on cells with an interactive formatter
add menu visibility handling to cell formatters
* dbeaver/pro#6018 refactor: rename handleStateSwitch to handleCellMenuStateSwitch for clarity
* dbeaver/pro#6018 refactor: rename menu visibility properties for clarity
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* dbeaver/pro#5800 refactor: InputFieldBase
update InputField by swapping native input by Input from ui-kit, replace inner action icons to IconButton components, and replace Loader with Spinner component
* dbeaver/pro#5800 fix: enforce border and min-height styles in InlineEditor
* dbeaver/pro#5800 feat: add size prop to Filter component for responsive input sizing
* dbeaver/pro#5800 feat: add UiInput tokens for input component
removes hover effect on inputs by using the same token as for default border
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
@@ -25,74 +25,91 @@ You can see a live demo of CloudBeaver here: https://demo.cloudbeaver.io
## Changelog
### 25.0.5 2025-05-19
- Added the ability to configure the default database or schema in the connection configuration;
- A new setting to autosave scripts in the SQL editor appeared in global and users' preferences;
- SQLite: added information about a table Strict mode to the table metadata section (thanks to @eusebe-cda);
- Vietnamese localization has been added (thanks to @0xhanh).
### 25.3.5 2026-02-16
### 25.0.4 2025-05-05
- Important:
- Connection templates were removed from the application. You can use the Connection Editor to create new connections.
- Databases and drivers:
- LibSQL: added the ability to use token authentication for connecting;
- Clickhouse: driver has been updated to version 0.8.5.
### 25.0.3 2025-04-21
- Administration: log records now capture create, update, and delete actions for users, teams, and connections for improved tracking and transparency;
- SQL Editor: auto-completion has been improved for aliases and camelCase entities;
- Users DDL in Oracle is displayed in metadata editor on corresponding tab for users with Oracle administration permissions;
- Different bug fixes and enhancements have been made.
### 25.0.2 2025-04-07
- Data Editor: improved table rendering to scale column width depending on the content.
- Improved Navigation tree performance: lost connection does not lead to the application freezing anymore.
- Different bug fixes and enhancements have been made.
### 25.0.1 2025-03-24
- Improved performance of the export/import functionality by optimizing disk memory consumption;
- Enhanced initial configuration on stage security: if the initial setup time exceeds 1 hour, the server must be restarted.
### 25.0 2025-03-03
### Changes since 24.3.0:
- General:
- Added transaction log viewing for connections with manual commit mode. This allows users to see all modifying statements before committing;
- Added an ability for all editors to reconnect if a connection has been lost;
- Tooltips for metadata objects and SQL Editor tabs now include additional details about catalogs, schemas, and connections;
- Added Ctrl + Shift + S (Cmd + Shift + S on Mac) shortcut for the "Save As Script" action;
- Updated list of available shortcuts for macOS.
- Administration:
- Added system information data to the Product Information tab in the Administration panel. This provides administrators with quick access to essential system details, such as the server deployment type (e.g., Docker, Kubernetes), install path, Java version, and Java parameters;
- The global access server URL has been added to the console log, making it easier to locate server installation information directly within the logs;
- New environment variables were introduced for theme styling, SQL editor, and log viewer settings. You can use them for quick setup during the initial Docker configuration stage.
- LDAP authorization:
- Added the ability to match users from LDAP configuration with CloudBeaver users;
- Added an option to specify a user login as an attribute parameter for LDAP providers;
- CloudBeaver now uses EntityID or objectGUID to create new LDAP users in CloudBeaver to ensure uniqueness. This change enhances user identification and prevents conflicts while maintaining backward compatibility for existing users.
- Deployment:
- CloudBeaver now uses JDK 21 as its base Java image. If you use standard deployment and upgrade scripts, the new Java version will be applied automatically after the product update;
- Changed the permission of the Docker volumes directory to enhance security and prevent any insecure actions by the "root" user. All new deployments will use the "dbeaver" user by default. For existing deployments running as the "root" user, this update will automatically adjust file permissions to ensure they are compatible with the new security model. There will be no manual intervention, and the service will continue to run as expected with the updated permissions.
- Connections:
- Enabled the possibility of switching a database connection to read-only mode. This mode can be activated in the connection dialog. Administrators can set this mode for any connection, while regular users can set it for their private connections only;
- For Oracle and SQL Server connections, advanced database settings can now be used in the URL connection mode.
- Data Editor:
- Auto-suggestions for column names in the Data Editor filter field were introduced to avoid typing mistakes;
- Introduced the ability to insert data in tables without unique keys: you can import data from CSV files or insert entire rows directly via UI;
- The collapse of the grouping panel doesn't lead to the complete panel cleaning anymore.
- Data transfer:
- Added the ability to use default spreadsheet names (e.g. Sheet0, Sheet1) for exporting to XLSX;
- An option to replace line break characters on any custom value was added when exporting to CSV.
- Navigator tree:
- An option to show metadata object comments was added. You can enable it in the database navigator settings panel;
- Introduced the ability to create connections not only on the initial level but in folders and sub-folders directly;
- Fixed the display of objects with long names (more than 32 characters) - now, such names will be displayed entirely and not in a cropped format.
- Drivers:
- The MariaDB driver has been updated to version 3.5.1;
- The SQLite driver has been updated to version 3.48.0.0.
- Added the ability to automatically generate INSERT, SELECT, DELETE, and UPDATE statements for the selected values in the Data Editor;
-Added a status indicator icon in the top-left corner of the Data Editor with tooltips explaining table editability. The icon shows whether the table has a primary key, is read-only due to connection settings, or contains only read-only columns.
- Navigator:
- The Connection Info tab was added so that all users can see basic information about the current connection;
- Added the ability to duplicate connection configuration in the project navigation tree. The "Clone connection" feature is available in the context menu.
- General:
- The missing pg_dump utility no longer causes errors during initialization or during deployment updates when PostgreSQL is selected as the inner database;
- DuckDB: Driver version was updated to 1.4.4.0;
- PostgreSQL: Added DDL display support for PostgreSQL policies.
### 25.3.4 2026-02-02
- Editors:
- Added undo and redo functionality to the Data Editor for cell edits, row operations, and other data modifications. The history retains the last 50 actions across the Data Editor, result sets, and related panels;
- The SQL preview panel has been added to the Bind parameters/variables dialog in the SQL Editor, allowing users to review the SQL query with changed values on the fly;
- The Tab key can now be used for autocompletion in the SQL editor in the same way as the Enter key;
- Fixed an application freeze caused by fetch size canceling for large tables in the Result Set;
- Fixed an issue where pressing the Delete key during inline cell editing incorrectly marked the entire row for deletion.
- Navigator:
- Added independent view preference settings for database connections at both the user and connection levels. Users can configure their preferred navigator view separately from connection-specific settings;
- Added "Show children of tables" option to Navigator tree settings. When enabled, the navigator displays nested objects such as columns under tables and views. The setting applies globally across all connections and remains disabled by default;
- Added the ability to rename connections via context menu in the Navigator Tree;
- General:
- Expanded pointer target areas for icons in the navigator, editors, and tabs to a minimum of pixels per accessibility standards. Improved interaction accuracy and reduced errors for users with motor control limitations;
- The "Database Native" authentication type has been renamed to "Username/password" for all connectors;
- ClickHouse: Fixed an issue with displaying arrays of UUID, IPv4/IPv6, and Map types.
### 25.3.3 2026-01-19
- For security reasons, session expiration leads to a complete logout for a user and clears all data from the screen;
- Added "Use local formatting" setting to Data Editor. Users can choose how to display numbers and dates: using the OS locale, a custom locale, or keeping values unformatted. This formatting applies only to displayed values. Data in the database remains unchanged;
- Added the shortcut Ctrl/Cmd + . to cancel operations in Data Editor;
- CloudBeaver now supports long polling as a fallback when WebSockets are unavailable or blocked, ensuring reliable communication for metadata updates and SQL execution;
- Fixed a keyboard navigation issue for panels to keep the focus inside;
- Clickhouse: Spatial data support was added.
### 25.3.2 2026-01-05
- The ability to pin columns has been added to the Data Editor, allowing users to keep key columns (e.g., IDs, names) visible while scrolling through wide tables;
- Added a new setting in the SQL Editor to highlight spaces, tabs, and other whitespace characters to help users read, debug, and maintain their scripts. It is turned off by default and can be configured in personal preferences;
- Redesigned the connection configuration page. Form fields and sections have been reorganized to provide more space for input and reduce visual clutter;
- Clickhouse: driver has been updated to version 0.9.5;
- Oracle: Added a new "Set Username to OS_USER" option in the Misc section of Oracle connection settings. When turned on, the tool automatically uses the current database username as the operating system user identifier in the session metadata.
### 25.3.1 2025-12-22
- Implemented an ability to add parameters and variables to queries in the SQL Editor. This feature allows for the reuse of queries by changing parameters at the execution stage. It is enabled by default and can be configured in personal preferences;
- Added support for mapping users to CloudBeaver teams based on LDAP memberOf group membership;
- Added support for previous browser versions, but not older than three years.
### 25.3.0 2025-12-01
### Changes since 25.2.0:
- Administration:
- Permission configuration for connections has been simplified, providing a clearer appearance and improved performance;
- LDAP authentication now supports case-insensitive Distinguished Names (DNs), allowing login with mixed-case DNS.
- Security:
- Fixed a security issue in the Spatial Viewer for the HTML content to prevent a third-party script execution;
- Fixed the critical vulnerability (CVE-2025-61927) in the Happy DOM library. The library was updated to version 20.0.2.
- SQL Editor:
- A confirmation prompt has been added to the SQL Editor to prevent accidental execution of potentially dangerous queries. You can customize this behavior in Preferences > SQL Editor;
- A search field has been added to the catalog/schema selector on the main toolbar for easy navigation;
- Alphabetical order has been added to the autocomplete values in the SQL Editor to simplify object search;
- Added support for temporary tables in semantic analysis.
- Data Editor:
- The ability to review the database query after applying filters and sorting in the Data Editor, Grouping panel, and Result sets has been added. The new Show SQL button is placed on the Filter panel;
- The value panel in the Data Editor has been redesigned to give users more space for viewing and editing data. Tab buttons for different data type visualizations are now aligned on a single level, creating a cleaner layout;
- Added visualization for column reordering in the Data Editor;
- Fixed an issue in the Data Editor where resizing one column in a wide table caused previously resized columns to revert to their original width. Users can resize multiple columns as intended.
- General:
- A reorder tabs option has been added to the application, allowing users to set editor tabs in custom positions;
- Keyboard navigation has been improved across the application. Additional shortcuts are available in the main info panel (top-right corner) to help discover them faster. Relevant keyboard shortcuts are also shown in the tooltips of Data Editor buttons;
- Boolean values have been replaced with intuitive checkboxes instead of the true/false text in the metadata editor, making editing easier and faster;
- The database navigator now automatically hides empty subfolders in shared projects, reducing visual clutter;
- Databases and drivers:
- ClickHouse: query canceling support has been added;
- DuckDB: fixed an issue where catalog selection was lost upon disconnection;
- PostgreSQL: fixed support for GIS data types;
- SQL Server: the driver has been updated to version 13.2.1;
- The "Show all databases" setting has been added on the connection page for MySQL and MariaDB.
## Contribution
As a community-driven open-source project, we warmly welcome contributions through GitHub pull requests.
[We are happy to reward](https://dbeaver.com/help-dbeaver/) our most active contributors every major sprint.
The most significant contribution to our code for the major release 24.3.0 was made by:
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.