Skip to content
Snippets Groups Projects
Commit 610ce74c authored by Paul Kaplan's avatar Paul Kaplan
Browse files

Move add sprite and backdrop to their correct containers

parent 6f842d35
Branches
Tags
No related merge requests found
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -59,3 +59,11 @@
padding-right: calc($space / 2);
padding-bottom: $space;
}
.add-button {
font-size: 0.55rem;
font-weight: bold;
position: absolute;
bottom: 0.5rem;
right: 0.5rem;
}
import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
import Box from '../box/box.jsx';
import SpriteInfo from '../../containers/sprite-info.jsx';
import SpriteSelectorItem from '../../containers/sprite-selector-item.jsx';
import IconButton from '../icon-button/icon-button.jsx';
import styles from './sprite-selector.css';
import spriteIcon from './icon--sprite.svg';
const addSpriteMessage = (
<FormattedMessage
defaultMessage="Add Sprite"
description="Button to add a sprite in the target pane"
id="targetPane.addSprite"
/>
);
const SpriteSelectorComponent = function (props) {
const {
......@@ -15,6 +27,7 @@ const SpriteSelectorComponent = function (props) {
onChangeSpriteX,
onChangeSpriteY,
onDeleteSprite,
onNewSpriteClick,
onSelectSprite,
selectedId,
sprites,
......@@ -69,6 +82,12 @@ const SpriteSelectorComponent = function (props) {
}
</Box>
</Box>
<IconButton
className={styles.addButton}
img={spriteIcon}
title={addSpriteMessage}
onClick={onNewSpriteClick}
/>
</Box>
);
};
......@@ -81,6 +100,7 @@ SpriteSelectorComponent.propTypes = {
onChangeSpriteX: PropTypes.func,
onChangeSpriteY: PropTypes.func,
onDeleteSprite: PropTypes.func,
onNewSpriteClick: PropTypes.func,
onSelectSprite: PropTypes.func,
selectedId: PropTypes.string,
sprites: PropTypes.shape({
......
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -99,3 +99,12 @@ $border-width: 2px;
width: 100%;
user-select: none;
}
.add-button {
font-size: 0.55rem;
font-weight: bold;
text-align: center;
position: absolute;
bottom: 0.5rem;
left: 0.25rem;
}
import classNames from 'classnames';
import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
import Box from '../box/box.jsx';
import IconButton from '../icon-button/icon-button.jsx';
import CostumeCanvas from '../costume-canvas/costume-canvas.jsx';
import styles from './stage-selector.css';
import backdropIcon from './icon--backdrop.svg';
const addBackdropMessage = (
<FormattedMessage
defaultMessage="Add Backdrop"
description="Button to add a backdrop in the target pane"
id="targetPane.addBackdrop"
/>
);
const StageSelector = props => {
const {
......@@ -12,6 +23,7 @@ const StageSelector = props => {
selected,
url,
onClick,
onNewBackdropClick,
...componentProps
} = props;
return (
......@@ -41,7 +53,12 @@ const StageSelector = props => {
<div className={styles.label}>Backdrops</div>
<div className={styles.count}>{backdropCount}</div>
</div>
<IconButton
className={styles.addButton}
img={backdropIcon}
title={addBackdropMessage}
onClick={onNewBackdropClick}
/>
</div>
</Box>
);
......@@ -50,6 +67,7 @@ const StageSelector = props => {
StageSelector.propTypes = {
backdropCount: PropTypes.number.isRequired,
onClick: PropTypes.func,
onNewBackdropClick: PropTypes.func,
selected: PropTypes.bool.isRequired,
url: PropTypes.string
};
......
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -23,12 +23,3 @@
cursor: pointer;
user-select: none;
}
.add-button {
font-size: 0.55rem;
font-weight: bold;
}
/* @todo: This is hacky. Better: move buttons in their corresponding panes, and set values relatively */
.add-button-wrapper--sprite { right: 7rem; }
.add-button-wrapper--stage { right: 0.8rem; }
import classNames from 'classnames';
import PropTypes from 'prop-types';
import React from 'react';
import {FormattedMessage} from 'react-intl';
import VM from 'scratch-vm';
......@@ -12,27 +10,8 @@ import SoundLibrary from '../../containers/sound-library.jsx';
import SpriteLibrary from '../../containers/sprite-library.jsx';
import SpriteSelectorComponent from '../sprite-selector/sprite-selector.jsx';
import StageSelector from '../../containers/stage-selector.jsx';
import IconButton from '../icon-button/icon-button.jsx';
import styles from './target-pane.css';
import spriteIcon from './icon--sprite.svg';
import backdropIcon from './icon--backdrop.svg';
const addSpriteMessage = (
<FormattedMessage
defaultMessage="Add Sprite"
description="Button to add a sprite in the target pane"
id="targetPane.addSprite"
/>
);
const addBackdropMessage = (
<FormattedMessage
defaultMessage="Add Backdrop"
description="Button to add a backdrop in the target pane"
id="targetPane.addBackdrop"
/>
);
/*
* Pane that contains the sprite selector, sprite info, stage selector,
......@@ -54,7 +33,6 @@ const TargetPane = ({
onChangeSpriteY,
onDeleteSprite,
onNewSpriteClick,
onNewBackdropClick,
onRequestCloseBackdropLibrary,
onRequestCloseCostumeLibrary,
onRequestCloseSoundLibrary,
......@@ -80,6 +58,7 @@ const TargetPane = ({
onChangeSpriteX={onChangeSpriteX}
onChangeSpriteY={onChangeSpriteY}
onDeleteSprite={onDeleteSprite}
onNewSpriteClick={onNewSpriteClick}
onSelectSprite={onSelectSprite}
/>
<Box className={styles.stageSelectorWrapper}>
......@@ -94,22 +73,6 @@ const TargetPane = ({
onSelect={onSelectSprite}
/>}
<Box>
<Box className={classNames(styles.addButtonWrapper, styles.addButtonWrapperSprite)}>
<IconButton
className={styles.addButton}
img={spriteIcon}
title={addSpriteMessage}
onClick={onNewSpriteClick}
/>
</Box>
<Box className={classNames(styles.addButtonWrapper, styles.addButtonWrapperStage)}>
<IconButton
className={styles.addButton}
img={backdropIcon}
title={addBackdropMessage}
onClick={onNewBackdropClick}
/>
</Box>
<SpriteLibrary
visible={spriteLibraryVisible}
vm={vm}
......@@ -164,7 +127,6 @@ TargetPane.propTypes = {
onChangeSpriteX: PropTypes.func,
onChangeSpriteY: PropTypes.func,
onDeleteSprite: PropTypes.func,
onNewBackdropClick: PropTypes.func,
onNewSpriteClick: PropTypes.func,
onRequestCloseBackdropLibrary: PropTypes.func,
onRequestCloseCostumeLibrary: PropTypes.func,
......
......@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import React from 'react';
import {connect} from 'react-redux';
import {openBackdropLibrary} from '../reducers/modals';
import StageSelectorComponent from '../components/stage-selector/stage-selector.jsx';
class StageSelector extends React.Component {
......@@ -44,7 +44,14 @@ const mapStateToProps = (state, {assetId}) => ({
url: assetId && state.vm.runtime.storage.get(assetId).encodeDataURI()
});
const mapDispatchToProps = dispatch => ({
onNewBackdropClick: e => {
e.preventDefault();
dispatch(openBackdropLibrary());
}
});
export default connect(
mapStateToProps,
() => ({}) // omit dispatch prop
mapDispatchToProps
)(StageSelector);
......@@ -4,7 +4,6 @@ import React from 'react';
import {connect} from 'react-redux';
import {
openBackdropLibrary,
openSpriteLibrary,
closeBackdropLibrary,
closeCostumeLibrary,
......@@ -95,10 +94,6 @@ const mapStateToProps = state => ({
backdropLibraryVisible: state.modals.backdropLibrary
});
const mapDispatchToProps = dispatch => ({
onNewBackdropClick: e => {
e.preventDefault();
dispatch(openBackdropLibrary());
},
onNewSpriteClick: e => {
e.preventDefault();
dispatch(openSpriteLibrary());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment