Move add sprite and backdrop to their correct containers

This commit is contained in:
Paul Kaplan committed 2017-08-09 17:17:14 -04:00
1 parent 6f842d354a
commit 610ce74c39
11 files changed
+66 -57

No files matched your search

@@ -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;
}
@@ -1,10 +1,22 @@
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({
@@ -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;
}
@@ -1,10 +1,21 @@
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
};
-1
View File
@@ -1 +0,0 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 7.48 7.48"><defs><style>.cls-1{fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}</style></defs><title>icon--add</title><line class="cls-1" x1="3.74" y1="6.48" x2="3.74" y2="1"/><line class="cls-1" x1="1" y1="3.74" x2="6.48" y2="3.74"/></svg>

Before

Width:  |  Height:  |  Size: 361 B

@@ -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; }
+1 -39
View File
@@ -1,7 +1,5 @@
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,
+9 -2
View File
@@ -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);
-5
View File
@@ -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());