import React, { ReactElement } from 'react' import styles from './InputElement.module.css' import { InputProps } from '.' import FilesInput from '../FormFields/FilesInput' import CustomProvider from '../FormFields/Provider' import BoxSelection, { BoxSelectionOption } from '../FormFields/BoxSelection' import Datatoken from '../FormFields/Datatoken' import classNames from 'classnames/bind' import AssetSelection, { AssetSelectionAsset } from '../FormFields/AssetSelection' import Nft from '../FormFields/Nft' import InputRadio from './InputRadio' import ContainerInput from '@shared/FormFields/ContainerInput' const cx = classNames.bind(styles) const DefaultInput = ({ size, className, // We filter out all props which are not allowed // to be passed to HTML input so these stay unused. /* eslint-disable @typescript-eslint/no-unused-vars */ prefix, postfix, additionalComponent, /* eslint-enable @typescript-eslint/no-unused-vars */ ...props }: InputProps) => ( ) export default function InputElement({ options, sortOptions, prefix, postfix, size, field, multiple, // We filter out all props which are not allowed // to be passed to HTML input so these stay unused. /* eslint-disable @typescript-eslint/no-unused-vars */ label, help, prominentHelp, form, additionalComponent, disclaimer, disclaimerValues, /* eslint-enable @typescript-eslint/no-unused-vars */ ...props }: InputProps): ReactElement { const styleClasses = cx({ select: true, [size]: size }) switch (props.type) { case 'select': { const sortedOptions = !sortOptions && sortOptions === false ? options : (options as string[]).sort((a: string, b: string) => a.localeCompare(b) ) return ( ) } case 'textarea': return