From 667a64e377ba3d584bd6e0f46025fed1ef6efaeb Mon Sep 17 00:00:00 2001 From: naumov Date: Wed, 17 Sep 2025 20:34:37 +0200 Subject: [PATCH 1/2] dbeaver/pro#5752 add boolean component to metadata editor --- .../packages/plugin-object-viewer/package.json | 1 + .../ObjectPropertyTable/Table/Table.module.css | 18 ++++++++++++++++++ .../ObjectPropertyTable/Table/Table.tsx | 17 +++++++++++++++-- .../plugin-object-viewer/tsconfig.json | 3 +++ webapp/yarn.lock | 1 + 5 files changed, 38 insertions(+), 2 deletions(-) diff --git a/webapp/packages/plugin-object-viewer/package.json b/webapp/packages/plugin-object-viewer/package.json index 8dd2aff10f1..cc6be315587 100644 --- a/webapp/packages/plugin-object-viewer/package.json +++ b/webapp/packages/plugin-object-viewer/package.json @@ -40,6 +40,7 @@ "@cloudbeaver/plugin-navigation-tabs": "workspace:*", "@cloudbeaver/plugin-navigation-tree": "workspace:*", "@dbeaver/js-helpers": "workspace:^", + "@dbeaver/ui-kit": "workspace:^", "mobx": "^6", "mobx-react-lite": "^4", "react": "^19", diff --git a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.module.css b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.module.css index 959ab946732..16f8e740d7b 100644 --- a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.module.css +++ b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.module.css @@ -30,3 +30,21 @@ composes: theme-background-surface theme-text-on-surface theme-border-color-background from global; border-top: 1px solid; } + +.boolean { + display: flex; + align-items: center; + justify-content: center; + + &[data-disabled] { + opacity: 1; + } +} + +@layer components { + .boolean { + composes: checkbox-markup-theme--tertiary from global; + --dbv-kit-checkbox-border-width: 1px; + --dbv-kit-checkbox-check-size: 0.8; + } +} diff --git a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx index e4705b1a7fc..590c86d3063 100644 --- a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx +++ b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx @@ -14,7 +14,8 @@ import { useService } from '@cloudbeaver/core-di'; import { type DBObject, NavTreeResource } from '@cloudbeaver/core-navigation-tree'; import { useTabLocalState } from '@cloudbeaver/core-ui'; import { DataGrid, useCreateGridReactiveValue } from '@cloudbeaver/plugin-data-grid'; -import { getObjectPropertyDisplayValue } from '@cloudbeaver/core-sdk'; +import { getObjectPropertyDisplayValue, getObjectPropertyType, getObjectPropertyValue } from '@cloudbeaver/core-sdk'; +import { Checkbox } from '@dbeaver/ui-kit'; import { ObjectPropertyTableFooter } from '../ObjectPropertyTableFooter.js'; import classes from './Table.module.css'; @@ -76,7 +77,19 @@ export const Table = observer(function Table({ objects, hasNextPage, } const property = objects[rowIdx]?.object?.properties?.[colIdx]; - return property ? getObjectPropertyDisplayValue(property) : ''; + + if (property) { + const type = getObjectPropertyType(property); + + if (type === 'checkbox') { + const value = getObjectPropertyValue(property); + return ; + } + + return getObjectPropertyDisplayValue(property); + } + + return ''; } const cell = useCreateGridReactiveValue(getCell, (onValueChange, rowIdx, colIdx) => reaction(() => getCell(rowIdx, colIdx), onValueChange), [ objects, diff --git a/webapp/packages/plugin-object-viewer/tsconfig.json b/webapp/packages/plugin-object-viewer/tsconfig.json index dbd495bc2f3..ead773d6693 100644 --- a/webapp/packages/plugin-object-viewer/tsconfig.json +++ b/webapp/packages/plugin-object-viewer/tsconfig.json @@ -7,6 +7,9 @@ "composite": true }, "references": [ + { + "path": "../../common-react/@dbeaver/ui-kit" + }, { "path": "../../common-typescript/@dbeaver/js-helpers" }, diff --git a/webapp/yarn.lock b/webapp/yarn.lock index cfd011197d7..a90d6d440da 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -3374,6 +3374,7 @@ __metadata: "@cloudbeaver/plugin-navigation-tree": "workspace:*" "@cloudbeaver/tsconfig": "workspace:*" "@dbeaver/js-helpers": "workspace:^" + "@dbeaver/ui-kit": "workspace:^" "@types/react": "npm:^19" mobx: "npm:^6" mobx-react-lite: "npm:^4" From 57b71c0dcb617be73ff0793732d6d9639321dc9c Mon Sep 17 00:00:00 2001 From: naumov Date: Wed, 17 Sep 2025 20:40:23 +0200 Subject: [PATCH 2/2] dbeaver/pro#5752 fix linter --- .../ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx index 590c86d3063..2b708abac33 100644 --- a/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx +++ b/webapp/packages/plugin-object-viewer/src/ObjectPropertiesPage/ObjectPropertyTable/Table/Table.tsx @@ -83,7 +83,7 @@ export const Table = observer(function Table({ objects, hasNextPage, if (type === 'checkbox') { const value = getObjectPropertyValue(property); - return ; + return ; } return getObjectPropertyDisplayValue(property);