IntroductionStreami18nReadme
Top Level Components
UI Components
Layout Components
Composition Components
StatusUpdateForm
This component should be a child of <StreamApp/>
component.
Features:
- OG scraping
- Image uploads
- File uploads
- Emoji select and autocomplete
Properties
activityVerb
string | undefined
post
doRequest
((activity: NewActivity<AT>) => Promise<Activity<AT>>) | undefined
emojiData
Data | undefined
emojiI18n
Partial<Pick<I18n, "search" | "notfound"> & { categories: Partial<Record<CategoryName, string>>; }> | undefined
feedGroup
string | undefined
user
FooterItem
ReactNode
Header
ReactNode
modifyActivityData
((activity: NewActivity<AT>) => NewActivity<AT>) | undefined
onSuccess
((activity: Activity<AT>) => void) | undefined
Textarea
string | number | boolean | ReactElement<Pick<PropsWithElementAttributes<{ emojiData?: Data | undefined; innerRef?: MutableRefObject<HTMLTextAreaElement | undefined> | ((el: HTMLTextAreaElement) => void) | undefined; ... 6 more ...; value?: string | undefined; }, HTMLDivElement>, "className" | ... 7 more ... | "valu...
({
emojiData = defaultEmojiData,
innerRef,
maxLength,
onChange,
onPaste,
placeholder = 'Share your opinion',
rows = 3,
trigger = {},
value,
className,
style,
}: TextareaProps) => {
const emoji = useMemo(() => emojiTrigger(emojiData), []);
return (
<ReactTextareaAutocomplete
loadingComponent={LoadingIndicator}
// @ts-expect-error
trigger={{ ...emoji, ...trigger }}
innerRef={
innerRef &&
((el) => {
if (typeof innerRef === 'function') {
innerRef(el);
} else if (innerRef !== null) {
innerRef.current = el;
}
})
}
rows={rows}
maxLength={maxLength}
className={classNames('raf-textarea__textarea', className)}
style={style}
containerClassName="raf-textarea"
dropdownClassName="raf-emojisearch"
listClassName="raf-emojisearch__list"
itemClassName="raf-emojisearch__item"
placeholder={placeholder}
onChange={onChange}
onSelect={onChange}
onPaste={onPaste}
value={value}
/>
);
}
trigger
TriggerType<Record<string, unknown>> | undefined
userId
string | undefined