Codeminer42/Punchclock

View on GitHub
app/javascript/packs/components/Day.js

Summary

Maintainability
A
35 mins
Test Coverage
import React from 'react';
import cx from 'classnames/bind';
import Punches from './Punches';
import DayTitle from './DayTitle';
import { isHoliday, overtimeAllowed } from '../utils/calendar';


const Day = ({ day, selecteds, holidays, inner, onToggle, today, selected, sheet }) => {
  let holiday = () => isHoliday(selecteds, day, holidays)
  let overtime = () => overtimeAllowed()

  let handleToggle = () => {
    if(inner && (!holiday() || overtime())) {
      onToggle(day, selecteds);
    }
  }

  let classNames = cx(
    `weekday-${day.day()}`,
    `${(holiday() && !overtime()) ? ' weekday-holiday' : ''}`,
    (inner ? 'inner' : 'out'),
    { today: today, selected: selected }
  );

  return (
    <td className={classNames} onClick={() => {handleToggle()}} >
      <DayTitle day={day} />
      <Punches sheet={sheet} />
    </td>
  );
}

export default Day;