-
Alexandros Georgantas authoredaf58e06b
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Forked from
pubsweet / pubsweet
3043 commits behind the upstream repository.
StateItem.js 1021 B
import PropTypes from 'prop-types'
import React from 'react'
import classNames from 'classnames'
import classes from './StateItem.local.scss'
const StateItem = ({ disabled, name, update, values, index }) => {
const handleInteraction = () => {
if (disabled) return
const nextIndex = arrayShift(values, index)
update(name, nextIndex)
}
const arrayShift = (array, i) => (i === array.length - 1 ? 0 : i + 1)
return (
<span
className={classNames(classes.root, {
[classes.disabled]: disabled,
})}
disabled={disabled}
onClick={handleInteraction}
onKeyPress={handleInteraction}
role="button"
tabIndex="0"
>
{values[index]}
</span>
)
}
StateItem.propTypes = {
disabled: PropTypes.bool,
index: PropTypes.number.isRequired,
name: PropTypes.string.isRequired,
update: PropTypes.func.isRequired,
values: PropTypes.arrayOf(PropTypes.string).isRequired,
}
StateItem.defaultProps = {
disabled: false,
}
export default StateItem