import { Controller } from "stimulus"; export default class extends Controller { static targets = [ "message", "output" ]; connect() { this.load(); } send() { let vm = this; // TODO: Temporary hack. Should just run this after default event. setTimeout(function() { vm.messageTarget.value = ""; }, 100); } load() { this.scrollToBottom(); if (this.outputTarget.innerHTML.trim() === "") { fetch("/chat_messages") .then(response => response.text()) .then(html => { this.outputTarget.innerHTML = html; this.scrollToBottom(); }); } } scrollToBottom() { this.outputTarget.scrollTop = this.outputTarget.scrollHeight; } }