DefinitelyTyped/types/react-mentions/react-mentions-tests.tsx
Eugene Fedorenko 220663aae1 Updated react-mentions to support v3.0 (#35118)
* Upgraded types for v3.0.0

* Updated tests

* Version shouldn’t contain a patch version
2019-04-30 22:05:04 -07:00

73 lines
2.2 KiB
TypeScript

import * as React from "react";
import { MentionsInput, Mention, SuggestionDataItem } from "react-mentions";
import { mapPlainTextIndex } from "react-mentions/lib/utils";
interface TestProps {
data: SuggestionDataItem[];
value?: string;
onChange?: () => void;
onAdd?: () => void;
regex: RegExp;
}
export const TestSimple: React.SFC<TestProps> = (props) => {
const inputEl = React.createRef<HTMLTextAreaElement>();
function handleClick() {
if (inputEl.current) {
inputEl.current.focus();
}
}
return (
<>
<MentionsInput
value={props.value}
onChange={props.onChange}
placeholder={"Mention people using '@'"}
inputRef={inputEl}
>
<Mention
trigger="@"
displayTransform={login => `@${login}`}
data={props.data}
onAdd={props.onAdd}
/>
</MentionsInput>
<button onClick={handleClick}>Focus</button>
</>
);
};
export const TestMultipleTrigger: React.SFC<TestProps> = (props) => {
return (
<MentionsInput
value={props.value}
onChange={props.onChange}
placeholder={"Mention people using '@'"}
>
<Mention
trigger="@"
markup="@[__display__](__type__:__id__)"
data={props.data}
renderSuggestion={(suggestion: SuggestionDataItem, search: string, highlightedDisplay: React.ReactNode, index: number, focused: boolean) => (
<div className={`user ${focused ? 'focused' : ''}`}>
{highlightedDisplay}
</div>
)}
onAdd={props.onAdd}
/>
<Mention
trigger={props.regex}
markup="@[__display__](__type__:__id__)"
data={search => [{ id: search, display: search }]}
onAdd={props.onAdd}
/>
</MentionsInput>
);
};
mapPlainTextIndex("foo", "bar", 1, "NULL", login => `@${login}`, /.*/); // $ExpectType number