import React, { FC, useState, useEffect } from 'react'; //Components import KeyboardContainer from '../keyboard-container'; //Utils import { classNameGenerator, usePrevious } from '../../utils'; //styles import styles from './index.module.scss'; //Types import { KeyboardProps } from '../../types'; //Constants import { DEFAULT_CLOSE_ANIMATION_TIME } from '../../constants'; const NumericKeyboard: FC = ({ isOpen, className, hasTransition = true, transitionTime = DEFAULT_CLOSE_ANIMATION_TIME, onChange, isKeyboardDisabled = false, backSpaceIcon, leftIcon, style, header, mode = 'simple', containerClassName, fullWidth = false, }): JSX.Element | null => { const [isShow, setIsShow] = useState(isOpen); const prevIsShow = usePrevious(isShow); useEffect(() => { if (!isOpen && hasTransition) { let timer = setTimeout(() => { setIsShow(false); }, transitionTime); return () => { clearTimeout(timer); setIsShow(false); }; } else { setIsShow(isOpen); } }, [isOpen]); const animationClassesGenerator = (): string | boolean => { if (hasTransition) { return isOpen ? styles.startAnimation : prevIsShow === true ? styles.closeAnimation : ''; } return false; }; const mainClassName = classNameGenerator([ styles.main, animationClassesGenerator(), fullWidth && styles.fullWidth, className, ]); return isShow ? (
{header && header}
) : null; }; export { NumericKeyboard };