import React, { FC, useState } from 'react'; //Components import KeyboardItem from '../keyboard-item'; //Constants import { numbers, keyboardCharacters } from '../../constants'; //Assets import BackSpace from '../../assets/backspace.png'; //Styles import styles from './index.module.scss'; //Types import { KeyboardContainerProps } from '../../types'; //Utils import { classNameGenerator } from '../../utils'; const KeyboardContainer: FC = ({ onChange, isKeyboardDisabled, leftIcon, backSpaceIcon, mode, containerClassName, }) => { const [value, setValue] = useState(''); const sliceValue = (value: string): string => value.slice(0, -1); const onKeyboardItemClick = (name: string): void => { if (!isKeyboardDisabled) { if (name === keyboardCharacters.Backspace) { onChange?.({ value: sliceValue(value), name }); setValue((prevValue) => sliceValue(prevValue)); } else { onChange?.({ value: value + name, name }); setValue((prevValue) => prevValue + name); } } }; const classNames = classNameGenerator([ styles.itemsContainer, mode === 'spaced' && styles.spacedMode, containerClassName, ]); return (
{isKeyboardDisabled &&
} {numbers.map( (item: string): JSX.Element => ( onKeyboardItemClick(item)} mode={mode} >

{item}

) )} {leftIcon} onKeyboardItemClick(keyboardCharacters['0'])} >

{keyboardCharacters['0']}

onKeyboardItemClick(keyboardCharacters['Backspace']) } isNumber={false} > {backSpaceIcon || ( {keyboardCharacters.Backspace} )}
); }; export default KeyboardContainer;