stream-chat-react
Version:
React components to create chat conversations or livestream style chat
115 lines (114 loc) • 4.73 kB
TypeScript
export class ReactTextareaAutocomplete extends React.Component<any, any, any> {
static defaultProps: {
closeOnClickOutside: boolean;
maxRows: number;
minChar: number;
movePopupAsYouType: boolean;
scrollToItem: boolean;
value: string;
};
/**
* setup to emulate the UNSAFE_componentWillReceiveProps
*/
static getDerivedStateFromProps(props: any, state: any): {
propsValue: any;
value: any;
} | null;
constructor(props: any);
state: {
actualToken: string;
component: null;
currentTrigger: null;
data: null;
dataLoading: boolean;
isComposing: boolean;
left: null;
selectionEnd: number;
selectionStart: number;
top: null;
value: any;
};
getSelectionPosition: () => {
selectionEnd: number;
selectionStart: number;
} | null;
getSelectedText: () => any;
setCaretPosition: (position?: number) => void;
getCaretPosition: () => number;
/**
* isComposing prevents double submissions in Korean and other languages.
* starting point for a read:
* https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/isComposing
* In the long term, the fix should happen by handling keypress, but changing this has unknown implications.
* @param event React.KeyboardEvent
*/
_defaultShouldSubmit: (event: any) => boolean;
_handleKeyDown: (event: any) => void | Promise<void>;
_onEnter: (event: any) => Promise<void>;
_onSpace: () => void;
_replaceWord: () => Promise<void>;
_onSelect: (newToken: any) => void;
_getItemOnSelect: (paramTrigger: any) => ((item: any) => any) | null;
_getTextToReplace: (paramTrigger: any) => ((item: any) => any) | null;
_getCurrentTriggerSettings: (paramTrigger: any) => any;
_getValuesFromProvider: () => void;
_getSuggestions: (paramTrigger: any) => null;
/**
* Close autocomplete, also clean up trigger (to avoid slow promises)
*/
_closeAutocomplete: () => void;
_cleanUpProps: () => {
[x: string]: any;
};
_isCommand: (text: any) => boolean;
_changeHandler: (e: any) => void;
_selectHandler: (e: any) => void;
_onClickAndBlurHandler: (e: any) => void;
_onScrollHandler: () => void;
_dropdownScroll: (item: any) => void;
getTriggerProps: () => {
component: null;
currentTrigger: null;
getSelectedItem: ((item: any) => any) | null;
getTextToReplace: ((item: any) => any) | null;
selectionEnd: number;
value: any;
values: null;
};
setDropdownRef: (element: any) => void;
dropdownRef: any;
renderSuggestionListContainer(): React.JSX.Element | null;
render(): React.JSX.Element;
textareaRef: HTMLTextAreaElement | null | undefined;
}
export namespace ReactTextareaAutocomplete {
namespace propTypes {
export let className: PropTypes.Requireable<string>;
export let closeOnClickOutside: PropTypes.Requireable<boolean>;
export let containerClassName: PropTypes.Requireable<string>;
export let containerStyle: PropTypes.Requireable<object>;
export let disableMentions: PropTypes.Requireable<boolean>;
export let dropdownClassName: PropTypes.Requireable<string>;
export let dropdownStyle: PropTypes.Requireable<object>;
export let itemClassName: PropTypes.Requireable<string>;
export let itemStyle: PropTypes.Requireable<object>;
export let listClassName: PropTypes.Requireable<string>;
export let listStyle: PropTypes.Requireable<object>;
export let loaderClassName: PropTypes.Requireable<string>;
export let loaderStyle: PropTypes.Requireable<object>;
export let loadingComponent: PropTypes.Requireable<PropTypes.ReactComponentLike>;
export let minChar: PropTypes.Requireable<number>;
export let onBlur: PropTypes.Requireable<(...args: any[]) => any>;
export let onCaretPositionChange: PropTypes.Requireable<(...args: any[]) => any>;
export let onChange: PropTypes.Requireable<(...args: any[]) => any>;
export let onSelect: PropTypes.Requireable<(...args: any[]) => any>;
export let shouldSubmit: PropTypes.Requireable<(...args: any[]) => any>;
export let style: PropTypes.Requireable<object>;
export let SuggestionList: PropTypes.Requireable<PropTypes.ReactComponentLike>;
export { triggerPropsCheck as trigger };
export let value: PropTypes.Requireable<string>;
}
}
import React from 'react';
import PropTypes from 'prop-types';
import { triggerPropsCheck } from './utils';