office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
159 lines (158 loc) • 4.85 kB
TypeScript
import * as React from 'react';
import { IRenderFunction } from '../../Utilities';
import { IIconProps } from '../../Icon';
export interface ITextField {
/** Gets the current value of the input. */
value: string;
/** Sets focus to the input. */
focus: () => void;
/** Select the value of the text field. */
select: () => void;
/** Sets the selection start of the text field to a specified value */
setSelectionStart: (value: number) => void;
/** Sets the selection end of the text field to a specified value */
setSelectionEnd: (value: number) => void;
/**
* Sets the start and end positions of a selection in a text field.
* @param start Index of the start of the selection.
* @param end Index of the end of the selection.
*/
setSelectionRange: (start: number, end: number) => void;
}
/**
* TextField component props.
*/
export interface ITextFieldProps extends React.HTMLAttributes<HTMLInputElement | HTMLTextAreaElement> {
/**
* Optional callback to access the ITextField interface. Use this instead of ref for accessing
* the public methods and properties of the component.
*/
componentRef?: (component: ITextField) => void;
/**
* Whether or not the textfield is a multiline textfield.
* @default false
*/
multiline?: boolean;
/**
* Whether or not the multiline textfield is resizable.
* @default true
*/
resizable?: boolean;
/**
* Whether or not to auto adjust textField height. Applies only to multiline textfield.
* @default false
*/
autoAdjustHeight?: boolean;
/**
* Whether or not the textfield is underlined.
* @default false
*/
underlined?: boolean;
/**
* Whether or not the textfield is borderless.
* @default false
*/
borderless?: boolean;
/**
* Label for the textfield.
*/
label?: string;
/**
* The textfield input description
*/
description?: string;
/**
* String for addon.
*/
addonString?: string;
/**
* Custom render function for addon
*/
onRenderAddon?: IRenderFunction<ITextFieldProps>;
/**
* Optional icon props for an icon.
*/
iconProps?: IIconProps;
/**
* Default value of the textfield, if any. Only provide this if the textfield is an uncontrolled component;
* otherwise, use the "value" property.
*/
defaultValue?: string;
/**
* Current value of the textfield. Only provide this if the textfield is a controlled component where you
* are maintaining its current state; otherwise, use the "defaultValue" property.
*/
value?: string;
/**
* Disabled state of the textfield.
* @default false
*/
disabled?: boolean;
/**
* If set, this will display an error message for the text field.
*/
errorMessage?: string;
/**
* Callback for the onChanged event.
*/
onChanged?: (newValue: any) => void;
/**
* Callback for the onBeforeChange event.
*/
onBeforeChange?: (newValue: any) => void;
/**
* Callback for the onNotifyValidationResult event.
*/
onNotifyValidationResult?: (errorMessage: string, value: string) => void;
/**
* The method is used to get the validation error message and determine whether the input value is valid or not.
*
* When it returns string:
* - If valid, it returns empty string.
* - If invalid, it returns the error message string and the text field will
* show a red border and show an error message below the text field.
*
* When it returns Promise<string>:
* - The resolved value is display as error message.
* - The rejected, the value is thrown away.
*
*/
onGetErrorMessage?: (value: string) => string | PromiseLike<string>;
/**
* Text field will start to validate after users stop typing for `deferredValidationTime` milliseconds.
* @default 200
*/
deferredValidationTime?: number;
/**
* Optional class name that is added to the container of the component.
*/
className?: string;
/**
* Optional class name that is added specifically to the input/textarea element.
*/
inputClassName?: string;
/**
* Aria Label for textfield, if any.
*/
ariaLabel?: string;
/**
* Run validation only on input focus
* @default false
*/
validateOnFocusIn?: boolean;
/**
* Run validation only on input focus out
* @default false
*/
validateOnFocusOut?: boolean;
/**
* Optional flag to disable onload validation
* @default true
*/
validateOnLoad?: boolean;
/**
* @deprecated
* Deprecated; use iconProps instead.
*/
iconClass?: string;
}