import cn from "classnames"; import React, { useCallback } from "react"; import PropTypes from "prop-types"; import { IFileProps } from "./form.d"; import Form from "./form-tags"; const File = (props: IFileProps) => { const { className, disabled, error, fileLabel, help, label, labelClassName, name, onBlur, onChange, placeholder, required, value, escapeHelpContent } = props; const testId = props["data-testid"] || "honeyui-file"; const onChangeCallback = useCallback( (e: React.ChangeEvent) => { onChange(e); }, [onChange] ); const onBlurCallback = useCallback( (e: React.ChangeEvent) => { onBlur && onBlur(e); }, [onBlur] ); return ( {label}
{value || fileLabel}
{help} {error}
); }; File.displayName = "File"; File.propTypes = { className: PropTypes.string, disabled: PropTypes.bool, error: PropTypes.string, fileLabel: PropTypes.string, help: PropTypes.string, label: PropTypes.string, labelClassName: PropTypes.string, name: PropTypes.string.isRequired, onBlur: PropTypes.func, onChange: PropTypes.func.isRequired, placeholder: PropTypes.string, required: PropTypes.bool, escapeHelpContent: PropTypes.bool }; File.defaultProps = { disabled: false, // TODO: use i18n text fileLabel: "Choose file", required: false }; export default File;