1
0
mirror of https://github.com/trezor/trezor-wallet synced 2025-03-03 09:46:06 +00:00

Merge branch 'master' into feature/ripple

This commit is contained in:
Szymon Lesisz 2018-12-11 15:15:50 +01:00 committed by GitHub
commit b368447bcb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 1924 additions and 125 deletions

View File

@ -49,8 +49,8 @@
"raf": "^3.4.0", "raf": "^3.4.0",
"raven-js": "^3.22.3", "raven-js": "^3.22.3",
"rc-tooltip": "^3.7.0", "rc-tooltip": "^3.7.0",
"react": "^16.4.2", "react": "^16.6.3",
"react-dom": "^16.2.0", "react-dom": "^16.6.3",
"react-hot-loader": "^4.3.4", "react-hot-loader": "^4.3.4",
"react-json-view": "^1.19.1", "react-json-view": "^1.19.1",
"react-qr-svg": "^2.1.0", "react-qr-svg": "^2.1.0",
@ -67,9 +67,9 @@
"redux-raven-middleware": "^1.2.0", "redux-raven-middleware": "^1.2.0",
"redux-thunk": "^2.2.0", "redux-thunk": "^2.2.0",
"rimraf": "^2.6.2", "rimraf": "^2.6.2",
"styled-components": "^3.4.9", "styled-components": "^4.1.2",
"styled-media-query": "^2.0.2", "styled-media-query": "^2.0.2",
"styled-normalize": "^8.0.0", "styled-normalize": "^8.0.4",
"trezor-connect": "6.0.3-beta.4", "trezor-connect": "6.0.3-beta.4",
"web3": "1.0.0-beta.35", "web3": "1.0.0-beta.35",
"webpack": "^4.16.3", "webpack": "^4.16.3",

View File

@ -57,6 +57,11 @@ const StyledTextarea = styled(Textarea)`
opacity: 1; opacity: 1;
} }
&:read-only {
background: ${colors.GRAY_LIGHT};
color: ${colors.TEXT_SECONDARY};
}
&:disabled { &:disabled {
pointer-events: none; pointer-events: none;
background: ${colors.GRAY_LIGHT}; background: ${colors.GRAY_LIGHT};
@ -94,7 +99,7 @@ const StyledTextarea = styled(Textarea)`
`; `;
const TopLabel = styled.span` const TopLabel = styled.span`
padding-bottom: 8px; padding-bottom: 10px;
color: ${colors.TEXT_SECONDARY}; color: ${colors.TEXT_SECONDARY};
`; `;
@ -150,11 +155,13 @@ const TextArea = ({
onFocus, onFocus,
onBlur, onBlur,
isDisabled, isDisabled,
readOnly,
name, name,
onChange, onChange,
topLabel, topLabel,
rows, rows,
maxRows, maxRows,
maxLength,
autoSelect, autoSelect,
state = '', state = '',
bottomText = '', bottomText = '',
@ -169,6 +176,7 @@ const TextArea = ({
autoCorrect="off" autoCorrect="off"
autoCapitalize="off" autoCapitalize="off"
maxRows={maxRows} maxRows={maxRows}
maxLength={maxLength}
rows={rows} rows={rows}
className={className} className={className}
disabled={isDisabled} disabled={isDisabled}
@ -177,6 +185,7 @@ const TextArea = ({
onFocus={onFocus} onFocus={onFocus}
onBlur={onBlur} onBlur={onBlur}
value={value} value={value}
readOnly={readOnly}
onClick={autoSelect ? event => event.target.select() : null} onClick={autoSelect ? event => event.target.select() : null}
placeholder={placeholder} placeholder={placeholder}
onChange={onChange} onChange={onChange}
@ -202,7 +211,9 @@ TextArea.propTypes = {
customStyle: PropTypes.string, customStyle: PropTypes.string,
placeholder: PropTypes.string, placeholder: PropTypes.string,
value: PropTypes.string, value: PropTypes.string,
readOnly: PropTypes.bool,
maxRows: PropTypes.number, maxRows: PropTypes.number,
maxLength: PropTypes.number,
rows: PropTypes.number, rows: PropTypes.number,
name: PropTypes.string, name: PropTypes.string,
isDisabled: PropTypes.bool, isDisabled: PropTypes.bool,

View File

@ -29,7 +29,7 @@ const InputIconWrapper = styled.div`
`; `;
const TopLabel = styled.span` const TopLabel = styled.span`
padding-bottom: 8px; padding-bottom: 10px;
color: ${colors.TEXT_SECONDARY}; color: ${colors.TEXT_SECONDARY};
`; `;
@ -62,6 +62,11 @@ const StyledInput = styled.input`
color: ${colors.TEXT_SECONDARY}; color: ${colors.TEXT_SECONDARY};
} }
&:read-only {
background: ${colors.GRAY_LIGHT};
color: ${colors.TEXT_SECONDARY};
}
${props => props.trezorAction && css` ${props => props.trezorAction && css`
z-index: 10001; z-index: 10001;
position: relative; /* bigger than modal container */ position: relative; /* bigger than modal container */
@ -95,7 +100,7 @@ const Overlay = styled.div`
height: 100%; height: 100%;
background-image: linear-gradient(to right, background-image: linear-gradient(to right,
rgba(0,0,0, 0) 0%, rgba(0,0,0, 0) 0%,
rgba(255,255,255, 1) 220px rgba(249,249,249, 1) 220px
); );
`} `}
`; `;
@ -176,7 +181,7 @@ class Input extends PureComponent {
height={this.props.height} height={this.props.height}
trezorAction={this.props.trezorAction} trezorAction={this.props.trezorAction}
hasIcon={this.getIcon(this.props.state).length > 0} hasIcon={this.getIcon(this.props.state).length > 0}
innerRef={this.props.innerRef} ref={this.props.innerRef}
hasAddon={!!this.props.sideAddons} hasAddon={!!this.props.sideAddons}
type={this.props.type} type={this.props.type}
color={this.getColor(this.props.state)} color={this.getColor(this.props.state)}

View File

@ -1,13 +1,20 @@
/* @flow */ /* @flow */
import React from 'react'; import React from 'react';
import { render } from 'react-dom'; import { render } from 'react-dom';
import baseStyles from 'support/styles'; import { Normalize } from 'styled-normalize';
import BaseStyles from 'support/styles';
import App from 'views/index'; import App from 'views/index';
const root: ?HTMLElement = document.getElementById('trezor-wallet-root'); const root: ?HTMLElement = document.getElementById('trezor-wallet-root');
if (root) { if (root) {
baseStyles(); render(
render(<App />, root); <React.Fragment>
<Normalize />
<BaseStyles />
<App />
</React.Fragment>,
root,
);
} }
window.onbeforeunload = () => { window.onbeforeunload = () => {

View File

@ -1,13 +1,10 @@
import { injectGlobal } from 'styled-components'; import { createGlobalStyle } from 'styled-components';
import colors from 'config/colors'; import colors from 'config/colors';
import normalize from 'styled-normalize';
import tooltipStyles from './Tooltip'; import tooltipStyles from './Tooltip';
import animationStyles from './Animations'; import animationStyles from './Animations';
const baseStyles = () => injectGlobal` const baseStyles = createGlobalStyle`
${normalize};
html, body { html, body {
width: 100%; width: 100%;
height: 100%; height: 100%;

View File

@ -19,11 +19,8 @@ type State = {
footerFixed: boolean, footerFixed: boolean,
} }
const AsideWrapper = styled.aside.attrs({ const AsideWrapper = styled.aside`
style: ({ minHeight }) => ({ min-height: ${props => props.minHeight}px;
minHeight,
}),
})`
position: relative; position: relative;
top: 0px; top: 0px;
width: 320px; width: 320px;
@ -33,13 +30,10 @@ const AsideWrapper = styled.aside.attrs({
border-right: 1px solid ${colors.DIVIDER}; border-right: 1px solid ${colors.DIVIDER};
`; `;
const StickyContainerWrapper = styled.div.attrs({ const StickyContainerWrapper = styled.div`
style: ({ top, left, paddingBottom }) => ({ top: ${props => props.top}px;
top, left: ${props => props.left}px;
left, padding-bottom: ${props => props.paddingBottom}px;
paddingBottom,
}),
})`
position: fixed; position: fixed;
border-right: 1px solid ${colors.DIVIDER}; border-right: 1px solid ${colors.DIVIDER};
width: 320px; width: 320px;
@ -160,7 +154,7 @@ export default class StickyContainer extends React.PureComponent<Props, State> {
<AsideWrapper <AsideWrapper
footerFixed={this.state.footerFixed} footerFixed={this.state.footerFixed}
minHeight={this.state.asideMinHeight} minHeight={this.state.asideMinHeight}
innerRef={this.asideRefCallback} ref={this.asideRefCallback}
onScroll={this.handleScroll} onScroll={this.handleScroll}
onTouchStart={this.handleScroll} onTouchStart={this.handleScroll}
onTouchMove={this.handleScroll} onTouchMove={this.handleScroll}
@ -170,11 +164,11 @@ export default class StickyContainer extends React.PureComponent<Props, State> {
paddingBottom={this.state.wrapperBottomPadding} paddingBottom={this.state.wrapperBottomPadding}
top={this.state.wrapperTopOffset} top={this.state.wrapperTopOffset}
left={this.state.wrapperLeftOffset} left={this.state.wrapperLeftOffset}
innerRef={this.wrapperRefCallback} ref={this.wrapperRefCallback}
> >
{React.Children.map(this.props.children, (child) => { // eslint-disable-line arrow-body-style {React.Children.map(this.props.children, (child) => { // eslint-disable-line arrow-body-style
return child.key === 'sticky-footer' ? React.cloneElement(child, { return child.key === 'sticky-footer' ? React.cloneElement(child, {
innerRef: this.footerRefCallback, ref: this.footerRefCallback,
position: this.state.footerFixed ? 'fixed' : 'relative', position: this.state.footerFixed ? 'fixed' : 'relative',
}) : child; }) : child;
})} })}

View File

@ -44,11 +44,8 @@ const TransitionContentWrapper = styled.div`
vertical-align: top; vertical-align: top;
`; `;
const Footer = styled.div.attrs({ const Footer = styled.div`
style: ({ position }) => ({ position: ${props => props.position};
position,
}),
})`
width: 320px; width: 320px;
bottom: 0; bottom: 0;
background: ${colors.MAIN}; background: ${colors.MAIN};

View File

@ -61,7 +61,7 @@ class TopNavigationAccount extends React.PureComponent<Props> {
const basePath = `/device/${state.device}/network/${state.network}/account/${state.account}`; const basePath = `/device/${state.device}/network/${state.network}/account/${state.account}`;
return ( return (
<Wrapper className="account-tabs" innerRef={this.wrapperRefCallback}> <Wrapper className="account-tabs" ref={this.wrapperRefCallback}>
<StyledNavLink exact to={`${basePath}`}>Summary</StyledNavLink> <StyledNavLink exact to={`${basePath}`}>Summary</StyledNavLink>
<StyledNavLink to={`${basePath}/receive`}>Receive</StyledNavLink> <StyledNavLink to={`${basePath}/receive`}>Receive</StyledNavLink>
<StyledNavLink to={`${basePath}/send`}>Send</StyledNavLink> <StyledNavLink to={`${basePath}/send`}>Send</StyledNavLink>

View File

@ -22,10 +22,6 @@ type Props = BaseProps & {
// same variable also in "AccountSend/index.js" // same variable also in "AccountSend/index.js"
const SmallScreenWidth = '850px'; const SmallScreenWidth = '850px';
const InputRow = styled.div`
margin-bottom: 20px;
`;
const InputLabelWrapper = styled.div` const InputLabelWrapper = styled.div`
display: flex; display: flex;
align-items: center; align-items: center;
@ -45,7 +41,7 @@ const AdvancedSettingsWrapper = styled.div`
border-top: 1px solid ${colors.DIVIDER}; border-top: 1px solid ${colors.DIVIDER};
`; `;
const GasInputRow = styled(InputRow)` const GasInputRow = styled.div`
width: 100%; width: 100%;
display: flex; display: flex;
@ -55,7 +51,8 @@ const GasInputRow = styled(InputRow)`
`; `;
const GasInput = styled(Input)` const GasInput = styled(Input)`
min-height: 85px; /* min-height: 85px; */
padding-bottom: 28px;
&:first-child { &:first-child {
padding-right: 20px; padding-right: 20px;
} }
@ -63,13 +60,12 @@ const GasInput = styled(Input)`
@media screen and (max-width: ${SmallScreenWidth}) { @media screen and (max-width: ${SmallScreenWidth}) {
&:first-child { &:first-child {
padding-right: 0; padding-right: 0;
margin-bottom: 2px;
} }
} }
`; `;
const StyledTextarea = styled(Textarea)` const StyledTextarea = styled(Textarea)`
margin-bottom: 20px; padding-bottom: 28px;
min-height: 80px; min-height: 80px;
`; `;
@ -214,6 +210,7 @@ const AdvancedForm = (props: Props) => {
spellCheck="false" spellCheck="false"
topLabel={( topLabel={(
<InputLabelWrapper> <InputLabelWrapper>
<Left>
Gas price Gas price
<Tooltip <Tooltip
content={( content={(
@ -233,6 +230,7 @@ const AdvancedForm = (props: Props) => {
size={24} size={24}
/> />
</Tooltip> </Tooltip>
</Left>
</InputLabelWrapper> </InputLabelWrapper>
)} )}
bottomText={errors.gasPrice || warnings.gasPrice || infos.gasPrice} bottomText={errors.gasPrice || warnings.gasPrice || infos.gasPrice}
@ -244,6 +242,7 @@ const AdvancedForm = (props: Props) => {
<StyledTextarea <StyledTextarea
topLabel={( topLabel={(
<InputLabelWrapper> <InputLabelWrapper>
<Left>
Data Data
<Tooltip <Tooltip
content={( content={(
@ -259,6 +258,7 @@ const AdvancedForm = (props: Props) => {
size={24} size={24}
/> />
</Tooltip> </Tooltip>
</Left>
</InputLabelWrapper> </InputLabelWrapper>
)} )}
state={getDataTextareaState(errors.data, warnings.data)} state={getDataTextareaState(errors.data, warnings.data)}

View File

@ -13,13 +13,12 @@ import type { Props } from './Container';
const Wrapper = styled.div` const Wrapper = styled.div`
display: flex; display: flex;
flex: 1; flex: 1;
margin-top: -5px;
flex-direction: row; flex-direction: row;
background: ${colors.WHITE}; background: ${colors.WHITE};
`; `;
const Row = styled.div` const Row = styled.div`
padding: 0 0 25px 0; padding-bottom: 28px;
`; `;
const RowButtons = styled(Row)` const RowButtons = styled(Row)`
@ -87,7 +86,7 @@ class SignVerify extends Component <Props> {
type="text" type="text"
isSmallText isSmallText
autoSelect autoSelect
isDisabled readOnly
/> />
</Row> </Row>
<Row> <Row>
@ -98,7 +97,7 @@ class SignVerify extends Component <Props> {
onChange={this.handleInputChange} onChange={this.handleInputChange}
rows={4} rows={4}
maxRows={4} maxRows={4}
maxLength="255" maxLength={255}
/> />
</Row> </Row>
<Row> <Row>
@ -109,8 +108,8 @@ class SignVerify extends Component <Props> {
rows={4} rows={4}
autoSelect autoSelect
maxRows={4} maxRows={4}
maxLength="255" maxLength={255}
isDisabled readOnly
/> />
</Row> </Row>
<RowButtons> <RowButtons>
@ -147,7 +146,7 @@ class SignVerify extends Component <Props> {
onChange={this.handleInputChange} onChange={this.handleInputChange}
rows={4} rows={4}
maxRows={4} maxRows={4}
maxLength="255" maxLength={255}
/> />
</Row> </Row>
<Row> <Row>
@ -159,7 +158,7 @@ class SignVerify extends Component <Props> {
onChange={this.handleInputChange} onChange={this.handleInputChange}
rows={4} rows={4}
maxRows={4} maxRows={4}
maxLength="255" maxLength={255}
/> />
</Row> </Row>
<RowButtons> <RowButtons>

View File

@ -21,7 +21,7 @@ type State = {
}; };
const Wrapper = styled.div` const Wrapper = styled.div`
padding: 10px 0 25px 0; padding-bottom: 28px;
position: relative; position: relative;
display: flex; display: flex;

View File

@ -33,7 +33,7 @@ const Dashboard = () => (
<H2>Dashboard</H2> <H2>Dashboard</H2>
<Row> <Row>
<H2>Please select your coin</H2> <H2>Please select your coin</H2>
<P>You will gain access to recieving &amp; sending selected coin</P> <P>You will gain access to receiving &amp; sending selected coin</P>
<img src={DashboardImg} height="34" width="auto" alt="Dashboard" /> <img src={DashboardImg} height="34" width="auto" alt="Dashboard" />
</Row> </Row>
</Wrapper> </Wrapper>

1859
yarn.lock

File diff suppressed because it is too large Load Diff