office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
194 lines (193 loc) • 6.12 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 | undefined;
/** 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;
/** Gets the selection start of the text field. Returns -1 if there is no selection. */
selectionStart: number;
/** Gets the selection end of the text field. Returns -1 if there is no selection. */
selectionEnd: number;
}
/**
* TextField component props.
*/
export interface ITextFieldProps extends React.AllHTMLAttributes<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;
/**
* Optional custom renderer for the label
*/
onRenderLabel?: IRenderFunction<ITextFieldProps>;
/**
* The textfield input description
*/
description?: string;
/**
* @deprecated
* Deprecated; use prefix instead.
*/
addonString?: string;
/**
* String for prefix
*/
prefix?: string;
/**
* String for suffix
*/
suffix?: string;
/**
* @deprecated
* Deprecated; use onRenderPrefix instead.
*/
onRenderAddon?: IRenderFunction<ITextFieldProps>;
/**
* Custom render function for prefix
*/
onRenderPrefix?: IRenderFunction<ITextFieldProps>;
/**
* Custom render function for suffix
*/
onRenderSuffix?: 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 | undefined) => 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> | undefined;
/**
* 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;
/**
* Internal ID passed to render functions.
*/
componentId?: string;
/**
* Whether the input field should have autocomplete enabled.
* This tells the browser to display options based on earlier typed values.
*/
autoComplete?: 'on' | 'off';
}