* dbeaver/pro#7023 feat: add SearchPanel component and related styles to UI-kit
add chevron Icon to UI-kit (used in Search Panel)
* dbeaver/pro#7023 feat: add SearchPanel story
* dbeaver/pro#7023 feat: update SearchPanel integration in CodeMirror
* dbeaver/pro#7023 feat: add onReplaceToggle prop to SearchPanel for toggle functionality
* dbeaver/pro#7023 fix: replace-input styles
* dbeaver/pro#7023 feat: implement search functionality in DataGrid v2
* dbeaver/pro#7023 fix: update react-data-grid workspace reference in yarn.lock
* dbeaver/pro#7023 feat: don't focus cell on replace
* dbeaver/pro#7023 feat: add searchReadOnly prop to DataGrid and GridSearchPanel components
* dbeaver/pro#7023 fix: update styles for search panel
* dbeaver/pro#7023 feat: add theme variables for improved styling in storybook
* dbeaver/pro#7023 feat: update search panel styles in datagrid
* dbeaver/pro#7023 feat: improve search functionality by resetting active match index and triggering search on find actions
* dbeaver/pro#7023 refactor: useGridSearch
* dbeaver/pro#7023 fix: search panel styles
* dbeaver/pro#7023 feat: implement grid search state management
* dbeaver/pro#7023 feat: add refresh functionality to search components
* dbeaver/pro#7023 feat: add history action to refresh search results on undo/redo
* dbeaver/pro#7023 feat: add batch cell update functionality to data grid
That functionality comes in handy when we want to use Undo and Replace All functions together:
Before that commit we used to perform N operations where N is a number of replaced cells. And history would record them as atomic operations, so pressing Undo would revert only the last replace.
setMany enables batch editing and batch reverting, so now we can Replace All and then revert it by using one Undo operation
* dbeaver/pro#7023 refactor: remove unnecessary eslint disable comment in useGridSearch
* dbeaver/pro#7023 feat: select affected cell on history change
* dbeaver/pro#7023 feat: add searchReadOnly prop to DataGridTable for conditional read-only state
* dbeaver/pro#7023 refactor: simplify isReadOnly logic in GridSearchPanel
* dbeaver/pro#7023 refactor: use constants for flags
* dbeaver/pro#7023 refactor: update focus and refresh methods in GridSearchPanel
* dbeaver/pro#7023 refactor: consolidate grid search state update logic
* dbeaver/pro#7023 refactor: update scrollToCell method signature and related usages
* dbeaver/pro#7023 refactor: update handleCellChangeBatch to use ICellChange type
* dbeaver/pro#7023 refactor: remove unwanted code
* dbeaver/pro#7023 feat: refactor search functionality to use standalone functions
* dbeaver/pro#7023 feat: implement useDataGridSearch hook to avoid bloating the DataGrid component with the search-related logic
* dbeaver/pro#7023 feat: update search functionality to use onReplace for cell value updates
* dbeaver/pro#7023 feat: use Activity component for search panel visibility in DataGrid
* dbeaver/pro#7023 refactor: use common value transformation fn in set and setMany methods
* dbeaver/pro#7023 refactor: rename methods for "unnkeyed" cache
* dbeaver/pro#7023 refactor: unify cell edit history handling and remove batch edit references
* dbeaver/pro#7023 fix: update searchReadOnly logic
* dbeaver/pro#7023 refactor: replace rowsCountRef with useState (Error: Cannot access refs during render)
* dbeaver/pro#7023 refactor: expose getCellClassName via useImperativeHandle
Replaced onCellClassNameChange prop + useEffect with useImperativeHandle as suggested in code review. Using useState setter directly as callback ref either caused infinite re-renders (without deps) or lost context synchronization entirely (with stable deps). Settled on useCallback ref that sets both useRef (for method access) and useState (for context propagation).
* dbeaver/pro#7023 fix: Cmd+F not re-focusing the search panel when already open
* dbeaver/pro#7023 refactor: cell edit history compression
* dbeaver/pro#7023 fix: refresh search state on revert
* dbeaver/pro#7023 refactor: move focus blocking during replace into grid component
Previously DataGridTable checked isReplacing() before syncing
focus/selection, leaking grid internals
Now the grid's selectCell blocks during replacing internally and
supports deferred mode (setTimeout + rAF) for post-render focus sync.
* dbeaver/pro#7023 refactor: restructure grid search logic with useReducer and improve state management
* dbeaver/pro#7023 refactor: improve grid search
moved ref synchronization out of render,
unified search+scroll into one shared path,
added a SET_MATCHES no-op guard to reduce unnecessary updates,
removed duplicate open=false persistence from useDataGridSearch (single owner now in useGridSearch).
* dbeaver/pro#7023 refactor: update search state types
* dbeaver/pro#7023 refactor: restructure grid search state interfaces for improved clarity
* dbeaver/pro#7023 refactor: optimize match retrieval logic after removal in grid search
* dbeaver/pro#7023 refactor: sync refs and computed props in one effect
* dbeaver/pro#7023 fix: Esc double handling between SearchPanel and CaptureView hotkeys
* dbeaver/pro#7023 refactor: fix review comments in useGridSearch
* dbeaver/pro#7023 refactor: unify hotkey stop propagation via shared EventContext/EventStopPropagationFlag
* dbeaver/pro#7023 refactor: pass reactive cellText to useGridSearch
* dbeaver/pro#7023 refactor: update grid search reducer actions and navigation logic
reuse SET_ACTIVE_MATCH and computeActiveMatchIdx for consistency
* dbeaver/pro#7023 refactor: improve equality check for cell matches
* dbeaver/pro#7023 feat: implement cell change tracking subscriptions and cleanup logic
* dbeaver/pro#7023 refactor: remove redundant clearTrackedCellSubscriptions
Cleanup implemented in useTrackedGridSearchCellSubscriptions hook
* dbeaver/pro#7023 fix: cancel stale deferred selectCell to prevent infinite focus loop
When multiple rows are deleted, competing deferred selectCell timeouts
cause focusSyncRef mismatch and endless focus-change cycle.
* dbeaver/pro#7023 fix: update keyboard shortcut for search to use 'KeyF'
* dbeaver/pro#7023 feat: make search disabled by default
* dbeaver/pro#7023 fix: layout
* dbeaver/pro#7023 fix: update scrollBox selection method in Table component
---------
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: Viktor Kirst <viktor.kirst@dbeaver.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.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#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#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#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#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#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>
* 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#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#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#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>