* dbeaver/pro#5789 refactor: add ButtonIcon component instead of Button.Icon
* dbeaver/pro#5789 refactor: button components across whole application to use UIKit button and UIKit variables
- Rewrite Button.css(former button.module.css) file to define button styles for better maintainability and scalability
- Added props to the Button component for Icons: 'size' and 'placement', currently used only in PropertiesTable (Add property)
- Changed button modifiers to 'variant' swapping unelevated mod to primary(default one, so mod just deleted) and outlined mod to variant secondary.
- In one case changed raised mod to danger variant (deleting a license)
* dbeaver/pro#5789 refactor: fix Button component styling and removed redundant css file
* dbeaver/pro#5789 style: clean up button formatting across multiple components
* dbeaver/pro#5789 refactor: update Tailwind CSS import to use layer directive
* dbeaver/pro#5789 refactor[kit]: add disabled state styles for buttons
* dbeaver/pro#5789 refactor: enhance button styles for disabled state
* dbeaver/pro#5789 fix button problems
* dbeaver/pro#5789 fix: change layer name from theme to base in color styles
* dbeaver/pro#5789 refactor: update button padding from 16px to 15px
* dbeaver/pro#5789 refactor: adjust button gap and update InputFiles button props
* dbeaver/pro#5789 style: center align button in SSHKeyUploader component
* dbeaver/pro#5789 fix: update button classes to use inline-flex for better alignment
* dbeaver/pro#5789 fix: remove initial background from tab styles
* dbeaver/pro#5789 fix: move cursor pointer rule to button container
* dbeaver/pro#5789 fix: update checkbox SVG fill property for proper rendering
* dbeaver/pro#5789 fix: add variant prop to Button component for styling options
* dbeaver/pro#5789 fix: add InlineEditor to CSS layer to compete with theme Important! border-color
* dbeaver/pro#5789 fix: add min-width to button styles for consistency
* dbeaver/pro#5789 refactor: adjust margin for trigger element in context menu
first of all it's done to fix autotests and the second reason is to visually balance the cell with menu
* dbeaver/pro#5789 fix: make boolean great again
---------
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: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
* dbeaver/pro#5553 feat: add column sorting functionality to DataGrid
* dbeaver/pro#5553 feat: enhance column sorting functionality to support multiple selection
* dbeaver/pro#5553 feat: add keyboard navigation to order button
* dbeaver/pro#5553 feat: add constraints handling logic for column sorting in DataGrid
* Revert "dbeaver/pro#5553 feat: add constraints handling logic for column sorting in DataGrid"
This reverts commit 6028a48b13.
* dbeaver/pro#5553 feat: add icon generation script to UIKit, add sample icons
* dbeaver/pro#5553 refactor: use inner react-data-grid API for column sorting
* dbeaver/pro#5553 feat: add IconCross component and update icon-related files
* dbeaver/pro#5553 feat: replace Button with IconButton in OrderButton component
* dbeaver/pro#5553 style: update foreground color variables for IconButton component
* dbeaver/pro#5553 refactor: add normalization rules to layers, use IconButton in Common DialogHeader
checked if new IconButton works well in light and dark mode by using in CommonDialogHeader
* dbeaver/pro#5553 style: format code and update dependencies in CommonDialogHeader and DataGridTable components
* dbeaver/pro#5553 style: move onColumnSort prop to correct position in DataGridTable component
* dbeaver/pro#5553 refactor: remove icons component generation, use svg sprite
* dbeaver/pro#5553 refactor: update OrderButton component and inline icons sprite in Body
we decided to go with this solution for now just adding icons to a sprite and use them by id. Imports by ?url don't work in VSCode if try to use them in <use> href, so we need to find another solution or stick to that approach.
* dbeaver/pro#5553 refactor: update column sorting and sortable logic in DataGrid components
* dbeaver/pro#5553 style: format whitespace in Body component
* dbeaver/pro#5553 feat: add new sorting icons for ascending, descending, and unsorted states
* dbeaver/pro#5553 refactor:styling for header cell and order button components
* dbeaver/pro#5553 refactor: update sorting logic in DataGrid and OrderButton components
* dbeaver/pro#5553 refactor: value deps
* dbeaver/pro#5553 feat: update sorting icons for ascending, descending, and unsorted states
* dbeaver/pro#5553 style: update aria-label and title for OrderButton component
* dbeaver/pro#5553 fix: double focus
* dbeaver/pro#5553 fix: after merge
* dbeaver/pro#5553 refactor: removed outline offset for sort button
* dbeaver/pro#5553 refactor: update Tailwind CSS import to use layer directive
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
* dbeaver/pro#5745 updates frontend deps
* updates graphql-request
* updates yarn locks for common-typescript, common-react
* updates engines node version
* react-hotkeys-hook + fixes hotkeys so it continues to work
* code cleanup for parseHotKey
* uses fixed version of tailwindcss
* adds 4.0.6 versions for tailwindcss with resolutions
* reverts tailwind 4.0.6 version for yarn.lock
* removes redundant resolutions for tailwindcss
* Update readme.md with new NodeJS version
* Update README.md with correct nodejs version according to our documentation
* updates talewindcss version 4.0.7
* fix: hotkeys types
---------
Co-authored-by: Wroud <wrouds@gmail.com>
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#5554 feat: first iteration of IconButton
* dbeaver/pro#5554 refactor: css var changes
* dbeaver/pro#5554 feat: add loading state to IconButton component
* dbeaver/pro#5554 style: update background color for loading state in IconButton
* dbeaver/pro#5554 feat: separate icon button styles and loader variables
* dbeaver/pro#5554 refactor: extract ButtonRoot component to use as a base for Button and IconButton components
That approach lets us use common logic (loading) but don't mixup styles and tokens and have better control
* dbeaver/pro#5554 refactor: update loading state styles for IconButton component
* dbeaver/pro#5554 refactor: ButtonRootProps
* dbeaver/pro#5554 refactor: remove opacity from loading state in Button and IconButton components
* dbeaver/pro#5554 refactor: create content wrapper, move general styles there, add loader wrapper
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* Revert "dbeaver/pro#5214 get timestamp with calendar fix (#3423)"
This reverts commit 7b0c6ebe66.
* Revert "dbeaver/pro#5214 set timestamp with utc calendar fix (#3404)"
This reverts commit 0095cc8d37.
* #5490 feat: create basic spin component
* #5490 refactor: use new Spin component in button loading state
* #5490 refactor: add tokens to Spin component
add SpecialLoader story to show how to change Spin appearance for special use cases
* #5490 fix: reverts f4d9b6b101
Element should not get focus visible after mouse interactions
* 5490 fix: lost dash
* #5490 refactor: rename Spin to Spinner
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* #5362 refactor: move blob formatter to shared codebase
* #5362 refactor: remove value prop from BlobFormatter
* #5362 refactor: move some of result set value checkers to common
* #5362 feat: update some result set api methods
make value type for safe using unknown instead of any,
added string fallback representation for complex values
* fix: getStringFallbackForComplexValue
* #5362 fix: getStringFallbackForComplexValue always cast to string
* #5362 fix: format
* #5362 chore: update deps
* #5362 fix: double imports
* #5362 fix: yarn lock
* chore: update yarn
* fix: reset yarn lock to devel state
* #5362 ci: change chunking
Previous implementation couldn't handle cyclic dependencies correctly. We noticed it in that ticket because we started to move some logic to common packages and changed existing packages connections. I tried many options to organize chunks from very simple(just putting everything to one bundle) to very complex(by adding helper to find circular deps between modules and putting them to one chunk) but none of them looked ideal. Complex solution is prone to errors, especially with vendor packages. I find this solution at least bearable until Vite ships Rolldown, then we can rethink it one more time.
* #5362 fix: arrow-body-style
* fix: improve chunk splitting
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* CB-5774 add connection brute force protection
* CB-5774 api for additional info of disabled user
* CB-5774 fix deserialization
* CB-5574 adds disabled user info in editing user form
* CB-5774 save all connect errors to db
* CB-5774 resolve conflicts
* CB-5774 resolve conflicts
* CB-5574 fixes userId
* CB-5774 fix fetch user and test
* CB-5774 resolve conflicts
* CB-5774 handle brute force on desktop
* CB-5774 fix send event for killing user sessions
* CB-5774 build fix
---------
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Wroud <wrouds@gmail.com>
* CB-4067 adds connection form state, service and options part
* CB-4067 adds connection origin info tab to new form
* CB-4067 adds SSH part
* CB-4067 adds driver properties part
* CB-4067 changes driverId and submitType location for connection form
* CB-4067 adds SSL part
* CB-4067 adds connection form access part
* CB-4067 uses new form parts for connection form
* CB-4067 resets form on open
* CB-4067 fixes configure case for connection form
* CB-4067 adds selected driver on edit mode form
* CB-4067 reloads form when it is needed
* CB-4067 adds button actions for the form
* CB-4067 adds notifications on form save/error
* CB-4067 fixes form ssl saving and driver properties
* CB-4067 refactors some parts
* CB-4067 refactors form options part so it works fine
* CB-4067 fixes driver properties part
* CB-4067 fixes SSH part
* CB-4067 fixes SSL part
* CB-4067 fixes Access part
* CB-4067 refactors origin tab
* CB-4067 refactors shared credentials part
* CB-4067 fixes: secret providers, SSH, SSL, test - features
* CB-4067 removes refactor postfix for new state, service and types
* CB-4067 fixes connection test
* CB-4067 cleanup
* CB-4067 gets back ask credentials window and removes connectionCredentialsStateContext
* CB-4067 adds translation to test connection success message
* CB-4067 fixes ssh and ssl adding to networkHandlers. also fixes extra request for driver properties
* CB-4067 fixes host and port for switching connections
* CB-4067 removes redundant code
* CB-4067 fixes exception error on retest connection + fixes SSH field key saved incorrect prop
* CB-4067 cleanup testContext info
* CB-4076 fixes SSH and SSL ask credentials and parameters saving for both: test and submit connection create/edit action
* CB-4067 fixes access tab reminder
* CB-4067 fixes handling of info message for cloud connection origin tabs
* CB-4067 fixes checkboxes behavior for TE shared credentials feature
* CB-4067 fixes create connection template popup SSH form
* CB-4067 fixes notification for closing ask credentials popup if before we had an error of test submit
* CB-6115 adds dispose API for forms
* CB-6115 adds git workspace helper extension for repo recommendations
* CB-4067 cleanup
* CB-6115 pr fixes
* CB-4067 gets back behavior with dispose connection form state
* CB-4067 cleanup
* СB-4067 splits states to ui and form part in access form part
* СB-4067 pr fixes
* CB-4067 removes config from form state
* CB-4067 removes console warnings + clean up
* CB-4067 moves synchronization mechanisms from ConnectionFormState to ConnectionOptionsFormPart
* CB-4067 fixes bug with incorrect host or port during search or changing driverId during connection creation
* CB-4067 fixes opening connection forms from different entry points so it shows consistent initial data
* СB-4067 brings back saving the form
* CB-4067 fixes logic of showing popup askCredentials
* CB-4067 fixes origin tab name so it shows correctly + fixes unneeded loaders of resources
* CB-4067 reverts isOutdated
* CB-4067 fixes loading of driver properties
* CB-4067 cleanup for connection access part
* Revert "CB-4067 reverts isOutdated"
This reverts commit ecb195ee2a.
* CB-4067 adds isOutdated to the parts
* CB-4067 fixes origin tab info message
* CB-4067 fixes driver properties state + origin info status message shows on load
* CB-4067 fixes password autofill during form save
* CB-4067 fixes linter
* CB-4067 fixes linter
* CB-4067 cleanup + fixes bug with search database host,name fields
* CB-4067 linter fix
* CB-4067 pr fixes
* CB-4067 removes unused post handler for formstate loaded task
* CB-4067 small pr fixes
* CB-4067 adds setDriver + handles name autocomplete
* chore: review
* CB-4067 connection part correct loading
* CB-4067 adds formState.state.connectionId default value
* refactor: pr review
* CB-4067 fixes bug with infinite loading of the origin info details
* CB-4067 fix: allows askCredentials to edit fields + does not affects part state
* CB-4067 resets driver properties if changed driverId
* CB-4067 updates yarn lock for common-react
* CB-4067 lint fix
* CB-6265 fix: do not include index files for import/export eslint rules
* CB-4067 fixes behavior for aksCredentials so it acts correctly during testing/saving/editing inputs for the form
* CB-4067 cleanup
* CB-4067 fixes connection templates initial loaded state
* CB-4067 pr fixes: dialog credentials; adds todo to the ssh tab; eslint revert; cleanup
* CB-4067 makes askCredentials to be part state independent
* CB-4067 qa fixes: test translation + removes db name form connection name
* CB-4067 adds readonly state for connection form
* CB-4067 fixes application freezes on disconnect
* CB-4067 fixes empty properties when switching cloud connections
* CB-4067 connection is created -> connection was created
* CB-4067 connection is updated -> connection was updated
* CB-4067 fixes outdated logic for parts
* CB-4067 build fix
* CB-4067 fix: do not show askCredential popup for drivers with only anonymous access
* CB-4067 removes includeCredentialsSaved
* CB-4067 removes includeAuthProperties
* CB-4067 removes customIncludeOptions
* CB-4067 removes includeProperties
* CB-4067 removes includeProviderProperties
* CB-4067 removes includeNetworkHandlers
* CB-4067 refactors isOutdated for originInfoPart and AccessPart
* CB-4067 removes savedCredentials resource + updates CustomOptionsResource + reuses new include resources in connection form components
* CB-4067 reverts spreading of new connectionInfoResources
* CB-4067 fixes sharedCreds checkbox default value on form switch
* CB-4067 closes connection form when layout closes
* CB-4067 disposes connection form on change
* CB-4067 handles closing of the connection form correctly
* Revert "CB-4067 handles closing of the connection form correctly"
This reverts commit 3a6f1a6a0a.
* CB-4067 handles closing of the connection form correctly [2]
* CB-4067 fits info messages in one line
* CB-4067 presaves isChanged state for form part before applying initialState to prevent bugs
* CB-4067 fixes length of the error message for connection form top bar
---------
Co-authored-by: Alexey <wrouds@gmail.com>
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#5440 feat: display boolean as checkbox in grid
* #5440 refactor: make checkboxes disabled inside grid
It's a very strange UX when checkbox is inside a cell of a table and behaves like a real one. It's much more expected when only cell takes focus and checkbox only represents the value in a way we want without acting like a real input. Moreover, using Focusable component enables smooth toggling between all 3 states of a boolean cell from a keyboard.
* #5440 fix: remove inline padding
* #5440 feat: add hover effect for boolean formatter
* #5440 refactor: revert full width
* #5440 refactor: split onClick and onKeyDown interfaces
* #5440 fix: return onClick
---------
Co-authored-by: Andrey Sychev <nukemoore@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* СB-6265 sets up vitest instead of jest
* CB-6265 gets back core-utils tests
* СB-6265 gets back react-testing-library tests
* СB-6265 gets back some tests from another plugins
* CB-6265 renames dist -> lib in each plugin + removes all jest from the repo
* CB-6265 disables watch mode so build can go on
* CB-6265 extends tests types for react-testing-library
* CB-6265 reverts dist->lib rename cause it contains other assets also
* CB-6265 moves setupFiles to the vitest.config.ts
* CB-6265 pr fixes
* CB-6265 fixes tests run for Windows
* CB-6265 removes global: true in config + uses jest-dom/vitest lib to have extended expect types
* CB-6565 removes unused deps
* СB-6265 improves performance of the test x10 times
* CB-6265 gets back renderInApp, fixes vitest setup reset config for mocks, cleans up
* CB-6265 reset -> restore all mocks
* CB-6265 fixes unit tests
* CB-6265 vitest.setup.ts cleanup
* CB-6265 timestamp to date shows military time both: on unix and windows (win tests fix)
* CB-6265 improves tests running (sequential run instead of parallel)
* CB-6265 cleanup
* CB-6265 eslint fix
* CB-6265 eslint fix 2
* CB-6265 reverts useCombined handler
* CB-6265 reverts some tests
* CB-6265 removes all redundant timer configs
* Merge branch 'devel' into CB-6265-return-front-unit-tests-after-migration
* CB-6265 pr fixes
* CB-6265 fixes time for windows
* CB-6265 removes default fake timers before each test
* #5140 fix: duplicate hotkeys should work in tables without primary key
* #5140 fix: force update table data on save if model doesn't have element identifier
* #5140 refactor: move refresh model logic to datasource saveData method
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-6296 fix: delete keystroke marks selected row for deletion
* CB-6296 fix: focus first element on load, remove extra handler
It was noticed that just after the open, onKeyDown event doesn't reach DataGrid, because focus was not in sync with lib.
Also fixes CB-6229 since they have the same root problem with encountered bag
* CB-6286 refactor: change onCellKeyDown handler interface inside DataGridProps
* CB-6296 refactor: set initial focus differently
* CB-6296 refactor: remove manual scroll control
We use grid inner scrollToCell method and don't need additional native scrolling
* refactor: don't expose inner data-grid type
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
* chore: add clsx dependency to ui-kit
* chore: import clsx from ui-kit
* refactor: use clsx for class management in Button
* refactor: use clsx in Checkbox
* refactor: use clsx in Input component
* feat: use clsx in radio and radiogroup
* feat: use clsx in Select component
* feat: reexport VisuallyHidden and Focus trap components from ariakit
* refactor: rename css variable in order to be more descriptive and stick to the naming convention
* refactor: unify controls, add new global control css variables
* feat: add radio component
* docs: add radio stories
* docs: add input docs story
* docs: add simple form story
* refactor: change default radio dot size
* refactor: change class name for radio children wrapper
* refactor: don't reexport inner radio elements
* refactor: simplify RadioGroup interface by removing items props, make label(any) required
The radiogroup must have an accessible name either by a visible label referenced by aria-labelledby or has a label specified with aria-label.
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/radiogroup_role
* refactor: use label wrapper for input component to simplify structure
* refactor: add classname for radio group container
* CB-6271 add timeout of inaction in configuration mode
* CB-6271 add timeout of inaction in configuration mode
* CB-6271 add timeout of inaction in configuration mode
* CB-6271 add timeout of inaction in configuration mode
* CB-6271 fix insecure default configuration set timeout to 2 mins
* CB-6271 fix insecure default configuration set timeout to one min
* CB-6271 handle configuration error properly
* CB-6271 catch unhandled error on validation step
* CB-6271 add return type
* CB-6271 fix insecure default configuration set timeout to one min
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
* CB-6207 add order to setting group
* CB-6207 use method instead of const value
* CB-6207 remove const
* CB-6207 sort on tree level
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* feat: add simple select
* feat: add items states vars and popover animation
* feat: add SelectField component
* feat: select field uses getters to get value/label/selected value, update stories to demonstrate
* docs: update select stories
* refactor: remove margin top because we use gutter in SelectField and for reexported aria popover we don't want to setup such default
* fix: select field - set not the very first value by default, but the first not disabled value
* refactor: add popover height variable, remove padding to look more like select in cloudbeaver by default
* feat: add styles for Select Field description
* refactor: rename properties
* refactor: remove redundant docs for props, remove placeholder props because it's not how aria select is supposed to work, you need to use extra select item to create a placeholder
* refactor: remove support for property path, keep only support for property name or custom getter in sake of simplicity and ease of maintenance
* fix: story for key getters
* fix: return type
* fix: don't set disabled value if all items are disabled
* fix: controlled mode, respect value prop over selectedValue
* refactor: remove width property
* refactor: typesafe key getter
The type iterates through every property key in ItemType.
For each property key, it evaluates whether the property's type is assignable to ValueType and creates a union type of all keys that passed the type check
* refactor: fixes after merge and item hover variable
* fix: input
* feat: add custom arrow icon prop
* refactor: remove ability to use object keys as getters, rename options to items in all places
* fix: rename token
* feat: add ui-kit package to common-react
* feat: add tailwind and ladle to ui-kit, use ui-kit in ce
* feat: create custom properties for button and checkbox using tailwind values as default
* feat: create simple button with 2 variants
* feat: create simple checkbox
* refactor: update after rebase
* feat: experiments with button and checkbox
* feat: add buttons sizes, adjust btn loader, add interactive story instead of many stories
* fix: add license
* fix: a11y issues with color contrast
* fix: mdx stories support
* feat: experiments with icons
* feat: try custom rendering
* docs: add small kinda docs for button
* refactor: css layers
* chore: deps
* chore: remove buildinfo from git
* chore: remove tsbuildinfo from git
* fix: vertical tab overflow
* feat: use UIKit button as base for Cloudbeaver button
* fix: box-sizing problems
* refactor: button styles use BEM model
* refactor: separate base tokens from aliases
* refactor: add some defaults, write all properties in snake case
* refactor: rename button classes, add ui-kit prefix
* refactor: remove redundant story, omit a couple of props, add example to ladle
* refactor: add general sizes tokens, update license
* feat: add scaffold for input component
* refactor: update deps
* refactor: remove links
* refactor: change props naming, add prefixes in checkbox, removes validation nodes in input
* refactor: partially revert "feat: use UIKit button as base for Cloudbeaver button" to keep the old Button interface without changes
Original commit SHA: 62bb1fe9a0.
* Revert "refactor: update deps"
This reverts commit f7d6533967.
* refactor: update deps once again
* refactor: rename ui-kit prefix
* chore: update deps
* refactor: Button Icon Interface
* refactor: use JSDoc for placement comment
* refactor css custom props for Button
* refactor: introduce opacity custom property, fix icon margin property
* fix: button text should not wrap;
* fix: tailwindcss version
* fix: tailwindcss version
* refactor: remove checkbox styles, keep only wireframe
* refactor: move input-related css variables to the dedicated folder
* refactor: remove unused input props
* refactor: btn loader animation
* refactor: use nesting for states, refactor classnames using BEM delimiters
* refactor: introduce btn-border-width prop, removed redundant btn-padding-block since we use fixed heights
* refactor: input and button
* fix: input
* chore: deps
* chore: deps
* chore: add vite as dev dep
* refactor: button variants
* chore: yarn install
* fix: loading button should not react on hover
* docs: add stories about tokens
* chore: remove lint command
* refactor: add prefix to css variables
* refactor: add base border-radius and border-width for controls
* fix: don't import tailwind in style files
* fix: add tailwindcss import for ladle
* fix: base radius variable
* refactor: rename css var
* refactor: add tw prefix for tailwind classes and vars
* fix: styles in easy-config
* fix: after tailwind reset paddings don't in width anymore, compensate
* fix: don't show outline on mouse click
* refactor: change btn state classes, remove not loading for hover because it's strange that button reacts on click when in loading state, but not on hover.
* fix: icons
* fix: add letter-spacing to normalize to prevent tailwind reset it with inherit value
* fix: welcome page selector
* fix: button outline uses a variable for width, proper loading state in aria, icon class name
* feat: add global styles for UI-kit ladle
* docs: refactored stories composition, added stories
* refactor: simplify loader, enable custom loaders, introduced token for btn loader, fix class names, updated stories
* docs: add global styles for ladle
* feat: use custom loader in cloudbeaver
* refactor: use oklch color space for color mixing in loaders
* docs: add readme
* fix: tsconfig, format ladle config
* docs: add short command for ladle, update readme
* fix: module export
* build: add vite plugin
* fix: remove aria-label for loading
* fix: yarn
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* CB-6249 fixes adding assets to the build for windows machines
* СB-6249 fixes the path for windows
* CB-6249 normalizes paths for build assets
* CB-6249 adds comment for assets
* CB-6249 normalizes paths to posix format
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* CB-6264 adds ability to where filter to consider only typed text for suggestions
* CB-6264 adds case with tab
* CB-6224 cleanup
* CB-6264 add fix with focus check
* Revert "CB-6264 add fix with focus check"
This reverts commit 152f38a5c4.
* CB-6264 adds fix via isFocused
* CB-6264 cleanup
* CB-6264 resets state on proposal submission/cancelling
* CB-6264 adds resetState on any replacement case
* CB-6264 adds reset state on menu being invisible
* CB-6264 reverts outside click
* CB-6264 adds resetState on press Tab button
* CB-6264 cleanup
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-3771 loads host form searchDatabases for connections
* CB-3771 fixes overlap for connection host and port values
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-6041 add system information plugin
* CB-6041 api for system information
* CB-6041 api for system information
* CB-6041 api for system information
* CB-6041 simplify system info ui
* CB-6041 remove extra props
* CB-6041 api for internal database information
* CB-6041 remove hint
* CB-6041 add missing field
* CB-6041 use categories for database info
* CB-6041 add categories
* CB-6041 add category to copy info
* CB-6041 code style fix
* CB-6041 fix get property ids
* CB-6041 updates react version to 19
---------
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
Co-authored-by: Alexander Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
* CB-6200 disconnect data source on changing
* CB-6200 correctly checks if connection is connected on updated connection resource event
* Revert "CB-6200 correctly checks if connection is connected on updated connection resource event"
This reverts commit 45485a02d6.
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
* CB-6181 fix: show save/cancel buttons in json docs
* CB-6181 refactor: change condition for SAVE/CANCEL buttons
The problem is that for select 1 in TE we get different result from other product, because in CE/EE we use ResultSetFooterMenuService, while for TE we use regular TableFooterMenuService. model.source.isReadOnly flag doesn't return true anymore since we extracted hasRowIdentifier flag from it, so we get redundant buttons in tables like that in TE.
Since the only difference is products where we are executing this script, it's quite hard to detect it inside a component. I decided to check editor's features, they are empty in this case (select 1) in all products, so we can be 100% sure that if there are no features, we don't need any buttons.
The other problem that for Document type of data format we also don't have features (and we use the same footer menu service). If it's not read-only, we need to have those buttons to save/cancel edits. The first solution is to check data format is Document (or check the editor type or to try get action with needed type). The other solution that I used is to check hasRowIdentifier flag(hasElementIdentifier) because editable documents will have it true, while datasets like select 1 don't have them. It looks more generic for me and should work in more cases in future
* СB-6181 refactor: update isReadonly flag for resultset
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* CB-6132 feat: add read-only setting to connection's expert block
* CB-6132 refactor: add readonly property for the new field
* CB-6132 set read only param for data source container
* CB-6132 refactor: add locales
* CB-6132 refactor: change eng message
* CB-6132 fix read only for creating connection
---------
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
* CB-4066 refactors team structure
* CB-4066 refactors Team form to use new API
* CB-4066 adds TeamProjects form part to the TeamsForm
* CB-4066 cleanup
* CB-4066 cleanup
* CB-4066 pr fixes
* CB-4066 pr fixes
* CB-4066 fixes title and error key for team creation
* CB-4066 qa fixes
* CB-4066 qa fixes
* CB-4066 fixes bug with team editing
* CB-3753 pr fixes
* CB-4066 fixes validation error with wrong teamId
---------
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* CB-6063 feat: add ability to import data without PK
* CB-6063 feat: add ability to insert rows to tables w/o PK using actions
removes isImportAllowed flag, adds hasRowIdentifier, uses it in place of forbidden actions
* CB-6063 refactor: use only false value for hasRowIdentifier flag
* CB-6063 fix: revert logic in hasRowIdentifier
* CB-6063 refactor: rename property
* CB-6063 fix: return lock icon back for tables w/o identifier
* CB-6063 fix: hasRowIdentifier in getResult
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
* CB-5832 feat: add shortcut for save as script action
* CB-5832 feat: add info about a shortcut to Shortcuts modal
* CB-5832 fix: ru localization
* CB-5832 refactor: use SqlEditorView for action registration
* CB-5832 refactor: use SqlEditorView for action registration
* CB-5832 refactor: check action in handler
* CB-5832 refactor: bind function in constructor
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-5978 hides API Token provider during configuration wizzard
* CB-5978 hides API token only for config mode (fix)
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-3508 create events for session async tasks
* CB-3508 remove redundant events
* CB-3508 update async web task event logic
* CB-6000 refactor: migrate AsyncTask code to core-root package
* CB-6000: fix
* CB-3508 use only update async task event
* CB-3508 add result info to async task event
* CB-6000 feat: change the way of updating task state
* CB-6000 refactor: rename type and property
* CB-6000 fix: use id from server
* CB-3508 do not have results in task info event
* CB-6000 changes after BE update
* CB-6000 fix: set only status on status update
* CB-3508 fixes after review
* CB-6000 refactor: task id
return back task id generation and saving on creation. Added second map filled on running and linking backend Id and frontend Id. Added helper method to get task
* CB-6000 refactor: handle race condition
add pending events map to save last status if it's came earlier than we saved the task
* CB-6000 refactor: AsyncTask creation
* CB-3508 fixes build
* CB-6000 fix: retry update task info later if locked
* CB-6000 refactor: add a comment about delayed update
---------
Co-authored-by: Andrey Sychev <nukemoore@gmail.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-5807. Implemented logic to get localized text by locale, translated global prefer and part of identity provider on en/ru
* CB-5807. Refactor after review
* CB-5807. Refactor after review, move logic to base class
* CB-5807. Refactor after review, move logic to base class
* CB-5807. Added new translation for IP
* CB-5807. Refactor after review
* CB-5807. Refactor after review
* CB-5807. Refactor after review
* CB-5807. Fixed typo in ru locale
* CB-5807. Refactor after review
* CB-5807. Revert
* CB-5807. Remove comment
---------
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: Ainur <59531286+yagudin10@users.noreply.github.com>
* CB-5955 adds create menu (connection, folder)
* CB-5955 hides folder creation for non authorized users
* CB-5955 fixes label
* CB-5955 disable new connection
* CB-5955 shows create actions only for folders and connections nodes
* CB-5955 cleanup
* CB-5955 Add handler to hide create menu when no items are available
* CB-5955 Refactor handler to directly bind elementsTreeActionHandler for folder creation
* CB-5955 pr fixes
* CB-5955 creates connection according to the selected in tree project + tree selection refactor
* CB-5955 reverts old behavior with Generate SQL submenu for connections
* CB-5955 cleanup
* CB-5955 adds connection via menu into any folder
* CB-5955 updates TS references
* CB-5955 cleanup
* CB-5955 pr fixes
* CB-5955 pr fixes
* CB-5955 pr fixes
* CB-5955 cleanup
* CB-5955 fixes bug with dissapeared create connection button at top bar
* CB-5955 pr fixes
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* CB-5831 migrate data grid context menu
* CB-5831 use switch instead of return
* CB-5831 migrate save actions
* CB-5831 apply primary color
* CB-4071 simplify logic
* CB-4071 simplify logic
* CB-4071 change naming
* CB-4071 review fixes
* CB-4071 add items based on condition
* CB-4071 remove old context menu
* CB-4071 pass handlers to panel
* CB-4071 add gap to the menu
* CB-4071 check data source
* CB-4071 support prev behaviour
* CB-4071 make context more strict
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* CB-3332 refactor: data-viewer shortcuts
move them to the plugin folder, make them IKeyBinding shape to use in transformKeys
* CB-3332 refactor: change ctrl hotkey to mod
* CB-3332 refactor: use new DATA_VIEWER_SHORTCUTS, don't replace backspace
* CB-3332 refactor: remove redundant shortcuts, update naming
* CB-3332 feat: introduce new shortcuts for rows managing
In order to let mac users use shortcuts, Insert key was changed to KeyR
* CB-3332 feat: move shift key to the beginning of all shortcuts
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-5918 add holidays plugin
* CB-5918 add plugin-holidays as a reference to product default
* CB-5918 fix holidays plugin, add icons
* CB-5918 fix: don't run many renders simultaneously
* CB-5918 fix: flakes respawn
previously flakes kept x position that looked weird especially when user resize the window making it bigger
* CB-5918 refactor: adjust flakes size and speed
make flakes bigger and a little bit slower, reduce amount of flakes
* CB-5918 refactor: make flakes look like flakes
add shape prop to create different shapes of snowflakes
add drawSnowflake to render snowflakes
* CB-5918 Extract Logo registration to separate plugin
In order to customize Logo for different occasions without creating circular dependencies with other plugins
* CB-5918 refactor: update exports in holiday plugin
* CB-5918 feat: make logo src a prop
use holidays service to set custom logo
* CB-5918 refactor: update logos
* CB-5918 refactor: snowflakes removing faster if more flakes
* CB-5918 refactor: reduce action icon rotation on click
* CB-5918 fix: deps
* CB-5918 fix: ts-config reference
* CB-5918 refactor: use debounce for resizing
* CB-5918 refactor: add throttle to handleMouseMove
* CB-5918 refactor: update logo
* CB-5918 fix: start date
* CB-5918 feat: add rotation to snowflakes
* CB-5918 fix: dep version
* CB-5918: refactor: split up app logo plugin to public and admin parts
* CB-5918 refactor: split holidays plugin up to two parts: admin and public
* CB-5918 refactor: avoid using anonymous functions in Christmas class
* CB-5918 refactor: HolidayActionButton
* CB-5918 refactor: IHoliday interface naming
* CB-5918 fix: update TS refs
* CB-5918 fix: legacy color notation and lost this
* CB-5918 refactor: remove redundant plugin bootstrap export
* CB-5918 refactor: rename private property
* CB-5918 refactor: use IconButton core block inside HolidayActionButton
* CB-5918 refactor: add check in addHoliday method
* CB-5918 refactor: simplify logoSrc condition
* CB-5918 refactor: remove redundant styles
* CB-5918 refactor: use descriptive names for plugins bootstrap
* CB-5918 refactor: specify dep version
* CB-5918 refactor: improve Christmas class readability
* CB-5918 refactor: use lazy import for logo
* CB-5918 refactor: export lazy components properly
* CB-5918 fix: holiday end date
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* CB-5125 do not trigger logo in configuration stage
* CB-5125 use publicDisabled field instead
* CB-5125 bind method
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-5584. Added more logs for gql and rest in RM. Added new parameter in global preferences for showing additional logs
* CB-5584. Added more logs for gql and rest in RM. Added new parameter in global preferences for showing additional logs
* CB-5584. Rename parameter
* CB-5584. Rename parameter
* CB-5584. Refactor after review
* CB-5584. Refactor after review
* CB-5584. Renamed parameter
* CB-5584. Added check variable for contains restricted variable
* CB-5584. Fixed showing wrong sessionId.
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
handleScroll in DataGrid entails small performance degradation due to el.scrollTop, el.clientHeight, el.scrollHeight calls and hence reflow of layout, more on that here: https://gist.github.com/paulirish/5d52fb081b3570c81e3a/565c05680b27c9cfd9f5e971d295cd558c3e1843
What is done:
1. throttle added to not fire handleScroll on every render, because the main goal of that function is to detect when a user approaches the end of a page = reduce number of calls
2. Inside the handler the code was refactored in a way that we get scrollTop only once to calculate toBottom and inverse the clause logic and replace early return (!A || !B) with a clause with (A && B) logic to not check B on every call which is also triggering reflow.
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
* CB-5775 refactor: make default group text aligned with other tabs
* CB-5775: return accidentally removed gap prop
* CB-5775 refactor: return TextPlaceholder back
* CB-5775 refactor: make style important
---------
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
* CB-5891 on disable user changes form state according to its real state
* CB-5891 pr fixes
* CB-5891 cleanup
* CB-5891 pr fixes
---------
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
This commit handles the situations and sets fallback when there are text changes but selection has not been set (for example, its position outside of the doc). It that case we set the cursor in the end of the result string. It helps us to keep the cursor position more consistent.
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
* CB-5691 adds ctrl+enter submit for textarea in form
* CB-5691 removes unneeded prop: disableCtrlEnterSubmit
---------
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
* CB-5757 adds unit tests for getDomainFromUrl helper
* CB-5757 adds unit tests for getTextFileReadingProcess helper
* CB-5757 adds unit tests for TextTools helper
* CB-5757 adds unit tests for downloadFromURL helper
* CB-5757 adds unit tests for Deferred and PromiseExecutor
* CB-5757 adds unit tests for core-blocks hooks
* CB-5757 fixes the tests
* CB-5753 add localization service test, fix grammar
* CB-5753 add test for the getDomainFromUrl
* CB-5753 add test for the client activity service
* CB-5753 add NodeManagerUtils tests
* CB-5753 add more cases
* CB-5753 pass args correctly
about:Provide a description of your feature request for CloudBeaver. Include the problem you are trying to solve, why it is important, and any specific functionality you believe would improve the platform.
title:''
labels:feature request, wait for review
labels:wait for review
type:Feature
assignees:''
---
@@ -12,3 +13,9 @@ A clear and concise description of what the problem is. Ex. I'm always frustrate
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
@@ -25,50 +25,74 @@ You can see a live demo of CloudBeaver here: https://demo.cloudbeaver.io
## Changelog
### 24.2.2. 2024-10-07
-Schemas were added to the SQL autocompletion for PostgreSQL, H2, and SQL Server;
-CloudBeaver can now correctly display negative dates for MySQL database;
-A search option was added for preferences in the Administration part;
-Keyboard navigation has been enhanced. You can now use the arrow keys to move through navigator tree elements and the tab key to switch between editors tabs;
- Sample SQLite database was removed.
### 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).
### 24.2.1. 2024-09-23
-Chinese localization has been improved (thanks to [cashlifei](https://github.com/cashlifei));
- Environment variables configuration has been improved - now you can configure more variables on the initial stage of the Docker setup;
-SQL Server driver has been updated to version 12.8.0.
### 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.
### 24.2.0. 2024-09-02
### Changes since 24.1.0:
### 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:
-French language support was added (thanks to [matthieukhl](https://github.com/matthieukhl))
- Added the ability to close editor tabs with the middle mouse button
-Added right-click support to open the context menu in the Metadata Editor
-The list of forbidden characters for naming and renaming resource manager files has been updated, and now it includes the following characters: / : " \ ' <> | ? *
-Application cookies security was improved
- Authentication:
- Improved LDAP authentication: added the ability to filter users via service account parameters and ability to specify custom unique user identifiers
- Data Editor:
- Added additional notifications about the restricted operations
- Enhanced IPv6 and DateTime32 data representation for Clickhouse
- Data editing was fixed for DuckDB
- SQL Editor:
- SQL Editor auto-completion was enhanced to get column, table, and function names faster
- Fixed the dollar-quoted string parsing in the SQL Editor for PostgreSQL
- Improved display of the long error messages in the SQL Editor and Log viewer
- Changed the save script icon to a floppy disk for better recognition
- Improved application behavior when closing a connection - open editors won't be closed on disconnect
-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:
-Redesigned administration navigation panel - now it is more compact and clear
-Added the ability to change the default commit mode for each connection separately
-Added the ability to configure the server property rootURI parameter (thanks to [arioko](https://github.com/arioko))
-Databases:
- Added the "Keep alive" setting for Db2 LUW and IMB i, Apache Kyuubi, Clickhouse, Firebird, and Trino
-Updated Firebird driver to version 5.0.4
-DDL generation for Oracle Tablespaces was added (thanks to [pandya09](https://github.com/pandya09))
-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.
## 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.2.0 was made by:
1. [matthieukhl](https://github.com/matthieukhl)
The most significant contribution to our code for the major release 24.3.0 was made by:
#### The DBeaver UI Kit is a collection of reusable React components designed to help developers build consistent and visually appealing user interfaces.
## Using Ladle for Component Development
[Ladle](https://ladle.dev/) is a tool that allows you to develop, test, and document your React components in isolation. We use it to create a sandbox environment where you can interact with your components and ensure they work as expected.
To get started with Ladle in the DBeaver UI Kit, write in terminal:
```bash
yarn docs
```
Then open the provided URL to see components.
## How to Customize
DBeaver UI Kit components have basic styles and use some defaults from Tailwind CSS. To change styling, you can use different approaches.
### Global CSS Tokens
The UI kit uses several global CSS tokens described on the Global Tokens page. These tokens help maintain consistency across the UI components. All DBeaver UI tokens are prefixed with `--dbv-kit-`. You can use these tokens to customize the UI kit to fit your application's design. For example, changing the `--dbv-kit-font-size-base` token will change the base font size for text in the UI kit. Changing the `--dbv-kit-control-height-base` token will change all control heights. If you don't want to change all controls, you can change `--dbv-kit-control-height-small`, `--dbv-kit-control-height-medium`, or other tokens separately. They will affect only specific components.
### Component CSS Tokens
Some components have their own tokens. For example, the Button component has tokens for button sizes, padding, and colors. You can change these tokens to customize the Button component. To see the list of tokens, go to sources or start Ladle.
### Component CSS Classes
Each component in the UI kit has a default CSS class name following the `dbv-kit-[component name(in lowercase)]` naming convention that you can use to customize the component. You can find the default class name in the component's documentation.
For button:
```css
.dbv-kit-button{
/* Your custom styles */
}
```
For input:
```css
.dbv-kit-input{
/* Your custom styles */
}
```
Some components have additional classes for different states or sizes. For example, the Button component has classes for different sizes: `.dbv-kit-button--small`, `.dbv-kit-button--large`. We use the BEM convention for class names. If a component has a modifier, it will be separated by two dashes. If a component has a child element, it will be separated by two underscores, for example:
-`.dbv-kit-button__icon` - icon is a child element of the button
-`.dbv-kit-button--large` - large is a size modifier
-`.dbv-kit-button__icon--start` - icon is a child element of the button and has a start placement
Each component accepts the standard `className` and `style` props which enable using vanilla CSS, utility classes (e.g., Tailwind), CSS-in-JS (e.g., Styled Components), etc. A custom `className` can be specified and will be appended to a class list of a component:
* Button Icon component - used to place an icon inside a button, renders span element.;
*
* @param props.placement This property is needed to adjust icon placement inside a button. The icon with placement="start" will cut the inline-start padding. placement="end" will affect the padding-inline-end accordingly. This property supports RTL and LTR, so you don't need to think about it.
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.