diff --git a/src/components/asset-panel/selector.jsx b/src/components/asset-panel/selector.jsx index b40c5759d9b716b3b8b6fb1098ab6b9fafdd1567..c6eec7f78db2b86b5acd8408a8404af84ddfbc01 100644 --- a/src/components/asset-panel/selector.jsx +++ b/src/components/asset-panel/selector.jsx @@ -57,7 +57,7 @@ Selector.propTypes = { url: PropTypes.string, name: PropTypes.string.isRequired })), - onDeleteClick: PropTypes.func.isRequired, + onDeleteClick: PropTypes.func, onItemClick: PropTypes.func.isRequired, selectedItemIndex: PropTypes.number.isRequired }; diff --git a/src/components/sprite-selector-item/sprite-selector-item.jsx b/src/components/sprite-selector-item/sprite-selector-item.jsx index 3fc6e440e74ee390e1bdaa7d9348b90e31dc0ad0..aa292cfaa8e1dc2601c87f3544084160124b8770 100644 --- a/src/components/sprite-selector-item/sprite-selector-item.jsx +++ b/src/components/sprite-selector-item/sprite-selector-item.jsx @@ -22,7 +22,7 @@ const SpriteSelectorItem = props => ( }} id={`${props.name}-${contextMenuId}`} > - {props.selected ? ( + {(props.selected && props.onDeleteButtonClick) ? ( <CloseButton className={styles.deleteButton} size={CloseButton.SIZE_SMALL} @@ -38,24 +38,28 @@ const SpriteSelectorItem = props => ( /> ) : null} <div className={styles.spriteName}>{props.name}</div> - <ContextMenu id={`${props.name}-${contextMenuId++}`}> - {props.onDuplicateButtonClick ? ( - <MenuItem onClick={props.onDuplicateButtonClick}> - <FormattedMessage - defaultMessage="duplicate" - description="Menu item to duplicate in the right click menu" - id="gui.spriteSelectorItem.contextMenuDuplicate" - /> - </MenuItem> - ) : null} - <MenuItem onClick={props.onDeleteButtonClick}> - <FormattedMessage - defaultMessage="delete" - description="Menu item to delete in the right click menu" - id="gui.spriteSelectorItem.contextMenuDelete" - /> - </MenuItem> - </ContextMenu> + {props.onDuplicateButtonClick || props.onDeleteButtonClick ? ( + <ContextMenu id={`${props.name}-${contextMenuId++}`}> + {props.onDuplicateButtonClick ? ( + <MenuItem onClick={props.onDuplicateButtonClick}> + <FormattedMessage + defaultMessage="duplicate" + description="Menu item to duplicate in the right click menu" + id="gui.spriteSelectorItem.contextMenuDuplicate" + /> + </MenuItem> + ) : null} + {props.onDeleteButtonClick ? ( + <MenuItem onClick={props.onDeleteButtonClick}> + <FormattedMessage + defaultMessage="delete" + description="Menu item to delete in the right click menu" + id="gui.spriteSelectorItem.contextMenuDelete" + /> + </MenuItem> + ) : null } + </ContextMenu> + ) : null} </ContextMenuTrigger> ); @@ -64,7 +68,7 @@ SpriteSelectorItem.propTypes = { costumeURL: PropTypes.string, name: PropTypes.string.isRequired, onClick: PropTypes.func, - onDeleteButtonClick: PropTypes.func.isRequired, + onDeleteButtonClick: PropTypes.func, onDuplicateButtonClick: PropTypes.func, selected: PropTypes.bool.isRequired }; diff --git a/src/containers/costume-tab.jsx b/src/containers/costume-tab.jsx index 47b0964f9ff676ef8c10cd044cc47f47602319a6..9f84d53c2195cb8e3fc1e088ed2a667bfdd6132a 100644 --- a/src/containers/costume-tab.jsx +++ b/src/containers/costume-tab.jsx @@ -109,7 +109,7 @@ class CostumeTab extends React.Component { }]} items={target.costumes || []} selectedItemIndex={this.state.selectedCostumeIndex} - onDeleteClick={this.handleDeleteCostume} + onDeleteClick={target.costumes.length > 1 ? this.handleDeleteCostume : null} onItemClick={this.handleSelectCostume} > {target.costumes ? diff --git a/src/containers/sprite-selector-item.jsx b/src/containers/sprite-selector-item.jsx index 0bc01382cac731a6bcef3b52a16fe4fb4c2d757b..1bdb6d368519c67a357956058c3f1cb5dd901ef9 100644 --- a/src/containers/sprite-selector-item.jsx +++ b/src/containers/sprite-selector-item.jsx @@ -20,6 +20,7 @@ class SpriteSelectorItem extends React.Component { this.props.onClick(this.props.id); } handleDelete () { + // @todo add i18n here // eslint-disable-next-line no-alert if (window.confirm('Are you sure you want to delete this sprite?')) { this.props.onDeleteButtonClick(this.props.id); @@ -43,7 +44,7 @@ class SpriteSelectorItem extends React.Component { return ( <SpriteSelectorItemComponent onClick={this.handleClick} - onDeleteButtonClick={this.handleDelete} + onDeleteButtonClick={onDeleteButtonClick ? this.handleDelete : null} onDuplicateButtonClick={onDuplicateButtonClick ? this.handleDuplicate : null} {...props} /> @@ -57,7 +58,7 @@ SpriteSelectorItem.propTypes = { id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), name: PropTypes.string, onClick: PropTypes.func, - onDeleteButtonClick: PropTypes.func.isRequired, + onDeleteButtonClick: PropTypes.func, onDuplicateButtonClick: PropTypes.func, selected: PropTypes.bool };