From 24a72daf2c9b56f34fe54bb7dea69322fd777643 Mon Sep 17 00:00:00 2001 From: ghalestrilo Date: Tue, 30 Jun 2020 19:11:48 -0300 Subject: [PATCH] :lipstick: improve
component structure and layout --- client/components/mobile/Header.jsx | 56 +++++++++++++++++++-- client/modules/IDE/pages/MobileIDEView.jsx | 41 ++++++--------- client/modules/Mobile/MobilePreferences.jsx | 31 +++++------- client/modules/Mobile/MobileSketchView.jsx | 16 +++--- 4 files changed, 87 insertions(+), 57 deletions(-) diff --git a/client/components/mobile/Header.jsx b/client/components/mobile/Header.jsx index 559f2efa..04b336a2 100644 --- a/client/components/mobile/Header.jsx +++ b/client/components/mobile/Header.jsx @@ -1,14 +1,16 @@ import React from 'react'; import styled from 'styled-components'; +import PropTypes from 'prop-types'; import { prop, remSize } from '../../theme'; const background = prop('Panel.default.background'); const textColor = prop('primaryTextColor'); -const Header = styled.div` + +const HeaderDiv = styled.div` position: fixed; width: 100%; - background: ${background}; + background: ${props => (props.transparent ? 'transparent' : background)}; color: ${textColor}; padding: ${remSize(12)}; padding-left: ${remSize(16)}; @@ -23,8 +25,56 @@ const Header = styled.div` // TODO: svg { - height: 2rem; + max-height: ${remSize(32)}; + padding: ${remSize(4)} } `; +const IconContainer = styled.div` + margin-left: ${props => (props.leftButton ? remSize(32) : remSize(4))}; + display: flex; +`; + + +const TitleContainer = styled.div` + margin-left: ${remSize(4)}; + margin-right: auto; + + ${props => props.padded && `h2{ + padding-top: ${remSize(10)}; + padding-bottom: ${remSize(10)}; + }`} +`; + +const Header = ({ + title, subtitle, leftButton, children, transparent +}) => ( + + {leftButton} + + {title &&

{title}

} + {subtitle &&

{subtitle}

} +
+ + {children} + +
+); + +Header.propTypes = { + title: PropTypes.string, + subtitle: PropTypes.string, + leftButton: PropTypes.element, + children: PropTypes.arrayOf(PropTypes.element), + transparent: PropTypes.bool +}; + +Header.defaultProps = { + title: null, + subtitle: null, + leftButton: null, + children: [], + transparent: false +}; + export default Header; diff --git a/client/modules/IDE/pages/MobileIDEView.jsx b/client/modules/IDE/pages/MobileIDEView.jsx index 1fb95139..016dc1b7 100644 --- a/client/modules/IDE/pages/MobileIDEView.jsx +++ b/client/modules/IDE/pages/MobileIDEView.jsx @@ -1,7 +1,5 @@ import React from 'react'; import PropTypes from 'prop-types'; -import styled from 'styled-components'; -import { Link } from 'react-router'; import { connect } from 'react-redux'; import { withRouter } from 'react-router'; import { useState } from 'react'; @@ -30,15 +28,6 @@ import Screen from '../../../components/mobile/MobileScreen'; import Footer from '../../../components/mobile/Footer'; import IDEWrapper from '../../../components/mobile/IDEWrapper'; -const IconContainer = styled.div` - marginLeft: 2rem; - display: flex; -`; - -const TitleContainer = styled.div` - -`; - const isUserOwner = ({ project, user }) => (project.owner && project.owner.id === user.id); const MobileIDEView = (props) => { @@ -55,23 +44,21 @@ const MobileIDEView = (props) => { return ( -
- - +
+ + + } + > + setOverlay('preferences')}> + + { startSketch(); }}> + -
-

{project.name}

-

{selectedFile.name}

-
- - - setOverlay('preferences')}> - - { startSketch(); }}> - -
diff --git a/client/modules/Mobile/MobilePreferences.jsx b/client/modules/Mobile/MobilePreferences.jsx index b985963a..68277907 100644 --- a/client/modules/Mobile/MobilePreferences.jsx +++ b/client/modules/Mobile/MobilePreferences.jsx @@ -1,25 +1,20 @@ -import React, { useEffect } from 'react'; +import React from 'react'; import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; -import { Link, withRouter } from 'react-router'; +import { withRouter } from 'react-router'; import PropTypes from 'prop-types'; import styled from 'styled-components'; import * as PreferencesActions from '../IDE/actions/preferences'; import * as IdeActions from '../IDE/actions/ide'; +import IconButton from '../../components/mobile/IconButton'; import Screen from '../../components/mobile/MobileScreen'; import Header from '../../components/mobile/Header'; import PreferencePicker from '../../components/mobile/PreferencePicker'; import { ExitIcon } from '../../common/icons'; import { remSize, prop } from '../../theme'; -const IconLinkWrapper = styled(Link)` - width: 3rem; - margin-right: 1.25rem; - margin-left: none; -`; - const Content = styled.div` z-index: 0; margin-top: ${remSize(68)}; @@ -32,7 +27,11 @@ const SettingsHeader = styled(Header)` const SectionHeader = styled.h2` color: ${prop('primaryTextColor')}; - padding-top: 2rem + padding-top: ${remSize(32)} +`; + +const SectionSubeader = styled.h3` + color: ${prop('primaryTextColor')}; `; @@ -167,15 +166,11 @@ const MobilePreferences = (props) => { return (
+ - -

Settings

- -
- - - -
+ + +
@@ -186,7 +181,7 @@ const MobilePreferences = (props) => { { accessibilitySettings.map(option => ) } Accessible Output -

Used with screen reader

+ Used with screen reader { outputSettings.map(option => ) }
diff --git a/client/modules/Mobile/MobileSketchView.jsx b/client/modules/Mobile/MobileSketchView.jsx index b871edf9..f42a2382 100644 --- a/client/modules/Mobile/MobileSketchView.jsx +++ b/client/modules/Mobile/MobileSketchView.jsx @@ -49,15 +49,13 @@ const MobileSketchView = (props) => { return ( -
- - - -
-

{projectName}

-


-
-
+
+ + } + title={projectName} + />