clone of github.com/decent-newsroom/newsroom
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

27 lines
785 B

import { Controller } from '@hotwired/stimulus';
/**
* Auto-grow textarea controller
* Makes textareas automatically resize to fit their content
*/
export default class extends Controller {
connect() {
// Set initial height
this.resize();
// Listen for input changes
this.element.addEventListener('input', () => this.resize());
// Also resize on focus (in case content was changed programmatically)
this.element.addEventListener('focus', () => this.resize());
}
resize() {
// Reset height to auto to get the correct scrollHeight
this.element.style.height = 'auto';
// Set height to scrollHeight to fit all content
this.element.style.height = this.element.scrollHeight + 'px';
}
}