Skip to content

Commit b53324f

Browse files
committed
feat: improve appearing controls styles, get rid of custom ClipboardButton component in favor of uikit version
1 parent 6cc07d5 commit b53324f

File tree

13 files changed

+74
-88
lines changed

13 files changed

+74
-88
lines changed

src/components/ClipboardButton/ClipboardButton.tsx

-52
This file was deleted.

src/components/ClipboardButton/index.ts

-1
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {ArrowUpRightFromSquare} from '@gravity-ui/icons';
2+
import type {ButtonSize} from '@gravity-ui/uikit';
23
import {Button, Icon} from '@gravity-ui/uikit';
34

45
import {cn} from '../../utils/cn';
@@ -7,16 +8,30 @@ import './DeveloperUILinkButton.scss';
78

89
const b = cn('developer-ui-link-button');
910

11+
const buttonSizeToIconSize: Record<ButtonSize, number> = {
12+
xs: 14,
13+
s: 16,
14+
m: 16,
15+
l: 18,
16+
xl: 18,
17+
};
18+
1019
interface DeveloperUiLinkProps {
1120
className?: string;
1221
visible?: boolean;
1322
href: string;
23+
size?: ButtonSize;
1424
}
1525

16-
export function DeveloperUILinkButton({href, visible = false, className}: DeveloperUiLinkProps) {
26+
export function DeveloperUILinkButton({
27+
href,
28+
visible = false,
29+
className,
30+
size = 's',
31+
}: DeveloperUiLinkProps) {
1732
return (
18-
<Button size="s" href={href} className={b({visible}, className)} target="_blank">
19-
<Icon data={ArrowUpRightFromSquare} />
33+
<Button size={size} href={href} className={b({visible}, className)} target="_blank">
34+
<Icon data={ArrowUpRightFromSquare} size={buttonSizeToIconSize[size]} />
2035
</Button>
2136
);
2237
}

src/components/EntityStatus/EntityStatus.scss

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
@import '../../styles/mixins.scss';
22

33
.entity-status {
4+
position: relative;
5+
46
display: inline-flex;
57
align-items: center;
68

@@ -17,8 +19,6 @@
1719
display: flex;
1820
flex-shrink: 0;
1921

20-
margin-left: var(--g-spacing-2);
21-
2222
opacity: 0;
2323
color: var(--g-color-text-secondary);
2424

@@ -28,8 +28,19 @@
2828
}
2929
}
3030

31-
&__additional-controls {
32-
margin-left: var(--g-spacing-1);
31+
&__controls-wrapper {
32+
position: absolute;
33+
top: 0;
34+
right: 0;
35+
36+
display: flex;
37+
align-items: center;
38+
gap: var(--g-spacing-1);
39+
40+
width: 0;
41+
height: 100%;
42+
43+
background-color: var(--g-color-base-float);
3344
}
3445

3546
&__label {

src/components/EntityStatus/EntityStatus.tsx

+16-14
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import {Link as UIKitLink} from '@gravity-ui/uikit';
1+
import {ClipboardButton, Link as UIKitLink} from '@gravity-ui/uikit';
22

33
import {EFlag} from '../../types/api/enums';
44
import {cn} from '../../utils/cn';
5-
import {ClipboardButton} from '../ClipboardButton';
65
import {InternalLink} from '../InternalLink/InternalLink';
76
import {StatusIcon} from '../StatusIcon/StatusIcon';
87
import type {StatusIconMode, StatusIconSize} from '../StatusIcon/StatusIcon';
@@ -95,18 +94,21 @@ export function EntityStatus({
9594
</span>
9695
)}
9796
<span className={b('link', {'with-left-trim': withLeftTrim})}>{renderLink()}</span>
98-
{hasClipboardButton && (
99-
<ClipboardButton
100-
text={name}
101-
size="s"
102-
className={b('clipboard-button', {
103-
visible: clipboardButtonAlwaysVisible,
104-
})}
105-
/>
106-
)}
107-
{additionalControls && (
108-
<span className={b('additional-controls ')}>{additionalControls}</span>
109-
)}
97+
<div className={b('controls-wrapper')}>
98+
{hasClipboardButton && (
99+
<ClipboardButton
100+
text={name}
101+
size="xs"
102+
view="normal"
103+
className={b('clipboard-button', {
104+
visible: clipboardButtonAlwaysVisible,
105+
})}
106+
/>
107+
)}
108+
{additionalControls && (
109+
<span className={b('additional-controls')}>{additionalControls}</span>
110+
)}
111+
</div>
110112
</div>
111113
);
112114
}

src/components/NodeHostWrapper/NodeHostWrapper.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ export const NodeHostWrapper = ({node, getNodeRef, database}: NodeHostWrapperPro
4242
})
4343
: undefined;
4444

45-
const additionalControls = nodeHref ? <DeveloperUILinkButton href={nodeHref} /> : null;
45+
const additionalControls = nodeHref ? (
46+
<DeveloperUILinkButton href={nodeHref} size="xs" />
47+
) : null;
4648

4749
return (
4850
<CellWithPopover

src/components/PaginatedTable/PaginatedTable.scss

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
--paginated-table-cell-horizontal-padding: 10px;
88

99
--paginated-table-border-color: var(--g-color-base-generic-hover);
10-
--paginated-table-hover-color: var(--g-color-base-float-hover);
10+
--paginated-table-hover-color: var(--g-color-base-float);
1111

1212
width: 100%;
1313
@include body-2-typography();

src/containers/App/App.scss

+7-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ body,
3636
}
3737

3838
.g-root {
39-
--ydb-data-table-color-hover: var(--g-color-base-float-hover);
39+
--ydb-data-table-color-hover: var(--g-color-base-float);
4040

4141
// Colors for tablets, status icons and progress bars
4242
--ydb-color-status-grey: var(--g-color-base-neutral-heavy);
@@ -93,9 +93,14 @@ body,
9393
.ydb-paginated-table__row,
9494
.ydb-tree-view__item {
9595
&:hover {
96-
& .clipboard-button {
96+
& .entity-status__clipboard-button,
97+
.ydb-versions-nodes-tree-title__clipboard-button {
9798
opacity: 1;
9899
}
100+
& .entity-status__controls-wrapper {
101+
width: min-content;
102+
padding: var(--g-spacing-1);
103+
}
99104
}
100105
}
101106

src/containers/Tenant/Diagnostics/TopShards/getTopShardsColumns.tsx

+4-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,10 @@ const tabletIdColumn: Column<KeyValueRow> = {
9292
hasClipboardButton
9393
showStatus={false}
9494
additionalControls={
95-
<DeveloperUILinkButton href={createTabletDeveloperUIHref(row.TabletId)} />
95+
<DeveloperUILinkButton
96+
href={createTabletDeveloperUIHref(row.TabletId)}
97+
size="xs"
98+
/>
9699
}
97100
/>
98101
);

src/containers/Tenant/ObjectSummary/ObjectSummary.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@ import React from 'react';
22

33
import {DefinitionList, HelpPopover} from '@gravity-ui/components';
44
import type {DefinitionListSingleItem} from '@gravity-ui/components/build/esm/components/DefinitionList/types';
5-
import {Flex, Tabs} from '@gravity-ui/uikit';
5+
import {ClipboardButton, Flex, Tabs} from '@gravity-ui/uikit';
66
import qs from 'qs';
77
import {Link, useLocation} from 'react-router-dom';
88
import {StringParam, useQueryParam} from 'use-query-params';
99

1010
import {AsyncReplicationState} from '../../../components/AsyncReplicationState';
11-
import {ClipboardButton} from '../../../components/ClipboardButton';
1211
import {toFormattedSize} from '../../../components/FormattedBytes/utils';
1312
import {LinkWithIcon} from '../../../components/LinkWithIcon/LinkWithIcon';
1413
import SplitPane from '../../../components/SplitPane';

src/containers/Tenant/Query/ExecuteResult/ExecuteResult.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import React from 'react';
22

33
import type {ControlGroupOption} from '@gravity-ui/uikit';
4-
import {RadioButton, Tabs, Text} from '@gravity-ui/uikit';
4+
import {ClipboardButton, RadioButton, Tabs, Text} from '@gravity-ui/uikit';
55
import JSONTree from 'react-json-inspector';
66

7-
import {ClipboardButton} from '../../../../components/ClipboardButton';
87
import Divider from '../../../../components/Divider/Divider';
98
import ElapsedTime from '../../../../components/ElapsedTime/ElapsedTime';
109
import EnableFullscreenButton from '../../../../components/EnableFullscreenButton/EnableFullscreenButton';

src/containers/Tenant/Query/ExplainResult/ExplainResult.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import React from 'react';
22

3-
import {RadioButton} from '@gravity-ui/uikit';
3+
import {ClipboardButton, RadioButton} from '@gravity-ui/uikit';
44

5-
import {ClipboardButton} from '../../../../components/ClipboardButton';
65
import Divider from '../../../../components/Divider/Divider';
76
import ElapsedTime from '../../../../components/ElapsedTime/ElapsedTime';
87
import EnableFullscreenButton from '../../../../components/EnableFullscreenButton/EnableFullscreenButton';

src/containers/Versions/NodesTreeTitle/NodesTreeTitle.tsx

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import {Progress} from '@gravity-ui/uikit';
1+
import {ClipboardButton, Progress} from '@gravity-ui/uikit';
22

3-
import {ClipboardButton} from '../../../components/ClipboardButton';
43
import type {VersionValue} from '../../../types/versions';
54
import {cn} from '../../../utils/cn';
65
import type {PreparedNodeSystemState} from '../../../utils/nodes';
@@ -46,7 +45,12 @@ export const NodesTreeTitle = ({
4645
{title ? (
4746
<span className={b('overview-title')}>
4847
{title}
49-
<ClipboardButton text={title} size="s" className={b('clipboard-button')} />
48+
<ClipboardButton
49+
text={title}
50+
size="s"
51+
className={b('clipboard-button')}
52+
view="normal"
53+
/>
5054
</span>
5155
) : null}
5256
</div>

0 commit comments

Comments
 (0)