UI Conversion: Use Select from antd

Summary: Used Antd's Select component instead of the old one. In addition to that also enabled search in Select which can be quite handly as there might be many databases / tables.

Reviewed By: mweststrate

Differential Revision: D28068179

fbshipit-source-id: 4ff337a532e035c8b53a23858b5ba6d900e65ebd
This commit is contained in:
Anton Nikolaev
2021-04-29 12:02:54 -07:00
committed by Facebook GitHub Bot
parent 24ac075d76
commit f743bd68a1
2 changed files with 63 additions and 30 deletions

View File

@@ -11,7 +11,6 @@ import {
styled,
produce,
Toolbar,
Select,
ManagedTable,
Text,
Button,
@@ -47,7 +46,11 @@ import {
usePlugin,
useValue,
Layout,
useMemoize,
} from 'flipper-plugin';
import {Select} from 'antd';
const {Option} = Select;
const PAGE_SIZE = 50;
@@ -1040,14 +1043,49 @@ export function Component() {
[instance],
);
const tableOptions =
(state.selectedDatabase &&
state.databases[state.selectedDatabase - 1] &&
state.databases[state.selectedDatabase - 1].tables.reduce(
(options, tableName) => ({...options, [tableName]: tableName}),
{},
)) ||
{};
const databaseOptions = useMemoize(
(databases) =>
databases.map((x) => (
<Option key={x.name} value={x.name} label={x.name}>
{x.name}
</Option>
)),
[state.databases],
);
const selectedDatabaseName = useMemoize(
(selectedDatabase: number, databases: DatabaseEntry[]) =>
selectedDatabase && databases[state.selectedDatabase - 1]
? databases[selectedDatabase - 1].name
: undefined,
[state.selectedDatabase, state.databases],
);
const tableOptions = useMemoize(
(selectedDatabase: number, databases: DatabaseEntry[]) =>
selectedDatabase && databases[state.selectedDatabase - 1]
? databases[selectedDatabase - 1].tables.map((tableName) => (
<Option key={tableName} value={tableName} label={tableName}>
{tableName}
</Option>
))
: [],
[state.selectedDatabase, state.databases],
);
const selectedTableName = useMemoize(
(
selectedDatabase: number,
databases: DatabaseEntry[],
selectedDatabaseTable: string | null,
) =>
selectedDatabase && databases[selectedDatabase - 1]
? databases[selectedDatabase - 1].tables.find(
(t) => t === selectedDatabaseTable,
) ?? databases[selectedDatabase - 1].tables[0]
: undefined,
[state.selectedDatabase, state.databases, state.selectedDatabaseTable],
);
return (
<Layout.Container grow>
@@ -1092,23 +1130,20 @@ export function Component() {
<Toolbar position="top" style={{paddingLeft: 16}}>
<BoldSpan style={{marginRight: 16}}>Database</BoldSpan>
<Select
options={state.databases
.map((x) => x.name)
.reduce(
(obj, item) => Object.assign({}, obj, {[item]: item}),
{},
)}
selected={state.databases[state.selectedDatabase - 1]?.name}
showSearch
value={selectedDatabaseName}
onChange={onDatabaseSelected}
style={{maxWidth: 300}}
/>
style={{width: 200}}>
{databaseOptions}
</Select>
<BoldSpan style={{marginLeft: 16, marginRight: 16}}>Table</BoldSpan>
<Select
options={tableOptions}
selected={state.selectedDatabaseTable}
showSearch
value={selectedTableName}
onChange={onDatabaseTableSelected}
style={{maxWidth: 300}}
/>
style={{width: 200}}>
{tableOptions}
</Select>
<div />
<Button onClick={onRefreshClicked}>Refresh</Button>
</Toolbar>
@@ -1118,15 +1153,12 @@ export function Component() {
<Toolbar position="top" style={{paddingLeft: 16}}>
<BoldSpan style={{marginRight: 16}}>Database</BoldSpan>
<Select
options={state.databases
.map((x) => x.name)
.reduce(
(obj, item) => Object.assign({}, obj, {[item]: item}),
{},
)}
selected={state.databases[state.selectedDatabase - 1]?.name}
showSearch
value={selectedDatabaseName}
onChange={onDatabaseSelected}
/>
style={{width: 200}}>
{databaseOptions}
</Select>
</Toolbar>
{
<Textarea

View File

@@ -23,6 +23,7 @@
"redux-mock-store": "^1.0.1"
},
"peerDependencies": {
"antd": "*",
"flipper-plugin": "*"
},
"bugs": {