From 93a598bf7933fa7b0bc0b5afedb56a521e353848 Mon Sep 17 00:00:00 2001 From: sergeyteleshev Date: Tue, 6 Jan 2026 11:20:44 +0100 Subject: [PATCH 01/12] dbeaver/pro#7772 adds truncated tooltips for context menus --- .../core-blocks/src/Menu/MenuItemElement.tsx | 15 ++--- webapp/packages/core-blocks/src/index.ts | 3 +- .../core-blocks/src/useTruncatedTooltip.ts | 60 +++++++++++++++++++ 3 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 webapp/packages/core-blocks/src/useTruncatedTooltip.ts diff --git a/webapp/packages/core-blocks/src/Menu/MenuItemElement.tsx b/webapp/packages/core-blocks/src/Menu/MenuItemElement.tsx index 66533a72265..314db503d08 100644 --- a/webapp/packages/core-blocks/src/Menu/MenuItemElement.tsx +++ b/webapp/packages/core-blocks/src/Menu/MenuItemElement.tsx @@ -1,11 +1,12 @@ /* * CloudBeaver - Cloud Database Manager - * Copyright (C) 2020-2025 DBeaver Corp and others + * Copyright (C) 2020-2026 DBeaver Corp and others * * Licensed under the Apache License, Version 2.0. * you may not use this file except in compliance with the License. */ import { observer } from 'mobx-react-lite'; +import { type HTMLAttributes, useRef } from 'react'; import { Icon } from '../Icon.js'; import { IconOrImage } from '../IconOrImage.js'; @@ -14,8 +15,8 @@ import { useTranslate } from '../localization/useTranslate.js'; import { s } from '../s.js'; import { useS } from '../useS.js'; import { useStateDelay } from '../useStateDelay.js'; +import { useTruncatedTooltip } from '../useTruncatedTooltip.js'; import style from './MenuItemElement.module.css'; -import type { HTMLAttributes } from 'react'; export interface IMenuItemGroupArrowElementProps extends HTMLAttributes {} @@ -43,12 +44,12 @@ export const MenuItemElement = observer(function MenuItem }) { const styles = useS(style); const translate = useTranslate(); - - const title = translate(label); + const textRef = useRef(null); + const truncatedLabel = useTruncatedTooltip(textRef, label); loading = useStateDelay(loading, 300); return ( -