Skip to content
Snippets Groups Projects
ChallengeCard.tsx 1.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { UserChallengeState } from 'enums'
    
    import { UserChallenge } from 'models'
    
    import React from 'react'
    
    import ChallengeCardDone from '../ChallengeCardDone/ChallengeCardDone'
    import ChallengeCardLast from '../ChallengeCardLast/ChallengeCardLast'
    import ChallengeCardLocked from '../ChallengeCardLocked/ChallengeCardLocked'
    import ChallengeCardOnGoing from '../ChallengeCardOnGoing/ChallengeCardOnGoing'
    import ChallengeCardUnlocked from '../ChallengeCardUnlocked/ChallengeCardUnlocked'
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    import './challengeCard.scss'
    
    interface ChallengeCardProps {
    
      userChallenge: UserChallenge | undefined
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
      indexSlider: number
    
      cardHeight: number
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
      moveToSlide: (slideIndex: number) => void
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
    const ChallengeCard = ({
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
      moveToSlide,
    
    }: ChallengeCardProps) => {
    
      const renderCard = (userChallenge: UserChallenge | undefined) => {
    
        switch (userChallenge?.state) {
    
          case UserChallengeState.LOCKED:
    
            return <ChallengeCardLocked userChallenge={userChallenge} />
    
          case UserChallengeState.UNLOCKED:
    
            return <ChallengeCardUnlocked userChallenge={userChallenge} />
    
          case UserChallengeState.DONE:
    
            return <ChallengeCardDone userChallenge={userChallenge} />
    
          case UserChallengeState.ONGOING:
    
    Yoan VALLET's avatar
    Yoan VALLET committed
          case UserChallengeState.DUEL:
    
            return <ChallengeCardOnGoing userChallenge={userChallenge} />
    
          default:
    
            return <ChallengeCardLast />
    
    Guilhem CARRON's avatar
    Guilhem CARRON committed
          onClick={() => moveToSlide(index)}
    
          className={indexSlider === index ? 'slide active' : 'slide inactive'}
    
            minWidth: `${cardWidth}px`,
            maxWidth: `${cardWidth}px`,
    
            minHeight: `${cardHeight}px`,
    
            border: 'none',
            background: 'none',
            padding: 0,
    
    export default ChallengeCard