* 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>
* #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
* 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
* 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>