Refactor device header

pull/8/head
Vladimir Volek 6 years ago
parent 445a1a07bb
commit 8331348ed6

@ -38,13 +38,16 @@ const RowAccountWrapper = styled.div`
font-size: ${FONT_SIZE.SMALL}; font-size: ${FONT_SIZE.SMALL};
color: ${colors.TEXT_PRIMARY}; color: ${colors.TEXT_PRIMARY};
border-left: ${BORDER_WIDTH.SELECTED} solid transparent; border-left: ${BORDER_WIDTH.SELECTED} solid transparent;
${props => props.borderTop && css`
border-top: 1px solid ${colors.DIVIDER};
`}
border-bottom: 1px solid ${colors.DIVIDER}; border-bottom: 1px solid ${colors.DIVIDER};
&:hover { &:hover {
background-color: ${colors.GRAY_LIGHT}; background-color: ${colors.GRAY_LIGHT};
} }
${props => props.borderTop && css`
border-top: 1px solid ${colors.DIVIDER};
`}
${props => props.isSelected && css` ${props => props.isSelected && css`
border-left: ${BORDER_WIDTH.SELECTED} solid ${colors.GREEN_PRIMARY}; border-left: ${BORDER_WIDTH.SELECTED} solid ${colors.GREEN_PRIMARY};
background: ${colors.WHITE}; background: ${colors.WHITE};

@ -3,9 +3,14 @@ import styled, { css } from 'styled-components';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import Icon from 'components/Icon'; import Icon from 'components/Icon';
import icons from 'config/icons'; import icons from 'config/icons';
import { getStatusColor, getStatusName } from 'utils/device'; import {
getStatusColor,
getStatusName,
isDisabled,
getStatus,
getVersion,
} from 'utils/device';
import TrezorImage from 'components/TrezorImage'; import TrezorImage from 'components/TrezorImage';
import colors from 'config/colors'; import colors from 'config/colors';
const Wrapper = styled.div` const Wrapper = styled.div`
@ -21,6 +26,12 @@ const Wrapper = styled.div`
${props => props.isOpen && css` ${props => props.isOpen && css`
box-shadow: none; box-shadow: none;
`} `}
${props => props.isHoverable && css`
&:hover {
background: ${colors.GRAY_LIGHT};
}
`}
`; `;
const ClickWrapper = styled.div` const ClickWrapper = styled.div`
@ -101,6 +112,10 @@ class DeviceHeader extends Component {
}; };
} }
isDisabled(device, devices, transport) {
return isDisabled(device, devices, transport);
}
handleClickWrapper() { handleClickWrapper() {
this.setState({ clicked: true }); this.setState({ clicked: true });
if (!this.props.disabled) { if (!this.props.disabled) {
@ -110,17 +125,21 @@ class DeviceHeader extends Component {
render() { render() {
const { const {
status, label, deviceCount, isOpen, trezorModel, disabled, icon, isOpen, icon, device, devices, transport, isHoverable,
} = this.props; } = this.props;
const status = getStatus(device);
const disabled = isDisabled(device, devices, transport);
const deviceCount = devices.length;
return ( return (
<Wrapper isOpen={isOpen}> <Wrapper isOpen={isOpen} isHoverable={isHoverable}>
<ClickWrapper disabled={disabled} onClick={() => this.handleClickWrapper()}> <ClickWrapper disabled={disabled} onClick={() => this.handleClickWrapper()}>
<ImageWrapper> <ImageWrapper>
<Dot color={getStatusColor(status)} /> <Dot color={getStatusColor(status)} />
<TrezorImage model={trezorModel} /> <TrezorImage model={getVersion(device)} />
</ImageWrapper> </ImageWrapper>
<LabelWrapper> <LabelWrapper>
<Name>{label}</Name> <Name>{device.instanceLabel}</Name>
<Status>{getStatusName(status)}</Status> <Status>{getStatusName(status)}</Status>
</LabelWrapper> </LabelWrapper>
<IconWrapper> <IconWrapper>

@ -6,7 +6,6 @@ import colors from 'config/colors';
import Icon from 'components/Icon'; import Icon from 'components/Icon';
import TrezorConnect from 'trezor-connect'; import TrezorConnect from 'trezor-connect';
import type { TrezorDevice } from 'flowtype'; import type { TrezorDevice } from 'flowtype';
import { getStatus, getVersion, isDisabled } from 'utils/device';
import DeviceHeader from './components/DeviceHeader'; import DeviceHeader from './components/DeviceHeader';
@ -19,11 +18,6 @@ const Wrapper = styled.div``;
const IconClick = styled.div``; const IconClick = styled.div``;
export const DeviceSelect = (props: Props) => { export const DeviceSelect = (props: Props) => {
const { devices } = props;
const { transport } = props.connect;
const { selectedDevice } = props.wallet;
const disabled = isDisabled(selectedDevice, devices, transport);
const handleOpen = () => { const handleOpen = () => {
props.toggleDeviceDropdown(!props.deviceDropdownOpened); props.toggleDeviceDropdown(!props.deviceDropdownOpened);
}; };
@ -31,12 +25,10 @@ export const DeviceSelect = (props: Props) => {
return ( return (
<DeviceHeader <DeviceHeader
onClickWrapper={handleOpen} onClickWrapper={handleOpen}
disabled={disabled} device={props.wallet.selectedDevice}
label={selectedDevice.instanceLabel} transport={props.connect.transport}
status={getStatus(selectedDevice)} devices={props.devices.length}
deviceCount={devices.length}
isOpen={props.deviceDropdownOpened} isOpen={props.deviceDropdownOpened}
trezorModel={getVersion(selectedDevice)}
/> />
); );
}; };
@ -152,7 +144,7 @@ export class DeviceDropdown extends Component<Props> {
}; };
const deviceList = devices.sort(sortByInstance) const deviceList = devices.sort(sortByInstance)
.map((dev, index) => { .map((dev) => {
if (dev === selected) return null; if (dev === selected) return null;
return ( return (
<DeviceHeader <DeviceHeader
@ -173,9 +165,9 @@ export class DeviceDropdown extends Component<Props> {
/> />
</IconClick> </IconClick>
)} )}
label={dev.instanceLabel} device={dev}
status={getStatus(dev)} devices={devices}
trezorModel={getVersion(dev)} isHoverable
/> />
); );
}); });

Loading…
Cancel
Save