import { Dispatch, SetStateAction, useCallback } from 'react'; import { toggleBit } from '../bits'; import { green, lightgrey } from '../colors'; const DAY_NAMES = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', ]; export default function DaysOfWeekSelector({ daysOfWeek, update, disabled = false, }: { daysOfWeek: number; update: Dispatch>; disabled?: boolean; }) { const toggleDayOfWeek = useCallback( function (idx: 1 | 2 | 3 | 4 | 5 | 6 | 7) { update((daysOfWeek) => toggleBit(daysOfWeek, idx)); }, [update] ); return (
{DAY_NAMES.map((name, idx) => { const mask = 0b1000_0000 >> (idx + 1); const active = (daysOfWeek & mask) !== 0; return (
{ if (!disabled) { toggleDayOfWeek( // @ts-ignore idx + 1 ); } }} key={name} > {name.charAt(0)}
); })}
); }