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:
committed by
Facebook GitHub Bot
parent
24ac075d76
commit
f743bd68a1
@@ -11,7 +11,6 @@ import {
|
|||||||
styled,
|
styled,
|
||||||
produce,
|
produce,
|
||||||
Toolbar,
|
Toolbar,
|
||||||
Select,
|
|
||||||
ManagedTable,
|
ManagedTable,
|
||||||
Text,
|
Text,
|
||||||
Button,
|
Button,
|
||||||
@@ -47,7 +46,11 @@ import {
|
|||||||
usePlugin,
|
usePlugin,
|
||||||
useValue,
|
useValue,
|
||||||
Layout,
|
Layout,
|
||||||
|
useMemoize,
|
||||||
} from 'flipper-plugin';
|
} from 'flipper-plugin';
|
||||||
|
import {Select} from 'antd';
|
||||||
|
|
||||||
|
const {Option} = Select;
|
||||||
|
|
||||||
const PAGE_SIZE = 50;
|
const PAGE_SIZE = 50;
|
||||||
|
|
||||||
@@ -1040,14 +1043,49 @@ export function Component() {
|
|||||||
[instance],
|
[instance],
|
||||||
);
|
);
|
||||||
|
|
||||||
const tableOptions =
|
const databaseOptions = useMemoize(
|
||||||
(state.selectedDatabase &&
|
(databases) =>
|
||||||
state.databases[state.selectedDatabase - 1] &&
|
databases.map((x) => (
|
||||||
state.databases[state.selectedDatabase - 1].tables.reduce(
|
<Option key={x.name} value={x.name} label={x.name}>
|
||||||
(options, tableName) => ({...options, [tableName]: tableName}),
|
{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 (
|
return (
|
||||||
<Layout.Container grow>
|
<Layout.Container grow>
|
||||||
@@ -1092,23 +1130,20 @@ export function Component() {
|
|||||||
<Toolbar position="top" style={{paddingLeft: 16}}>
|
<Toolbar position="top" style={{paddingLeft: 16}}>
|
||||||
<BoldSpan style={{marginRight: 16}}>Database</BoldSpan>
|
<BoldSpan style={{marginRight: 16}}>Database</BoldSpan>
|
||||||
<Select
|
<Select
|
||||||
options={state.databases
|
showSearch
|
||||||
.map((x) => x.name)
|
value={selectedDatabaseName}
|
||||||
.reduce(
|
|
||||||
(obj, item) => Object.assign({}, obj, {[item]: item}),
|
|
||||||
{},
|
|
||||||
)}
|
|
||||||
selected={state.databases[state.selectedDatabase - 1]?.name}
|
|
||||||
onChange={onDatabaseSelected}
|
onChange={onDatabaseSelected}
|
||||||
style={{maxWidth: 300}}
|
style={{width: 200}}>
|
||||||
/>
|
{databaseOptions}
|
||||||
|
</Select>
|
||||||
<BoldSpan style={{marginLeft: 16, marginRight: 16}}>Table</BoldSpan>
|
<BoldSpan style={{marginLeft: 16, marginRight: 16}}>Table</BoldSpan>
|
||||||
<Select
|
<Select
|
||||||
options={tableOptions}
|
showSearch
|
||||||
selected={state.selectedDatabaseTable}
|
value={selectedTableName}
|
||||||
onChange={onDatabaseTableSelected}
|
onChange={onDatabaseTableSelected}
|
||||||
style={{maxWidth: 300}}
|
style={{width: 200}}>
|
||||||
/>
|
{tableOptions}
|
||||||
|
</Select>
|
||||||
<div />
|
<div />
|
||||||
<Button onClick={onRefreshClicked}>Refresh</Button>
|
<Button onClick={onRefreshClicked}>Refresh</Button>
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
@@ -1118,15 +1153,12 @@ export function Component() {
|
|||||||
<Toolbar position="top" style={{paddingLeft: 16}}>
|
<Toolbar position="top" style={{paddingLeft: 16}}>
|
||||||
<BoldSpan style={{marginRight: 16}}>Database</BoldSpan>
|
<BoldSpan style={{marginRight: 16}}>Database</BoldSpan>
|
||||||
<Select
|
<Select
|
||||||
options={state.databases
|
showSearch
|
||||||
.map((x) => x.name)
|
value={selectedDatabaseName}
|
||||||
.reduce(
|
|
||||||
(obj, item) => Object.assign({}, obj, {[item]: item}),
|
|
||||||
{},
|
|
||||||
)}
|
|
||||||
selected={state.databases[state.selectedDatabase - 1]?.name}
|
|
||||||
onChange={onDatabaseSelected}
|
onChange={onDatabaseSelected}
|
||||||
/>
|
style={{width: 200}}>
|
||||||
|
{databaseOptions}
|
||||||
|
</Select>
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
{
|
{
|
||||||
<Textarea
|
<Textarea
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
"redux-mock-store": "^1.0.1"
|
"redux-mock-store": "^1.0.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
"antd": "*",
|
||||||
"flipper-plugin": "*"
|
"flipper-plugin": "*"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
|
|||||||
Reference in New Issue
Block a user