import React, { CSSProperties, useCallback, useContext } from "react";
import { ProductContext } from "./ProductCard";
import styles from "../styles/styles.module.css";

export interface Props {
  className?: string;
  style?: 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 className={styles.buttonMinus} onClick={() => increaseBy(-1)}>
          -
        </button>
  
        <div className={styles.countLabel}>{counter}</div>
  
        <button className={`${styles.buttonAdd} ${ isMaxReached() && styles.disabled}`} onClick={() => increaseBy(+1)}>
          +
        </button>
      </div>
    );
  };