Files
Calculateur-Talents-Wow/src/components/ClassPicker.tsx
T
2019-07-24 23:27:23 +02:00

47 lines
1.3 KiB
TypeScript

import './ClassPicker.scss'
import React from 'react'
import { Link } from 'react-router-dom'
import { classByName } from '../data/classes'
import { Icon } from './Icon'
import classNames from 'classnames'
interface Props {
/** Name of the selected class, lowercase */
selected?: string
center?: boolean
className?: string
}
const classNameForItem = (c: ClassData, selected: string) => classNames('class-picker__class', {
'class-picker__class--active': c.name.toLowerCase() === selected,
'class-picker__class--inactive': !!selected && c.name.toLowerCase() !== selected
})
export class ClassPicker extends React.PureComponent<Props> {
static whyDidYouRender = true
render() {
const { selected, center = false } = this.props
const cn = classNames('class-picker', {
'class-picker--has-selection': !!selected,
'class-picker--center': center,
}, this.props.className)
return (
<ul className={cn}>
{Object.values(classByName).map((c) =>
<li key={c.id} className={classNameForItem(c, selected)}>
<Link to={`/${c.name.toLowerCase()}`} title={c.name}>
<Icon
name={c.icon}
golden={selected === c.name.toLowerCase()}
/>
</Link>
</li>
)}
</ul>
)
}
}