UNPKG

scratch-gui

Version:

GraphicaL User Interface for creating and running Scratch 3.0 projects

79 lines (70 loc) 2.36 kB
import PropTypes from 'prop-types'; import React from 'react'; import SpriteSelectorItem from '../../containers/sprite-selector-item.jsx'; import Box from '../box/box.jsx'; import ActionMenu from '../action-menu/action-menu.jsx'; import styles from './selector.css'; const Selector = props => { const { buttons, items, selectedItemIndex, onDeleteClick, onDuplicateClick, onItemClick } = props; let newButtonSection = null; if (buttons.length > 0) { const {img, title, onClick} = buttons[0]; const moreButtons = buttons.slice(1); newButtonSection = ( <Box className={styles.newButtons}> <ActionMenu img={img} moreButtons={moreButtons} title={title} onClick={onClick} /> </Box> ); } return ( <Box className={styles.wrapper}> <Box className={styles.listArea}> {items.map((item, index) => ( <SpriteSelectorItem assetId={item.assetId} className={styles.listItem} costumeURL={item.url} details={item.details} id={index} key={`asset-${index}`} name={item.name} number={index + 1 /* 1-indexed */} selected={index === selectedItemIndex} onClick={onItemClick} onDeleteButtonClick={onDeleteClick} onDuplicateButtonClick={onDuplicateClick} /> ))} </Box> {newButtonSection} </Box> ); }; Selector.propTypes = { buttons: PropTypes.arrayOf(PropTypes.shape({ title: PropTypes.string.isRequired, img: PropTypes.string.isRequired, onClick: PropTypes.func })), items: PropTypes.arrayOf(PropTypes.shape({ url: PropTypes.string, name: PropTypes.string.isRequired })), onDeleteClick: PropTypes.func, onDuplicateClick: PropTypes.func, onItemClick: PropTypes.func.isRequired, selectedItemIndex: PropTypes.number.isRequired }; export default Selector;