ng-autosize
v2.0.0
Published
Angular Directive that automatically adjusts textarea height to fit content
Maintainers
Readme
ng-autosize
ng-autosize is a modern Angular directive that automatically adjusts textarea height to fit content.
Features
- ✅ Standalone directive - No NgModule imports needed
- ✅ Angular 19+ support - Built with the latest Angular
- ✅ TypeScript strict mode - Type-safe and reliable
- ✅ Automatic height adjustment - Grows/shrinks with content
- ✅ Min/Max height support - Control textarea bounds
- ✅ SSR compatible - Works with server-side rendering
- ✅ Lightweight - Zero dependencies
Installation
npm install ng-autosizeRequirements
- Angular: 19.0.0 or higher
- TypeScript: 5.6.x
Usage
Standalone Component (Recommended)
Import the directive directly in your standalone component:
import { Component } from '@angular/core';
import { Autosize } from 'ng-autosize';
@Component({
selector: 'app-example',
standalone: true,
imports: [Autosize], // Import directive
template: `
<textarea autosize placeholder="Type here..."></textarea>
`
})
export class ExampleComponent {}With NgModule (Legacy)
If you're still using NgModules:
import { NgModule } from '@angular/core';
import { Autosize } from 'ng-autosize';
@NgModule({
imports: [Autosize], // Import as standalone
// ...
})
export class AppModule {}Configuration Options
Minimum Height
Set a minimum height for the textarea:
<textarea autosize [minHeight]="100">
This textarea has a minimum height of 100px
</textarea>Maximum Height
Set a maximum height for the textarea:
<textarea autosize [maxHeight]="300">
This textarea has a maximum height of 300px
</textarea>Both Min and Max
Combine both options:
<textarea
autosize
[minHeight]="100"
[maxHeight]="500"
placeholder="Constrained between 100px and 500px">
</textarea>Migration from v1.x
ng-autosize v2.0 introduces breaking changes for Angular 19 compatibility.
Breaking Changes
- Minimum Angular version: Now requires Angular 19+
- Standalone-first: No longer exports an NgModule
- TypeScript: Requires TypeScript 5.6.x
Migration Steps
Before (v1.x):
import { Autosize } from 'ng-autosize';
@NgModule({
declarations: [Autosize] // Old way
})After (v2.x):
import { Autosize } from 'ng-autosize';
@Component({
standalone: true,
imports: [Autosize] // New way
})How It Works
The directive:
- Listens to
inputevents on the textarea - Temporarily sets height to
autoto measure scroll height - Adjusts the textarea height to match content
- Respects min/max height constraints
- Handles window resize events intelligently
Browser Support
Supports all modern browsers:
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
Demo
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Author
License
This project is licensed under the MIT License - see the LICENSE file for details.
