Skip to content

Commit 6fbd52c

Browse files
fix(UserSettings): fix highlight on search (#972)
1 parent 669f7f0 commit 6fbd52c

File tree

6 files changed

+41
-97
lines changed

6 files changed

+41
-97
lines changed

src/containers/AppWithClusters/AppWithClusters.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const defaultUserSettings = settings;
3131

3232
defaultUserSettings[2].sections[0].settings.push({
3333
title: i18n('settings.useClusterBalancerAsBackend.title'),
34-
helpPopoverContent: i18n('settings.useClusterBalancerAsBackend.popover'),
34+
description: i18n('settings.useClusterBalancerAsBackend.popover'),
3535
settingKey: USE_CLUSTER_BALANCER_AS_BACKEND_KEY,
3636
});
3737

Lines changed: 26 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
import {Settings} from '@gravity-ui/navigation';
21
import {RadioButton, Switch} from '@gravity-ui/uikit';
32

4-
import {LabelWithPopover} from '../../components/LabelWithPopover/LabelWithPopover';
53
import {useSetting} from '../../utils/hooks';
64

7-
import {b} from './UserSettings';
5+
export interface SettingsInfoFieldProps {
6+
type: 'info';
7+
title: string;
8+
description?: React.ReactNode;
9+
content: React.ReactNode;
10+
}
811

912
export type SettingsElementType = 'switch' | 'radio';
1013

@@ -13,7 +16,6 @@ export interface SettingProps {
1316
title: string;
1417
description?: React.ReactNode;
1518
settingKey: string;
16-
helpPopoverContent?: React.ReactNode;
1719
options?: {value: string; content: string}[];
1820
defaultValue?: unknown;
1921
onValueUpdate?: VoidFunction;
@@ -22,9 +24,6 @@ export interface SettingProps {
2224
export const Setting = ({
2325
type = 'switch',
2426
settingKey,
25-
title,
26-
description,
27-
helpPopoverContent,
2827
options,
2928
defaultValue,
3029
onValueUpdate,
@@ -36,73 +35,30 @@ export const Setting = ({
3635
onValueUpdate?.();
3736
};
3837

39-
const renderTitleComponent = (value: React.ReactNode) => {
40-
if (helpPopoverContent) {
41-
return (
42-
<LabelWithPopover
43-
className={b('item-with-popup')}
44-
contentClassName={b('popup')}
45-
text={value}
46-
popoverContent={helpPopoverContent}
47-
/>
48-
);
38+
switch (type) {
39+
case 'switch': {
40+
return <Switch checked={Boolean(settingValue)} onUpdate={onUpdate} />;
4941
}
5042

51-
return value;
52-
};
53-
54-
const getSettingsElement = (elementType: SettingsElementType) => {
55-
switch (elementType) {
56-
case 'switch': {
57-
return <Switch checked={Boolean(settingValue)} onUpdate={onUpdate} />;
58-
}
59-
60-
case 'radio': {
61-
if (!options) {
62-
return null;
63-
}
64-
65-
return (
66-
<RadioButton value={String(settingValue)} onUpdate={onUpdate}>
67-
{options.map(({value, content}) => {
68-
return (
69-
<RadioButton.Option value={value} key={value}>
70-
{content}
71-
</RadioButton.Option>
72-
);
73-
})}
74-
</RadioButton>
75-
);
43+
case 'radio': {
44+
if (!options) {
45+
return null;
7646
}
7747

78-
default:
79-
return null;
48+
return (
49+
<RadioButton value={String(settingValue)} onUpdate={onUpdate}>
50+
{options.map(({value, content}) => {
51+
return (
52+
<RadioButton.Option value={value} key={value}>
53+
{content}
54+
</RadioButton.Option>
55+
);
56+
})}
57+
</RadioButton>
58+
);
8059
}
81-
};
82-
83-
return (
84-
<Settings.Item
85-
title={title}
86-
highlightedTitle={title}
87-
description={description}
88-
renderTitleComponent={renderTitleComponent}
89-
>
90-
{getSettingsElement(type)}
91-
</Settings.Item>
92-
);
93-
};
94-
95-
export interface SettingsInfoFieldProps {
96-
type: 'info';
97-
title: string;
98-
description?: React.ReactNode;
99-
content: React.ReactNode;
100-
}
10160

102-
export const SettingsInfoField = ({title, description, content}: SettingsInfoFieldProps) => {
103-
return (
104-
<Settings.Item title={title} highlightedTitle={title} description={description}>
105-
{content}
106-
</Settings.Item>
107-
);
61+
default:
62+
return null;
63+
}
10864
};

src/containers/UserSettings/UserSettings.scss

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/containers/UserSettings/UserSettings.tsx

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
11
import {Settings} from '@gravity-ui/navigation';
22

3-
import {cn} from '../../utils/cn';
4-
5-
import {Setting, SettingsInfoField} from './Setting';
3+
import {Setting} from './Setting';
64
import type {YDBEmbeddedUISettings} from './settings';
75
import {settings} from './settings';
86

9-
import './UserSettings.scss';
10-
11-
export const b = cn('ydb-user-settings');
12-
137
interface UserSettingsProps {
148
settings?: YDBEmbeddedUISettings;
159
}
@@ -30,13 +24,16 @@ export const UserSettings = ({settings: userSettings = settings}: UserSettingsPr
3024
{sectionSettings.map((setting) => {
3125
if (setting.type === 'info') {
3226
return (
33-
<SettingsInfoField
34-
key={setting.title}
35-
{...setting}
36-
/>
27+
<Settings.Item key={setting.title} {...setting}>
28+
{setting.content}
29+
</Settings.Item>
3730
);
3831
}
39-
return <Setting key={setting.settingKey} {...setting} />;
32+
return (
33+
<Settings.Item key={setting.title} {...setting}>
34+
<Setting {...setting} />
35+
</Settings.Item>
36+
);
4037
})}
4138
</Settings.Section>
4239
);

src/containers/UserSettings/i18n/en.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
"settings.invertedDisks.title": "Inverted disks space indicators",
3333

3434
"settings.useNodesEndpoint.title": "Break the Nodes tab in Diagnostics",
35-
"settings.useNodesEndpoint.popover": "Use /viewer/json/nodes endpoint for Nodes Tab in diagnostics. It could return incorrect data on some versions",
35+
"settings.useNodesEndpoint.popover": "Use /viewer/json/nodes endpoint for Nodes tab in diagnostics. It could return incorrect data on versions before 24-1",
3636

3737
"settings.useVirtualTables.title": "Use table with data load on scroll for Nodes and Storage tabs",
3838
"settings.useVirtualTables.popover": "It will increase performance, but could work unstable",
3939

4040
"settings.queryUseMultiSchema.title": "Allow queries with multiple result sets",
41-
"settings.queryUseMultiSchema.popover": "Use 'multi' schema for queries that enables queries with multiple result sets. Returns nothing on versions 23-3 and older",
41+
"settings.queryUseMultiSchema.popover": "Use 'multi' schema for queries. It enables queries with multiple result sets. It returns nothing on versions 23-3 and older",
4242

4343
"settings.about.interfaceVersionInfoField.title": "Interface version"
4444
}

src/containers/UserSettings/settings.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,17 @@ export const invertedDisksSetting: SettingProps = {
9696
export const useNodesEndpointSetting: SettingProps = {
9797
settingKey: USE_NODES_ENDPOINT_IN_DIAGNOSTICS_KEY,
9898
title: i18n('settings.useNodesEndpoint.title'),
99-
helpPopoverContent: i18n('settings.useNodesEndpoint.popover'),
99+
description: i18n('settings.useNodesEndpoint.popover'),
100100
};
101101
export const useVirtualTables: SettingProps = {
102102
settingKey: USE_BACKEND_PARAMS_FOR_TABLES_KEY,
103103
title: i18n('settings.useVirtualTables.title'),
104-
helpPopoverContent: i18n('settings.useVirtualTables.popover'),
104+
description: i18n('settings.useVirtualTables.popover'),
105105
};
106106
export const queryUseMultiSchemaSetting: SettingProps = {
107107
settingKey: QUERY_USE_MULTI_SCHEMA_KEY,
108108
title: i18n('settings.queryUseMultiSchema.title'),
109-
helpPopoverContent: i18n('settings.queryUseMultiSchema.popover'),
109+
description: i18n('settings.queryUseMultiSchema.popover'),
110110
};
111111

112112
export const enableAutocompleteSetting: SettingProps = {

0 commit comments

Comments
 (0)