Expose Toolbar from Sandy
Summary: Moved Toolbar to flipper-plugin. No further changes. Reviewed By: nikoant Differential Revision: D28027334 fbshipit-source-id: 35de13d87734ae3a8af037166945b1a669106274
This commit is contained in:
committed by
Facebook GitHub Bot
parent
d9ec09b381
commit
8e02b2ec10
@@ -8,14 +8,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {useMemo} from 'react';
|
import {useMemo} from 'react';
|
||||||
import {Button, Toolbar, ButtonGroup, Layout} from '../ui';
|
import {Button, ButtonGroup, Layout} from '../ui';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {Console, Hook} from 'console-feed';
|
import {Console, Hook} from 'console-feed';
|
||||||
import type {Methods} from 'console-feed/lib/definitions/Methods';
|
import type {Methods} from 'console-feed/lib/definitions/Methods';
|
||||||
import type {Styles} from 'console-feed/lib/definitions/Styles';
|
import type {Styles} from 'console-feed/lib/definitions/Styles';
|
||||||
import {createState, useValue} from 'flipper-plugin';
|
import {createState, useValue} from 'flipper-plugin';
|
||||||
import {useLocalStorageState} from 'flipper-plugin';
|
import {useLocalStorageState} from 'flipper-plugin';
|
||||||
import {theme} from 'flipper-plugin';
|
import {theme, Toolbar} from 'flipper-plugin';
|
||||||
import {useIsDarkMode} from '../utils/useIsDarkMode';
|
import {useIsDarkMode} from '../utils/useIsDarkMode';
|
||||||
|
|
||||||
const MAX_LOG_ITEMS = 1000;
|
const MAX_LOG_ITEMS = 1000;
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import {
|
|||||||
FlexColumn,
|
FlexColumn,
|
||||||
styled,
|
styled,
|
||||||
ManagedTable_immutable,
|
ManagedTable_immutable,
|
||||||
Toolbar,
|
|
||||||
SearchInput,
|
SearchInput,
|
||||||
SearchBox,
|
SearchBox,
|
||||||
Button,
|
Button,
|
||||||
@@ -43,6 +42,7 @@ import {State as AppState} from '../../reducers';
|
|||||||
import {connect} from 'react-redux';
|
import {connect} from 'react-redux';
|
||||||
import {Dispatch, Action} from 'redux';
|
import {Dispatch, Action} from 'redux';
|
||||||
import PluginPackageInstaller from './PluginPackageInstaller';
|
import PluginPackageInstaller from './PluginPackageInstaller';
|
||||||
|
import {Toolbar} from 'flipper-plugin';
|
||||||
|
|
||||||
const TAG = 'PluginInstaller';
|
const TAG = 'PluginInstaller';
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Toolbar,
|
|
||||||
Button,
|
Button,
|
||||||
FlexRow,
|
FlexRow,
|
||||||
Tooltip,
|
Tooltip,
|
||||||
@@ -20,6 +19,7 @@ import styled from '@emotion/styled';
|
|||||||
import {default as FileSelector} from '../../ui/components/FileSelector';
|
import {default as FileSelector} from '../../ui/components/FileSelector';
|
||||||
import React, {useState} from 'react';
|
import React, {useState} from 'react';
|
||||||
import {installPluginFromFile} from 'flipper-plugin-lib';
|
import {installPluginFromFile} from 'flipper-plugin-lib';
|
||||||
|
import {Toolbar} from 'flipper-plugin';
|
||||||
|
|
||||||
const CenteredGlyph = styled(Glyph)({
|
const CenteredGlyph = styled(Glyph)({
|
||||||
margin: 'auto',
|
margin: 'auto',
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ exports[`load PluginInstaller list 1`] = `
|
|||||||
class="css-9dawc5-View-FlexBox-FlexColumn"
|
class="css-9dawc5-View-FlexBox-FlexColumn"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e13mj6h81"
|
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e1ecpah20"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="css-bl14sl-View-FlexBox-SearchBox e271nro4"
|
class="css-bl14sl-View-FlexBox-SearchBox e271nro4"
|
||||||
@@ -241,7 +241,7 @@ exports[`load PluginInstaller list 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e13mj6h81"
|
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e1ecpah20"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="css-1spj5hr-View-FlexBox-FlexRow-Container ersmi542"
|
class="css-1spj5hr-View-FlexBox-FlexRow-Container ersmi542"
|
||||||
@@ -308,7 +308,7 @@ exports[`load PluginInstaller list with one plugin installed 1`] = `
|
|||||||
class="css-9dawc5-View-FlexBox-FlexColumn"
|
class="css-9dawc5-View-FlexBox-FlexColumn"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e13mj6h81"
|
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e1ecpah20"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="css-bl14sl-View-FlexBox-SearchBox e271nro4"
|
class="css-bl14sl-View-FlexBox-SearchBox e271nro4"
|
||||||
@@ -543,7 +543,7 @@ exports[`load PluginInstaller list with one plugin installed 1`] = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e13mj6h81"
|
class="css-1lxv8hi-Container-Horizontal-SandyToolbarContainer e1ecpah20"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="css-1spj5hr-View-FlexBox-FlexRow-Container ersmi542"
|
class="css-1spj5hr-View-FlexBox-FlexRow-Container ersmi542"
|
||||||
|
|||||||
@@ -142,7 +142,8 @@ export {default as FlexBox} from './ui/components/FlexBox';
|
|||||||
export {default as FlexRow} from './ui/components/FlexRow';
|
export {default as FlexRow} from './ui/components/FlexRow';
|
||||||
export {default as FlexColumn} from './ui/components/FlexColumn';
|
export {default as FlexColumn} from './ui/components/FlexColumn';
|
||||||
export {default as FlexCenter} from './ui/components/FlexCenter';
|
export {default as FlexCenter} from './ui/components/FlexCenter';
|
||||||
export {default as Toolbar, Spacer} from './ui/components/Toolbar';
|
export {Toolbar} from 'flipper-plugin';
|
||||||
|
export {Spacer} from './ui/components/Toolbar';
|
||||||
export {default as ToolbarIcon} from './ui/components/ToolbarIcon';
|
export {default as ToolbarIcon} from './ui/components/ToolbarIcon';
|
||||||
export {default as Panel} from './ui/components/Panel';
|
export {default as Panel} from './ui/components/Panel';
|
||||||
export {default as Text} from './ui/components/Text';
|
export {default as Text} from './ui/components/Text';
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ import Panel from '../ui/components/Panel';
|
|||||||
import {colors} from '../ui/components/colors';
|
import {colors} from '../ui/components/colors';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
import Text from '../ui/components/Text';
|
import Text from '../ui/components/Text';
|
||||||
import Toolbar from '../ui/components/Toolbar';
|
import {Spacer} from '../ui/components/Toolbar';
|
||||||
import Spacer from '../ui/components/Toolbar';
|
|
||||||
import Button from '../ui/components/Button';
|
import Button from '../ui/components/Button';
|
||||||
import Select from '../ui/components/Select';
|
import Select from '../ui/components/Select';
|
||||||
import ErrorBlock from '../ui/components/ErrorBlock';
|
import ErrorBlock from '../ui/components/ErrorBlock';
|
||||||
@@ -35,6 +34,7 @@ import {ReactNode} from 'react';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {KeyboardActions} from '../MenuBar';
|
import {KeyboardActions} from '../MenuBar';
|
||||||
import {BundledPluginDetails} from 'flipper-plugin-lib';
|
import {BundledPluginDetails} from 'flipper-plugin-lib';
|
||||||
|
import {Toolbar} from 'flipper-plugin';
|
||||||
|
|
||||||
type ID = string;
|
type ID = string;
|
||||||
|
|
||||||
|
|||||||
@@ -7,34 +7,13 @@
|
|||||||
* @format
|
* @format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from 'react';
|
|
||||||
import FlexBox from './FlexBox';
|
import FlexBox from './FlexBox';
|
||||||
import styled from '@emotion/styled';
|
import styled from '@emotion/styled';
|
||||||
import {theme, Layout} from 'flipper-plugin';
|
|
||||||
|
|
||||||
const SandyToolbarContainer = styled(Layout.Horizontal)({
|
|
||||||
flexWrap: 'wrap',
|
|
||||||
padding: theme.space.small,
|
|
||||||
boxShadow: `inset 0px -1px 0px ${theme.dividerColor}`,
|
|
||||||
});
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deprecated, set 'gap' on the parent container instead
|
||||||
|
*/
|
||||||
export const Spacer = styled(FlexBox)({
|
export const Spacer = styled(FlexBox)({
|
||||||
flexGrow: 1,
|
flexGrow: 1,
|
||||||
});
|
});
|
||||||
Spacer.displayName = 'Spacer';
|
Spacer.displayName = 'Spacer';
|
||||||
|
|
||||||
export default function Toolbar({
|
|
||||||
children,
|
|
||||||
style,
|
|
||||||
}: {
|
|
||||||
children?: React.ReactNode;
|
|
||||||
position?: 'bottom' | 'top';
|
|
||||||
compact?: boolean;
|
|
||||||
style?: React.CSSProperties;
|
|
||||||
}) {
|
|
||||||
return (
|
|
||||||
<SandyToolbarContainer style={style} gap={theme.space.small} center>
|
|
||||||
{children}
|
|
||||||
</SandyToolbarContainer>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
import {Filter} from '../filter/types';
|
import {Filter} from '../filter/types';
|
||||||
import {TableColumns} from '../table/types';
|
import {TableColumns} from '../table/types';
|
||||||
import {PureComponent} from 'react';
|
import {PureComponent} from 'react';
|
||||||
import Toolbar from '../Toolbar';
|
|
||||||
import Input from '../Input';
|
import Input from '../Input';
|
||||||
import {colors} from '../colors';
|
import {colors} from '../colors';
|
||||||
import Text from '../Text';
|
import Text from '../Text';
|
||||||
@@ -21,7 +20,7 @@ import styled from '@emotion/styled';
|
|||||||
import {debounce} from 'lodash';
|
import {debounce} from 'lodash';
|
||||||
import ToggleButton from '../ToggleSwitch';
|
import ToggleButton from '../ToggleSwitch';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import {Layout, theme} from 'flipper-plugin';
|
import {Layout, theme, Toolbar} from 'flipper-plugin';
|
||||||
|
|
||||||
const SearchBar = styled(Toolbar)({
|
const SearchBar = styled(Toolbar)({
|
||||||
height: 42,
|
height: 42,
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ export {default as FlexBox} from './components/FlexBox';
|
|||||||
export {default as FlexRow} from './components/FlexRow';
|
export {default as FlexRow} from './components/FlexRow';
|
||||||
export {default as FlexColumn} from './components/FlexColumn';
|
export {default as FlexColumn} from './components/FlexColumn';
|
||||||
export {default as FlexCenter} from './components/FlexCenter';
|
export {default as FlexCenter} from './components/FlexCenter';
|
||||||
export {default as Toolbar, Spacer} from './components/Toolbar';
|
export {Spacer} from './components/Toolbar';
|
||||||
export {default as ToolbarIcon} from './components/ToolbarIcon';
|
export {default as ToolbarIcon} from './components/ToolbarIcon';
|
||||||
export {default as Panel} from './components/Panel';
|
export {default as Panel} from './components/Panel';
|
||||||
export {default as Text} from './components/Text';
|
export {default as Text} from './components/Text';
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ test('Correct top level API exposed', () => {
|
|||||||
"Tab",
|
"Tab",
|
||||||
"Tabs",
|
"Tabs",
|
||||||
"TestUtils",
|
"TestUtils",
|
||||||
|
"Toolbar",
|
||||||
"Tracked",
|
"Tracked",
|
||||||
"TrackingScope",
|
"TrackingScope",
|
||||||
"batch",
|
"batch",
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ export {
|
|||||||
} from './ui/NUX';
|
} from './ui/NUX';
|
||||||
export {Sidebar as _Sidebar} from './ui/Sidebar';
|
export {Sidebar as _Sidebar} from './ui/Sidebar';
|
||||||
export {DetailSidebar} from './ui/DetailSidebar';
|
export {DetailSidebar} from './ui/DetailSidebar';
|
||||||
|
export {Toolbar} from './ui/Toolbar';
|
||||||
|
|
||||||
export {renderReactRoot} from './utils/renderReactRoot';
|
export {renderReactRoot} from './utils/renderReactRoot';
|
||||||
export {
|
export {
|
||||||
|
|||||||
@@ -88,10 +88,9 @@ const Container = styled.div<ContainerProps>(
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
const Horizontal = styled(Container)<{wrap?: boolean}>(({wrap}) => ({
|
const Horizontal = styled(Container)({
|
||||||
flexDirection: 'row',
|
flexDirection: 'row',
|
||||||
flexWrap: wrap ? 'wrap' : undefined,
|
});
|
||||||
}));
|
|
||||||
|
|
||||||
const ScrollParent = styled.div<{axis?: ScrollAxis}>(({axis}) => ({
|
const ScrollParent = styled.div<{axis?: ScrollAxis}>(({axis}) => ({
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
|||||||
35
desktop/flipper-plugin/src/ui/Toolbar.tsx
Normal file
35
desktop/flipper-plugin/src/ui/Toolbar.tsx
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
* @format
|
||||||
|
*/
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import styled from '@emotion/styled';
|
||||||
|
import {Layout} from './Layout';
|
||||||
|
import {theme} from './theme';
|
||||||
|
|
||||||
|
const SandyToolbarContainer = styled(Layout.Horizontal)({
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
padding: theme.space.small,
|
||||||
|
boxShadow: `inset 0px -1px 0px ${theme.dividerColor}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
export function Toolbar({
|
||||||
|
children,
|
||||||
|
style,
|
||||||
|
}: {
|
||||||
|
children?: React.ReactNode;
|
||||||
|
position?: 'bottom' | 'top';
|
||||||
|
compact?: boolean;
|
||||||
|
style?: React.CSSProperties;
|
||||||
|
}) {
|
||||||
|
return (
|
||||||
|
<SandyToolbarContainer style={style} gap={theme.space.small} center>
|
||||||
|
{children}
|
||||||
|
</SandyToolbarContainer>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -835,6 +835,10 @@ The following additional properties are supported:
|
|||||||
|
|
||||||
* `grow`. If set, the tab control will use all available vertical space. By default `false`.
|
* `grow`. If set, the tab control will use all available vertical space. By default `false`.
|
||||||
|
|
||||||
|
### Toolbar
|
||||||
|
|
||||||
|
A horizontal panel to organize buttons and alike. Basically a `Layout.Horizontal` with a border, padding, gap and wrapping enabled.
|
||||||
|
|
||||||
### DataList
|
### DataList
|
||||||
|
|
||||||
The DataList can be used to display a set of items efficiently, and where a single item can be selected.
|
The DataList can be used to display a set of items efficiently, and where a single item can be selected.
|
||||||
|
|||||||
Reference in New Issue
Block a user