Misc UI fixes (#1873)

Summary:
Continue with cleanup of Network plugin mock screens.  This mostly consists of replacing FlexColumn, FlexRow and FlexBox with equivalent Sandy components.

Here is the new screen:

- replace text buttons with Button
- add NUX info to "Copy Highlighted Calls" button
- add message when no calls have been highlighted
- in routes list remove padding on line items

![image](https://user-images.githubusercontent.com/337874/106415468-d58f6480-6414-11eb-93a8-498fd81b54d9.png)

Here is the prior screen:

![image](https://user-images.githubusercontent.com/337874/106415499-e8099e00-6414-11eb-8e0e-48875a945621.png)

## Changelog

Network Plugin - Additional cleanup of UI on mock screen

Pull Request resolved: https://github.com/facebook/flipper/pull/1873

Test Plan:
Create and modify mocks
Verify that the functionality has not been affected by UI changes

Reviewed By: passy

Differential Revision: D26172915

Pulled By: mweststrate

fbshipit-source-id: f0af143d8509b53585076737832657fb095e75a6
This commit is contained in:
bizzguy
2021-02-01 03:56:37 -08:00
committed by Facebook GitHub Bot
parent 118cb7e9ff
commit 6a9d06a4ce
2 changed files with 62 additions and 81 deletions

View File

@@ -8,11 +8,9 @@
*/ */
import { import {
Layout, Button,
ManagedTable, ManagedTable,
Text, Text,
FlexBox,
FlexRow,
Glyph, Glyph,
styled, styled,
colors, colors,
@@ -26,6 +24,9 @@ import {MockResponseDetails} from './MockResponseDetails';
import {NetworkRouteContext} from './index'; import {NetworkRouteContext} from './index';
import {RequestId} from './types'; import {RequestId} from './types';
import {message} from 'antd';
import {NUX, Layout} from 'flipper-plugin';
type Props = { type Props = {
routes: {[id: string]: Route}; routes: {[id: string]: Route};
highlightedRows: Set<string> | null | undefined; highlightedRows: Set<string> | null | undefined;
@@ -37,16 +38,6 @@ const ColumnSizes = {route: 'flex'};
const Columns = {route: {value: 'Route', resizable: false}}; const Columns = {route: {value: 'Route', resizable: false}};
const Button = styled(FlexBox)({
color: colors.blackAlpha50,
alignItems: 'center',
padding: 5,
flexShrink: 0,
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis',
});
const TextEllipsis = styled(Text)({ const TextEllipsis = styled(Text)({
overflowX: 'hidden', overflowX: 'hidden',
textOverflow: 'ellipsis', textOverflow: 'ellipsis',
@@ -110,11 +101,11 @@ function RouteRow(props: {
handleRemoveId: () => void; handleRemoveId: () => void;
}) { }) {
return ( return (
<FlexRow grow={true}> <Layout.Horizontal>
<FlexRow onClick={props.handleRemoveId}> <Layout.Horizontal onClick={props.handleRemoveId}>
<Icon name="cross-circle" color={colors.red} /> <Icon name="cross-circle" color={colors.red} />
</FlexRow> </Layout.Horizontal>
<FlexRow grow={true}> <Layout.Horizontal>
{props.showWarning && ( {props.showWarning && (
<Icon name="caution-triangle" color={colors.yellow} /> <Icon name="caution-triangle" color={colors.yellow} />
)} )}
@@ -125,8 +116,8 @@ function RouteRow(props: {
) : ( ) : (
<TextEllipsis>{props.text}</TextEllipsis> <TextEllipsis>{props.text}</TextEllipsis>
)} )}
</FlexRow> </Layout.Horizontal>
</FlexRow> </Layout.Horizontal>
); );
} }
@@ -173,35 +164,37 @@ export function ManageMockResponsePanel(props: Props) {
<Layout.Container style={{height: 550}}> <Layout.Container style={{height: 550}}>
<Layout.Left> <Layout.Left>
<Layout.Container width={450} pad={10} gap={5}> <Layout.Container width={450} pad={10} gap={5}>
<Button <Layout.Horizontal gap>
onClick={() => { <Button
networkRouteManager.addRoute(); onClick={() => {
}}> networkRouteManager.addRoute();
<Glyph }}>
name="plus-circle" Add Route
size={16} </Button>
variant="outline" <NUX
color={colors.blackAlpha30} title="It is now possible to highlight calls from the network call list and convert them into mock routes."
/> placement="bottom">
&nbsp;Add Route <Button
</Button> onClick={() => {
<Button if (
onClick={() => { !props.highlightedRows ||
networkRouteManager.copyHighlightedCalls( props.highlightedRows.size == 0
props.highlightedRows as Set<string>, ) {
props.requests, message.info('No network calls have been highlighted');
props.responses, return;
); }
}}> networkRouteManager.copyHighlightedCalls(
<Glyph props.highlightedRows as Set<string>,
name="plus-circle" props.requests,
size={16} props.responses,
variant="outline" );
color={colors.blackAlpha30} }}>
/> Copy Highlighted Calls
&nbsp;Copy Highlighted Calls </Button>
</Button> </NUX>
</Layout.Horizontal>
<Panel <Panel
padded={false}
grow={true} grow={true}
collapsable={false} collapsable={false}
floating={false} floating={false}

View File

@@ -10,8 +10,8 @@
import { import {
FlexRow, FlexRow,
FlexColumn, FlexColumn,
FlexBox,
Layout, Layout,
Button,
Input, Input,
Text, Text,
Tabs, Tabs,
@@ -103,17 +103,6 @@ const Warning = styled(FlexRow)({
marginTop: 8, marginTop: 8,
}); });
const AddHeaderButton = styled(FlexBox)({
color: colors.blackAlpha50,
marginTop: 8,
alignItems: 'center',
padding: 10,
flexShrink: 0,
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis',
});
const HeadersColumnSizes = { const HeadersColumnSizes = {
close: '4%', close: '4%',
warning: '4%', warning: '4%',
@@ -210,7 +199,7 @@ function _buildMockResponseHeaderRows(
}, },
close: { close: {
value: ( value: (
<FlexBox <Layout.Container
onClick={() => { onClick={() => {
const newHeaders = produce( const newHeaders = produce(
route.responseHeaders, route.responseHeaders,
@@ -223,7 +212,7 @@ function _buildMockResponseHeaderRows(
}); });
}}> }}>
<HeaderGlyph name="cross-circle" color={colors.red} /> <HeaderGlyph name="cross-circle" color={colors.red} />
</FlexBox> </Layout.Container>
), ),
}, },
}, },
@@ -317,26 +306,25 @@ export function MockResponseDetails({id, route, isDuplicated}: Props) {
</Tab> </Tab>
<Tab key={'headers'} label={'Headers'}> <Tab key={'headers'} label={'Headers'}>
<Layout.Container style={{width: '100%'}}> <Layout.Container style={{width: '100%'}}>
<AddHeaderButton <Layout.Horizontal>
onClick={() => { <Button
const newHeaders = { onClick={() => {
...route.responseHeaders, const newHeaders = {
[nextHeaderId.toString()]: {key: '', value: ''}, ...route.responseHeaders,
}; [nextHeaderId.toString()]: {key: '', value: ''},
setNextHeaderId(nextHeaderId + 1); };
networkRouteManager.modifyRoute(id, { setNextHeaderId(nextHeaderId + 1);
responseHeaders: newHeaders, networkRouteManager.modifyRoute(id, {
}); responseHeaders: newHeaders,
}}> });
<Glyph }}
name="plus-circle" compact
size={16} padded
variant="outline" style={{marginBottom: 10}}>
color={colors.blackAlpha30} Add Header
/> </Button>
&nbsp;Add Header </Layout.Horizontal>
</AddHeaderButton> <Layout.ScrollContainer>
<Layout.ScrollContainer style={{width: '100%'}}>
<ManagedTable <ManagedTable
hideHeader={true} hideHeader={true}
multiline={true} multiline={true}