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