From 84c81b054cbab01510b811929fd00a793e0e4998 Mon Sep 17 00:00:00 2001 From: Yevhen Shevchenko <90138953+yeshev@users.noreply.github.com> Date: Fri, 7 Jul 2023 15:35:42 +0300 Subject: [PATCH] feat: add tooltip for disabled tab (#3071) --- .../TabLabel/TabLabel.interfaces.ts | 5 ++++ frontend/src/components/TabLabel/index.tsx | 29 +++++++++++++++++++ .../src/container/LogsExplorerViews/index.tsx | 11 +++++-- frontend/src/pages/TracesExplorer/utils.tsx | 19 ++++++++++-- 4 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 frontend/src/components/TabLabel/TabLabel.interfaces.ts create mode 100644 frontend/src/components/TabLabel/index.tsx diff --git a/frontend/src/components/TabLabel/TabLabel.interfaces.ts b/frontend/src/components/TabLabel/TabLabel.interfaces.ts new file mode 100644 index 0000000000..5e8762e82e --- /dev/null +++ b/frontend/src/components/TabLabel/TabLabel.interfaces.ts @@ -0,0 +1,5 @@ +export type TabLabelProps = { + isDisabled: boolean; + label: string; + tooltipText?: string; +}; diff --git a/frontend/src/components/TabLabel/index.tsx b/frontend/src/components/TabLabel/index.tsx new file mode 100644 index 0000000000..ec92505689 --- /dev/null +++ b/frontend/src/components/TabLabel/index.tsx @@ -0,0 +1,29 @@ +import { Tooltip } from 'antd'; +import { memo } from 'react'; + +import { TabLabelProps } from './TabLabel.interfaces'; + +function TabLabel({ + label, + isDisabled, + tooltipText, +}: TabLabelProps): JSX.Element { + const currentLabel = {label}; + + if (isDisabled) { + return ( + + {currentLabel} + + ); + } + + return currentLabel; +} + +export default memo(TabLabel); diff --git a/frontend/src/container/LogsExplorerViews/index.tsx b/frontend/src/container/LogsExplorerViews/index.tsx index 8b5eecb869..560c498b3f 100644 --- a/frontend/src/container/LogsExplorerViews/index.tsx +++ b/frontend/src/container/LogsExplorerViews/index.tsx @@ -1,4 +1,5 @@ import { TabsProps } from 'antd'; +import TabLabel from 'components/TabLabel'; import { PANEL_TYPES } from 'constants/queryBuilder'; import { queryParamNamesMap } from 'constants/queryBuilderQueryNames'; import { DEFAULT_PER_PAGE_VALUE } from 'container/Controls/config'; @@ -252,7 +253,13 @@ function LogsExplorerViews(): JSX.Element { const tabsItems: TabsProps['items'] = useMemo( () => [ { - label: 'List View', + label: ( + + ), key: PANEL_TYPES.LIST, disabled: isMultipleQueries || isGroupByExist, children: ( @@ -267,7 +274,7 @@ function LogsExplorerViews(): JSX.Element { ), }, { - label: 'TimeSeries', + label: , key: PANEL_TYPES.TIME_SERIES, children: ( diff --git a/frontend/src/pages/TracesExplorer/utils.tsx b/frontend/src/pages/TracesExplorer/utils.tsx index 2c0143dadc..c2aa7b58ce 100644 --- a/frontend/src/pages/TracesExplorer/utils.tsx +++ b/frontend/src/pages/TracesExplorer/utils.tsx @@ -1,4 +1,5 @@ import { TabsProps } from 'antd'; +import TabLabel from 'components/TabLabel'; import { PANEL_TYPES } from 'constants/queryBuilder'; import TimeSeriesView from 'container/TimeSeriesView'; import ListView from 'container/TracesExplorer/ListView'; @@ -13,19 +14,31 @@ export const getTabsItems = ({ isListViewDisabled, }: GetTabsItemsProps): TabsProps['items'] => [ { - label: 'List View', + label: ( + + ), key: PANEL_TYPES.LIST, children: , disabled: isListViewDisabled, }, { - label: 'Traces', + label: ( + + ), key: PANEL_TYPES.TRACE, children: , disabled: isListViewDisabled, }, { - label: 'Time Series', + label: , key: PANEL_TYPES.TIME_SERIES, children: , },