Skip to content
Snippets Groups Projects
Commit 5c39a63a authored by Karishma Chadha's avatar Karishma Chadha
Browse files

Styling changes, code cleanup, bringing up preview modal on back buttons.

parent c621f19e
No related branches found
No related tags found
No related merge requests found
...@@ -96,6 +96,19 @@ $sides: 20rem; ...@@ -96,6 +96,19 @@ $sides: 20rem;
text-align: right; text-align: right;
display: flex; display: flex;
justify-content: center; justify-content: center;
border: 1px solid;
border-radius: 0.25rem;
overflow: hidden;
}
.ok-input-container {
border-color: $motion-primary;
box-shadow: 0 0 0 0.2rem $motion-transparent;
}
.bad-input-container {
border-color: $data-primary;
box-shadow: 0 0 0 0.2rem $data-transparent;
} }
.input-row input { .input-row input {
...@@ -104,6 +117,8 @@ $sides: 20rem; ...@@ -104,6 +117,8 @@ $sides: 20rem;
height: 3rem; height: 3rem;
color: #6b6b6b; color: #6b6b6b;
font-size: .875rem; font-size: .875rem;
outline: none;
border: none;
} }
.input-row input::placeholder { .input-row input::placeholder {
...@@ -111,25 +126,12 @@ $sides: 20rem; ...@@ -111,25 +126,12 @@ $sides: 20rem;
color: rgba(87,94,117,0.5); color: rgba(87,94,117,0.5);
} }
.input-row input.ok-input {
outline: none;
border: 1px solid $motion-primary;
border-radius: 0.25rem
}
.input-row input.bad-input {
outline: none;
border: 1px solid $data-primary;
border-radius: 0.25rem
}
.input-row button { .input-row button {
padding: 0.5rem 2rem; padding: 0.5rem 2rem;
font-weight: bold; font-weight: bold;
font-size: .875rem; font-size: .875rem;
cursor: pointer; cursor: pointer;
border: 1px solid $import-primary; border: 0px solid $import-primary;
border-radius: 0.25rem;
outline: none; outline: none;
} }
...@@ -138,26 +140,22 @@ $sides: 20rem; ...@@ -138,26 +140,22 @@ $sides: 20rem;
color: white; color: white;
} }
.empty-row {
margin: 0;
}
.error-row { .error-row {
margin: 1.5rem 0; margin: 1.5rem 0;
text-align: center; text-align: center;
display: flex; display: flex;
justify-content: center; justify-content: center;
} background: $data-tertiary;
.error-row div { color: $data-primary;
background: $data-primary; border: 1px solid $ui-pane-border;
opacity: 0.8;
color: white;
padding: 0.5rem 1rem;
font-size: .5rem;
border: 1px solid $data-primary;
border-radius: 0.25rem; border-radius: 0.25rem;
} }
.error-row p {
font-size: 0.875rem;
font-weight: bold;
}
/* Confirmation buttons at the bottom of the modal */ /* Confirmation buttons at the bottom of the modal */
.button-row { .button-row {
margin: 1.5rem 0; margin: 1.5rem 0;
......
...@@ -46,7 +46,7 @@ const ImportModal = ({intl, ...props}) => ( ...@@ -46,7 +46,7 @@ const ImportModal = ({intl, ...props}) => (
> >
<CloseButton <CloseButton
size={CloseButton.SIZE_LARGE} size={CloseButton.SIZE_LARGE}
onClick={props.onCancel} onClick={props.onGoBack}
/> />
</div> </div>
<div <div
...@@ -69,10 +69,13 @@ const ImportModal = ({intl, ...props}) => ( ...@@ -69,10 +69,13 @@ const ImportModal = ({intl, ...props}) => (
<p> <p>
{intl.formatMessage({...messages.formDescription})} {intl.formatMessage({...messages.formDescription})}
</p> </p>
<Box className={styles.inputRow}> <Box
className={classNames(styles.inputRow,
(props.hasValidationError ? styles.badInputContainer : styles.okInputContainer))
}
>
<input <input
autoFocus autoFocus
className={props.hasValidationError ? styles.badInput : styles.okInput}
placeholder={props.placeholder} placeholder={props.placeholder}
value={props.inputValue} value={props.inputValue}
onChange={props.onChange} onChange={props.onChange}
...@@ -90,21 +93,19 @@ const ImportModal = ({intl, ...props}) => ( ...@@ -90,21 +93,19 @@ const ImportModal = ({intl, ...props}) => (
/> />
</button> </button>
</Box> </Box>
<Box className={props.hasValidationError ? styles.errorRow : styles.emptyRow}> {props.hasValidationError ?
{props.hasValidationError ? <Box className={styles.errorRow}>
<div className={styles.importErrorDiv}> <p>
<p> <FormattedMessage
{/* intl.formatMessage({...messages.invalidLink})*/} {...messages[`${props.errorMessage}`]}
<FormattedMessage />
{...messages[`${props.errorMessage}`]} </p>
/> </Box> : null
</p> }
</div> : null}
</Box>
<Box className={styles.buttonRow}> <Box className={styles.buttonRow}>
<button <button
className={styles.noButton} className={styles.noButton}
onClick={props.onCancel} onClick={props.onGoBack}
> >
<FormattedMessage <FormattedMessage
defaultMessage="Go Back" defaultMessage="Go Back"
...@@ -145,6 +146,7 @@ ImportModal.propTypes = { ...@@ -145,6 +146,7 @@ ImportModal.propTypes = {
intl: intlShape.isRequired, intl: intlShape.isRequired,
onCancel: PropTypes.func.isRequired, onCancel: PropTypes.func.isRequired,
onChange: PropTypes.func.isRequired, onChange: PropTypes.func.isRequired,
onGoBack: PropTypes.func.isRequired,
onKeyPress: PropTypes.func.isRequired, onKeyPress: PropTypes.func.isRequired,
onViewProject: PropTypes.func.isRequired, onViewProject: PropTypes.func.isRequired,
placeholder: PropTypes.string placeholder: PropTypes.string
......
...@@ -6,7 +6,8 @@ import {connect} from 'react-redux'; ...@@ -6,7 +6,8 @@ import {connect} from 'react-redux';
import ImportModalComponent from '../components/import-modal/import-modal.jsx'; import ImportModalComponent from '../components/import-modal/import-modal.jsx';
import { import {
closeImportInfo closeImportInfo,
openPreviewInfo
} from '../reducers/modals'; } from '../reducers/modals';
class ImportModal extends React.Component { class ImportModal extends React.Component {
...@@ -15,8 +16,9 @@ class ImportModal extends React.Component { ...@@ -15,8 +16,9 @@ class ImportModal extends React.Component {
bindAll(this, [ bindAll(this, [
'handleViewProject', 'handleViewProject',
'handleCancel', 'handleCancel',
'handleKeyPress', 'handleChange',
'handleChange' 'handleGoBack',
'handleKeyPress'
]); ]);
this.state = { this.state = {
...@@ -40,7 +42,6 @@ class ImportModal extends React.Component { ...@@ -40,7 +42,6 @@ class ImportModal extends React.Component {
document.body.removeChild(projectLink); document.body.removeChild(projectLink);
this.props.onViewProject(); this.props.onViewProject();
} else { } else {
// TODO handle error messages and error states
this.setState({ this.setState({
hasValidationError: true, hasValidationError: true,
errorMessage: `invalidFormatError`}); errorMessage: `invalidFormatError`});
...@@ -64,12 +65,8 @@ class ImportModal extends React.Component { ...@@ -64,12 +65,8 @@ class ImportModal extends React.Component {
this.props.onCancel(); this.props.onCancel();
} }
handleGoBack () { handleGoBack () {
// TODO what should the go back button actually do? Should it bring the preview modal this.props.onBack();
// back up or just close this modal, or go back to scratch?
window.location.replace('https://scratch.mit.edu');
} }
// TODO not sure if we need this, since it shouldn't be possible to bring up this
// modal without first going through the preview modal
render () { render () {
return ( return (
<ImportModalComponent <ImportModalComponent
...@@ -79,6 +76,7 @@ class ImportModal extends React.Component { ...@@ -79,6 +76,7 @@ class ImportModal extends React.Component {
placeholder="scratch.mit.edu/projects/123456789" placeholder="scratch.mit.edu/projects/123456789"
onCancel={this.handleCancel} onCancel={this.handleCancel}
onChange={this.handleChange} onChange={this.handleChange}
onGoBack={this.handleGoBack}
onKeyPress={this.handleKeyPress} onKeyPress={this.handleKeyPress}
onViewProject={this.handleViewProject} onViewProject={this.handleViewProject}
/> />
...@@ -87,6 +85,7 @@ class ImportModal extends React.Component { ...@@ -87,6 +85,7 @@ class ImportModal extends React.Component {
} }
ImportModal.propTypes = { ImportModal.propTypes = {
onBack: PropTypes.func.isRequired,
onCancel: PropTypes.func.isRequired, onCancel: PropTypes.func.isRequired,
onViewProject: PropTypes.func onViewProject: PropTypes.func
}; };
...@@ -94,11 +93,15 @@ ImportModal.propTypes = { ...@@ -94,11 +93,15 @@ ImportModal.propTypes = {
const mapStateToProps = () => ({}); const mapStateToProps = () => ({});
const mapDispatchToProps = dispatch => ({ const mapDispatchToProps = dispatch => ({
onViewProject: () => { onBack: () => {
dispatch(closeImportInfo()); dispatch(closeImportInfo());
dispatch(openPreviewInfo());
}, },
onCancel: () => { onCancel: () => {
dispatch(closeImportInfo()); dispatch(closeImportInfo());
},
onViewProject: () => {
dispatch(closeImportInfo());
} }
}); });
......
...@@ -17,6 +17,8 @@ $sound-tertiary: #A63FA6; ...@@ -17,6 +17,8 @@ $sound-tertiary: #A63FA6;
$control-primary: #FFAB19; $control-primary: #FFAB19;
$data-primary: #FF8C1A; $data-primary: #FF8C1A;
$data-tertiary: rgba(255,140,26,0.25);
$data-transparent: rgba(255,140,26,0.1);
$form-border: #E9EEF2; $form-border: #E9EEF2;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment