import React, { useCallback, useContext } from 'react'

import { ProductContext } from "./ProductCard"
import styles from '../styles/styles.module.css';

export interface Props {
    className?: string;
    style?: React.CSSProperties; 
}

export const ProductButtons = ({ className, style }: Props ) => {

    const { increaseBy, counter, maxCount } = useContext( ProductContext )

    const isMaxReached = useCallback(
      () => !!maxCount && counter === maxCount,
      [counter, maxCount],
    )
    

    return (
        <div className={ `${ styles.buttonsContainer } ${ className }` }
            style= { style }
        >
            <button
                onClick={ () => increaseBy(-1) } 
                className={ styles.buttonMinus }
                >
                -    
            </button>
            <div className={ styles.countLabel }> { counter } </div>
            <button
                onClick={ () => increaseBy(1) } 
                className={`${ styles.buttonAdd } ${ isMaxReached() && styles.disabled }`}
                > + 
            </button>
        </div>
    )
}