Desktop Toolbar

Summary: _typescript_

Reviewed By: priteshrnandgaonkar

Differential Revision: D16828106

fbshipit-source-id: 449b238ac709bbbd26086a054cd9b996385bd29b
This commit is contained in:
Daniel Büchele
2019-08-20 03:18:32 -07:00
committed by Facebook Github Bot
parent 0ebacecaf6
commit 6e19315e48
2 changed files with 26 additions and 25 deletions

View File

@@ -5,10 +5,9 @@
* @format * @format
*/ */
import styled from '../styled/index.js'; import styled from 'react-emotion';
import {colors, darkColors} from './colors.js'; import {colors, darkColors} from './colors';
import React from 'react';
const React = require('react');
const DesktopDropdownContainer = styled('div')({ const DesktopDropdownContainer = styled('div')({
borderBottom: `1px solid ${darkColors.dividers}`, borderBottom: `1px solid ${darkColors.dividers}`,
@@ -27,10 +26,10 @@ const DesktopDropdownContainer = styled('div')({
}, },
}); });
export function DesktopDropdown(props: {| export function DesktopDropdown(props: {
deactivate?: () => void, deactivate?: () => void;
children?: any, children?: any;
|}) { }) {
return ( return (
<DesktopDropdownContainer> <DesktopDropdownContainer>
{React.Children.map(props.children, child => { {React.Children.map(props.children, child => {
@@ -45,28 +44,30 @@ export function DesktopDropdown(props: {|
); );
} }
const DesktopDropdownItemContainer = styled('div')(props => ({ const DesktopDropdownItemContainer = styled('div')(
listStyle: 'none', (props: {onClick?: Function; onHover?: Function}) => ({
opacity: props.onClick || props.onHover ? 1 : 0.5, listStyle: 'none',
padding: '0 20px', opacity: props.onClick || props.onHover ? 1 : 0.5,
'&:hover': { padding: '0 20px',
backgroundColor: props.onClick || props.onHover ? colors.highlight : '', '&:hover': {
color: props.onClick || props.onHover ? '#fff' : 'inherit', backgroundColor: props.onClick || props.onHover ? colors.highlight : '',
}, color: props.onClick || props.onHover ? '#fff' : 'inherit',
})); },
}),
);
type DesktopDropdownItemState = {|hovered: boolean|}; type DesktopDropdownItemState = {hovered: boolean};
type DesktopDropdownItemProps = { type DesktopDropdownItemProps = {
onClick?: false | ?((event: SyntheticMouseEvent<>) => void), onClick?: false | ((event: React.MouseEvent) => void);
onHover?: false | ?(() => React$Node), onHover?: false | (() => React.ReactNode);
children?: React$Node, children?: React.ReactNode;
deactivate?: () => void, deactivate?: () => void;
}; };
export class DesktopDropdownItem extends React.Component< export class DesktopDropdownItem extends React.Component<
DesktopDropdownItemProps, DesktopDropdownItemProps,
DesktopDropdownItemState, DesktopDropdownItemState
> { > {
constructor(props: DesktopDropdownItemProps, context: Object) { constructor(props: DesktopDropdownItemProps, context: Object) {
super(props, context); super(props, context);
@@ -81,7 +82,7 @@ export class DesktopDropdownItem extends React.Component<
this.setState({hovered: false}); this.setState({hovered: false});
}; };
onClick = (event: SyntheticMouseEvent<>) => { onClick = (event: React.MouseEvent) => {
const {deactivate, onClick} = this.props; const {deactivate, onClick} = this.props;
if (typeof onClick === 'function') { if (typeof onClick === 'function') {
if (deactivate) { if (deactivate) {

View File

@@ -109,7 +109,7 @@ export {
DesktopDropdownItem, DesktopDropdownItem,
DesktopDropdownSelectedItem, DesktopDropdownSelectedItem,
DesktopDropdown, DesktopDropdown,
} from './components/desktop-toolbar.js'; } from './components/desktop-toolbar.tsx';
// utility elements // utility elements
export {default as View} from './components/View.js'; export {default as View} from './components/View.js';