diff --git a/src/ActivityView.tsx b/src/ActivityView.tsx index 0e28b60c3c..1a27a18e4e 100644 --- a/src/ActivityView.tsx +++ b/src/ActivityView.tsx @@ -105,7 +105,7 @@ export class ActivityView extends React.Component { } }) return ( -
+
{ size={ props.size } tiles={tiles} /> -
+
); case 'typing': - return
; + return
+
+
+
+
+
+
; } } } \ No newline at end of file diff --git a/src/App/templates/AssistantTemplate.tsx b/src/App/templates/AssistantTemplate.tsx index 07c8e2617f..7ad17ab84d 100644 --- a/src/App/templates/AssistantTemplate.tsx +++ b/src/App/templates/AssistantTemplate.tsx @@ -9,6 +9,9 @@ export class AssistantTemplate extends React.Component< Props, { introMode: boolean; inputValue: string; darkMode: boolean } > { + private textareaRef: HTMLTextAreaElement | null = null; + private cardRef: HTMLDivElement | null = null; + constructor(props: Props) { super(props) this.state = { @@ -42,7 +45,9 @@ export class AssistantTemplate extends React.Component< } handleInputChange = (event: React.ChangeEvent) => { - this.setState({ inputValue: event.target.value }) + this.setState({ inputValue: event.target.value }, () => { + this.adjustTextareaHeight(); + }) } handleInputKeyPress = (event: React.KeyboardEvent) => { @@ -57,6 +62,17 @@ export class AssistantTemplate extends React.Component< this.setState((prevState) => ({ darkMode: !prevState.darkMode })) } + adjustTextareaHeight = () => { + const textarea = this.textareaRef; + const card = this.cardRef + if (textarea && card) { + textarea.style.height = 'auto'; + card.style.height = "auto"; + textarea.style.height = `${textarea.scrollHeight}px`; + card.style.height = `${textarea.scrollHeight}px`; + } + } + renderIntroSection() { const { theme } = this.props const welcomeTitle = (theme && theme.template && theme.template.welcomeTitle) || 'Welcome to the chatbot!' @@ -66,15 +82,16 @@ export class AssistantTemplate extends React.Component< return (

{welcomeTitle}

-
+
this.cardRef = el}>