import {useState} from 'react'; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; import {faXmark, faRotateLeft} from '@fortawesome/free-solid-svg-icons'; import {useSortable} from '@dnd-kit/sortable'; import {ElectionTypes, useElection} from '@services/ElectionContext'; import {getGradeColor, gradeColors} from '@services/grades'; import VerticalGripDots from '@components/VerticalGripDots'; import GradeModalSet from './GradeModalSet'; export interface GradeInterface { value: number; } export default ({value}: GradeInterface) => { const [election, dispatch] = useElection(); const grade = election.grades.filter((g) => g.value === value)[0]; const activeGrade = election.grades.filter((g) => g.active); const numGrades = activeGrade.length; const gradeIdx = activeGrade.map((g) => g.value).indexOf(value); const {attributes, listeners, setNodeRef, transform, transition} = useSortable({id: grade.name}); const [visible, setVisible] = useState(false); const toggle = () => setVisible((v) => !v); const handleActive = () => { if (!grade.active && numGrades >= gradeColors.length) { return; } dispatch({ type: ElectionTypes.GRADE_SET, position: election.grades.map((g) => g.value).indexOf(value), field: 'active', value: !grade.active, }); }; const color = getGradeColor(grade.value, numGrades); const style = { color: grade.active ? 'white' : '#8F88BA', backgroundColor: grade.active ? color : '#F2F0FF', transform: transform ? `translate3d(${transform.x}px, ${transform.y}px, 0)` : null, transition, }; return (
{grade.name}
{grade.active ? ( <> ) : ( )}
); };