summaryrefslogtreecommitdiffstats
path: root/ui/src/components/private-message-form.tsx
diff options
context:
space:
mode:
authorDessalines <tyhou13@gmx.com>2020-01-24 13:59:50 -0500
committerDessalines <tyhou13@gmx.com>2020-01-24 13:59:50 -0500
commit608856b6cdd42b83f35eee8cb556ac626e75727f (patch)
treeccb74ba0a840d24a69f8ba3f3e95e06b5b5cce26 /ui/src/components/private-message-form.tsx
parent353891a3d1af878a8ce8d5562f3deaa9be380144 (diff)
Adding autocomplete to post, community, message, and site forms. Fixes #453
Diffstat (limited to 'ui/src/components/private-message-form.tsx')
-rw-r--r--ui/src/components/private-message-form.tsx16
1 files changed, 15 insertions, 1 deletions
diff --git a/ui/src/components/private-message-form.tsx b/ui/src/components/private-message-form.tsx
index 170c2ab8..c8627845 100644
--- a/ui/src/components/private-message-form.tsx
+++ b/ui/src/components/private-message-form.tsx
@@ -24,7 +24,10 @@ import {
pictshareAvatarThumbnail,
wsJsonToRes,
toast,
+ randomStr,
+ setupTribute,
} from '../utils';
+import Tribute from 'tributejs/src/Tribute.js';
import autosize from 'autosize';
import { i18n } from '../i18next';
import { T } from 'inferno-i18next';
@@ -49,6 +52,8 @@ export class PrivateMessageForm extends Component<
PrivateMessageFormProps,
PrivateMessageFormState
> {
+ private id = `message-form-${randomStr()}`;
+ private tribute: Tribute;
private subscription: Subscription;
private emptyState: PrivateMessageFormState = {
privateMessageForm: {
@@ -64,6 +69,7 @@ export class PrivateMessageForm extends Component<
constructor(props: any, context: any) {
super(props, context);
+ this.tribute = setupTribute();
this.state = this.emptyState;
if (this.props.privateMessage) {
@@ -93,7 +99,14 @@ export class PrivateMessageForm extends Component<
}
componentDidMount() {
- autosize(document.querySelectorAll('textarea'));
+ var textarea: any = document.getElementById(this.id);
+ autosize(textarea);
+ this.tribute.attach(textarea);
+ textarea.addEventListener('tribute-replaced', () => {
+ this.state.privateMessageForm.content = textarea.value;
+ this.setState(this.state);
+ autosize.update(textarea);
+ });
}
componentWillUnmount() {
@@ -136,6 +149,7 @@ export class PrivateMessageForm extends Component<
<label class="col-sm-2 col-form-label">{i18n.t('message')}</label>
<div class="col-sm-10">
<textarea
+ id={this.id}
value={this.state.privateMessageForm.content}
onInput={linkEvent(this, this.handleContentChange)}
className={`form-control ${this.state.previewMode && 'd-none'}`}