import React from 'react'; export interface CommonFormElementProps { /** * Set id attribute to element */ id?: string; /** * Set disabled state, or insert disabled attribute */ disabled?: boolean; /** * Set additional classname for styling */ className?: string; /** * Set name attribute to element */ name?: string; /** * Set value attribute to element */ value?: string; /** * Set type attribute to element */ type?: string; } export interface CommonInputEventProps { /** * Callback for onblur. */ onBlur?: (e: React.FocusEvent) => void; /** * Callback for onchange. */ onChange?: (e: React.ChangeEvent) => void; /** * Callback for onclick. */ onClick?: (e: React.MouseEvent) => void; /** * Callback for onfocus. */ onFocus?: (e: React.FocusEvent) => void; /** * Callback for oninput. */ onInput?: (e: React.KeyboardEvent) => void; /** * Callback for onkeydown. */ onKeyDown?: (e: React.KeyboardEvent) => void; /** * Callback for onkeypress. */ onKeyPress?: (e: React.KeyboardEvent) => void; /** * Callback for onkeyup. */ onKeyUp?: (e: React.KeyboardEvent) => void; } export interface CommonInputProps extends CommonFormElementProps, CommonInputEventProps { /** * Turn on native autocapitalize. */ autoCapitalize?: string; /** * Turn on native autocomplete. */ autoComplete?: string; /** * Set the component maximum number of characters allowed. */ maxLength?: number; /** * Set the component placeholder text. */ placeholder?: string; /** * Set the component into readonly state. */ readOnly?: boolean; } export interface CommonSelectionControlProps extends CommonFormElementProps { /** * Set text after control element */ appendText?: string; /** * Set component checked state */ checked?: boolean; /** * Set indeterminate state (partially checked subtree) */ indeterminate?: boolean; /** * Set text before control element */ prependText?: string; /** * Set HTML `label` as wrapper tag instead of `div` */ withLabel?: boolean; /** * Set callback function on checkbox state change */ onChange?: (e: React.ChangeEvent) => void; }